public override void ExitVounion([NotNull] XP.VounionContext context) { context.SetSequencePoint(context.U, context.e.Stop); var mods = context.Modifiers?.GetList <SyntaxToken>() ?? TokenListWithDefaultVisibility(); if (voStructHasDim) { var modBuilder = _pool.Allocate(); modBuilder.AddRange(mods); modBuilder.Add(SyntaxFactory.MakeToken(SyntaxKind.UnsafeKeyword)); mods = modBuilder.ToList <SyntaxToken>(); _pool.Free(modBuilder); } MemberDeclarationSyntax m = _syntaxFactory.StructDeclaration( attributeLists: MakeList( MakeAttributeList( target: null, attributes: MakeSeparatedList( _syntaxFactory.Attribute( name: GenerateQualifiedName(SystemQualifiedNames.StructLayout), argumentList: MakeAttributeArgumentList( MakeSeparatedList(_syntaxFactory.AttributeArgument(null, null, GenerateQualifiedName(SystemQualifiedNames.LayoutExplicit))) ) ) )) ), modifiers: mods, keyword: SyntaxFactory.MakeToken(SyntaxKind.StructKeyword), identifier: context.Id.Get <SyntaxToken>(), typeParameterList: null, baseList: null, constraintClauses: null, openBraceToken: SyntaxFactory.MakeToken(SyntaxKind.OpenBraceToken), members: (context._Members?.Count > 0) ? MakeList <MemberDeclarationSyntax>(context._Members) : EmptyList <MemberDeclarationSyntax>(), closeBraceToken: SyntaxFactory.MakeToken(SyntaxKind.CloseBraceToken), semicolonToken: null); m.XVoDecl = true; if (context.Namespace != null) { m = AddNameSpaceToMember(context.Namespace, m); } else { m = (MemberDeclarationSyntax)CheckTypeName(context, "UNION", m); } context.Put(m); }
public override void EnterVounion([NotNull] XP.VounionContext context) { voStructHasDim = false; }