| File: Symbols\Source\SynthesizedLambdaSymbol.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.Runtime.CompilerServices Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols ''' <summary> ''' Represents a synthesized lambda. ''' </summary> Friend NotInheritable Class SynthesizedLambdaSymbol Inherits LambdaSymbol Private ReadOnly _kind As SynthesizedLambdaKind Public Sub New( kind As SynthesizedLambdaKind, syntaxNode As SyntaxNode, parameters As ImmutableArray(Of BoundLambdaParameterSymbol), returnType As TypeSymbol, binder As Binder) MyBase.New(syntaxNode, parameters, returnType, binder) Debug.Assert((returnType Is ReturnTypePendingDelegate) = kind.IsQueryLambda) _kind = kind End Sub Public Overrides ReadOnly Property SynthesizedKind As SynthesizedLambdaKind Get Return _kind End Get End Property Public Overrides ReadOnly Property IsAsync As Boolean Get Return False End Get End Property Public Overrides ReadOnly Property IsIterator As Boolean Get Return False End Get End Property ''' <summary> ''' Gets a value indicating whether the symbol was generated by the compiler ''' rather than declared explicitly. ''' </summary> Public Overrides ReadOnly Property IsImplicitlyDeclared As Boolean Get Return True End Get End Property Public Overrides ReadOnly Property DeclaringSyntaxReferences As ImmutableArray(Of SyntaxReference) Get Return ImmutableArray(Of SyntaxReference).Empty End Get End Property Public Overrides Function Equals(obj As Object) As Boolean Return obj Is Me End Function Public Overrides Function GetHashCode() As Integer Return RuntimeHelpers.GetHashCode(Me) End Function Friend Overrides ReadOnly Property GenerateDebugInfoImpl As Boolean Get ' Delegate relaxation stub contains no user code, only a synthesized call to the target method. ' ' Late-bound AddressOf lambda contains user code, but we don't allow debugging it. ' It shouldn't really contain the code but to be backward compatible we need to replicate Dev12 behavior. Return _kind <> SynthesizedLambdaKind.DelegateRelaxationStub AndAlso _kind <> SynthesizedLambdaKind.LateBoundAddressOfLambda End Get End Property Public Sub SetQueryLambdaReturnType(returnType As TypeSymbol) Debug.Assert(_kind.IsQueryLambda) Debug.Assert(m_ReturnType Is ReturnTypePendingDelegate) m_ReturnType = returnType End Sub End Class End Namespace