From f37888e7c8b4e9ea5231e5195c998c03c0653b99 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 9 Jun 2012 21:30:17 +0200 Subject: [PATCH] Fixed local variable references in current module. --- .../Debugger/Debugger.Core/TypeSystemExtensions.cs | 5 +++-- .../ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs b/src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs index c1c65b9eee..0300d5ffb2 100644 --- a/src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs +++ b/src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs @@ -65,6 +65,7 @@ namespace Debugger var moduleMetadataInfo = new ModuleMetadataInfo(module); foreach (var typeDef in asm.GetAllTypeDefinitions()) { var cecilTypeDef = loader.GetCecilObject(typeDef); + loader.SetCurrentModule(cecilTypeDef.Module); moduleMetadataInfo.MetadataTokens[typeDef] = cecilTypeDef.MetadataToken.ToUInt32(); foreach (var member in typeDef.Fields) { var cecilMember = loader.GetCecilObject(member); @@ -129,7 +130,7 @@ namespace Debugger { var info = GetInfo(method.ParentAssembly); var variableTypes = info.LocalVariableTypes[method.UnresolvedMember]; - return variableTypes[index].Resolve(method.Compilation); + return variableTypes[index].Resolve(new SimpleTypeResolveContext(method)); } #endregion @@ -376,7 +377,7 @@ namespace Debugger public static IField GetBackingField(this IMethod method) { - throw new NotImplementedException(); + return null; } public static ICorDebugType[] GetTypeArguments(this IMethod method) diff --git a/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs b/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs index 1daa3457da..39b0487025 100644 --- a/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs +++ b/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs @@ -161,6 +161,16 @@ namespace ICSharpCode.NRefactory.TypeSystem return result; } + /// + /// Sets the current module. + /// This causes ReadTypeReference() to use for references + /// in that module. + /// + public void SetCurrentModule(ModuleDefinition module) + { + this.currentModule = module; + } + /// /// Loads a type from Cecil. ///