diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java b/idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java index 483c36bfdf7..f7fa4952536 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java @@ -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 result, JetType jetType, JetNameValidator validator) { diff --git a/idea/testData/refactoring/nameSuggester/NamePrimitiveArray.kt b/idea/testData/refactoring/nameSuggester/NamePrimitiveArray.kt new file mode 100644 index 00000000000..a7a34d0d3da --- /dev/null +++ b/idea/testData/refactoring/nameSuggester/NamePrimitiveArray.kt @@ -0,0 +1,10 @@ +class A() {} + +fun a() { + IntArray(10) +} +/* +array +intArray +ints +*/ \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/nameSuggester/JetNameSuggesterTest.java b/idea/tests/org/jetbrains/jet/plugin/refactoring/nameSuggester/JetNameSuggesterTest.java index 26132a3a7d5..53134d46261 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/nameSuggester/JetNameSuggesterTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/nameSuggester/JetNameSuggesterTest.java @@ -47,6 +47,10 @@ public class JetNameSuggesterTest extends LightCodeInsightFixtureTestCase { doTest(); } + public void testNamePrimitiveArray() { + doTest(); + } + public void testNameCallExpression() { doTest(); }