Browse Source

Fixed local variable references in current module.

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
f37888e7c8
  1. 5
      src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs
  2. 10
      src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs

5
src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs

@ -65,6 +65,7 @@ namespace Debugger
var moduleMetadataInfo = new ModuleMetadataInfo(module); var moduleMetadataInfo = new ModuleMetadataInfo(module);
foreach (var typeDef in asm.GetAllTypeDefinitions()) { foreach (var typeDef in asm.GetAllTypeDefinitions()) {
var cecilTypeDef = loader.GetCecilObject(typeDef); var cecilTypeDef = loader.GetCecilObject(typeDef);
loader.SetCurrentModule(cecilTypeDef.Module);
moduleMetadataInfo.MetadataTokens[typeDef] = cecilTypeDef.MetadataToken.ToUInt32(); moduleMetadataInfo.MetadataTokens[typeDef] = cecilTypeDef.MetadataToken.ToUInt32();
foreach (var member in typeDef.Fields) { foreach (var member in typeDef.Fields) {
var cecilMember = loader.GetCecilObject(member); var cecilMember = loader.GetCecilObject(member);
@ -129,7 +130,7 @@ namespace Debugger
{ {
var info = GetInfo(method.ParentAssembly); var info = GetInfo(method.ParentAssembly);
var variableTypes = info.LocalVariableTypes[method.UnresolvedMember]; var variableTypes = info.LocalVariableTypes[method.UnresolvedMember];
return variableTypes[index].Resolve(method.Compilation); return variableTypes[index].Resolve(new SimpleTypeResolveContext(method));
} }
#endregion #endregion
@ -376,7 +377,7 @@ namespace Debugger
public static IField GetBackingField(this IMethod method) public static IField GetBackingField(this IMethod method)
{ {
throw new NotImplementedException(); return null;
} }
public static ICorDebugType[] GetTypeArguments(this IMethod method) public static ICorDebugType[] GetTypeArguments(this IMethod method)

10
src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs

@ -161,6 +161,16 @@ namespace ICSharpCode.NRefactory.TypeSystem
return result; return result;
} }
/// <summary>
/// Sets the current module.
/// This causes ReadTypeReference() to use <see cref="DefaultAssemblyReference.CurrentAssembly"/> for references
/// in that module.
/// </summary>
public void SetCurrentModule(ModuleDefinition module)
{
this.currentModule = module;
}
/// <summary> /// <summary>
/// Loads a type from Cecil. /// Loads a type from Cecil.
/// </summary> /// </summary>

Loading…
Cancel
Save