Nullability propagation with NotNull as default for type arguments

This commit is contained in:
Andrey Breslav
2012-12-07 20:05:14 +04:00
parent 3b39257f13
commit becd68b98d
6 changed files with 163 additions and 40 deletions
@@ -0,0 +1,42 @@
package test;
import java.util.List;
import jet.runtime.typeinfo.KotlinSignature;
public interface PropagateTypeArgumentNullable {
public interface Super {
@KotlinSignature("fun outS(p : List<String?>)")
void outS(List<String> p);
@KotlinSignature("fun invOutS(p : MutableList<List<String?>>)")
void invOutS(List<List<String>> p);
@KotlinSignature("fun outOutS(p : List<List<String?>>)")
void outOutS(List<List<String>> p);
@KotlinSignature("fun outR() : List<String?>")
List<String> outR();
@KotlinSignature("fun invR() : MutableList<String?>")
List<String> invR();
@KotlinSignature("fun invOutR() : MutableList<List<String?>>")
List<List<String>> invOutR();
}
public interface Sub extends Super {
void outS(List<String> p);
void invOutS(List<List<String>> p);
void outOutS(List<List<String>> p);
List<String> outR();
List<String> invR();
List<List<String>> invOutR();
}
}
@@ -0,0 +1,29 @@
package test
public trait PropagateTypeArgumentNullable: Object {
public trait Super: Object {
public fun outS(p0: List<String?>)
public fun invOutS(p0 : MutableList<List<String?>>)
public fun outOutS(p0 : List<List<String?>>)
public fun outR() : List<String?>
public fun invR() : MutableList<String?>
public fun invOutR() : MutableList<List<String?>>
}
public trait Sub: Super {
override fun outS(p0: List<String?>)
override fun invOutS(p0 : MutableList<List<String?>>)
override fun outOutS(p0 : List<List<String?>>)
override fun outR() : List<String?>
override fun invR() : MutableList<String?>
override fun invOutR() : MutableList<List<String?>>
}
}
@@ -0,0 +1,20 @@
namespace test
public abstract trait test.PropagateTypeArgumentNullable : java.lang.Object {
public abstract trait test.PropagateTypeArgumentNullable.Sub : test.PropagateTypeArgumentNullable.Super {
public abstract override /*1*/ fun invOutR(): jet.MutableList<jet.List<jet.String?>>
public abstract override /*1*/ fun invOutS(/*0*/ p0: jet.MutableList<jet.List<jet.String?>>): jet.Tuple0
public abstract override /*1*/ fun invR(): jet.MutableList<jet.String?>
public abstract override /*1*/ fun outOutS(/*0*/ p0: jet.List<jet.List<jet.String?>>): jet.Tuple0
public abstract override /*1*/ fun outR(): jet.List<jet.String?>
public abstract override /*1*/ fun outS(/*0*/ p0: jet.List<jet.String?>): jet.Tuple0
}
public abstract trait test.PropagateTypeArgumentNullable.Super : java.lang.Object {
public abstract fun invOutR(): jet.MutableList<jet.List<jet.String?>>
public abstract fun invOutS(/*0*/ p0: jet.MutableList<jet.List<jet.String?>>): jet.Tuple0
public abstract fun invR(): jet.MutableList<jet.String?>
public abstract fun outOutS(/*0*/ p0: jet.List<jet.List<jet.String?>>): jet.Tuple0
public abstract fun outR(): jet.List<jet.String?>
public abstract fun outS(/*0*/ p0: jet.List<jet.String?>): jet.Tuple0
}
}