From 3a118d742ef37780d5cbb08d97292452a19b8e26 Mon Sep 17 00:00:00 2001 From: Hasnae R Date: Mon, 5 Feb 2024 03:23:06 +0100 Subject: [PATCH 1/3] welcome string to any key value pairs map (cherry picked from commit 01d6abdfaf2724c36f34ccb05596553e6b341260) --- .../share/classes/com/sun/tools/javac/parser/JavacParser.java | 3 +-- .../share/classes/com/sun/tools/javac/tree/TreeMaker.java | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java index 0dd6c0651bfd3..27a15f222baad 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java @@ -2759,8 +2759,7 @@ private JCExpression mapEntry(int pos) { String key = token.stringVal(); accept(STRINGLITERAL); accept(COLON); - String value = token.stringVal(); - accept(STRINGLITERAL); + JCExpression value = parseExpression(); return F.at(pos).StringMapEntry(key, value); } else { return illegal(pos); diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java index 8e21cbff6c525..c6191d44b235d 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java @@ -446,12 +446,12 @@ public JCExpression NewMap(List entries) { return invocation; } - public JCExpression StringMapEntry(String key, String value) { + public JCExpression StringMapEntry(String key, JCExpression value) { JCFieldAccess util = new JCFieldAccess(Ident(names.fromString("java")), names.fromString("util"), null); JCFieldAccess map = new JCFieldAccess(util, names.fromString("Map"), null); JCFieldAccess entry = new JCFieldAccess(map, names.fromString("entry"), null); - JCMethodInvocation invocation = new JCMethodInvocation(List.nil(), entry, List.of(Literal(key), Literal(value))); + JCMethodInvocation invocation = new JCMethodInvocation(List.nil(), entry, List.of(Literal(key), value)); invocation.pos = pos; return invocation; From a66c3d3c174a3c53512c33e9e35e6ebbee2fb942 Mon Sep 17 00:00:00 2001 From: Hasnae R Date: Mon, 5 Feb 2024 16:21:36 +0100 Subject: [PATCH 2/3] fix the timeout issue, ps: explain why later (cherry picked from commit 63db3c7cb2dc6f3c31f5ad07a4a35bf7b4a3725f) --- .../share/classes/com/sun/tools/javac/parser/JavacParser.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java index 27a15f222baad..ca165e70c307e 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java @@ -2748,6 +2748,8 @@ private List mapEntries(int pos) { entries.append(mapEntry(pos)); if (token.kind != RBRACE) { accept(COMMA); + // from Jfokus attendee + pos = token.pos; } } accept(RBRACE); From 6373821e638b1e7077641ed3bd5b348afe08920c Mon Sep 17 00:00:00 2001 From: viqueen Date: Mon, 7 Oct 2024 18:43:15 +0200 Subject: [PATCH 3/3] whoops, I need the bug to be there --- .../share/classes/com/sun/tools/javac/parser/JavacParser.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java index ca165e70c307e..27a15f222baad 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java @@ -2748,8 +2748,6 @@ private List mapEntries(int pos) { entries.append(mapEntry(pos)); if (token.kind != RBRACE) { accept(COMMA); - // from Jfokus attendee - pos = token.pos; } } accept(RBRACE);