⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expression.vb

📁 大名鼎鼎的mono是.NET平台的跨平台(支持linux
💻 VB
📖 第 1 页 / 共 2 页
字号:
    ''' </summary>    ''' <remarks></remarks>    Protected Sub StartResolve()        If m_Resolving Then            'Recursive resolution.            'TODO: Find a meaningful error message            Throw New InternalException(Me)        End If        m_Resolving = True#If EXTENDEDDEBUG Then        If Me.TypeReferencesResolved = False Then            Compiler.Report.WriteLine("TypeReferences not resolved for expression  " & Me.ToString)        End If#End If#If EXTENDEDDEBUG Then        If m_Resolved Then            Compiler.Report.WriteLine("Resolving expression " & Me.ToString & " more than once (Location: " & Me.Location.ToString & ")")        End If#End If    End Sub    ''' <summary>    ''' Is this expression beeing resolved (in Resolve)?    ''' </summary>    ''' <value></value>    ''' <remarks></remarks>    ReadOnly Property IsResolving() As Boolean        Get            Return m_Resolving        End Get    End Property    ''' <summary>    ''' Is this constant resolved?    ''' </summary>    ''' <value></value>    ''' <remarks></remarks>    Property IsResolved() As Boolean        Get            Return m_Resolved        End Get        Set(ByVal value As Boolean)            m_Resolved = value        End Set    End Property    ''' <summary>    ''' Call StartResolve to enable check for recursive resolving.    ''' Call EndResolve when finished resolving.    ''' </summary>    ''' <remarks></remarks>    Protected Sub EndResolve(ByVal result As Boolean)        If Not m_Resolving Then Throw New InternalException(Me)        m_Resolving = False        m_Resolved = result    End Sub    <Obsolete("Call ResolveExpression"), ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> Public NotOverridable Overrides Function ResolveCode(ByVal Info As ResolveInfo) As Boolean        Return ResolveExpression(Info)    End Function    Overridable Function Clone(Optional ByVal NewParent As ParsedObject = Nothing) As Expression        Helper.NotImplemented(Me.GetType.ToString & ".Clone() not implemented.")        Return Nothing    End Function    Protected Overridable Function ResolveExpressionInternal(ByVal Info As ResolveInfo) As Boolean        Helper.NotImplemented(Me.GetType.ToString & ".ResolveExpressionInternal(ResolveInfo) not implemented.")        Return False    End Function    Function ResolveAddressOfExpression(ByVal DelegateType As Type) As Boolean        Dim result As Boolean = True        Dim aoe As AddressOfExpression = TryCast(Me, AddressOfExpression)        If aoe Is Nothing Then            result = False        Else            result = aoe.Resolve(DelegateType) AndAlso result        End If        Return result    End Function    Function GetObjectReference() As Expression        Dim result As Expression        If TypeOf Me Is GetRefExpression Then            Return Me        ElseIf TypeOf Me Is InstanceExpression Then            Return Me        ElseIf ExpressionType.IsValueType Then            If TypeOf Me Is DeRefExpression Then                Dim derefExp As DeRefExpression = DirectCast(Me, DeRefExpression)                result = derefExp.Expression            ElseIf Helper.CompareType(Me.ExpressionType.BaseType, Compiler.TypeCache.System_Enum) Then                result = New BoxExpression(Me, Me, Me.ExpressionType)                'ElseIf Me.ExpressionType.IsValueType AndAlso Helper.IsNullableType(Compiler, Me.ExpressionType) = False Then                '    result = New BoxExpression(Me, Me, Me.ExpressionType)            Else                result = New GetRefExpression(Me, Me)            End If        Else            result = Me        End If        Return result    End Function    Function DereferenceByRef() As Expression        Dim result As Expression        If ExpressionType.IsByRef Then            result = New DeRefExpression(Me, Me)        Else            result = Me        End If        Return result    End Function    ''' <summary>    ''' The resulting expression is NOT resolved.    ''' </summary>    ''' <returns></returns>    ''' <remarks></remarks>    Function ReclassifyToPropertyAccessExpression() As Expression        Dim result As Expression        Select Case m_Classification.Classification            Case ExpressionClassification.Classifications.PropertyGroup                Dim pgClass As PropertyGroupClassification = Me.Classification.AsPropertyGroup                result = New PropertyGroupToPropertyAccessExpression(Me, pgClass)            Case ExpressionClassification.Classifications.Value                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.Variable                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.EventAccess                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.LateBoundAccess                Return New LateBoundAccessToPropertyAccessExpression(Me, Me.Classification.AsLateBoundAccess)            Case ExpressionClassification.Classifications.MethodGroup                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.MethodPointer                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.PropertyAccess                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.Void                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.Type                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.Namespace                Throw New InternalException(Me)            Case Else                Throw New InternalException(Me)        End Select        Return result    End Function    Function ReclassifyMethodPointerToValueExpression(ByVal DelegateType As Type) As Expression        Dim result As Expression = Nothing        Helper.Assert(Classification.IsMethodPointerClassification)        Helper.Assert(TypeOf Me Is AddressOfExpression)        result = New DelegateOrObjectCreationExpression(Me, DelegateType, DirectCast(Me, AddressOfExpression))        Return result    End Function    ''' <summary>    ''' Reclassifies an expression.    ''' The resulting expression is NOT resolved.    ''' </summary>    ''' <returns></returns>    ''' <remarks></remarks>    Function ReclassifyToValueExpression() As Expression        Dim result As Expression = Nothing        Select Case m_Classification.Classification            Case ExpressionClassification.Classifications.Value                Return Me 'This expression is already a value expression.            Case ExpressionClassification.Classifications.Variable                result = New VariableToValueExpression(Me, Me.Classification.AsVariableClassification)            Case ExpressionClassification.Classifications.MethodGroup                result = New MethodGroupToValueExpression(Me, Me.Classification.AsMethodGroupClassification)            Case ExpressionClassification.Classifications.PropertyAccess                result = New PropertyAccessToValueExpression(Me, Me.Classification.AsPropertyAccess)            Case ExpressionClassification.Classifications.PropertyGroup                result = New PropertyGroupToValueExpression(Me, Me.Classification.AsPropertyGroup)            Case ExpressionClassification.Classifications.LateBoundAccess                result = New LateBoundAccessToValueExpression(Me, Me.Classification.AsLateBoundAccess)            Case ExpressionClassification.Classifications.MethodPointer                Throw New InternalException(Me, "Use the other overload.")            Case ExpressionClassification.Classifications.EventAccess                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.Void                Throw New InternalException(Me)            Case ExpressionClassification.Classifications.Type                Return m_Classification.AsTypeClassification.MyGroup.DefaultInstanceAlias.ReclassifyToValueExpression            Case ExpressionClassification.Classifications.Namespace                Throw New InternalException(Me)            Case Else                Helper.NotImplemented() : Return Nothing        End Select        Return result    End Function#End Region    '#If DEBUG Then    '    Protected Overrides Sub Finalize()    '        If m_Resolving Then    '            If Location IsNot Nothing Then    '                Compiler.Report.WriteLine(vbnc.Report.ReportLevels.Debug, "Expression still resolving: " & Me.Location.ToString)    '            Else    '                Compiler.Report.WriteLine(vbnc.Report.ReportLevels.Debug, "Expression still resolving. (Location is lost already).")    '            End If    '        End If    '    End Sub    '#End If#If DEBUG Then    Overridable Sub Dump(ByVal Dumper As IndentedTextWriter)        Dumper.Write("<Dump of '" & Me.GetType.Name & "'>")    End Sub#End If    Overridable ReadOnly Property AsString() As String        Get            Return "<String representation of " & Me.GetType.FullName & " not implemented>"        End Get    End Property    'ReadOnly Property IsUnresolved() As Boolean    '    Get    '        Return    '    End Get    'End PropertyEnd Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -