| File: Analysis\FlowAnalysis\DataFlowPass.Symbols.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 Microsoft.CodeAnalysis.VisualBasic.Symbols Namespace Microsoft.CodeAnalysis.VisualBasic Partial Friend Class DataFlowPass ''' <summary> ''' AmbiguousLocalsPseudoSymbol is a pseudo-symbol used in flow analysis representing ''' a symbol of the implicit receiver in case Dim statement defines more than one variable, ''' but uses the same object initializer for all of them, like: ''' Dim a,b As New C() With { .X = .Y } ''' </summary> Protected NotInheritable Class AmbiguousLocalsPseudoSymbol Inherits LocalSymbol Public ReadOnly Locals As ImmutableArray(Of LocalSymbol) Private Sub New(container As Symbol, type As TypeSymbol, locals As ImmutableArray(Of LocalSymbol)) MyBase.New(container, type) Debug.Assert(type IsNot Nothing) Me.Locals = locals End Sub Friend Overrides ReadOnly Property DeclarationKind As LocalDeclarationKind Get Return LocalDeclarationKind.AmbiguousLocals End Get End Property Friend Overrides ReadOnly Property SynthesizedKind As SynthesizedLocalKind Get Return SynthesizedLocalKind.UserDefined End Get End Property Public Overrides ReadOnly Property IsFunctionValue As Boolean Get Return False End Get End Property Friend Shared Shadows Function Create(locals As ImmutableArray(Of LocalSymbol)) As LocalSymbol Debug.Assert(Not locals.IsDefault AndAlso locals.Length > 1) Dim firstLocal As LocalSymbol = locals(0) Return New AmbiguousLocalsPseudoSymbol(firstLocal.ContainingSymbol, firstLocal.Type, locals) End Function Public Overrides ReadOnly Property Locations As ImmutableArray(Of Location) Get Return ImmutableArray(Of Location).Empty End Get End Property Public Overrides ReadOnly Property DeclaringSyntaxReferences As ImmutableArray(Of SyntaxReference) Get Return ImmutableArray(Of SyntaxReference).Empty End Get End Property Friend Overrides Function GetDeclaratorSyntax() As SyntaxNode Throw ExceptionUtilities.Unreachable End Function Friend Overrides ReadOnly Property IdentifierToken As SyntaxToken Get Return Nothing End Get End Property Friend Overrides ReadOnly Property IdentifierLocation As Location Get Return NoLocation.Singleton End Get End Property Public Overrides ReadOnly Property Name As String Get Return Nothing End Get End Property Friend Overrides ReadOnly Property IsByRef As Boolean Get Return False End Get End Property End Class End Class End Namespace