8323815: Source launcher should find classes with $ in names

Reviewed-by: jlahoda, sundar
This commit is contained in:
Christian Stein 2024-01-24 19:05:15 +00:00
parent c432dc008b
commit c702dcabf8
2 changed files with 38 additions and 8 deletions

View file

@ -75,7 +75,9 @@ class MultiFileSourceLauncherTests {
public class Hello {
public static void main(String... args) throws Exception {
System.out.println(Class.forName("World$Core"));
System.out.println(Class.forName("p.q.Unit$First$Second"));
System.out.println(Class.forName("p.q.Unit$Fir$t"));
System.out.println(Class.forName("p.q.Unit$123$Fir$t$$econd"));
System.out.println(Class.forName("$.$.$"));
}
}
""");
@ -90,18 +92,35 @@ class MultiFileSourceLauncherTests {
"""
package p.q;
record Unit() {
record First() {
record Second() {}
record Fir$t() {
record $econd() {}
}
}
""");
Files.writeString(pq.resolve("Unit$123.java"),
"""
package p.q;
record Unit$123() {
record Fir$t() {
record $econd() {}
}
}
""");
var $$ = Files.createDirectories(base.resolve("$/$"));
Files.writeString($$.resolve("$.java"),
"""
package $.$;
record $($ $) {}
""");
var run = Run.of(hello);
assertAll("Run -> " + run,
() -> assertLinesMatch(
"""
class World$Core
class p.q.Unit$First$Second
class p.q.Unit$Fir$t
class p.q.Unit$123$Fir$t$$econd
class $.$.$
""".lines(),
run.stdOut().lines()),
() -> assertTrue(run.stdErr().isEmpty()),