| File: Symbols\Tuples\TuplePropertySymbol.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.Collections.Immutable Imports System.Globalization Imports System.Threading Imports Microsoft.CodeAnalysis Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols ''' <summary> ''' Represents a property of a tuple type (such as (int, byte).SomeProperty) ''' that is backed by a property within the tuple underlying type. ''' </summary> Friend NotInheritable Class TuplePropertySymbol Inherits WrappedPropertySymbol Private ReadOnly _containingType As TupleTypeSymbol Private _lazyParameters As ImmutableArray(Of ParameterSymbol) Public Overrides ReadOnly Property IsTupleProperty As Boolean Get Return True End Get End Property Public Overrides ReadOnly Property TupleUnderlyingProperty As PropertySymbol Get Return Me._underlyingProperty End Get End Property Public Overrides ReadOnly Property Type As TypeSymbol Get Return Me._underlyingProperty.Type End Get End Property Public Overrides ReadOnly Property TypeCustomModifiers As ImmutableArray(Of CustomModifier) Get Return Me._underlyingProperty.TypeCustomModifiers End Get End Property Public Overrides ReadOnly Property RefCustomModifiers As ImmutableArray(Of CustomModifier) Get Return Me._underlyingProperty.RefCustomModifiers End Get End Property Public Overrides ReadOnly Property Parameters As ImmutableArray(Of ParameterSymbol) Get Dim isDefault As Boolean = Me._lazyParameters.IsDefault If isDefault Then InterlockedOperations.Initialize(Of ParameterSymbol)(Me._lazyParameters, Me.CreateParameters()) End If Return Me._lazyParameters End Get End Property Public Overrides ReadOnly Property GetMethod As MethodSymbol Get Return Me._containingType.GetTupleMemberSymbolForUnderlyingMember(Of MethodSymbol)(Me._underlyingProperty.GetMethod) End Get End Property Public Overrides ReadOnly Property SetMethod As MethodSymbol Get Return Me._containingType.GetTupleMemberSymbolForUnderlyingMember(Of MethodSymbol)(Me._underlyingProperty.SetMethod) End Get End Property Friend Overrides ReadOnly Property AssociatedField As FieldSymbol Get Return Me._containingType.GetTupleMemberSymbolForUnderlyingMember(Of FieldSymbol)(Me._underlyingProperty.AssociatedField) End Get End Property Public Overrides ReadOnly Property ExplicitInterfaceImplementations As ImmutableArray(Of PropertySymbol) Get Return Me._underlyingProperty.ExplicitInterfaceImplementations End Get End Property Public Overrides ReadOnly Property ContainingSymbol As Symbol Get Return Me._containingType End Get End Property Public Overrides ReadOnly Property IsOverloads As Boolean Get Return Me._underlyingProperty.IsOverloads End Get End Property Public Overrides Function GetOverloadResolutionPriority() As Integer Return Me._underlyingProperty.GetOverloadResolutionPriority() End Function Friend Overrides ReadOnly Property IsMyGroupCollectionProperty As Boolean Get Return Me._underlyingProperty.IsMyGroupCollectionProperty End Get End Property Public Sub New(container As TupleTypeSymbol, underlyingProperty As PropertySymbol) MyBase.New(underlyingProperty) Me._containingType = container End Sub Private Function CreateParameters() As ImmutableArray(Of ParameterSymbol) Return Me._underlyingProperty.Parameters.SelectAsArray(Of ParameterSymbol)(Function(p) New TupleParameterSymbol(Me, p)) End Function Friend Overrides Function GetUseSiteInfo() As UseSiteInfo(Of AssemblySymbol) Dim useSiteInfo As UseSiteInfo(Of AssemblySymbol) = MyBase.GetUseSiteInfo MyBase.MergeUseSiteInfo(useSiteInfo, Me._underlyingProperty.GetUseSiteInfo()) Return useSiteInfo End Function Public Overrides Function GetHashCode() As Integer Return Me._underlyingProperty.GetHashCode() End Function Public Overrides Function Equals(obj As Object) As Boolean Return Me.Equals(TryCast(obj, TuplePropertySymbol)) End Function Public Overloads Function Equals(other As TuplePropertySymbol) As Boolean Return other Is Me OrElse (other IsNot Nothing AndAlso TypeSymbol.Equals(Me._containingType, other._containingType, TypeCompareKind.ConsiderEverything) AndAlso Me._underlyingProperty = other._underlyingProperty) End Function Public Overrides Function GetAttributes() As ImmutableArray(Of VisualBasicAttributeData) Return Me._underlyingProperty.GetAttributes() End Function Public Overrides ReadOnly Property IsRequired As Boolean Get Return _underlyingProperty.IsRequired End Get End Property End Class End Namespace