Skip to content

Commit

Permalink
Fix #2770: Add a few additional null-checks in tooltip code.
Browse files Browse the repository at this point in the history
  • Loading branch information
siegfriedpammer committed Aug 30, 2022
1 parent 6d4c5f3 commit 8a93d8b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
16 changes: 11 additions & 5 deletions ILSpy/Languages/ILLanguage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -195,27 +195,33 @@ public override RichText GetRichTextTooltip(IEntity entity)
{
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));
Expand Down
5 changes: 5 additions & 0 deletions ILSpy/TextView/DecompilerTextView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,11 @@ void ToolTipClosed(object? sender, EventArgs e)
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
{
Expand Down

0 comments on commit 8a93d8b

Please sign in to comment.