| File: Symbols\Retargeting\RetargetingTypeParameterSymbol.vb | Web Access |
| Project: src\roslyn\src\Compilers\VisualBasic\Portable\Microsoft.CodeAnalysis.VisualBasic.vbproj (Microsoft.CodeAnalysis.VisualBasic) |
' 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 Imports System.Collections.Generic Imports System.Collections.Immutable Imports System.Globalization Imports System.Threading Imports Microsoft.CodeAnalysis.Text Imports Microsoft.CodeAnalysis.VisualBasic.Symbols Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting ''' <summary> ''' Represents a type parameter in a RetargetingModuleSymbol. Essentially this is a wrapper around ''' another TypeParameterSymbol that is responsible for retargeting symbols from one assembly to another. ''' It can retarget symbols for multiple assemblies at the same time. ''' </summary> Friend NotInheritable Class RetargetingTypeParameterSymbol Inherits SubstitutableTypeParameterSymbol ''' <summary> ''' Owning RetargetingModuleSymbol. ''' </summary> Private ReadOnly _retargetingModule As RetargetingModuleSymbol ''' <summary> ''' The underlying TypeParameterSymbol, cannot be another RetargetingTypeParameterSymbol. ''' </summary> Private ReadOnly _underlyingTypeParameter As TypeParameterSymbol Public Sub New(retargetingModule As RetargetingModuleSymbol, underlyingTypeParameter As TypeParameterSymbol) Debug.Assert(retargetingModule IsNot Nothing) Debug.Assert(underlyingTypeParameter IsNot Nothing) If TypeOf underlyingTypeParameter Is RetargetingTypeParameterSymbol Then Throw New ArgumentException() End If _retargetingModule = retargetingModule _underlyingTypeParameter = underlyingTypeParameter End Sub Private ReadOnly Property RetargetingTranslator As RetargetingModuleSymbol.RetargetingSymbolTranslator Get Return _retargetingModule.RetargetingTranslator End Get End Property Public ReadOnly Property UnderlyingTypeParameter As TypeParameterSymbol Get Return _underlyingTypeParameter End Get End Property Public Overrides ReadOnly Property TypeParameterKind As TypeParameterKind Get Return _underlyingTypeParameter.TypeParameterKind End Get End Property Public Overrides ReadOnly Property IsImplicitlyDeclared As Boolean Get Return _underlyingTypeParameter.IsImplicitlyDeclared End Get End Property Public Overrides ReadOnly Property Ordinal As Integer Get Return _underlyingTypeParameter.Ordinal End Get End Property Friend Overrides ReadOnly Property ConstraintTypesNoUseSiteDiagnostics As ImmutableArray(Of TypeSymbol) Get Return RetargetingTranslator.Retarget(_underlyingTypeParameter.ConstraintTypesNoUseSiteDiagnostics) End Get End Property Friend Overrides ReadOnly Property HasUnmanagedTypeConstraint As Boolean Get Return _underlyingTypeParameter.HasUnmanagedTypeConstraint End Get End Property Public Overrides ReadOnly Property HasConstructorConstraint As Boolean Get Return _underlyingTypeParameter.HasConstructorConstraint End Get End Property Public Overrides ReadOnly Property HasReferenceTypeConstraint As Boolean Get Return _underlyingTypeParameter.HasReferenceTypeConstraint End Get End Property Public Overrides ReadOnly Property HasValueTypeConstraint As Boolean Get Return _underlyingTypeParameter.HasValueTypeConstraint End Get End Property Public Overrides ReadOnly Property AllowsRefLikeType As Boolean Get Return _underlyingTypeParameter.AllowsRefLikeType End Get End Property Public Overrides ReadOnly Property Variance As VarianceKind Get Return _underlyingTypeParameter.Variance End Get End Property Public Overrides ReadOnly Property ContainingSymbol As Symbol Get Return RetargetingTranslator.Retarget(_underlyingTypeParameter.ContainingSymbol) End Get End Property Public Overrides ReadOnly Property Locations As ImmutableArray(Of Location) Get Return _underlyingTypeParameter.Locations End Get End Property Public Overrides ReadOnly Property DeclaringSyntaxReferences As ImmutableArray(Of SyntaxReference) Get Return _underlyingTypeParameter.DeclaringSyntaxReferences End Get End Property Public Overrides Function GetAttributes() As ImmutableArray(Of VisualBasicAttributeData) Return _underlyingTypeParameter.GetAttributes() End Function Public Overrides ReadOnly Property ContainingAssembly As AssemblySymbol Get Return _retargetingModule.ContainingAssembly End Get End Property Public Overrides ReadOnly Property ContainingModule As ModuleSymbol Get Return _retargetingModule End Get End Property Public Overrides ReadOnly Property Name As String Get Return _underlyingTypeParameter.Name End Get End Property Public Overrides ReadOnly Property MetadataName As String Get Return _underlyingTypeParameter.MetadataName End Get End Property Friend Overrides Sub EnsureAllConstraintsAreResolved() _underlyingTypeParameter.EnsureAllConstraintsAreResolved() End Sub ''' <remarks> ''' This is for perf, not for correctness. ''' </remarks> Friend Overrides ReadOnly Property DeclaringCompilation As VisualBasicCompilation Get Return Nothing End Get End Property Public Overrides Function GetDocumentationCommentXml(Optional preferredCulture As CultureInfo = Nothing, Optional expandIncludes As Boolean = False, Optional cancellationToken As CancellationToken = Nothing) As String Return _underlyingTypeParameter.GetDocumentationCommentXml(preferredCulture, expandIncludes, cancellationToken) End Function End Class End Namespace