From 09cad6fe31c12d542248b41354b2656572498c6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Petryka?= <35800402+MichalPetryka@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:51:37 +0100 Subject: [PATCH 1/2] Add lambda support --- Disasmo/Utils/SymbolUtils.cs | 11 ++++++++++- src/Vsix/Analyzers/DisasmMethodOrClassAction.cs | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Disasmo/Utils/SymbolUtils.cs b/Disasmo/Utils/SymbolUtils.cs index 295116f..f8a69a4 100644 --- a/Disasmo/Utils/SymbolUtils.cs +++ b/Disasmo/Utils/SymbolUtils.cs @@ -27,7 +27,16 @@ public static DisasmoSymbolInfo FromSymbol(ISymbol symbol) if (symbol is IMethodSymbol ms) { - if (ms.MethodKind == MethodKind.LocalFunction) + if (ms.MethodKind == MethodKind.LambdaMethod) + { + // hack for lambdas + target = prefix + ":*"; + if (symbol.ContainingSymbol is IMethodSymbol ps) + target += ps.MetadataName + "*"; + hostType = symbol.ContainingType.ToString(); + methodName = "*"; + } + else if (ms.MethodKind == MethodKind.LocalFunction) { // hack for mangled names target = prefix + ":*" + symbol.MetadataName + "*"; diff --git a/src/Vsix/Analyzers/DisasmMethodOrClassAction.cs b/src/Vsix/Analyzers/DisasmMethodOrClassAction.cs index 5d46061..d0e7998 100644 --- a/src/Vsix/Analyzers/DisasmMethodOrClassAction.cs +++ b/src/Vsix/Analyzers/DisasmMethodOrClassAction.cs @@ -59,6 +59,8 @@ protected override async Task IsValidSymbol(Document document, int tokenPo return true; if (token.Parent is OperatorDeclarationSyntax) return true; + if (token.Parent is AnonymousFunctionExpressionSyntax) + return true; } catch (Exception exc) { @@ -70,6 +72,9 @@ protected override async Task IsValidSymbol(Document document, int tokenPo static ISymbol FindRelatedSymbol(SemanticModel semanticModel, SyntaxNode node, bool allowClassesAndStructs, CancellationToken ct) { + if (node is AnonymousFunctionExpressionSyntax af) + return semanticModel.GetDeclaredSymbol(af, ct); + if (node is LocalFunctionStatementSyntax lf) return semanticModel.GetDeclaredSymbol(lf, ct); From 8439930677e50bf57a0b14192949d93e954153e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Petryka?= <35800402+MichalPetryka@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:53:45 +0100 Subject: [PATCH 2/2] Update SymbolUtils.cs --- Disasmo/Utils/SymbolUtils.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Disasmo/Utils/SymbolUtils.cs b/Disasmo/Utils/SymbolUtils.cs index f8a69a4..3ab8128 100644 --- a/Disasmo/Utils/SymbolUtils.cs +++ b/Disasmo/Utils/SymbolUtils.cs @@ -31,7 +31,7 @@ public static DisasmoSymbolInfo FromSymbol(ISymbol symbol) { // hack for lambdas target = prefix + ":*"; - if (symbol.ContainingSymbol is IMethodSymbol ps) + if (symbol.ContainingSymbol is IMethodSymbol { MethodKind: MethodKind.Ordinary } ps) target += ps.MetadataName + "*"; hostType = symbol.ContainingType.ToString(); methodName = "*";