diff --git a/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/nullabilityAnalysis/constraintsCollector.kt b/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/nullabilityAnalysis/constraintsCollector.kt index b88411fb830..b3a7dc16375 100644 --- a/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/nullabilityAnalysis/constraintsCollector.kt +++ b/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/nullabilityAnalysis/constraintsCollector.kt @@ -240,7 +240,12 @@ internal class ConstraintsCollector( for (argumentIndex in callExpression.valueArguments.indices) { - val argument = callExpression.valueArguments[argumentIndex].getArgumentExpression() ?: continue + val valueArgument = callExpression.valueArguments[argumentIndex] + val argument = valueArgument.getArgumentExpression() ?: continue + + if (valueArgument.isSpread) { + argument.addEqualsNullabilityConstraint(Nullability.NOT_NULL, ConstraintCameFrom.USED_AS_RECEIVER) + } argument.addSubtypeNullabilityConstraint( parameterBoundTypeIndex(argumentIndex) ?: continue, diff --git a/nj2k/testData/nullabilityAnalysis/spreadExpression.kt b/nj2k/testData/nullabilityAnalysis/spreadExpression.kt new file mode 100644 index 00000000000..1078280306e --- /dev/null +++ b/nj2k/testData/nullabilityAnalysis/spreadExpression.kt @@ -0,0 +1,5 @@ +import java.lang.reflect.Constructor + +fun foo(constructor: Constructor, args: Array) { + constructor.newInstance(*args) +} \ No newline at end of file diff --git a/nj2k/testData/nullabilityAnalysis/spreadExpression.kt.after b/nj2k/testData/nullabilityAnalysis/spreadExpression.kt.after new file mode 100644 index 00000000000..5bbbca54d27 --- /dev/null +++ b/nj2k/testData/nullabilityAnalysis/spreadExpression.kt.after @@ -0,0 +1,5 @@ +import java.lang.reflect.Constructor + +fun foo(constructor: Constructor, args: Array) { + constructor.newInstance(*args) +} \ No newline at end of file diff --git a/nj2k/tests/org/jetbrains/kotlin/nj2k/NullabilityAnalysisTestGenerated.java b/nj2k/tests/org/jetbrains/kotlin/nj2k/NullabilityAnalysisTestGenerated.java index bcc6ae7bae2..460b6368823 100644 --- a/nj2k/tests/org/jetbrains/kotlin/nj2k/NullabilityAnalysisTestGenerated.java +++ b/nj2k/tests/org/jetbrains/kotlin/nj2k/NullabilityAnalysisTestGenerated.java @@ -64,6 +64,11 @@ public class NullabilityAnalysisTestGenerated extends AbstractNullabilityAnalysi runTest("nj2k/testData/nullabilityAnalysis/smartCast.kt"); } + @TestMetadata("spreadExpression.kt") + public void testSpreadExpression() throws Exception { + runTest("nj2k/testData/nullabilityAnalysis/spreadExpression.kt"); + } + @TestMetadata("superMethod.kt") public void testSuperMethod() throws Exception { runTest("nj2k/testData/nullabilityAnalysis/superMethod.kt");