|
' Licensed to the .NET Foundation under one or more agreements.
' The .NET Foundation licenses this file to you under the MIT license.
' See the LICENSE file in the project root for more information.
Imports System.Collections.Immutable
Imports Microsoft.CodeAnalysis.Text
Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
''' <summary>
''' Type parameters in documentation comments are complicated since they sort of act as declarations,
''' rather than references. Like in the following example:
'''
''' <code>
''' ''' <see CREF="TypeA(Of X, Y).MethodB(x As X, y As Y)"/>
''' Class Clazz
''' ...
''' </code>
'''
''' </summary>
Friend NotInheritable Class CrefTypeParameterSymbol
Inherits TypeParameterSymbol
Private ReadOnly _ordinal As Integer ' 0 is first type parameter, etc.
Private ReadOnly _name As String
Private ReadOnly _syntaxReference As SyntaxReference
Public Sub New(ordinal As Integer, name As String, syntax As TypeSyntax)
Me._ordinal = ordinal
Me._name = name
Me._syntaxReference = syntax.GetReference()
End Sub
Public Overrides ReadOnly Property Ordinal As Integer
Get
Return Me._ordinal
End Get
End Property
Public Overrides ReadOnly Property Name As String
Get
Return Me._name
End Get
End Property
Public Overloads Overrides Function GetAttributes() As ImmutableArray(Of VisualBasicAttributeData)
Return ImmutableArray(Of VisualBasicAttributeData).Empty
End Function
Public Overrides ReadOnly Property HasConstructorConstraint As Boolean
Get
Return False
End Get
End Property
Public Overrides ReadOnly Property HasReferenceTypeConstraint As Boolean
Get
Return False
End Get
End Property
Public Overrides ReadOnly Property HasValueTypeConstraint As Boolean
Get
Return False
End Get
End Property
Public Overrides ReadOnly Property AllowsRefLikeType As Boolean
Get
Return False
End Get
End Property
Friend Overrides ReadOnly Property ConstraintTypesNoUseSiteDiagnostics As ImmutableArray(Of TypeSymbol)
Get
Return ImmutableArray(Of TypeSymbol).Empty
End Get
End Property
Friend Overrides ReadOnly Property HasUnmanagedTypeConstraint As Boolean
Get
Return False
End Get
End Property
Friend Overrides Function GetConstraints() As ImmutableArray(Of TypeParameterConstraint)
Return ImmutableArray(Of TypeParameterConstraint).Empty
End Function
Friend Overrides Sub ResolveConstraints(inProgress As ConsList(Of TypeParameterSymbol))
End Sub
Friend Overrides Sub EnsureAllConstraintsAreResolved()
End Sub
Public Overrides ReadOnly Property ContainingSymbol As Symbol
Get
Return Nothing
End Get
End Property
Public Overrides ReadOnly Property DeclaringSyntaxReferences As ImmutableArray(Of SyntaxReference)
Get
Return ImmutableArray.Create(Of SyntaxReference)(Me._syntaxReference)
End Get
End Property
Public Overrides ReadOnly Property Locations As ImmutableArray(Of Location)
Get
Return ImmutableArray.Create(Of Location)(Me._syntaxReference.GetLocation())
End Get
End Property
Public Overrides ReadOnly Property TypeParameterKind As TypeParameterKind
Get
Return TypeParameterKind.Cref
End Get
End Property
Public Overrides ReadOnly Property Variance As VarianceKind
Get
Return VarianceKind.None
End Get
End Property
Public Overrides Function Equals(other As TypeSymbol, comparison As TypeCompareKind) As Boolean
Return Equals(TryCast(other, CrefTypeParameterSymbol))
End Function
Public Overloads Function Equals(other As CrefTypeParameterSymbol) As Boolean
If Me Is other Then
Return True
End If
If other Is Nothing Then
Return False
End If
Return Me._name = other._name AndAlso
Me._ordinal = other._ordinal AndAlso
Me._syntaxReference.GetSyntax().Equals(other._syntaxReference.GetSyntax())
End Function
Public Overrides Function GetHashCode() As Integer
Return Hash.Combine(Me._name, Me._ordinal)
End Function
End Class
End Namespace
|