diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java index 8f56ccb1599..23155aa4ec1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java @@ -186,6 +186,11 @@ public class CallResolver { JetTypeReference typeReference = expression.getTypeReference(); assert typeReference != null; JetType constructedType = typeResolver.resolveType(context.scope, typeReference, context.trace, true); + + if (ErrorUtils.isErrorType(constructedType)) { + return checkArgumentTypesAndFail(context); + } + DeclarationDescriptor declarationDescriptor = constructedType.getConstructor().getDeclarationDescriptor(); if (declarationDescriptor instanceof ClassDescriptor) { ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor; diff --git a/compiler/testData/resolve/NoReferenceForErrorAnnotation.jet b/compiler/testData/resolve/NoReferenceForErrorAnnotation.jet new file mode 100644 index 00000000000..90951704e97 --- /dev/null +++ b/compiler/testData/resolve/NoReferenceForErrorAnnotation.jet @@ -0,0 +1,4 @@ +`!null`first object Foo {} + +`!null`second(`!null`aa, `!null`asdf) object More { +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java b/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java index 84cdc62c6eb..639b36c4abc 100644 --- a/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java +++ b/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java @@ -202,6 +202,12 @@ public abstract class ExpectedResolveData { renderReferenceInContext(referenceExpression) + " but was resolved to " + renderNullableDescriptor(referenceTarget), unresolvedReferences.contains(referenceExpression)); + + assertTrue( + String.format("Reference =%s= has a reference target =%s= but expected to be unresolved", + renderReferenceInContext(referenceExpression), renderNullableDescriptor(referenceTarget)), + referenceTarget == null); + continue; } if ("!!".equals(name)) {