|
' 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
Imports Roslyn.Utilities
Namespace Microsoft.CodeAnalysis.VisualBasic.ExpressionEvaluator
Friend NotInheritable Class EELocalSymbol
Inherits EELocalSymbolBase
Private ReadOnly _declarationKind As LocalDeclarationKind
Private ReadOnly _locations As ImmutableArray(Of Location)
Private ReadOnly _nameOpt As String
Private ReadOnly _ordinal As Integer
Private ReadOnly _isPinned As Boolean
Private ReadOnly _isByRef As Boolean
Private ReadOnly _canScheduleToStack As Boolean
Public Sub New(
method As MethodSymbol,
locations As ImmutableArray(Of Location),
nameOpt As String,
ordinal As Integer,
declarationKind As LocalDeclarationKind,
type As TypeSymbol,
isByRef As Boolean,
isPinned As Boolean,
canScheduleToStack As Boolean)
MyBase.New(method, type)
Debug.Assert(method IsNot Nothing)
Debug.Assert(ordinal >= -1)
Debug.Assert(Not locations.IsDefault)
Debug.Assert(type IsNot Nothing)
_nameOpt = nameOpt
_ordinal = ordinal
_locations = locations
_isByRef = isByRef
_isPinned = isPinned
_canScheduleToStack = canScheduleToStack
_declarationKind = declarationKind
End Sub
Friend Overrides Function ToOtherMethod(method As MethodSymbol, typeMap As TypeSubstitution) As EELocalSymbolBase
Dim type = typeMap.SubstituteType(Me.Type)
Return New EELocalSymbol(method, _locations, _nameOpt, _ordinal, _declarationKind, type, _isByRef, _isPinned, _canScheduleToStack)
End Function
Friend Overrides ReadOnly Property DeclarationKind As LocalDeclarationKind
Get
Return _declarationKind
End Get
End Property
Friend Overrides ReadOnly Property CanScheduleToStack As Boolean
Get
Return _canScheduleToStack
End Get
End Property
Friend ReadOnly Property Ordinal As Integer
Get
Return _ordinal
End Get
End Property
Public Overrides ReadOnly Property Name As String
Get
Return _nameOpt
End Get
End Property
Friend Overrides ReadOnly Property IdentifierToken As SyntaxToken
Get
Return Nothing
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 ReadOnly Property IdentifierLocation As Location
Get
Throw ExceptionUtilities.Unreachable
End Get
End Property
Public Overrides ReadOnly Property Locations As ImmutableArray(Of Location)
Get
Return _locations
End Get
End Property
Friend Overrides Function GetConstantValue(binder As Binder) As ConstantValue
Return Nothing
End Function
Friend Overrides ReadOnly Property IsByRef As Boolean
Get
Return _isByRef
End Get
End Property
Friend Overrides ReadOnly Property IsPinned As Boolean
Get
Return _isPinned
End Get
End Property
End Class
End Namespace
|