KT-1033 Generate implementations produces wrong code
This commit is contained in:
+1
-1
@@ -73,7 +73,7 @@ public class TypeParameterDescriptor extends DeclarationDescriptorImpl implement
|
||||
this,
|
||||
annotations,
|
||||
false,
|
||||
"&" + name,
|
||||
name,
|
||||
Collections.<TypeParameterDescriptor>emptyList(),
|
||||
upperBounds);
|
||||
}
|
||||
|
||||
@@ -104,12 +104,15 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
||||
if (!returnType.equals(stdlib.getTuple0Type())) {
|
||||
bodyBuilder.append(": ").append(returnType.toString());
|
||||
}
|
||||
bodyBuilder.append("{");
|
||||
|
||||
final String initializer = defaultInitializer(returnType, stdlib);
|
||||
if (initializer != null) {
|
||||
bodyBuilder.append("return " ).append(initializer);
|
||||
bodyBuilder.append(" = ").append(initializer);
|
||||
}
|
||||
bodyBuilder.append("}");
|
||||
else {
|
||||
bodyBuilder.append("{").append("throw UnsupportedOperationException()").append("}");
|
||||
}
|
||||
|
||||
return JetPsiFactory.createFunction(project, bodyBuilder.toString());
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,5 @@ trait G<T> {
|
||||
|
||||
class GC() : G<Int> {
|
||||
|
||||
override fun foo(t: Int): Int {
|
||||
return 0
|
||||
}
|
||||
override fun foo(t: Int): Int = 0
|
||||
}
|
||||
|
||||
@@ -2,7 +2,5 @@ import foo.Intf
|
||||
|
||||
class Impl(): Intf {
|
||||
|
||||
override fun getFooBar(): String? {
|
||||
return null
|
||||
}
|
||||
override fun getFooBar(): String? = null
|
||||
}
|
||||
|
||||
@@ -3,5 +3,6 @@ import foo.Intf
|
||||
class Impl(): Intf {
|
||||
|
||||
override fun fooBar(i: Int, s: Array<String?>?, foo: Any?) {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
trait G<T> {
|
||||
fun foo(t : T) : T
|
||||
}
|
||||
|
||||
class GC<T>() : G<T> {
|
||||
<caret>
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
trait G<T> {
|
||||
fun foo(t : T) : T
|
||||
}
|
||||
|
||||
class GC<T>() : G<T> {
|
||||
|
||||
override fun foo(t: T): T {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
trait Some {
|
||||
fun foo(some : Int?) : Int
|
||||
}
|
||||
|
||||
class SomeOther : Some {
|
||||
<caret>
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
trait Some {
|
||||
fun foo(some : Int?) : Int
|
||||
}
|
||||
|
||||
class SomeOther : Some {
|
||||
|
||||
override fun foo(some: Int?): Int = 0
|
||||
}
|
||||
@@ -46,6 +46,14 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
||||
doFileTest();
|
||||
}
|
||||
|
||||
public void testTraitGenericOverride() {
|
||||
doFileTest();
|
||||
}
|
||||
|
||||
public void testTraitNullableFunction() {
|
||||
doFileTest();
|
||||
}
|
||||
|
||||
private void doFileTest() {
|
||||
myFixture.configureByFile(getTestName(true) + ".kt");
|
||||
doImplement();
|
||||
|
||||
Reference in New Issue
Block a user