From 645b784b40e4e03790ba5efd934e631318c4da5e Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Fri, 14 Sep 2012 11:14:00 +0400 Subject: [PATCH] EA-38625 Fixed - Part 2 - UOE: NamespaceType.throwException --- .../src/org/jetbrains/jet/lang/types/NamespaceType.java | 1 + .../types/expressions/BasicExpressionTypingVisitor.java | 2 +- .../testData/diagnostics/tests/SafeCallOnFakeNamespace.kt | 8 +++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/NamespaceType.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/NamespaceType.java index e75c88ddf21..1fbbcdd91a2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/NamespaceType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/NamespaceType.java @@ -64,6 +64,7 @@ public class NamespaceType implements JetType { @Override public boolean isNullable() { + throwException(); return false; } 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 dda016dbf63..6e8ade4d8ba 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 @@ -556,7 +556,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { JetType selectorReturnType = selectorReturnTypeInfo.getType(); //TODO move further - if (expression.getOperationSign() == JetTokens.SAFE_ACCESS) { + if (!(receiverType instanceof NamespaceType) && expression.getOperationSign() == JetTokens.SAFE_ACCESS) { if (selectorReturnType != null && !selectorReturnType.isNullable() && !JetStandardClasses.isUnit(selectorReturnType)) { if (receiverType.isNullable()) { selectorReturnType = TypeUtils.makeNullable(selectorReturnType); diff --git a/compiler/testData/diagnostics/tests/SafeCallOnFakeNamespace.kt b/compiler/testData/diagnostics/tests/SafeCallOnFakeNamespace.kt index 8e56bae4c42..1a5c3fa4250 100644 --- a/compiler/testData/diagnostics/tests/SafeCallOnFakeNamespace.kt +++ b/compiler/testData/diagnostics/tests/SafeCallOnFakeNamespace.kt @@ -3,8 +3,14 @@ public class Test { public static final String FOO = "test"; } +// FILE: anotherTest.kt +package foo + +val s: String = "test" + // FILE: test.kt fun ff() { val a = Test?.FOO - System?.out.println(a) + val b = foo?.s + System?.out.println(a + b) }