| File: Emit\SynthesizedStaticLocalBackingFieldAdapter.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.Threading Imports Microsoft.Cci Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols #If DEBUG Then Partial Friend Class SynthesizedStaticLocalBackingFieldAdapter Inherits FieldSymbolAdapter #Else Partial Friend Class SynthesizedStaticLocalBackingField #End If Implements IContextualNamedEntity Private Sub IContextualNamedEntity_AssociateWithMetadataWriter(metadataWriter As MetadataWriter) Implements IContextualNamedEntity.AssociateWithMetadataWriter DirectCast(AdaptedFieldSymbol, SynthesizedStaticLocalBackingField).AssociateWithMetadataWriter(metadataWriter) End Sub End Class Partial Friend Class SynthesizedStaticLocalBackingField Private _metadataWriter As MetadataWriter Private _nameToEmit As String Public Overrides ReadOnly Property MetadataName As String Get Debug.Assert(_nameToEmit IsNot Nothing) Return _nameToEmit End Get End Property Friend Overrides ReadOnly Property IsContextualNamedEntity As Boolean Get Return True End Get End Property Friend Sub AssociateWithMetadataWriter(metadataWriter As MetadataWriter) Interlocked.CompareExchange(_metadataWriter, metadataWriter, Nothing) Debug.Assert(metadataWriter Is _metadataWriter) If _nameToEmit Is Nothing Then Dim declaringMethod = DirectCast(Me.ImplicitlyDefinedBy.ContainingSymbol, MethodSymbol) Dim signature = GeneratedNames.MakeSignatureString(metadataWriter.GetMethodSignature(declaringMethod.GetCciAdapter())) _nameToEmit = GeneratedNames.MakeStaticLocalFieldName(declaringMethod.Name, signature, Name) End If End Sub End Class #If DEBUG Then Partial Friend Class SynthesizedStaticLocalBackingFieldAdapter Friend Sub New(underlyingFieldSymbol As SynthesizedStaticLocalBackingField) MyBase.New(underlyingFieldSymbol) End Sub End Class #End If End Namespace