Browse Source

#912: add setting for turning off implicit method group conversions

pull/909/merge
Daniel Grunwald 8 years ago
parent
commit
63493f1fee
  1. 2
      ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs
  2. 4
      ICSharpCode.Decompiler/CSharp/TranslatedExpression.cs
  3. 19
      ICSharpCode.Decompiler/DecompilerSettings.cs

2
ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

@ -69,7 +69,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -69,7 +69,7 @@ namespace ICSharpCode.Decompiler.CSharp
internal readonly ICompilation compilation;
internal readonly CSharpResolver resolver;
readonly TypeSystemAstBuilder astBuilder;
readonly DecompilerSettings settings;
internal readonly DecompilerSettings settings;
readonly CancellationToken cancellationToken;
public ExpressionBuilder(IDecompilerTypeSystem typeSystem, ITypeResolveContext decompilationContext, DecompilerSettings settings, CancellationToken cancellationToken)

4
ICSharpCode.Decompiler/CSharp/TranslatedExpression.cs

@ -179,7 +179,9 @@ namespace ICSharpCode.Decompiler.CSharp @@ -179,7 +179,9 @@ namespace ICSharpCode.Decompiler.CSharp
|| type.Kind == TypeKind.Delegate && conversion.Conversion.IsAnonymousFunctionConversion
)) {
return this.UnwrapChild(cast.Expression);
} else if (Expression is ObjectCreateExpression oce && conversion.Conversion.IsMethodGroupConversion && oce.Arguments.Count == 1) {
} else if (Expression is ObjectCreateExpression oce && conversion.Conversion.IsMethodGroupConversion
&& oce.Arguments.Count == 1 && expressionBuilder.settings.UseImplicitMethodGroupConversion)
{
return this.UnwrapChild(oce.Arguments.Single());
}
}

19
ICSharpCode.Decompiler/DecompilerSettings.cs

@ -228,7 +228,24 @@ namespace ICSharpCode.Decompiler @@ -228,7 +228,24 @@ namespace ICSharpCode.Decompiler
}
}
}
bool useImplicitMethodGroupConversion = true;
/// <summary>
/// Gets/Sets whether to use C# 2.0 method group conversions.
/// true: <c>EventHandler h = this.OnClick;</c>
/// false: <c>EventHandler h = new EventHandler(this.OnClick);</c>
/// </summary>
public bool UseImplicitMethodGroupConversion {
get { return useImplicitMethodGroupConversion; }
set {
if (useImplicitMethodGroupConversion != value) {
useImplicitMethodGroupConversion = value;
OnPropertyChanged();
}
}
}
bool fullyQualifyAmbiguousTypeNames = true;
public bool FullyQualifyAmbiguousTypeNames {

Loading…
Cancel
Save