From 17cd1d0210bb90c2aa300d7f509446a2285f9b93 Mon Sep 17 00:00:00 2001 From: bangbangsheshotmedown Date: Sat, 11 Apr 2026 19:21:35 +0200 Subject: [PATCH] Add support for the new alias this declaration syntax --- src/dparse/parser.d | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/dparse/parser.d b/src/dparse/parser.d index 1357e20e..668f6041 100644 --- a/src/dparse/parser.d +++ b/src/dparse/parser.d @@ -282,8 +282,9 @@ class Parser * Parses an AliasThisDeclaration. * * $(GRAMMAR $(RULEDEF aliasThisDeclaration): - * $(LITERAL 'alias') $(LITERAL Identifier) $(LITERAL 'this') $(LITERAL ';') - * ;) + * $(LITERAL 'alias') $(LITERAL Identifier) $(LITERAL 'this') $(LITERAL ';') + * | $(LITERAL 'alias') $(LITERAL 'this') $(LITERAL '=') $(LITERAL Identifier) $(LITERAL ';') + * ;) */ AliasThisDeclaration parseAliasThisDeclaration() { @@ -291,8 +292,17 @@ class Parser auto startIndex = index; auto node = allocator.make!AliasThisDeclaration; mixin(tokenCheck!"alias"); - mixin(tokenCheck!(`node.identifier`, "identifier")); - mixin(tokenCheck!"this"); + if (currentIs(tok!"this")) + { + advance(); + mixin(tokenCheck!"="); + mixin(tokenCheck!(`node.identifier`, "identifier")); + } + else + { + mixin(tokenCheck!(`node.identifier`, "identifier")); + mixin(tokenCheck!"this"); + } return attachCommentFromSemicolon(node, startIndex); } @@ -2315,7 +2325,8 @@ class Parser mixin(tokenCheck!"}"); break; case tok!"alias": - if (startsWith(tok!"alias", tok!"identifier", tok!"this")) + if (startsWith(tok!"alias", tok!"identifier", tok!"this") + || startsWith(tok!"alias", tok!"this", tok!"=")) mixin(parseNodeQ!(`node.aliasThisDeclaration`, `AliasThisDeclaration`)); else mixin(parseNodeQ!(`node.aliasDeclaration`, `AliasDeclaration`));