Fix infinite loop in ClassName.fromClass()
diff --git a/src/main/java/com/squareup/javawriter/ClassName.java b/src/main/java/com/squareup/javawriter/ClassName.java
index a0770fa..7fbb09a 100644
--- a/src/main/java/com/squareup/javawriter/ClassName.java
+++ b/src/main/java/com/squareup/javawriter/ClassName.java
@@ -163,7 +163,7 @@
Class<?> current = clazz.getEnclosingClass();
while (current != null) {
enclosingNames.add(current.getSimpleName());
- current = clazz.getEnclosingClass();
+ current = current.getEnclosingClass();
}
Collections.reverse(enclosingNames);
return create(clazz.getPackage().getName(), enclosingNames, clazz.getSimpleName());
diff --git a/src/test/java/com/squareup/javawriter/ClassNameTest.java b/src/test/java/com/squareup/javawriter/ClassNameTest.java
index b9c7825..304ec46 100644
--- a/src/test/java/com/squareup/javawriter/ClassNameTest.java
+++ b/src/test/java/com/squareup/javawriter/ClassNameTest.java
@@ -81,6 +81,13 @@
assert_().that(ClassName.fromTypeElement(element).canonicalName())
.isEqualTo("java.lang.Object");
}
+
+ @Test public void classNameFromClass() {
+ assert_().that(ClassName.fromClass(Object.class).canonicalName())
+ .isEqualTo("java.lang.Object");
+ assert_().that(ClassName.fromClass(OuterClass.InnerClass.class).canonicalName())
+ .isEqualTo("com.squareup.javawriter.ClassNameTest.OuterClass.InnerClass");
+ }
@Test public void peerNamed_topLevelClass() {
Elements elements = compilationRule.getElements();