From f061fce9a85e0a87a57e2355f7b64aea3d3a56d1 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Sat, 12 May 2012 22:21:09 +0400 Subject: [PATCH] properly read vararg signature from java code KT-1694 Java vararg override, Why is it intuitive interface? #KT-1694 Fixed --- .../lang/resolve/java/JavaDescriptorResolver.java | 1 + .../diagnostics/tests/j+k/OverrideVararg.jet | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/j+k/OverrideVararg.jet diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 5ac681a0dc6..7c0582be345 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -1087,6 +1087,7 @@ public class JavaDescriptorResolver { JetType varargElementType; if (psiType instanceof PsiEllipsisType) { varargElementType = JetStandardLibrary.getInstance().getArrayElementType(TypeUtils.makeNotNullable(outType)); + outType = TypeUtils.makeNotNullable(outType); } else { varargElementType = null; diff --git a/compiler/testData/diagnostics/tests/j+k/OverrideVararg.jet b/compiler/testData/diagnostics/tests/j+k/OverrideVararg.jet new file mode 100644 index 00000000000..e90852f6637 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/OverrideVararg.jet @@ -0,0 +1,12 @@ +// FILE: Aaa.java +// http://youtrack.jetbrains.com/issue/KT-1694 + +public abstract class Aaa { + public abstract void foo(String... args); +} + +// FILE: bbb.kt + +class Bbb() : Aaa() { + override fun foo(vararg args: String?) = #() +}