From 32e79ee8eb78c38ce7650e4c2929ed18101ee783 Mon Sep 17 00:00:00 2001 From: AlexHaxe Date: Sat, 27 Jun 2020 11:25:28 +0200 Subject: [PATCH] support metadata in var declaration syntax HaxeFoundation/haxe#9618 --- src/haxeparser/HaxeParser.hx | 6 +++--- test/Test.hx | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/haxeparser/HaxeParser.hx b/src/haxeparser/HaxeParser.hx index cccdafd..a747363 100644 --- a/src/haxeparser/HaxeParser.hx +++ b/src/haxeparser/HaxeParser.hx @@ -1283,10 +1283,10 @@ class HaxeParser extends hxparse.Parser implements hxpar function parseVarDecl(isFinal:Bool) { return switch stream { - case [id = dollarIdent(), t = parseTypeOpt()]: + case [meta = parseMeta(), id = dollarIdent(), t = parseTypeOpt()]: switch stream { - case [{tok:Binop(OpAssign)}, e = expr()]: { name: id.name, type: t, expr: e, isFinal: isFinal}; - case _: { name: id.name, type:t, expr: null, isFinal: isFinal}; + case [{tok:Binop(OpAssign)}, e = expr()]: { name: id.name, type: t, expr: e, isFinal: isFinal, meta: meta}; + case _: { name: id.name, type:t, expr: null, isFinal: isFinal, meta: meta}; } } } diff --git a/test/Test.hx b/test/Test.hx index 6a22b4c..888c9f6 100644 --- a/test/Test.hx +++ b/test/Test.hx @@ -548,6 +548,10 @@ class Test extends haxe.unit.TestCase { peq("private typedef D2 = A & B;", "typedef D2 = A & B;"); } + function testMetadataVarDecl() { + eeq("var @:a(b) c:D = e"); + } + static function parseExpr(inputCode:String, ?p:haxe.PosInfos) { var parser = new haxeparser.HaxeParser(byte.ByteData.ofString(inputCode), '${p.methodName}:${p.lineNumber}'); var expr = parser.expr();