Skip to content

Commit 7702efe

Browse files
committed
Handle $ at the end of class names for better Scala support
See https://stackoverflow.com/questions/41570148/why-does-scala-place-a-dollar-sign-at-the-end-of-class-names Signed-off-by: Dimitry Polivaev <[email protected]>
1 parent 1ed20d5 commit 7702efe

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

archunit/src/main/java/com/tngtech/archunit/core/domain/Formatters.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,11 @@ public static String ensureSimpleName(String name) {
118118
int lastIndexOfDot = name.lastIndexOf('.');
119119
String partAfterDot = lastIndexOfDot >= 0 ? name.substring(lastIndexOfDot + 1) : name;
120120

121-
int lastIndexOf$ = partAfterDot.lastIndexOf('$');
121+
int lastFinalNon$ = partAfterDot.length() - 1;
122+
while(lastFinalNon$ > 0 && partAfterDot.charAt(lastFinalNon$) == '$') {
123+
lastFinalNon$--;
124+
}
125+
int lastIndexOf$ = lastFinalNon$ > 0 ? partAfterDot.lastIndexOf('$', lastFinalNon$): -1;
122126
String simpleNameCandidate = lastIndexOf$ >= 0 ? partAfterDot.substring(lastIndexOf$ + 1) : partAfterDot;
123127

124128
for (int i = 0; i < simpleNameCandidate.length(); i++) {

archunit/src/test/java/com/tngtech/archunit/core/domain/FormattersTest.java

+5
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,13 @@ public static Object[][] simple_name_test_cases() {
6262
$("", ""),
6363
$("Dummy", "Dummy"),
6464
$("org.example.Dummy", "Dummy"),
65+
$("org.example.Dummy$", "Dummy$"),
66+
$("org.example.Dummy$$", "Dummy$$"),
67+
$("org.example.Dummy$$$", "Dummy$$$"),
68+
$("org.example.$$$", "$$$"),
6569
$("org.example.Dummy$123", ""),
6670
$("org.example.Dummy$NestedClass", "NestedClass"),
71+
$("org.example.Dummy$NestedClass$", "NestedClass$"),
6772
$("org.example.Dummy$NestedClass123", "NestedClass123"),
6873
$("org.example.Dummy$NestedClass$123", ""),
6974
$("org.example.Dummy$NestedClass$MoreNestedClass", "MoreNestedClass"),

0 commit comments

Comments
 (0)