Simplified NameSuggester; added test

This commit is contained in:
Svetlana Isakova
2014-12-12 21:13:29 +03:00
parent a589323eaf
commit cddaf89ee8
3 changed files with 50 additions and 46 deletions
@@ -139,56 +139,46 @@ public class JetNameSuggester {
else if (typeChecker.equalTypes(builtIns.getStringType(), jetType)) {
addName(result, "s", validator);
}
else {
if (jetType.getArguments().size() == 1) {
JetType argument = jetType.getArguments().get(0).getType();
if ((KotlinBuiltIns.isArray(jetType) || KotlinBuiltIns.isPrimitiveArray(jetType)) &&
typeChecker.equalTypes(argument, builtIns.getArrayElementType(jetType))) {
if (typeChecker.equalTypes(builtIns.getBooleanType(), argument)) {
addName(result, "booleans", validator);
}
else if (typeChecker.equalTypes(builtIns.getIntType(), argument)) {
addName(result, "ints", validator);
}
else if (typeChecker.equalTypes(builtIns.getByteType(), argument)) {
addName(result, "bytes", validator);
}
else if (typeChecker.equalTypes(builtIns.getLongType(), argument)) {
addName(result, "longs", validator);
}
else if (typeChecker.equalTypes(builtIns.getFloatType(), argument)) {
addName(result, "floats", validator);
}
else if (typeChecker.equalTypes(builtIns.getDoubleType(), argument)) {
addName(result, "doubles", validator);
}
else if (typeChecker.equalTypes(builtIns.getShortType(), argument)) {
addName(result, "shorts", validator);
}
else if (typeChecker.equalTypes(builtIns.getCharType(), argument)) {
addName(result, "chars", validator);
}
else if (typeChecker.equalTypes(builtIns.getStringType(), argument)) {
addName(result, "strings", validator);
}
else {
ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(argument);
if (classDescriptor != null) {
Name className = classDescriptor.getName();
addName(result, "arrayOf" + StringUtil.capitalize(className.asString()) + "s", validator);
}
}
}
else {
addForClassType(result, jetType, validator);
}
else if (KotlinBuiltIns.isArray(jetType) || KotlinBuiltIns.isPrimitiveArray(jetType)) {
JetType elementType = KotlinBuiltIns.getInstance().getArrayElementType(jetType);
if (typeChecker.equalTypes(builtIns.getBooleanType(), elementType)) {
addName(result, "booleans", validator);
}
else if (typeChecker.equalTypes(builtIns.getIntType(), elementType)) {
addName(result, "ints", validator);
}
else if (typeChecker.equalTypes(builtIns.getByteType(), elementType)) {
addName(result, "bytes", validator);
}
else if (typeChecker.equalTypes(builtIns.getLongType(), elementType)) {
addName(result, "longs", validator);
}
else if (typeChecker.equalTypes(builtIns.getFloatType(), elementType)) {
addName(result, "floats", validator);
}
else if (typeChecker.equalTypes(builtIns.getDoubleType(), elementType)) {
addName(result, "doubles", validator);
}
else if (typeChecker.equalTypes(builtIns.getShortType(), elementType)) {
addName(result, "shorts", validator);
}
else if (typeChecker.equalTypes(builtIns.getCharType(), elementType)) {
addName(result, "chars", validator);
}
else if (typeChecker.equalTypes(builtIns.getStringType(), elementType)) {
addName(result, "strings", validator);
}
else {
addForClassType(result, jetType, validator);
ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(elementType);
if (classDescriptor != null) {
Name className = classDescriptor.getName();
addName(result, "arrayOf" + StringUtil.capitalize(className.asString()) + "s", validator);
}
}
}
else {
addForClassType(result, jetType, validator);
}
}
private static void addForClassType(ArrayList<String> result, JetType jetType, JetNameValidator validator) {
@@ -0,0 +1,10 @@
class A() {}
fun a() {
<selection>IntArray(10)</selection>
}
/*
array
intArray
ints
*/
@@ -47,6 +47,10 @@ public class JetNameSuggesterTest extends LightCodeInsightFixtureTestCase {
doTest();
}
public void testNamePrimitiveArray() {
doTest();
}
public void testNameCallExpression() {
doTest();
}