From 7cbcdd9f0e46d7555d6cc421d57e61aee551223d Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Mon, 29 Jan 2018 08:32:32 +0100 Subject: [PATCH] #1049: add back some decompiler settings --- ICSharpCode.Decompiler/CSharp/StatementBuilder.cs | 4 ++++ .../CSharp/Transforms/PatternStatementTransform.cs | 2 ++ .../IL/Transforms/TransformCollectionAndObjectInitializers.cs | 1 + .../IL/Transforms/TransformExpressionTrees.cs | 1 + 4 files changed, 8 insertions(+) diff --git a/ICSharpCode.Decompiler/CSharp/StatementBuilder.cs b/ICSharpCode.Decompiler/CSharp/StatementBuilder.cs index 13ab318f40..5fea9b7f82 100644 --- a/ICSharpCode.Decompiler/CSharp/StatementBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/StatementBuilder.cs @@ -402,6 +402,10 @@ protected internal override Statement VisitUsingInstruction(UsingInstruction ins Statement TransformToForeach(UsingInstruction inst, out Expression resource) { + if (!settings.ForEachStatement) { + resource = null; + return null; + } // Check if the using resource matches the GetEnumerator pattern. resource = exprBuilder.Translate(inst.ResourceExpression); var m = getEnumeratorPattern.Match(resource); diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs b/ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs index 2751a7c941..baa74e9ed9 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs @@ -236,6 +236,7 @@ bool ForStatementUsesVariable(ForStatement statement, IL.ILVariable variable) Statement TransformForeachOnArray(ForStatement forStatement) { + if (!context.Settings.ForEachStatement) return null; Match m = forOnArrayPattern.Match(forStatement); if (!m.Success) return null; var itemVariable = m.Get("itemVariable").Single().GetILVariable(); @@ -363,6 +364,7 @@ bool MatchForeachOnMultiDimArray(IL.ILVariable[] upperBounds, IL.ILVariable coll Statement TransformForeachOnMultiDimArray(ExpressionStatement expressionStatement) { + if (!context.Settings.ForEachStatement) return null; Match m; Statement stmt = expressionStatement; IL.ILVariable collection = null; diff --git a/ICSharpCode.Decompiler/IL/Transforms/TransformCollectionAndObjectInitializers.cs b/ICSharpCode.Decompiler/IL/Transforms/TransformCollectionAndObjectInitializers.cs index 6bf64d829d..d929d38fc0 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/TransformCollectionAndObjectInitializers.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/TransformCollectionAndObjectInitializers.cs @@ -33,6 +33,7 @@ public class TransformCollectionAndObjectInitializers : IStatementTransform void IStatementTransform.Run(Block block, int pos, StatementTransformContext context) { + if (!context.Settings.ObjectOrCollectionInitializers) return; this.context = context; try { DoTransform(block, pos); diff --git a/ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs b/ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs index 9adac56160..566c875e2f 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs @@ -99,6 +99,7 @@ bool MatchParameterVariableAssignment(ILInstruction expr, out ILVariable paramet public void Run(Block block, int pos, StatementTransformContext context) { + if (!context.Settings.ExpressionTrees) return; this.context = context; this.conversions = CSharpConversions.Get(context.TypeSystem.Compilation); this.resolver = new CSharpResolver(context.TypeSystem.Compilation);