From 8049619f697917695c8c25742c64f98da9f63599 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 8 Sep 2011 16:57:30 +0400 Subject: [PATCH 1/2] Fixes after merge --- .../jet/lang/descriptors/ClassModifiers.java | 5 ++--- .../jetbrains/jet/lang/resolve/TopDownAnalyzer.java | 12 ++++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java b/idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java index ddb1897ebfd..6a709ed0eea 100644 --- a/idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java +++ b/idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java @@ -1,6 +1,5 @@ package org.jetbrains.jet.lang.descriptors; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.JetModifierList; import org.jetbrains.jet.lexer.JetTokens; @@ -31,8 +30,8 @@ public class ClassModifiers extends Modifiers { public static ClassModifiers resolveModifiers(@Nullable JetModifierList modifierList) { if (modifierList == null) return DEFAULT_MODIFIERS; return new ClassModifiers( - modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD), - modifierList.hasModifier(JetTokens.OPEN_KEYWORD) || modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD), + modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD) || modifierList.hasModifier(JetTokens.TRAIT_KEYWORD), + modifierList.hasModifier(JetTokens.OPEN_KEYWORD) || modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD) || modifierList.hasModifier(JetTokens.TRAIT_KEYWORD), modifierList.hasModifier(JetTokens.TRAIT_KEYWORD) ); } diff --git a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index 7dab8fd1340..e3c376865fd 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -636,7 +636,7 @@ public class TopDownAnalyzer { public void visitDelegationToSuperCallSpecifier(JetDelegatorToSuperCall call) { JetValueArgumentList valueArgumentList = call.getValueArgumentList(); ASTNode node = valueArgumentList == null ? call.getNode() : valueArgumentList.getNode(); - if (descriptor.isTrait()) { + if (descriptor.getClassModifiers().isTrait()) { trace.getErrorHandler().genericError(node, "Traits can not initialize supertypes"); } JetTypeReference typeReference = call.getTypeReference(); @@ -647,7 +647,7 @@ public class TopDownAnalyzer { recordSupertype(typeReference, supertype); ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(supertype); if (classDescriptor != null) { - if (classDescriptor.isTrait()) { + if (classDescriptor.getClassModifiers().isTrait()) { trace.getErrorHandler().genericError(node, "A trait may not have a constructor"); } } @@ -656,7 +656,7 @@ public class TopDownAnalyzer { recordSupertype(typeReference, trace.getBindingContext().get(BindingContext.TYPE, typeReference)); } } - else if (!descriptor.isTrait()) { + else if (!descriptor.getClassModifiers().isTrait()) { JetType supertype = trace.getBindingContext().get(BindingContext.TYPE, typeReference); recordSupertype(typeReference, supertype); @@ -675,8 +675,8 @@ public class TopDownAnalyzer { if (supertype != null) { ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(supertype); if (classDescriptor != null) { - if (!descriptor.isTrait()) { - if (classDescriptor.hasConstructors() && !ErrorUtils.isError(classDescriptor.getTypeConstructor()) && !classDescriptor.isTrait()) { + if (!descriptor.getClassModifiers().isTrait()) { + if (classDescriptor.hasConstructors() && !ErrorUtils.isError(classDescriptor.getTypeConstructor()) && !classDescriptor.getClassModifiers().isTrait()) { trace.getErrorHandler().genericError(specifier.getNode(), "This type has a constructor, and thus must be initialized here"); } } @@ -718,7 +718,7 @@ public class TopDownAnalyzer { ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(supertype); if (classDescriptor != null) { - if (!classDescriptor.isTrait()) { + if (!classDescriptor.getClassModifiers().isTrait()) { if (classAppeared) { trace.getErrorHandler().genericError(typeReference.getNode(), "Only one class may appear in a supertype list"); } From 43dd5d12c7244f23e3801b01209db4e20ea4044f Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 8 Sep 2011 16:58:53 +0400 Subject: [PATCH 2/2] Variables extracted --- .../jetbrains/jet/lang/descriptors/ClassModifiers.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java b/idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java index 6a709ed0eea..896958e0864 100644 --- a/idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java +++ b/idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java @@ -29,10 +29,12 @@ public class ClassModifiers extends Modifiers { public static ClassModifiers resolveModifiers(@Nullable JetModifierList modifierList) { if (modifierList == null) return DEFAULT_MODIFIERS; + boolean abstractModifier = modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD); + boolean traitModifier = modifierList.hasModifier(JetTokens.TRAIT_KEYWORD); return new ClassModifiers( - modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD) || modifierList.hasModifier(JetTokens.TRAIT_KEYWORD), - modifierList.hasModifier(JetTokens.OPEN_KEYWORD) || modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD) || modifierList.hasModifier(JetTokens.TRAIT_KEYWORD), - modifierList.hasModifier(JetTokens.TRAIT_KEYWORD) + abstractModifier || traitModifier, + modifierList.hasModifier(JetTokens.OPEN_KEYWORD) || abstractModifier || traitModifier, + traitModifier ); }