Browse Source

#1025: Extend GetSymbol(this AstNode) to support LdVirtDelegate

pull/1608/head
Siegfried Pammer 6 years ago
parent
commit
dbd70d1879
  1. 16
      ICSharpCode.Decompiler/CSharp/Annotations.cs

16
ICSharpCode.Decompiler/CSharp/Annotations.cs

@ -108,11 +108,17 @@ namespace ICSharpCode.Decompiler.CSharp
if (rr is MethodGroupResolveResult) { if (rr is MethodGroupResolveResult) {
// delegate construction? // delegate construction?
var newObj = node.Annotation<NewObj>(); var newObj = node.Annotation<NewObj>();
var funcptr = newObj?.Arguments.ElementAtOrDefault(1); if (newObj != null) {
if (funcptr is LdFtn ldftn) { var funcptr = newObj.Arguments.ElementAtOrDefault(1);
return ldftn.Method; if (funcptr is LdFtn ldftn) {
} else if (funcptr is LdVirtFtn ldVirtFtn) { return ldftn.Method;
return ldVirtFtn.Method; } else if (funcptr is LdVirtFtn ldVirtFtn) {
return ldVirtFtn.Method;
}
}
var ldVirtDelegate = node.Annotation<LdVirtDelegate>();
if (ldVirtDelegate != null) {
return ldVirtDelegate.Method;
} }
} }
return rr?.GetSymbol(); return rr?.GetSymbol();

Loading…
Cancel
Save