diff --git a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs index 3706a68490..05a6406920 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs @@ -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) diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs index a757815cfe..831a94544c 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs @@ -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().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 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 } 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 {