using System; using System.Collections.Generic; using Microsoft.CodeAnalysis.Syntax.InternalSyntax; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax; internal sealed class RecordDeclarationSyntax : TypeDeclarationSyntax { internal readonly GreenNode? attributeLists; internal readonly GreenNode? modifiers; internal readonly SyntaxToken keyword; internal readonly SyntaxToken? classOrStructKeyword; internal readonly SyntaxToken identifier; internal readonly TypeParameterListSyntax? typeParameterList; internal readonly ParameterListSyntax? parameterList; internal readonly BaseListSyntax? baseList; internal readonly GreenNode? constraintClauses; internal readonly SyntaxToken? openBraceToken; internal readonly GreenNode? members; internal readonly SyntaxToken? closeBraceToken; internal readonly SyntaxToken? semicolonToken; public override SyntaxList AttributeLists => new SyntaxList(attributeLists); public override SyntaxList Modifiers => new SyntaxList(modifiers); public override SyntaxToken Keyword => keyword; public SyntaxToken? ClassOrStructKeyword => classOrStructKeyword; public override SyntaxToken Identifier => identifier; public override TypeParameterListSyntax? TypeParameterList => typeParameterList; public override ParameterListSyntax? ParameterList => parameterList; public override BaseListSyntax? BaseList => baseList; public override SyntaxList ConstraintClauses => new SyntaxList(constraintClauses); public override SyntaxToken? OpenBraceToken => openBraceToken; public override SyntaxList Members => new SyntaxList(members); public override SyntaxToken? CloseBraceToken => closeBraceToken; public override SyntaxToken? SemicolonToken => semicolonToken; internal RecordDeclarationSyntax(SyntaxKind kind, GreenNode? attributeLists, GreenNode? modifiers, SyntaxToken keyword, SyntaxToken? classOrStructKeyword, SyntaxToken identifier, TypeParameterListSyntax? typeParameterList, ParameterListSyntax? parameterList, BaseListSyntax? baseList, GreenNode? constraintClauses, SyntaxToken? openBraceToken, GreenNode? members, SyntaxToken? closeBraceToken, SyntaxToken? semicolonToken, DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations) : base(kind, diagnostics, annotations) { ((GreenNode)this).SlotCount = 13; if (attributeLists != null) { ((GreenNode)this).AdjustFlagsAndWidth(attributeLists); this.attributeLists = attributeLists; } if (modifiers != null) { ((GreenNode)this).AdjustFlagsAndWidth(modifiers); this.modifiers = modifiers; } ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)keyword); this.keyword = keyword; if (classOrStructKeyword != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)classOrStructKeyword); this.classOrStructKeyword = classOrStructKeyword; } ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)identifier); this.identifier = identifier; if (typeParameterList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)typeParameterList); this.typeParameterList = typeParameterList; } if (parameterList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)parameterList); this.parameterList = parameterList; } if (baseList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)baseList); this.baseList = baseList; } if (constraintClauses != null) { ((GreenNode)this).AdjustFlagsAndWidth(constraintClauses); this.constraintClauses = constraintClauses; } if (openBraceToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)openBraceToken); this.openBraceToken = openBraceToken; } if (members != null) { ((GreenNode)this).AdjustFlagsAndWidth(members); this.members = members; } if (closeBraceToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)closeBraceToken); this.closeBraceToken = closeBraceToken; } if (semicolonToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)semicolonToken); this.semicolonToken = semicolonToken; } } internal RecordDeclarationSyntax(SyntaxKind kind, GreenNode? attributeLists, GreenNode? modifiers, SyntaxToken keyword, SyntaxToken? classOrStructKeyword, SyntaxToken identifier, TypeParameterListSyntax? typeParameterList, ParameterListSyntax? parameterList, BaseListSyntax? baseList, GreenNode? constraintClauses, SyntaxToken? openBraceToken, GreenNode? members, SyntaxToken? closeBraceToken, SyntaxToken? semicolonToken, SyntaxFactoryContext context) : base(kind) { SetFactoryContext(context); ((GreenNode)this).SlotCount = 13; if (attributeLists != null) { ((GreenNode)this).AdjustFlagsAndWidth(attributeLists); this.attributeLists = attributeLists; } if (modifiers != null) { ((GreenNode)this).AdjustFlagsAndWidth(modifiers); this.modifiers = modifiers; } ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)keyword); this.keyword = keyword; if (classOrStructKeyword != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)classOrStructKeyword); this.classOrStructKeyword = classOrStructKeyword; } ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)identifier); this.identifier = identifier; if (typeParameterList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)typeParameterList); this.typeParameterList = typeParameterList; } if (parameterList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)parameterList); this.parameterList = parameterList; } if (baseList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)baseList); this.baseList = baseList; } if (constraintClauses != null) { ((GreenNode)this).AdjustFlagsAndWidth(constraintClauses); this.constraintClauses = constraintClauses; } if (openBraceToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)openBraceToken); this.openBraceToken = openBraceToken; } if (members != null) { ((GreenNode)this).AdjustFlagsAndWidth(members); this.members = members; } if (closeBraceToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)closeBraceToken); this.closeBraceToken = closeBraceToken; } if (semicolonToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)semicolonToken); this.semicolonToken = semicolonToken; } } internal RecordDeclarationSyntax(SyntaxKind kind, GreenNode? attributeLists, GreenNode? modifiers, SyntaxToken keyword, SyntaxToken? classOrStructKeyword, SyntaxToken identifier, TypeParameterListSyntax? typeParameterList, ParameterListSyntax? parameterList, BaseListSyntax? baseList, GreenNode? constraintClauses, SyntaxToken? openBraceToken, GreenNode? members, SyntaxToken? closeBraceToken, SyntaxToken? semicolonToken) : base(kind) { ((GreenNode)this).SlotCount = 13; if (attributeLists != null) { ((GreenNode)this).AdjustFlagsAndWidth(attributeLists); this.attributeLists = attributeLists; } if (modifiers != null) { ((GreenNode)this).AdjustFlagsAndWidth(modifiers); this.modifiers = modifiers; } ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)keyword); this.keyword = keyword; if (classOrStructKeyword != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)classOrStructKeyword); this.classOrStructKeyword = classOrStructKeyword; } ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)identifier); this.identifier = identifier; if (typeParameterList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)typeParameterList); this.typeParameterList = typeParameterList; } if (parameterList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)parameterList); this.parameterList = parameterList; } if (baseList != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)baseList); this.baseList = baseList; } if (constraintClauses != null) { ((GreenNode)this).AdjustFlagsAndWidth(constraintClauses); this.constraintClauses = constraintClauses; } if (openBraceToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)openBraceToken); this.openBraceToken = openBraceToken; } if (members != null) { ((GreenNode)this).AdjustFlagsAndWidth(members); this.members = members; } if (closeBraceToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)closeBraceToken); this.closeBraceToken = closeBraceToken; } if (semicolonToken != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)semicolonToken); this.semicolonToken = semicolonToken; } } internal override GreenNode? GetSlot(int index) { return (GreenNode?)(index switch { 0 => attributeLists, 1 => modifiers, 2 => keyword, 3 => classOrStructKeyword, 4 => identifier, 5 => typeParameterList, 6 => parameterList, 7 => baseList, 8 => constraintClauses, 9 => openBraceToken, 10 => members, 11 => closeBraceToken, 12 => semicolonToken, _ => null, }); } internal override SyntaxNode CreateRed(SyntaxNode? parent, int position) { return (SyntaxNode)(object)new Microsoft.CodeAnalysis.CSharp.Syntax.RecordDeclarationSyntax(this, parent, position); } public override void Accept(CSharpSyntaxVisitor visitor) { visitor.VisitRecordDeclaration(this); } public override TResult Accept(CSharpSyntaxVisitor visitor) { return visitor.VisitRecordDeclaration(this); } public RecordDeclarationSyntax Update(SyntaxList attributeLists, SyntaxList modifiers, SyntaxToken keyword, SyntaxToken classOrStructKeyword, SyntaxToken identifier, TypeParameterListSyntax typeParameterList, ParameterListSyntax parameterList, BaseListSyntax baseList, SyntaxList constraintClauses, SyntaxToken openBraceToken, SyntaxList members, SyntaxToken closeBraceToken, SyntaxToken semicolonToken) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) if (attributeLists != AttributeLists || modifiers != Modifiers || keyword != Keyword || classOrStructKeyword != ClassOrStructKeyword || identifier != Identifier || typeParameterList != TypeParameterList || parameterList != ParameterList || baseList != BaseList || constraintClauses != ConstraintClauses || openBraceToken != OpenBraceToken || members != Members || closeBraceToken != CloseBraceToken || semicolonToken != SemicolonToken) { RecordDeclarationSyntax recordDeclarationSyntax = SyntaxFactory.RecordDeclaration(base.Kind, attributeLists, modifiers, keyword, classOrStructKeyword, identifier, typeParameterList, parameterList, baseList, constraintClauses, openBraceToken, members, closeBraceToken, semicolonToken); DiagnosticInfo[] diagnostics = ((GreenNode)this).GetDiagnostics(); if (diagnostics != null && diagnostics.Length != 0) { recordDeclarationSyntax = GreenNodeExtensions.WithDiagnosticsGreen(recordDeclarationSyntax, diagnostics); } SyntaxAnnotation[] annotations = ((GreenNode)this).GetAnnotations(); if (annotations != null && annotations.Length != 0) { recordDeclarationSyntax = GreenNodeExtensions.WithAnnotationsGreen(recordDeclarationSyntax, (IEnumerable)annotations); } return recordDeclarationSyntax; } return this; } internal override GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics) { return (GreenNode)(object)new RecordDeclarationSyntax(base.Kind, attributeLists, modifiers, keyword, classOrStructKeyword, identifier, typeParameterList, parameterList, baseList, constraintClauses, openBraceToken, members, closeBraceToken, semicolonToken, diagnostics, ((GreenNode)this).GetAnnotations()); } internal override GreenNode SetAnnotations(SyntaxAnnotation[]? annotations) { return (GreenNode)(object)new RecordDeclarationSyntax(base.Kind, attributeLists, modifiers, keyword, classOrStructKeyword, identifier, typeParameterList, parameterList, baseList, constraintClauses, openBraceToken, members, closeBraceToken, semicolonToken, ((GreenNode)this).GetDiagnostics(), annotations); } internal RecordDeclarationSyntax(ObjectReader reader) : base(reader) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown ((GreenNode)this).SlotCount = 13; GreenNode val = (GreenNode)reader.ReadValue(); if (val != null) { ((GreenNode)this).AdjustFlagsAndWidth(val); attributeLists = val; } GreenNode val2 = (GreenNode)reader.ReadValue(); if (val2 != null) { ((GreenNode)this).AdjustFlagsAndWidth(val2); modifiers = val2; } SyntaxToken syntaxToken = (SyntaxToken)reader.ReadValue(); ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)syntaxToken); keyword = syntaxToken; SyntaxToken syntaxToken2 = (SyntaxToken)reader.ReadValue(); if (syntaxToken2 != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)syntaxToken2); classOrStructKeyword = syntaxToken2; } SyntaxToken syntaxToken3 = (SyntaxToken)reader.ReadValue(); ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)syntaxToken3); identifier = syntaxToken3; TypeParameterListSyntax typeParameterListSyntax = (TypeParameterListSyntax)reader.ReadValue(); if (typeParameterListSyntax != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)typeParameterListSyntax); typeParameterList = typeParameterListSyntax; } ParameterListSyntax parameterListSyntax = (ParameterListSyntax)reader.ReadValue(); if (parameterListSyntax != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)parameterListSyntax); parameterList = parameterListSyntax; } BaseListSyntax baseListSyntax = (BaseListSyntax)reader.ReadValue(); if (baseListSyntax != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)baseListSyntax); baseList = baseListSyntax; } GreenNode val3 = (GreenNode)reader.ReadValue(); if (val3 != null) { ((GreenNode)this).AdjustFlagsAndWidth(val3); constraintClauses = val3; } SyntaxToken syntaxToken4 = (SyntaxToken)reader.ReadValue(); if (syntaxToken4 != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)syntaxToken4); openBraceToken = syntaxToken4; } GreenNode val4 = (GreenNode)reader.ReadValue(); if (val4 != null) { ((GreenNode)this).AdjustFlagsAndWidth(val4); members = val4; } SyntaxToken syntaxToken5 = (SyntaxToken)reader.ReadValue(); if (syntaxToken5 != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)syntaxToken5); closeBraceToken = syntaxToken5; } SyntaxToken syntaxToken6 = (SyntaxToken)reader.ReadValue(); if (syntaxToken6 != null) { ((GreenNode)this).AdjustFlagsAndWidth((GreenNode)(object)syntaxToken6); semicolonToken = syntaxToken6; } } internal override void WriteTo(ObjectWriter writer) { ((GreenNode)this).WriteTo(writer); writer.WriteValue((IObjectWritable)(object)attributeLists); writer.WriteValue((IObjectWritable)(object)modifiers); writer.WriteValue((IObjectWritable)(object)keyword); writer.WriteValue((IObjectWritable)(object)classOrStructKeyword); writer.WriteValue((IObjectWritable)(object)identifier); writer.WriteValue((IObjectWritable)(object)typeParameterList); writer.WriteValue((IObjectWritable)(object)parameterList); writer.WriteValue((IObjectWritable)(object)baseList); writer.WriteValue((IObjectWritable)(object)constraintClauses); writer.WriteValue((IObjectWritable)(object)openBraceToken); writer.WriteValue((IObjectWritable)(object)members); writer.WriteValue((IObjectWritable)(object)closeBraceToken); writer.WriteValue((IObjectWritable)(object)semicolonToken); } static RecordDeclarationSyntax() { ObjectBinder.RegisterTypeReader(typeof(RecordDeclarationSyntax), (Func)((ObjectReader r) => (IObjectWritable)(object)new RecordDeclarationSyntax(r))); } }