Skip to content

InvalidCastException in VB SymbolDisplay when using UseArityForGenericTypes option #80165

@jcouv

Description

@jcouv

If you add the following unittest to SymbolDisplayTests, you get a cast exception.
This issue is referenced in a test.

    System.InvalidCastException : Unable to cast object of type 'Microsoft.CodeAnalysis.CSharp.Symbols.PublicModel.NonErrorNamedTypeSymbol' to type 'Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol'.

  Stack Trace: 
    SymbolDisplayVisitor.AddNameAndTypeArgumentsOrParameters(INamedTypeSymbol symbol, Boolean noEscaping) line 281
        <Theory, CombinatorialData>
        Public Sub UseArityForGenericTypes_CSharpSymbol(useMetadata As Boolean)
            Dim text =
<text>
    <![CDATA[
class C<T>
{
}
    ]]>
</text>.Value

            Dim format = SymbolDisplayFormat.VisualBasicErrorMessageFormat.
                WithCompilerInternalOptions(SymbolDisplayCompilerInternalOptions.UseArityForGenericTypes)

            Dim parseOptions = CSharp.CSharpParseOptions.Default.WithLanguageVersion(CSharp.LanguageVersion.Preview)
            Dim comp As Compilation
            If useMetadata Then
                Dim libComp = CreateCSharpCompilation("c", text, parseOptions:=parseOptions)
                comp = CreateCSharpCompilation("d", code:="", parseOptions:=parseOptions, referencedAssemblies:=libComp.References.Concat(libComp.EmitToImageReference()))
            Else
                comp = CreateCSharpCompilation("c", text, parseOptions:=parseOptions)
            End If

            Dim c = DirectCast(comp.GlobalNamespace.GetMembers("C").Single(), ITypeSymbol)

            ' Tracked by : 
            AssertEx.Equal("C", SymbolDisplay.ToDisplayString(c, format))
        End Sub

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions