| File: CILParser.SemanticValues.CustomAttributes.cs | Web Access |
| Project: ILAssembler.csproj (ILAssembler) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; using System.Reflection.Metadata; using Antlr4.Runtime; namespace ILAssembler; public partial class CILParser { public abstract record CustomAttributeDeclarationValue { public static CustomAttributeDeclarationValue Error { get; } = new ErrorCustomAttributeDeclarationValue(); } public sealed record ErrorCustomAttributeDeclarationValue : CustomAttributeDeclarationValue; public sealed record CustomAttributeDescriptorValue( MethodReferenceValue Constructor, CustomAttributeBlobValue Value, OwnerTypeValue? Owner) : CustomAttributeDeclarationValue { public static new CustomAttributeDescriptorValue Error { get; } = new(MethodReferenceValue.Error, CustomAttributeBlobValue.Error, null); } public sealed record CustomAttributeTypedefValue( string Alias) : CustomAttributeDeclarationValue; public sealed record CustomAttributeApplicationValue( CustomAttributeDeclarationValue? Value, IToken Location, bool HasSyntaxError); public abstract record CustomAttributeBlobValue { public static CustomAttributeBlobValue Error { get; } = new ErrorCustomAttributeBlobValue(); } public sealed record ErrorCustomAttributeBlobValue : CustomAttributeBlobValue; public sealed record RawCustomAttributeBlobValue( BlobBuilder Value) : CustomAttributeBlobValue; public sealed record StructuredCustomAttributeBlobValue( ImmutableArray<SerializedInitializerValue> Arguments, ImmutableArray<CustomAttributeNamedArgumentValue> NamedArguments) : CustomAttributeBlobValue; public sealed record CustomAttributeNamedArgumentValue( byte Kind, SerializationTypeValue Type, string Name, SerializedInitializerValue Value); public abstract record SerializationTypeValue { public static SerializationTypeValue Error { get; } = new ErrorSerializationTypeValue(); } public sealed record ErrorSerializationTypeValue : SerializationTypeValue; public sealed record RawSerializationTypeValue( BlobBuilder Value) : SerializationTypeValue; public sealed record SimpleSerializationTypeValue( SerializationTypeCode Type) : SerializationTypeValue; public sealed record ArraySerializationTypeValue( SerializationTypeValue ElementType) : SerializationTypeValue; public sealed record StringEnumSerializationTypeValue( string Name) : SerializationTypeValue; public sealed record ClassEnumSerializationTypeValue( ClassNameValue ClassName) : SerializationTypeValue; public sealed record TypedefSerializationTypeValue( IToken Token, string Alias) : SerializationTypeValue; public abstract record SerializedInitializerValue(SerializationTypeValue Type) { public static SerializedInitializerValue Error { get; } = new ErrorSerializedInitializerValue(); } public sealed record ErrorSerializedInitializerValue() : SerializedInitializerValue(SerializationTypeValue.Error); public sealed record RawSerializedInitializerValue( SerializationTypeValue Type, BlobBuilder Value) : SerializedInitializerValue(Type); public sealed record ClassNameSerializedInitializerValue( ClassNameValue ClassName) : SerializedInitializerValue( new SimpleSerializationTypeValue(SerializationTypeCode.Type)); public sealed record ObjectSerializedInitializerValue( SerializedInitializerValue Value) : SerializedInitializerValue( new SimpleSerializationTypeValue(SerializationTypeCode.TaggedObject)); public sealed record InvalidByteArraySerializedInitializerValue( IToken Token) : SerializedInitializerValue( new SimpleSerializationTypeValue(SerializationTypeCode.String)); public sealed record ArraySerializedInitializerValue( SerializationTypeValue Type, int Length, SerializedSequenceValue Values) : SerializedInitializerValue(Type); public abstract record SerializedSequenceValue; public sealed record RawSerializedSequenceValue( BlobBuilder Value) : SerializedSequenceValue; public sealed record ClassSerializedSequenceValue( ImmutableArray<ClassSequenceElementValue> Values) : SerializedSequenceValue; public sealed record ObjectSerializedSequenceValue( ImmutableArray<SerializedInitializerValue> Values) : SerializedSequenceValue; public abstract record ClassSequenceElementValue { public static ClassSequenceElementValue Error { get; } = new ErrorClassSequenceElementValue(); } public sealed record ErrorClassSequenceElementValue : ClassSequenceElementValue; public sealed record StringClassSequenceElementValue( string? Value) : ClassSequenceElementValue; public sealed record TypeClassSequenceElementValue( ClassNameValue ClassName) : ClassSequenceElementValue; public sealed record FieldInitializerValue(bool HasValue, object? ConstantValue) { public static FieldInitializerValue Empty { get; } = new(false, null); } }