return js.keyword(Keyword.NULL);
}
JS typeName = js.string(context.getNames().getTypeName(context, type));
if (type instanceof DeclaredType) {
DeclaredType declaredType = (DeclaredType) type;
// enum
if (declaredType.asElement().getKind() == ElementKind.ENUM) {
return js.object(Arrays.asList(NameValue.of("name", js.string("Enum")),
NameValue.of("arguments", js.array(Collections.singleton(typeName)))));
}
// parametrized type
if (!declaredType.getTypeArguments().isEmpty()) {
List<JS> array = new ArrayList<JS>();
for (TypeMirror arg : declaredType.getTypeArguments()) {
array.add(getFieldTypeDesc(arg, context));
}
return js.object(Arrays.asList(NameValue.of("name", typeName), NameValue.of("arguments", js.array(array))));
}