diff --git a/src/main/java/il/ac/technion/cs/fling/internal/grammar/types/ClassParameter.java b/src/main/java/il/ac/technion/cs/fling/internal/grammar/types/ClassParameter.java index 409f3010..f4fa42da 100644 --- a/src/main/java/il/ac/technion/cs/fling/internal/grammar/types/ClassParameter.java +++ b/src/main/java/il/ac/technion/cs/fling/internal/grammar/types/ClassParameter.java @@ -1,6 +1,8 @@ package il.ac.technion.cs.fling.internal.grammar.types; + +import static il.ac.technion.cs.fling.namers.NaiveNamer.lowerCamelCase; +import static il.ac.technion.cs.fling.namers.NaiveNamer.unreservedName; import static java.util.Objects.requireNonNull; -import il.ac.technion.cs.fling.namers.NaiveNamer; // TODO allow primitive types. public class ClassParameter implements StringTypeParameter { public final Class parameterClass; @@ -11,7 +13,9 @@ public ClassParameter(final Class parameterClass) { return parameterClass.getCanonicalName(); } @Override public String baseParameterName() { - return unPrimitiveTypeSimple(NaiveNamer.lowerCamelCase(parameterClass.getSimpleName())); + if (parameterClass.isPrimitive()) + return parameterClass.getSimpleName().substring(0, 1); + return unreservedName(lowerCamelCase(parameterClass.getSimpleName())); } @Override public int hashCode() { return parameterClass.hashCode(); @@ -39,16 +43,4 @@ public static String unPrimitiveType(final String typeName) { void.class.getName().equals(typeName) ? Void.class.getCanonicalName() : // typeName; } - public static String unPrimitiveTypeSimple(final String typeName) { - return byte.class.getName().equals(typeName) ? "b" : // - short.class.getName().equals(typeName) ? "s" : // - int.class.getName().equals(typeName) ? "i" : // - long.class.getName().equals(typeName) ? "l" : // - float.class.getName().equals(typeName) ? "f" : // - double.class.getName().equals(typeName) ? "d" : // - boolean.class.getName().equals(typeName) ? "b" : // - char.class.getName().equals(typeName) ? "c" : // - void.class.getName().equals(typeName) ? "v" : // - typeName; - } } diff --git a/src/main/java/il/ac/technion/cs/fling/namers/NaiveNamer.java b/src/main/java/il/ac/technion/cs/fling/namers/NaiveNamer.java index a85b3b76..e33e438c 100644 --- a/src/main/java/il/ac/technion/cs/fling/namers/NaiveNamer.java +++ b/src/main/java/il/ac/technion/cs/fling/namers/NaiveNamer.java @@ -23,6 +23,9 @@ import il.ac.technion.cs.fling.internal.grammar.rules.Component; import il.ac.technion.cs.fling.internal.grammar.rules.Constants; import il.ac.technion.cs.fling.internal.grammar.rules.Variable; + +import javax.lang.model.SourceVersion; + public class NaiveNamer implements Namer { private final Map astChildrenCounter = new HashMap<>(); private final Map notationsChildrenCounter = new HashMap<>(); @@ -168,6 +171,11 @@ public static String getNameFromBase(final String baseName, final Map