Browse Source

fix DebuggerProcessEntityContext: each IEntityModelContext needs a specific main or current assembly.

newNRILSpyDebugger
Siegfried Pammer 13 years ago
parent
commit
c3dfe8dd2a
  1. 11
      src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
  2. 14
      src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs

11
src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs

@ -331,16 +331,17 @@ namespace Debugger.AddIn @@ -331,16 +331,17 @@ namespace Debugger.AddIn
var val = Convert(result.Input);
if (result.Conversion.IsBoxingConversion)
return val;
else if (result.Conversion.IsIdentityConversion)
if (result.Conversion.IsIdentityConversion)
return val;
else if (result.Conversion.IsNumericConversion) {
if (result.Conversion.IsNumericConversion) {
var convVal = CSharpPrimitiveCast.Cast(ReflectionHelper.GetTypeCode(result.Type), val.PrimitiveValue, false);
return Eval.CreateValue(evalThread, convVal);
} else if (result.Conversion.IsUserDefined)
}
if (result.Conversion.IsUserDefined)
return InvokeMethod(null, result.Conversion.Method, val);
else if (result.Conversion.IsReferenceConversion && result.Conversion.IsImplicit)
if (result.Conversion.IsReferenceConversion && result.Conversion.IsImplicit)
return val;
throw new NotImplementedException();
throw new NotImplementedException(string.Format("conversion '{0}' not implemented!", result.Conversion));
}
Value Visit(LocalResolveResult result)

14
src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs

@ -198,7 +198,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -198,7 +198,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
static IAssemblyModel CreateAssemblyModel(Module module)
{
// references??
IEntityModelContext context = new DebuggerProcessEntityModelContext(module.Process);
IEntityModelContext context = new DebuggerProcessEntityModelContext(module.Process, module);
IUpdateableAssemblyModel model = SD.GetRequiredService<IModelFactory>().CreateAssemblyModel(context);
var types = module.Assembly.TopLevelTypeDefinitions.SelectMany(td => td.Parts).ToList();
model.AssemblyName = module.UnresolvedAssembly.AssemblyName;
@ -242,17 +242,21 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -242,17 +242,21 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
class DebuggerProcessEntityModelContext : IEntityModelContext
{
Debugger.Process process;
Debugger.Module currentModule;
public DebuggerProcessEntityModelContext(Process process)
public DebuggerProcessEntityModelContext(Process process, Module currentModule)
{
if (process == null)
throw new ArgumentNullException("process");
if (currentModule == null)
throw new ArgumentNullException("currentModule");
this.process = process;
this.currentModule = currentModule;
}
public ICompilation GetCompilation()
{
var mainModule = process.GetModule(Path.GetFileName(process.Filename));
var mainModule = currentModule;
return new SimpleCompilation(mainModule.UnresolvedAssembly, process.Modules.Where(m => m != mainModule).Select(m => m.UnresolvedAssembly));
}
@ -266,11 +270,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -266,11 +270,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
public string AssemblyName {
get { return Path.GetFileNameWithoutExtension(process.Filename); }
get { return currentModule.UnresolvedAssembly.AssemblyName; }
}
public string Location {
get { return process.Filename; }
get { return currentModule.FullPath; }
}
public bool IsValid {

Loading…
Cancel
Save