From 78a51bd9c46bfc36f3305c8aa2ef5c0640acaa1e Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 13 Sep 2011 19:43:41 +0400 Subject: [PATCH] Nullable types prohibited in supertypes --- .../jetbrains/jet/lang/resolve/ClassDescriptorResolver.java | 5 +++++ idea/testData/checker/ProjectionsInSupertypes.jet | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java index 126c6e9cdc6..484d2fef303 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java @@ -107,6 +107,11 @@ public class ClassDescriptorResolver { if (typeReference != null) { result.add(resolver.resolveType(extensibleScope, typeReference)); JetTypeElement typeElement = typeReference.getTypeElement(); + while (typeElement instanceof JetNullableType) { + JetNullableType nullableType = (JetNullableType) typeElement; + trace.getErrorHandler().genericError(nullableType.getQuestionMarkNode(), "A supertype cannot be nullable"); + typeElement = nullableType.getInnerType(); + } if (typeElement instanceof JetUserType) { JetUserType userType = (JetUserType) typeElement; List typeArguments = userType.getTypeArguments(); diff --git a/idea/testData/checker/ProjectionsInSupertypes.jet b/idea/testData/checker/ProjectionsInSupertypes.jet index 2bf472b3f43..c761aecec97 100644 --- a/idea/testData/checker/ProjectionsInSupertypes.jet +++ b/idea/testData/checker/ProjectionsInSupertypes.jet @@ -3,4 +3,4 @@ trait B {} trait C {} trait D {} -trait Test : A<in Int>, B<out T>, C<*>, D {} \ No newline at end of file +trait Test : A<in Int>, B<out T>, C<*>???, D {} \ No newline at end of file