From d1556331ef5d050b536f6fa5b577347beff2f6c4 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Thu, 25 Dec 2014 17:12:30 +0300 Subject: [PATCH] Simplified signatures propagation for vararg types (do not change flexible types) --- .../SignaturesPropagationData.java | 21 ++----------------- .../parameter/InheritNotVararg.txt | 2 +- .../parameter/InheritNotVarargInteger.txt | 2 +- .../parameter/InheritNotVarargNotNull.txt | 2 +- .../propagation/parameter/InheritVararg.txt | 2 +- .../parameter/InheritVarargInteger.txt | 2 +- .../parameter/InheritVarargNotNull.txt | 2 +- 7 files changed, 8 insertions(+), 25 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java index 319ea3b4e8f..4daec6be985 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java @@ -368,34 +368,17 @@ public class SignaturesPropagationData { return new VarargCheckResult(originalType, originalVarargElementType != null); } - KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance(); - // todo simplify (with respect to platform types) if (someSupersVararg && originalVarargElementType == null) { // convert to vararg assert isArrayType(originalType); - - if (KotlinBuiltIns.isPrimitiveArray(originalType)) { - // replace IntArray? with IntArray - return new VarargCheckResult(TypeUtils.makeNotNullable(originalType), true); - } - - // replace Array? with Array - JetType varargElementType = builtIns.getArrayElementType(originalType); - return new VarargCheckResult(builtIns.getArrayType(INVARIANT, varargElementType), true); + return new VarargCheckResult(TypeUtils.makeNotNullable(originalType), true); } else if (someSupersNotVararg && originalVarargElementType != null) { // convert to non-vararg assert isArrayType(originalType); - - if (KotlinBuiltIns.isPrimitiveArray(originalType)) { - // replace IntArray with IntArray? - return new VarargCheckResult(TypeUtils.makeNullable(originalType), false); - } - - // replace Array with Array? - return new VarargCheckResult(TypeUtils.makeNullable(builtIns.getArrayType(OUT_VARIANCE, originalVarargElementType)), false); + return new VarargCheckResult(TypeUtils.makeNullable(originalType), false); } return new VarargCheckResult(originalType, originalVarargElementType != null); } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVararg.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVararg.txt index 1b91007bbe2..df4050a18e0 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVararg.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVararg.txt @@ -4,7 +4,7 @@ public trait InheritNotVararg { public trait Sub : test.InheritNotVararg.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ p0: kotlin.Array?): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ p0: (kotlin.Array?..kotlin.Array?)): kotlin.Unit } public trait Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.txt index f2905b5ddf3..b2af95f97ce 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.txt @@ -4,7 +4,7 @@ public trait InheritNotVarargInteger { public trait Sub : test.InheritNotVarargInteger.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ p0: kotlin.Array?): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ p0: (kotlin.Array?..kotlin.Array?)): kotlin.Unit } public trait Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.txt index cbb166db4b6..b807a78954a 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.txt @@ -4,7 +4,7 @@ public trait InheritNotVarargNotNull { public trait Sub : test.InheritNotVarargNotNull.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ p: kotlin.Array?): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ p: (kotlin.Array?..kotlin.Array?)): kotlin.Unit } public trait Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVararg.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVararg.txt index 5c4c75220a7..b61a2f38ec3 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVararg.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVararg.txt @@ -4,7 +4,7 @@ public trait InheritVararg { public trait Sub : test.InheritVararg.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ vararg p0: kotlin.String! /*kotlin.Array*/): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ vararg p0: kotlin.String! /*kotlin.Array<(out) kotlin.String!>!*/): kotlin.Unit } public trait Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargInteger.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargInteger.txt index 0a5311756ec..b32494ba99f 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargInteger.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargInteger.txt @@ -4,7 +4,7 @@ public trait InheritVarargInteger { public trait Sub : test.InheritVarargInteger.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ vararg p0: kotlin.Int! /*kotlin.Array*/): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ vararg p0: kotlin.Int! /*kotlin.Array<(out) kotlin.Int!>!*/): kotlin.Unit } public trait Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.txt index 0964f285463..cc78ae8303a 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.txt @@ -4,7 +4,7 @@ public trait InheritVarargNotNull { public trait Sub : test.InheritVarargNotNull.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ vararg p: kotlin.String! /*kotlin.Array*/): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ vararg p: kotlin.String! /*kotlin.Array<(out) kotlin.String!>!*/): kotlin.Unit } public trait Super {