Skip to content

Commit

Permalink
support metadata in var declaration syntax HaxeFoundation/haxe#9618
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexHaxe committed Jun 27, 2020
1 parent b62ff77 commit 32e79ee
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/haxeparser/HaxeParser.hx
Original file line number Diff line number Diff line change
Expand Up @@ -1283,10 +1283,10 @@ class HaxeParser extends hxparse.Parser<HaxeTokenSource, Token> 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};
}
}
}
Expand Down
4 changes: 4 additions & 0 deletions test/Test.hx
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down

0 comments on commit 32e79ee

Please sign in to comment.