Browse Source

Merge pull request #2114 from Pathoschild/always-qualify-member-references

Add option to always qualify member references
pull/2126/head
Daniel Grunwald 5 years ago committed by GitHub
parent
commit
b134209706
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      ICSharpCode.Decompiler/CSharp/CallBuilder.cs
  2. 2
      ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs
  3. 20
      ICSharpCode.Decompiler/DecompilerSettings.cs
  4. 9
      ILSpy/Properties/Resources.Designer.cs
  5. 3
      ILSpy/Properties/Resources.resx

4
ICSharpCode.Decompiler/CSharp/CallBuilder.cs

@ -777,7 +777,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -777,7 +777,7 @@ namespace ICSharpCode.Decompiler.CSharp
bool requireTarget;
ResolveResult targetResolveResult;
if ((allowedTransforms & CallTransformation.RequireTarget) != 0) {
if (expressionBuilder.HidesVariableWithName(method.Name)) {
if (settings.AlwaysQualifyMemberReferences || expressionBuilder.HidesVariableWithName(method.Name)) {
requireTarget = true;
} else {
if (method.IsLocalFunction)
@ -1099,7 +1099,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -1099,7 +1099,7 @@ namespace ICSharpCode.Decompiler.CSharp
TranslatedExpression target, List<TranslatedExpression> arguments, string[] argumentNames)
{
bool requireTarget;
if (method.AccessorOwner.SymbolKind == SymbolKind.Indexer || expressionBuilder.HidesVariableWithName(method.AccessorOwner.Name))
if (settings.AlwaysQualifyMemberReferences || method.AccessorOwner.SymbolKind == SymbolKind.Indexer || expressionBuilder.HidesVariableWithName(method.AccessorOwner.Name))
requireTarget = true;
else if (method.IsStatic)
requireTarget = !expressionBuilder.IsCurrentOrContainingType(method.DeclaringTypeDefinition);

2
ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

@ -226,7 +226,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -226,7 +226,7 @@ namespace ICSharpCode.Decompiler.CSharp
bool RequiresQualifier(IMember member, TranslatedExpression target)
{
if (HidesVariableWithName(member.Name))
if (settings.AlwaysQualifyMemberReferences || HidesVariableWithName(member.Name))
return true;
if (member.IsStatic)
return !IsCurrentOrContainingType(member.DeclaringTypeDefinition);

20
ICSharpCode.Decompiler/DecompilerSettings.cs

@ -619,6 +619,26 @@ namespace ICSharpCode.Decompiler @@ -619,6 +619,26 @@ namespace ICSharpCode.Decompiler
}
}
bool alwaysQualifyMemberReferences = false;
/// <summary>
/// Gets/Sets whether to always qualify member references.
/// true: <c>this.DoSomething();</c>
/// false: <c>DoSomething();</c>
/// default: false
/// </summary>
[Category("Other")]
[Description("DecompilerSettings.AlwaysQualifyMemberReferences")]
public bool AlwaysQualifyMemberReferences {
get { return alwaysQualifyMemberReferences; }
set {
if (alwaysQualifyMemberReferences != value) {
alwaysQualifyMemberReferences = value;
OnPropertyChanged();
}
}
}
bool alwaysShowEnumMemberValues = false;
/// <summary>

9
ILSpy/Properties/Resources.Designer.cs generated

@ -648,6 +648,15 @@ namespace ICSharpCode.ILSpy.Properties { @@ -648,6 +648,15 @@ namespace ICSharpCode.ILSpy.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Always qualify member references.
/// </summary>
public static string DecompilerSettings_AlwaysQualifyMemberReferences {
get {
return ResourceManager.GetString("DecompilerSettings.AlwaysQualifyMemberReferences", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Always show enum member values.
/// </summary>

3
ILSpy/Properties/Resources.resx

@ -246,6 +246,9 @@ Are you sure you want to continue?</value> @@ -246,6 +246,9 @@ Are you sure you want to continue?</value>
<data name="DecompilerSettings.AlwaysCastTargetsOfExplicitInterfaceImplementationCalls" xml:space="preserve">
<value>Always cast targets of explicit interface implementation calls</value>
</data>
<data name="DecompilerSettings.AlwaysQualifyMemberReferences" xml:space="preserve">
<value>Always qualify member references</value>
</data>
<data name="DecompilerSettings.AlwaysShowEnumMemberValues" xml:space="preserve">
<value>Always show enum member values</value>
</data>

Loading…
Cancel
Save