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;