From 27cee325dcd3f15b5e07578bab37082b64d95d25 Mon Sep 17 00:00:00 2001 From: civilian7 Date: Wed, 10 Jun 2026 16:50:48 +0900 Subject: [PATCH] Support parenthesized record alignment value (end align(N) / align(ident)) --- Source/SimpleParser/SimpleParser.pas | 12 +++++++++++- Test/Snippets/recordalignparens.pas | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 Test/Snippets/recordalignparens.pas diff --git a/Source/SimpleParser/SimpleParser.pas b/Source/SimpleParser/SimpleParser.pas index d7efd2c..6c8e127 100644 --- a/Source/SimpleParser/SimpleParser.pas +++ b/Source/SimpleParser/SimpleParser.pas @@ -4387,7 +4387,17 @@ procedure TmwSimplePasPar.RecordAlign; procedure TmwSimplePasPar.RecordAlignValue; begin - Expected(ptIntegerConst); + if TokenID = ptRoundOpen then + begin + NextToken; + if TokenID = ptIdentifier then + NextToken + else + Expected(ptIntegerConst); + Expected(ptRoundClose); + end + else + Expected(ptIntegerConst); end; procedure TmwSimplePasPar.RecordFieldConstant; diff --git a/Test/Snippets/recordalignparens.pas b/Test/Snippets/recordalignparens.pas new file mode 100644 index 0000000..7af0153 --- /dev/null +++ b/Test/Snippets/recordalignparens.pas @@ -0,0 +1,19 @@ +unit recordalignparens; + +interface + +const + REC_ALIGN = 16; + +type + TParenAligned = record + Value: Integer; + end align(16); + + TIdentAligned = record + Value: Integer; + end align(REC_ALIGN); + +implementation + +end. \ No newline at end of file