one more test; generate 'return' for primitive type return values
This commit is contained in:
@@ -115,13 +115,22 @@ public class ImplementMethodsHandler implements LanguageCodeInsightActionHandler
|
||||
}
|
||||
bodyBuilder.append(")");
|
||||
final JetType returnType = descriptor.getReturnType();
|
||||
if (!returnType.equals(JetStandardLibrary.getJetStandardLibrary(project).getTuple0Type())) {
|
||||
final JetStandardLibrary stdlib = JetStandardLibrary.getJetStandardLibrary(project);
|
||||
if (!returnType.equals(stdlib.getTuple0Type())) {
|
||||
bodyBuilder.append(": ").append(returnType.toString());
|
||||
}
|
||||
bodyBuilder.append("{");
|
||||
if (returnType.isNullable()) {
|
||||
bodyBuilder.append("return null");
|
||||
}
|
||||
else if (returnType.equals(stdlib.getIntType()) || returnType.equals(stdlib.getLongType()) ||
|
||||
returnType.equals(stdlib.getShortType()) || returnType.equals(stdlib.getByteType()) ||
|
||||
returnType.equals(stdlib.getFloatType()) || returnType.equals(stdlib.getDoubleType())) {
|
||||
bodyBuilder.append("return 0");
|
||||
}
|
||||
else if (returnType.equals(stdlib.getBooleanType())) {
|
||||
bodyBuilder.append("return false");
|
||||
}
|
||||
bodyBuilder.append("}");
|
||||
return JetPsiFactory.createFunction(project, bodyBuilder.toString());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
trait G<T> {
|
||||
fun foo(t : T) : T
|
||||
}
|
||||
|
||||
class GC() : G<Int> {
|
||||
<caret>
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
trait G<T> {
|
||||
fun foo(t : T) : T
|
||||
}
|
||||
|
||||
class GC() : G<Int> {
|
||||
|
||||
override fun foo(t: Int): Int {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
@@ -37,10 +37,21 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
||||
public void testJavaParameters() {
|
||||
doDirectoryTest();
|
||||
}
|
||||
|
||||
public void testGenericMethod() {
|
||||
myFixture.configureByFile("genericMethod.kt");
|
||||
doImplement();
|
||||
myFixture.checkResultByFile("genericMethod.kt.after");
|
||||
}
|
||||
|
||||
private void doDirectoryTest() {
|
||||
myFixture.copyDirectoryToProject(getTestName(true), "");
|
||||
myFixture.configureFromTempProjectFile("foo/Impl.kt");
|
||||
doImplement();
|
||||
myFixture.checkResultByFile(getTestName(true) + "/foo/Impl.kt.after");
|
||||
}
|
||||
|
||||
private void doImplement() {
|
||||
final PsiElement elementAtCaret = myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset());
|
||||
final JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, JetClassOrObject.class);
|
||||
final Set<CallableMemberDescriptor> descriptors = ImplementMethodsHandler.collectMethodsToImplement(classOrObject);
|
||||
@@ -52,6 +63,5 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
||||
ImplementMethodsHandler.membersFromDescriptors(descriptors));
|
||||
}
|
||||
}.execute();
|
||||
myFixture.checkResultByFile(getTestName(true) + "/foo/Impl.kt.after");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user