diff --git a/ICSharpCode.Decompiler/Ast/Transforms/IntroduceUsingDeclarations.cs b/ICSharpCode.Decompiler/Ast/Transforms/IntroduceUsingDeclarations.cs index 3fbbef73c..ed2fa5b1c 100644 --- a/ICSharpCode.Decompiler/Ast/Transforms/IntroduceUsingDeclarations.cs +++ b/ICSharpCode.Decompiler/Ast/Transforms/IntroduceUsingDeclarations.cs @@ -44,6 +44,9 @@ namespace ICSharpCode.Decompiler.Ast.Transforms compilationUnit.InsertChildAfter(null, new UsingDeclaration { Import = nsType }, CompilationUnit.MemberRole); } + if (!context.Settings.FullyQualifyAmbiguousTypeNames) + return; + FindAmbiguousTypeNames(context.CurrentModule, internalsVisible: true); foreach (AssemblyNameReference r in context.CurrentModule.AssemblyReferences) { AssemblyDefinition d = context.CurrentModule.AssemblyResolver.Resolve(r); diff --git a/ICSharpCode.Decompiler/DecompilerSettings.cs b/ICSharpCode.Decompiler/DecompilerSettings.cs index 4ea54894d..c490cdb2a 100644 --- a/ICSharpCode.Decompiler/DecompilerSettings.cs +++ b/ICSharpCode.Decompiler/DecompilerSettings.cs @@ -140,6 +140,18 @@ namespace ICSharpCode.Decompiler } } + bool fullyQualifyAmbiguousTypeNames = true; + + public bool FullyQualifyAmbiguousTypeNames { + get { return fullyQualifyAmbiguousTypeNames; } + set { + if (fullyQualifyAmbiguousTypeNames != value) { + fullyQualifyAmbiguousTypeNames = value; + OnPropertyChanged("FullyQualifyAmbiguousTypeNames"); + } + } + } + public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) diff --git a/ICSharpCode.Decompiler/Tests/DecompilerTestBase.cs b/ICSharpCode.Decompiler/Tests/DecompilerTestBase.cs index dd9c285c4..304b1ed96 100644 --- a/ICSharpCode.Decompiler/Tests/DecompilerTestBase.cs +++ b/ICSharpCode.Decompiler/Tests/DecompilerTestBase.cs @@ -34,8 +34,10 @@ namespace ICSharpCode.Decompiler.Tests /// The decompilation result of compiled source code. static string RoundtripCode(string code) { + DecompilerSettings settings = new DecompilerSettings(); + settings.FullyQualifyAmbiguousTypeNames = false; AssemblyDefinition assembly = Compile(code); - AstBuilder decompiler = new AstBuilder(new DecompilerContext(assembly.MainModule)); + AstBuilder decompiler = new AstBuilder(new DecompilerContext(assembly.MainModule) { Settings = settings }); decompiler.AddAssembly(assembly); new Helpers.RemoveCompilerAttribute().Run(decompiler.CompilationUnit); StringWriter output = new StringWriter(); diff --git a/ICSharpCode.Decompiler/Tests/IncrementDecrement.cs b/ICSharpCode.Decompiler/Tests/IncrementDecrement.cs index 8716b89d8..e4aa729c9 100644 --- a/ICSharpCode.Decompiler/Tests/IncrementDecrement.cs +++ b/ICSharpCode.Decompiler/Tests/IncrementDecrement.cs @@ -36,7 +36,7 @@ public class IncrementDecrement } } - MyEnum enumField; + private IncrementDecrement.MyEnum enumField; public static int StaticField; public static int StaticProperty @@ -167,8 +167,8 @@ public class IncrementDecrement public void CompoundAssignEnum() { - enumField |= IncrementDecrement.MyEnum.Two; - enumField &= ~IncrementDecrement.MyEnum.Four; + this.enumField |= IncrementDecrement.MyEnum.Two; + this.enumField &= ~IncrementDecrement.MyEnum.Four; } public int PostIncrementInAddition(int i, int j)