diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index eab844d2e17..f7d692635d4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -441,7 +441,9 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { //TODO move further if (expression.getOperationSign() == JetTokens.SAFE_ACCESS) { if (selectorReturnType != null && !selectorReturnType.isNullable() && !JetStandardClasses.isUnit(selectorReturnType)) { - selectorReturnType = TypeUtils.makeNullable(selectorReturnType); + if (receiverType.isNullable()) { + selectorReturnType = TypeUtils.makeNullable(selectorReturnType); + } } } diff --git a/compiler/testData/checkerWithErrorTypes/quick/SafeCallNonNullReceiver.jet b/compiler/testData/checkerWithErrorTypes/quick/SafeCallNonNullReceiver.jet new file mode 100644 index 00000000000..5157eb39277 --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/quick/SafeCallNonNullReceiver.jet @@ -0,0 +1,6 @@ +// http://youtrack.jetbrains.net/issue/KT-418 + +fun ff() { + val i: Int = 1 + val a: Int = i?.plus(2) +}