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 0012f0aee7b..c5c9e3e9a41 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 @@ -841,6 +841,9 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { JetType type = getVariableType(nameExpression, receiver, callOperationNode, context.replaceBindingTrace(traceForVariable), result); if (result[0]) { traceForVariable.commit(); + if (type instanceof NamespaceType && !context.namespacesAllowed) { + type = null; + } return JetTypeInfo.create(type, context.dataFlowInfo); } diff --git a/compiler/testData/diagnostics/tests/NamespaceInExpressionPosition.kt b/compiler/testData/diagnostics/tests/NamespaceInExpressionPosition.kt index 740ed2c0b3a..7b69e82dea8 100644 --- a/compiler/testData/diagnostics/tests/NamespaceInExpressionPosition.kt +++ b/compiler/testData/diagnostics/tests/NamespaceInExpressionPosition.kt @@ -5,7 +5,22 @@ class X {} val s = java val ss = System val sss = X +val x = "${System}" val xs = java.lang val xss = java.lang.System val xsss = foo.X -val xssss = foo \ No newline at end of file +val xssss = foo +val f = { System } + +fun main(args : Array) { + java = null + System = null + System!! + java.lang.System = null + java.lang.System!! + System is Int + System() + (System) + @foo System + null in System +}