diff --git a/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs b/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs index fda33199b..1947aff16 100644 --- a/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs +++ b/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs @@ -657,7 +657,7 @@ namespace ICSharpCode.Decompiler.CSharp } AddDefinesForConditionalAttributes(function); - var statementBuilder = new StatementBuilder(specializingTypeSystem, decompilationContext, method, function, CancellationToken); + var statementBuilder = new StatementBuilder(specializingTypeSystem, decompilationContext, method, function, settings, CancellationToken); var body = statementBuilder.ConvertAsBlock(function.Body); entityDecl.AddChild(body, Roles.Body); diff --git a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs index eb77a0a8b..8c101d1f3 100644 --- a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs @@ -65,13 +65,15 @@ namespace ICSharpCode.Decompiler.CSharp internal readonly ICompilation compilation; internal readonly CSharpResolver resolver; readonly TypeSystemAstBuilder astBuilder; + readonly DecompilerSettings settings; readonly CancellationToken cancellationToken; - public ExpressionBuilder(IDecompilerTypeSystem typeSystem, ITypeResolveContext decompilationContext, CancellationToken cancellationToken) + public ExpressionBuilder(IDecompilerTypeSystem typeSystem, ITypeResolveContext decompilationContext, DecompilerSettings settings, CancellationToken cancellationToken) { Debug.Assert(decompilationContext != null); this.typeSystem = typeSystem; this.decompilationContext = decompilationContext; + this.settings = settings; this.cancellationToken = cancellationToken; this.compilation = decompilationContext.Compilation; this.resolver = new CSharpResolver(new CSharpTypeResolveContext(compilation.MainAssembly, null, decompilationContext.CurrentTypeDefinition, decompilationContext.CurrentMember)); @@ -959,7 +961,7 @@ namespace ICSharpCode.Decompiler.CSharp AnonymousMethodExpression ame = new AnonymousMethodExpression(); ame.Parameters.AddRange(MakeParameters(method, function)); ame.HasParameterList = true; - StatementBuilder builder = new StatementBuilder(typeSystem.GetSpecializingTypeSystem(new SimpleTypeResolveContext(method)), this.decompilationContext, method, function, cancellationToken); + StatementBuilder builder = new StatementBuilder(typeSystem.GetSpecializingTypeSystem(new SimpleTypeResolveContext(method)), this.decompilationContext, method, function, settings, cancellationToken); var body = builder.ConvertAsBlock(function.Body); bool isLambda = false; bool isMultiLineLambda = false; diff --git a/ICSharpCode.Decompiler/CSharp/StatementBuilder.cs b/ICSharpCode.Decompiler/CSharp/StatementBuilder.cs index 0181be43f..99c23da2a 100644 --- a/ICSharpCode.Decompiler/CSharp/StatementBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/StatementBuilder.cs @@ -34,14 +34,16 @@ namespace ICSharpCode.Decompiler.CSharp internal readonly ExpressionBuilder exprBuilder; readonly ILFunction currentFunction; readonly IMethod currentMethod; + readonly DecompilerSettings settings; readonly CancellationToken cancellationToken; - public StatementBuilder(IDecompilerTypeSystem typeSystem, ITypeResolveContext decompilationContext, IMethod currentMethod, ILFunction currentFunction, CancellationToken cancellationToken) + public StatementBuilder(IDecompilerTypeSystem typeSystem, ITypeResolveContext decompilationContext, IMethod currentMethod, ILFunction currentFunction, DecompilerSettings settings, CancellationToken cancellationToken) { Debug.Assert(typeSystem != null && decompilationContext != null && currentMethod != null); - this.exprBuilder = new ExpressionBuilder(typeSystem, decompilationContext, cancellationToken); + this.exprBuilder = new ExpressionBuilder(typeSystem, decompilationContext, settings, cancellationToken); this.currentFunction = currentFunction; this.currentMethod = currentMethod; + this.settings = settings; this.cancellationToken = cancellationToken; }