diff --git a/teavm-classlib/src/main/java/org/teavm/classlib/java/lang/TClass.java b/teavm-classlib/src/main/java/org/teavm/classlib/java/lang/TClass.java index a6d6861b1..4c6251fba 100644 --- a/teavm-classlib/src/main/java/org/teavm/classlib/java/lang/TClass.java +++ b/teavm-classlib/src/main/java/org/teavm/classlib/java/lang/TClass.java @@ -77,11 +77,15 @@ public class TClass extends TObject implements TAnnotatedElement { public TString getSimpleName() { if (simpleName == null) { + if (isArray()) { + simpleName = getComponentType().getSimpleName().concat(TString.wrap("[]")); + return simpleName; + } String name = platformClass.getMetadata().getName(); int lastDollar = name.lastIndexOf('$'); if (lastDollar != -1) { name = name.substring(lastDollar + 1); - if (name.charAt(0) >= 0 && name.charAt(0) <= 9) { + if (name.charAt(0) >= '0' && name.charAt(0) <= '9') { name = ""; } } else { diff --git a/teavm-tests/src/test/java/org/teavm/classlib/java/lang/ClassTest.java b/teavm-tests/src/test/java/org/teavm/classlib/java/lang/ClassTest.java index 8442bd37f..219dde718 100644 --- a/teavm-tests/src/test/java/org/teavm/classlib/java/lang/ClassTest.java +++ b/teavm-tests/src/test/java/org/teavm/classlib/java/lang/ClassTest.java @@ -38,6 +38,16 @@ public class ClassTest { assertEquals("[I", int[].class.getName()); } + @Test + public void classSimpleNameEvaluated() { + assertEquals("Object", Object.class.getSimpleName()); + assertEquals("Object[]", Object[].class.getSimpleName()); + assertEquals("int", int.class.getSimpleName()); + assertEquals("int[]", int[].class.getSimpleName()); + assertEquals("InnerClass", InnerClass.class.getSimpleName()); + assertEquals("", new Object(){}.getClass().getSimpleName()); + } + @Test public void objectClassNameEvaluated() { assertEquals("java.lang.Object", new Object().getClass().getName()); @@ -205,4 +215,7 @@ public class ClassTest { Class n(); } + + static class InnerClass { + } }