Report error on repeated upper bounds for type parameters

This commit is contained in:
Alexander Udalov
2015-11-20 23:06:24 +03:00
parent 21e64e02bd
commit 5fbb9bfe3b
16 changed files with 99 additions and 42 deletions
@@ -8,7 +8,7 @@ public final class SecondaryConstructors public constructor(x: kotlin.Boolean) {
private constructor(x: kotlin.Int) { /* compiled code */ }
public final inner class Inner<T : kotlin.String, G : kotlin.Int> where G : kotlin.Number {
public final inner class Inner<T : kotlin.String, G : kotlin.Int> where G : java.io.Serializable {
public constructor(x: T, g: G) { /* compiled code */ }
}
@@ -1,5 +1,7 @@
package test
import java.io.Serializable
class SecondaryConstructors(x: Boolean) {
init {
}
@@ -13,7 +15,7 @@ class SecondaryConstructors(x: Boolean) {
private constructor(x: Int) : this(x < 0) {
}
inner class Inner<T : String, G : Int> where G : Number {
inner class Inner<T : String, G : Int> where G : Serializable {
constructor(x: T, g: G) {
}
}
@@ -1,5 +1,7 @@
package test
import java.io.Serializable
class SecondaryConstructors(x: Boolean) {
init {
}
@@ -13,7 +15,7 @@ class SecondaryConstructors(x: Boolean) {
private constructor(x: Int) : this(x < 0) {
}
inner class Inner<T : String, G : Int> where G : Number {
inner class Inner<T : String, G : Int> where G : Serializable {
constructor(x: T, g: G) {
}
}
@@ -60,8 +60,10 @@ PsiJetFileStubImpl[package=test]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=Number]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=java]
REFERENCE_EXPRESSION:[referencedName=io]
REFERENCE_EXPRESSION:[referencedName=Serializable]
CLASS_BODY:
SECONDARY_CONSTRUCTOR:
MODIFIER_LIST:[public]
@@ -1,6 +1,8 @@
package test
class TypeParams<in T1 : Any, out T2, T3 : (Int) -> Int, T4, T5 : Any?, T6 : T5, T7 : Any> where T1 : Any?, T1 : Int?, T1 : Int, T2 : String, T7 : T6 {
import java.io.Serializable
class TypeParams<in T1 : Any, out T2, T3 : (Int) -> Int, T4, T5 : Any?, T6 : T5, T7 : Any> where T1 : Cloneable?, T1 : Serializable, T2 : String, T7 : T6 {
fun useParams(p1: T1, p2: (T2) -> Unit, p3: T3, p4: T4, P5: T5) {
}
@@ -15,7 +17,7 @@ class TypeParams<in T1 : Any, out T2, T3 : (Int) -> Int, T4, T5 : Any?, T6 : T5,
fun <G1, G2, G3> withOwnParams(p1: G1, p2: G2, p3: G3, p4: T1, p5: (T2) -> Unit) {
}
fun <G1 : Any?, G2 : G1, G3> withOwnParamsAndTypeConstraints(p1: G1, p2: G2, p3: G3, p4: T1, p5: (T2) -> Unit) where G3 : G1, G3 : String, G3 : String? {
fun <G1 : Any?, G2 : G1, G3> withOwnParamsAndTypeConstraints(p1: G1, p2: G2, p3: G3, p4: T1, p5: (T2) -> Unit) where G3 : G1, G3 : String, G3 : Serializable? {
}
fun <T1, T2, T3> withOwnParamsClashing(p1: T1, p2: T2, p3: T3, p4: T4, p5: T5) {
@@ -57,22 +57,16 @@ PsiJetFileStubImpl[package=test]
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=Any]
TYPE_CONSTRAINT:
REFERENCE_EXPRESSION:[referencedName=T1]
TYPE_REFERENCE:
NULLABLE_TYPE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=Int]
REFERENCE_EXPRESSION:[referencedName=Cloneable]
TYPE_CONSTRAINT:
REFERENCE_EXPRESSION:[referencedName=T1]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=Int]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=java]
REFERENCE_EXPRESSION:[referencedName=io]
REFERENCE_EXPRESSION:[referencedName=Serializable]
TYPE_CONSTRAINT:
REFERENCE_EXPRESSION:[referencedName=T7]
TYPE_REFERENCE:
@@ -371,8 +365,10 @@ PsiJetFileStubImpl[package=test]
NULLABLE_TYPE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=String]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=java]
REFERENCE_EXPRESSION:[referencedName=io]
REFERENCE_EXPRESSION:[referencedName=Serializable]
FUN:[fqName=test.TypeParams.withOwnParamsClashing, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=true, isExtension=false, isTopLevel=false, name=withOwnParamsClashing]
MODIFIER_LIST:[public final]
TYPE_PARAMETER_LIST: