Browse Source

Fix #2770: Add a few additional null-checks in tooltip code.

pull/2774/head
Siegfried Pammer 3 years ago
parent
commit
8a93d8b6e1
  1. 16
      ILSpy/Languages/ILLanguage.cs
  2. 5
      ILSpy/TextView/DecompilerTextView.cs

16
ILSpy/Languages/ILLanguage.cs

@ -195,27 +195,33 @@ namespace ICSharpCode.ILSpy @@ -195,27 +195,33 @@ namespace ICSharpCode.ILSpy
{
var output = new AvalonEditTextOutput() { IgnoreNewLineAndIndent = true };
var disasm = CreateDisassembler(output, new DecompilationOptions());
PEFile module = entity.ParentModule?.PEFile;
if (module == null)
{
return null;
}
switch (entity.SymbolKind)
{
case SymbolKind.TypeDefinition:
disasm.DisassembleTypeHeader(entity.ParentModule.PEFile, (TypeDefinitionHandle)entity.MetadataToken);
disasm.DisassembleTypeHeader(module, (TypeDefinitionHandle)entity.MetadataToken);
break;
case SymbolKind.Field:
disasm.DisassembleFieldHeader(entity.ParentModule.PEFile, (FieldDefinitionHandle)entity.MetadataToken);
disasm.DisassembleFieldHeader(module, (FieldDefinitionHandle)entity.MetadataToken);
break;
case SymbolKind.Property:
case SymbolKind.Indexer:
disasm.DisassemblePropertyHeader(entity.ParentModule.PEFile, (PropertyDefinitionHandle)entity.MetadataToken);
disasm.DisassemblePropertyHeader(module, (PropertyDefinitionHandle)entity.MetadataToken);
break;
case SymbolKind.Event:
disasm.DisassembleEventHeader(entity.ParentModule.PEFile, (EventDefinitionHandle)entity.MetadataToken);
disasm.DisassembleEventHeader(module, (EventDefinitionHandle)entity.MetadataToken);
break;
case SymbolKind.Method:
case SymbolKind.Operator:
case SymbolKind.Constructor:
case SymbolKind.Destructor:
case SymbolKind.Accessor:
disasm.DisassembleMethodHeader(entity.ParentModule.PEFile, (MethodDefinitionHandle)entity.MetadataToken);
disasm.DisassembleMethodHeader(module, (MethodDefinitionHandle)entity.MetadataToken);
break;
default:
output.Write(GetDisplayName(entity, true, true, true));

5
ILSpy/TextView/DecompilerTextView.cs

@ -441,6 +441,11 @@ namespace ICSharpCode.ILSpy.TextView @@ -441,6 +441,11 @@ namespace ICSharpCode.ILSpy.TextView
Language currentLanguage = MainWindow.Instance.CurrentLanguage;
DocumentationUIBuilder renderer = new DocumentationUIBuilder(new CSharpAmbience(), currentLanguage.SyntaxHighlighting);
RichText richText = currentLanguage.GetRichTextTooltip(resolved);
if (richText == null)
{
return null;
}
renderer.AddSignatureBlock(richText.Text, richText.ToRichTextModel());
try
{

Loading…
Cancel
Save