未验证 提交 2a3d27e9 编写于 作者: M Markus Hartmair 提交者: GitHub

Fix VB nameof inside async or iterator (#45738)

Suppress ERR_BadResumableAccessReturnVariable (BC36946) in case of nameof argument, fixes #23019.
上级 7b4bfaae
......@@ -3227,7 +3227,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Case SymbolKind.Local
Dim localSymbol = DirectCast(lookupResult.SingleSymbol, LocalSymbol)
If localSymbol.IsFunctionValue Then
If localSymbol.IsFunctionValue AndAlso Not IsNameOfArgument(node) Then
Dim method = DirectCast(localSymbol.ContainingSymbol, MethodSymbol)
If method.IsAsync OrElse method.IsIterator Then
......
......@@ -3637,5 +3637,32 @@ BC30469: Reference to a non-shared member requires an object reference.
~~~~~~~~~~~~~~~~~~~~~~~~
]]></expected>)
End Sub
<Fact, WorkItem(23019, "https://github.com/dotnet/roslyn/issues/23019")>
Public Sub NameOfInAsync()
Dim compilationDef =
<compilation>
<file name="a.vb">
Imports System
Imports System.Threading.Tasks
Module Module1
Sub Main()
M().GetAwaiter().GetResult()
End Sub
Async Function M() As Task
Console.WriteLine(NameOf(M))
Await Task.CompletedTask
End Function
End Module
</file>
</compilation>
Dim comp = CreateCompilation(compilationDef, options:=TestOptions.DebugExe)
CompileAndVerify(comp, expectedOutput:=
<![CDATA[
M
]]>).VerifyDiagnostics()
End Sub
End Class
End Namespace
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册