aboutsummaryrefslogtreecommitdiff
path: root/java/com/google/turbine/type/Type.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/google/turbine/type/Type.java')
-rw-r--r--java/com/google/turbine/type/Type.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/java/com/google/turbine/type/Type.java b/java/com/google/turbine/type/Type.java
index 085346a..5fbf1b1 100644
--- a/java/com/google/turbine/type/Type.java
+++ b/java/com/google/turbine/type/Type.java
@@ -17,6 +17,7 @@
package com.google.turbine.type;
import static com.google.common.collect.Iterables.getLast;
+import static java.lang.Math.max;
import static java.util.Objects.requireNonNull;
import com.google.auto.value.AutoValue;
@@ -144,15 +145,23 @@ public interface Type {
StringBuilder sb = new StringBuilder();
boolean first = true;
for (SimpleClassTy c : classes()) {
- for (AnnoInfo anno : c.annos()) {
- sb.append(anno);
- sb.append(' ');
- }
+ String binaryName = c.sym().binaryName();
if (!first) {
+ for (AnnoInfo anno : c.annos()) {
+ sb.append(anno);
+ sb.append(' ');
+ }
sb.append('.');
- sb.append(c.sym().binaryName().substring(c.sym().binaryName().lastIndexOf('$') + 1));
+ sb.append(binaryName, binaryName.lastIndexOf('$') + 1, binaryName.length());
} else {
- sb.append(c.sym().binaryName().replace('/', '.').replace('$', '.'));
+ int idx = max(binaryName.lastIndexOf('/'), binaryName.lastIndexOf('$')) + 1;
+ String name = binaryName.replace('/', '.').replace('$', '.');
+ sb.append(name, 0, idx);
+ for (AnnoInfo anno : c.annos()) {
+ sb.append(anno);
+ sb.append(' ');
+ }
+ sb.append(name, idx, name.length());
}
if (!c.targs().isEmpty()) {
sb.append('<');