Browse Source

Fix #1439: Add DecompilerSettings.UseLambdaSyntax

pull/1440/head
Siegfried Pammer 6 years ago
parent
commit
859eb623b8
  1. 2
      ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs
  2. 16
      ICSharpCode.Decompiler/DecompilerSettings.cs

2
ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

@ -1633,7 +1633,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -1633,7 +1633,7 @@ namespace ICSharpCode.Decompiler.CSharp
if (ame.Parameters.Any(p => p.Type.IsNull)) {
// if there is an anonymous type involved, we are forced to use a lambda expression.
isLambda = true;
} else if (ame.Parameters.All(p => p.ParameterModifier == ParameterModifier.None)) {
} else if (settings.UseLambdaSyntax && ame.Parameters.All(p => p.ParameterModifier == ParameterModifier.None)) {
// otherwise use lambda only if an expression lambda is possible
isLambda = (body.Statements.Count == 1 && body.Statements.Single() is ReturnStatement);
}

16
ICSharpCode.Decompiler/DecompilerSettings.cs

@ -54,6 +54,7 @@ namespace ICSharpCode.Decompiler @@ -54,6 +54,7 @@ namespace ICSharpCode.Decompiler
}
if (languageVersion < CSharp.LanguageVersion.CSharp3) {
anonymousTypes = false;
useLambdaSyntax = false;
objectCollectionInitializers = false;
automaticProperties = false;
extensionMethods = false;
@ -148,6 +149,21 @@ namespace ICSharpCode.Decompiler @@ -148,6 +149,21 @@ namespace ICSharpCode.Decompiler
}
}
bool useLambdaSyntax = true;
/// <summary>
/// Use C# 3 lambda syntax if possible.
/// </summary>
public bool UseLambdaSyntax {
get { return useLambdaSyntax; }
set {
if (useLambdaSyntax != value) {
useLambdaSyntax = value;
OnPropertyChanged();
}
}
}
bool expressionTrees = true;
/// <summary>

Loading…
Cancel
Save