From 071553c66bb627afcabf2a66a61f6d409c8445da Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 21 Apr 2014 18:57:46 +0400 Subject: [PATCH] Extract and use ModifiersChecker#reportIllegalModifiers() --- .../jet/lang/resolve/BodyResolver.java | 4 +-- .../jet/lang/resolve/DeclarationsChecker.java | 7 +---- .../jet/lang/resolve/DescriptorResolver.java | 11 +------ .../jet/lang/resolve/ModifiersChecker.java | 29 ++++++++++++++----- 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java index 059915a5dcc..38d3e309c9e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java @@ -379,9 +379,7 @@ public class BodyResolver { annotationResolver.resolveAnnotationsWithArguments(scope, modifierList, trace); - for (ASTNode node : modifierList.getModifierNodes()) { - trace.report(ILLEGAL_MODIFIER.on(node.getPsi(), (JetModifierKeywordToken) node.getElementType())); - } + ModifiersChecker.reportIllegalModifiers(modifierList, Arrays.asList(JetTokens.MODIFIER_KEYWORDS_ARRAY), trace); } private void resolvePrimaryConstructorParameters(@NotNull BodiesResolveContext c) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java index b5398f173b8..22992ce05b1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.lang.resolve; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import com.intellij.lang.ASTNode; -import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; @@ -131,11 +130,7 @@ public class DeclarationsChecker { } } - for (JetModifierKeywordToken token : JetTokens.MODIFIER_KEYWORDS_ARRAY) { - if (modifierList.hasModifier(token)) { - trace.report(ILLEGAL_MODIFIER.on(modifierList.getModifier(token), token)); - } - } + ModifiersChecker.reportIllegalModifiers(modifierList, Arrays.asList(JetTokens.MODIFIER_KEYWORDS_ARRAY), trace); } private void checkTypesInClassHeader(@NotNull JetClassOrObject classOrObject) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index 170e1e9ba43..fadc2ea659c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -1449,16 +1449,7 @@ public class DescriptorResolver { @NotNull BindingTrace trace, @NotNull JetParameter parameter ) { - JetModifierList modifierList = parameter.getModifierList(); - if (modifierList != null) { - for (JetModifierKeywordToken illegalModifierType : MODIFIERS_ILLEGAL_ON_PARAMETERS) { - if (modifierList.hasModifier(illegalModifierType)) { - PsiElement illegalModifier = modifierList.getModifier(illegalModifierType); - assert illegalModifier != null; - trace.report(ILLEGAL_MODIFIER.on(illegalModifier, illegalModifierType)); - } - } - } + ModifiersChecker.reportIllegalModifiers(parameter.getModifierList(), MODIFIERS_ILLEGAL_ON_PARAMETERS, trace); } public static void resolvePackageHeader( diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java index 2569290387b..0b1d802dda0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java @@ -36,6 +36,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Map; +import static org.jetbrains.jet.lang.diagnostics.Errors.ILLEGAL_MODIFIER; import static org.jetbrains.jet.lexer.JetTokens.*; public class ModifiersChecker { @@ -45,6 +46,22 @@ public class ModifiersChecker { private static final Collection VISIBILITY_MODIFIERS = Lists.newArrayList(PRIVATE_KEYWORD, PROTECTED_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD); + public static void reportIllegalModifiers( + @Nullable JetModifierList modifierList, + @NotNull Collection illegalModifiers, + @NotNull BindingTrace trace + ) { + if (modifierList == null) return; + + for (JetModifierKeywordToken modifierToken : illegalModifiers) { + if (modifierList.hasModifier(modifierToken)) { + PsiElement modifierPsi = modifierList.getModifier(modifierToken); + assert modifierPsi != null; + trace.report(ILLEGAL_MODIFIER.on(modifierPsi, modifierToken)); + } + } + } + @NotNull private final BindingTrace trace; @@ -163,13 +180,11 @@ public class ModifiersChecker { } } - public void checkIllegalInThisContextModifiers(@Nullable JetModifierList modifierList, @NotNull Collection illegalModifiers) { - if (modifierList == null) return; - for (JetModifierKeywordToken modifier : illegalModifiers) { - if (modifierList.hasModifier(modifier)) { - trace.report(Errors.ILLEGAL_MODIFIER.on(modifierList.getModifierNode(modifier).getPsi(), modifier)); - } - } + public void checkIllegalInThisContextModifiers( + @Nullable JetModifierList modifierList, + @NotNull Collection illegalModifiers + ) { + reportIllegalModifiers(modifierList, illegalModifiers, trace); } @NotNull