From 05d00fcdeab38b699eb0e7475b23acae88ef2115 Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Sun, 20 Jul 2025 10:24:49 -0500 Subject: [PATCH] Remove unused classes --- libs/UIX.DecompXml/Decompiler.cs | 3 - .../Mock/IReturnValueProvider.cs | 8 -- .../Mock/IrisConstantExpression.cs | 40 --------- libs/UIX.DecompXml/Mock/IrisExpression.cs | 46 ++++------ .../Mock/IrisMethodCallExpression.cs | 52 ------------ libs/UIX.DecompXml/Mock/IrisObject.cs | 5 -- .../Mock/IrisPropertyExpression.cs | 39 --------- libs/UIX.DecompXml/Mock/MockMarkupType.cs | 84 ------------------- 8 files changed, 17 insertions(+), 260 deletions(-) delete mode 100644 libs/UIX.DecompXml/Mock/IReturnValueProvider.cs delete mode 100644 libs/UIX.DecompXml/Mock/IrisConstantExpression.cs delete mode 100644 libs/UIX.DecompXml/Mock/IrisMethodCallExpression.cs delete mode 100644 libs/UIX.DecompXml/Mock/IrisPropertyExpression.cs delete mode 100644 libs/UIX.DecompXml/Mock/MockMarkupType.cs diff --git a/libs/UIX.DecompXml/Decompiler.cs b/libs/UIX.DecompXml/Decompiler.cs index 1417d91..92b0255 100644 --- a/libs/UIX.DecompXml/Decompiler.cs +++ b/libs/UIX.DecompXml/Decompiler.cs @@ -349,15 +349,12 @@ public partial class Decompiler obj = irisObj.Object; } - - return obj switch { string str => str, null => "{null}", bool b => b ? "true" : "false", IStringEncodable strEnc => strEnc.EncodeString(), - IrisExpression expr => '{' + expr.Decompile(_context) + '}', ExpressionSyntax expr => FormatInlineExpression(expr), SymbolReference symRef => '{' + symRef.Symbol + '}', IFormattable formattable => formattable.ToString(null, CultureInfo.InvariantCulture), diff --git a/libs/UIX.DecompXml/Mock/IReturnValueProvider.cs b/libs/UIX.DecompXml/Mock/IReturnValueProvider.cs deleted file mode 100644 index ceb18a7..0000000 --- a/libs/UIX.DecompXml/Mock/IReturnValueProvider.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Microsoft.Iris.Markup; - -namespace Microsoft.Iris.DecompXml.Mock; - -internal interface IReturnValueProvider -{ - TypeSchema ReturnType { get; } -} diff --git a/libs/UIX.DecompXml/Mock/IrisConstantExpression.cs b/libs/UIX.DecompXml/Mock/IrisConstantExpression.cs deleted file mode 100644 index f00fd4a..0000000 --- a/libs/UIX.DecompXml/Mock/IrisConstantExpression.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Iris.Markup; -using System; -using System.Linq.Expressions; - -using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; - -namespace Microsoft.Iris.DecompXml.Mock; - -internal class IrisConstantExpression : IrisExpression, IReturnValueProvider -{ - public IrisConstantExpression(object value, TypeSchema typeSchema) - { - Value = value; - TypeSchema = typeSchema; - } - - public sealed override ExpressionType NodeType => ExpressionType.Constant; - - public object Value { get; } - - public TypeSchema TypeSchema { get; } - - public TypeSchema ReturnType => TypeSchema; - - public override ExpressionSyntax ToSyntax(DecompileContext context) - { - return Value switch - { - Enum enumValue => MemberAccessExpression( - SyntaxKind.SimpleMemberAccessExpression, - IdentifierName(context.GetQualifiedName(TypeSchema).ToString()), - IdentifierName(Value.ToString()) - ), - - _ => ToSyntax(Value, context) - }; - } -} diff --git a/libs/UIX.DecompXml/Mock/IrisExpression.cs b/libs/UIX.DecompXml/Mock/IrisExpression.cs index 82a32c2..5725366 100644 --- a/libs/UIX.DecompXml/Mock/IrisExpression.cs +++ b/libs/UIX.DecompXml/Mock/IrisExpression.cs @@ -3,38 +3,13 @@ using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Iris.Asm; using Microsoft.Iris.Markup; using System; -using System.Linq.Expressions; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Microsoft.Iris.DecompXml.Mock; -internal abstract class IrisExpression : Expression +internal static class IrisExpression { - public virtual string Decompile(DecompileContext context) => ToSyntax(context).ToString(); - - public abstract ExpressionSyntax ToSyntax(DecompileContext context); - - public static Expression Wrap(object p) - { - return p switch - { - null => Constant(null), - Expression expr => expr, - Disassembler.RawConstantInfo constantInfo => new IrisConstantExpression(constantInfo.Value, constantInfo.Type), - SymbolReference symbolRef => Constant(symbolRef), - - _ => throw new NotImplementedException($"Unable to wrap '{p}' in an expression") - }; - } - - public static string Decompile(Expression expr, DecompileContext context) - { - return expr is IrisExpression irisExpr - ? irisExpr.Decompile(context) - : expr.ToString(); - } - public static ExpressionSyntax ToSyntax(object obj, DecompileContext context) { return obj switch @@ -45,12 +20,11 @@ internal abstract class IrisExpression : Expression string strValue => LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(strValue)), IStringEncodable strEnc => ParseExpression(strEnc.EncodeString()), - Disassembler.RawConstantInfo constantInfo => new IrisConstantExpression(constantInfo.Value, constantInfo.Type).ToSyntax(context), + Disassembler.RawConstantInfo constantInfo => ToSyntax(constantInfo.Value, constantInfo.Type, context), + IrisObject irisObj => ToSyntax(irisObj.Object, irisObj.Type, context), SymbolReference symbolRef => ToSyntax(symbolRef), TypeSchema typeSchema => ToSyntax(typeSchema, context), - IrisExpression irisExpr => irisExpr.ToSyntax(context), - Expression expr => ParseExpression(expr.ToString()), ExpressionSyntax exprSyn => exprSyn, _ => IdentifierName(obj.ToString()) @@ -62,4 +36,18 @@ internal abstract class IrisExpression : Expression public static IdentifierNameSyntax ToSyntax(SymbolReference symbolRef) => IdentifierName(symbolRef.Symbol); + + public static ExpressionSyntax ToSyntax(object obj, TypeSchema type, DecompileContext context) + { + return obj switch + { + Enum _ => MemberAccessExpression( + SyntaxKind.SimpleMemberAccessExpression, + IdentifierName(context.GetQualifiedName(type).ToString()), + IdentifierName(obj.ToString()) + ), + + _ => ToSyntax(obj, context), + }; + } } diff --git a/libs/UIX.DecompXml/Mock/IrisMethodCallExpression.cs b/libs/UIX.DecompXml/Mock/IrisMethodCallExpression.cs deleted file mode 100644 index 4729ab6..0000000 --- a/libs/UIX.DecompXml/Mock/IrisMethodCallExpression.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Iris.Markup; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; - -using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; - -namespace Microsoft.Iris.DecompXml.Mock; - -internal class IrisMethodCallExpression : IrisExpression, IArgumentProvider, IReturnValueProvider -{ - private readonly Expression[] _arguments; - - public IrisMethodCallExpression(MethodSchema method, Expression? target, IEnumerable arguments) - { - Method = method; - Target = target; - _arguments = arguments.ToArray(); - } - - public MethodSchema Method { get; } - - public sealed override ExpressionType NodeType => ExpressionType.Call; - - public Expression? Target { get; } - - public int ArgumentCount => _arguments.Length; - - public TypeSchema ReturnType => Method.ReturnType; - - public Expression GetArgument(int index) => _arguments[index]; - - public override ExpressionSyntax ToSyntax(DecompileContext context) - { - var targetExpression = Target switch - { - null => IdentifierName(context.GetQualifiedName(Method.Owner).ToString()), - IrisExpression irisExpr => irisExpr.ToSyntax(context), - _ => IdentifierName(Target.ToString()) - }; - - var methodExpression = MemberAccessExpression(CodeAnalysis.CSharp.SyntaxKind.SimpleMemberAccessExpression, - targetExpression, IdentifierName(Method.Name)); - - var argumentExpressions = _arguments - .Select(expr => ToSyntax(expr, context)) - .Select(Argument); - - return InvocationExpression(methodExpression, ArgumentList([..argumentExpressions])); - } -} diff --git a/libs/UIX.DecompXml/Mock/IrisObject.cs b/libs/UIX.DecompXml/Mock/IrisObject.cs index 1daf0b1..b953c08 100644 --- a/libs/UIX.DecompXml/Mock/IrisObject.cs +++ b/libs/UIX.DecompXml/Mock/IrisObject.cs @@ -26,11 +26,6 @@ internal record IrisObject(object Object, TypeSchema Type) type ??= constantInfo.Type; } - if (objIn is IReturnValueProvider hasReturnValue) - { - type ??= hasReturnValue.ReturnType; - } - type ??= Disassembler.GuessTypeSchema(obj.GetType(), context.LoadResult); return new(obj, type); diff --git a/libs/UIX.DecompXml/Mock/IrisPropertyExpression.cs b/libs/UIX.DecompXml/Mock/IrisPropertyExpression.cs deleted file mode 100644 index c187683..0000000 --- a/libs/UIX.DecompXml/Mock/IrisPropertyExpression.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Iris.Markup; -using System.Linq.Expressions; - -using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; - -namespace Microsoft.Iris.DecompXml.Mock; - -internal class IrisPropertyExpression : IrisExpression, IReturnValueProvider -{ - public IrisPropertyExpression(PropertySchema property, Expression? target) - { - Property = property; - Target = target; - } - - public new PropertySchema Property { get; } - - public sealed override ExpressionType NodeType => ExpressionType.MemberAccess; - - public Expression? Target { get; } - - public TypeSchema ReturnType => Property.PropertyType; - - public override ExpressionSyntax ToSyntax(DecompileContext context) - { - var targetExpression = Target switch - { - null => IdentifierName(context.GetQualifiedName(Property.Owner).ToString()), - IrisExpression irisExpr => irisExpr.ToSyntax(context), - _ => IdentifierName(Target.ToString()) - }; - - var propertyAccessExpression = MemberAccessExpression(CodeAnalysis.CSharp.SyntaxKind.SimpleMemberAccessExpression, - targetExpression, IdentifierName(Property.Name)); - - return propertyAccessExpression; - } -} diff --git a/libs/UIX.DecompXml/Mock/MockMarkupType.cs b/libs/UIX.DecompXml/Mock/MockMarkupType.cs deleted file mode 100644 index 4d3e49f..0000000 --- a/libs/UIX.DecompXml/Mock/MockMarkupType.cs +++ /dev/null @@ -1,84 +0,0 @@ -using Microsoft.Iris.Library; -using Microsoft.Iris.Markup; -using Microsoft.Iris.Session; -using System; -using System.Collections.Generic; - -namespace Microsoft.Iris.DecompXml.Mock; - -internal class MockMarkupType : IMarkupTypeBase -{ - private static readonly DeferredHandler s_executePendingScriptsHandler = ExecutePendingScripts; - - private readonly Dictionary _propertyStorage = []; - private readonly Dictionary _symbolStorage = []; - private readonly MarkupTypeSchema _typeSchema; - - private List _disposables = null; - private ScriptRunScheduler _scriptRunScheduler = new(); - - public MockMarkupType(MarkupTypeSchema typeSchema) - { - _typeSchema = typeSchema; - } - - public TypeSchema TypeSchema => _typeSchema; - - public MarkupListeners Listeners { get; set; } - - public bool ScriptEnabled => true; - - public Dictionary Storage { get; } = []; - - public IReadOnlyDictionary Properties => _propertyStorage; - - public IReadOnlyDictionary SymbolReferences => _symbolStorage; - - public object GetProperty(string name) => _propertyStorage[name]; - - public void SetProperty(string name, object value) => _propertyStorage[name] = value; - - public void NotifyInitialized() { } - - public void NotifyScriptErrors() { } - - public object ReadSymbol(SymbolReference symbolRef) => _symbolStorage[symbolRef]; - - public void WriteSymbol(SymbolReference symbolRef, object value) => _symbolStorage[symbolRef] = value; - - public object RunScript(uint scriptId, bool ignoreErrors, ParameterContext parameterContext) => _typeSchema.Run(this, scriptId, ignoreErrors, parameterContext); - - public void ScheduleScriptRun(uint scriptId, bool ignoreErrors) - { - if (!_scriptRunScheduler.Pending) - DeferredCall.Post(DispatchPriority.Script, s_executePendingScriptsHandler, this); - _scriptRunScheduler.ScheduleRun(scriptId, ignoreErrors); - } - - private static void ExecutePendingScripts(object args) - { - var mockType = (MockMarkupType)args; - mockType._scriptRunScheduler.Execute(mockType); - } - - public void RegisterDisposable(IDisposableObject disposable) - { - _disposables ??= []; - _disposables.Add(disposable); - } - - public bool UnregisterDisposable(ref IDisposableObject disposable) - { - if (_disposables != null) - { - int index = _disposables.IndexOf(disposable); - if (index != -1) - { - disposable = _disposables[index]; - _disposables.RemoveAt(index); - return true; - } - } - return false; - } -}