Extract and use ModifiersChecker#reportIllegalModifiers()

This commit is contained in:
Pavel V. Talanov
2014-04-21 18:57:46 +04:00
parent 4e9103f7ab
commit 071553c66b
4 changed files with 25 additions and 26 deletions
@@ -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) {
@@ -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) {
@@ -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(
@@ -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<JetModifierKeywordToken> VISIBILITY_MODIFIERS =
Lists.newArrayList(PRIVATE_KEYWORD, PROTECTED_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD);
public static void reportIllegalModifiers(
@Nullable JetModifierList modifierList,
@NotNull Collection<JetModifierKeywordToken> 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<JetModifierKeywordToken> 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<JetModifierKeywordToken> illegalModifiers
) {
reportIllegalModifiers(modifierList, illegalModifiers, trace);
}
@NotNull