one more test; generate 'return' for primitive type return values

This commit is contained in:
Dmitry Jemerov
2011-11-04 18:20:56 +01:00
parent 7714e850b9
commit b2990b74ef
4 changed files with 38 additions and 2 deletions
@@ -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");
}
}