diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java index 9d66fe181b7c..a7de8c0eb13c 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java @@ -30,7 +30,6 @@ import com.intellij.codeInsight.daemon.impl.RefCountHolder; import com.intellij.codeInsight.daemon.impl.quickfix.QuickFixAction; import com.intellij.codeInsight.intention.QuickFixFactory; import com.intellij.ide.highlighter.JavaFileType; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.Project; @@ -233,30 +232,30 @@ public class HighlightClassUtil { if (aClass.getParent() != containingFile || !aClass.hasModifierProperty(PsiModifier.PUBLIC) || !(containingFile instanceof PsiJavaFile)) return null; PsiJavaFile file = (PsiJavaFile)containingFile; VirtualFile virtualFile = file.getVirtualFile(); - HighlightInfo errorResult = null; - if (virtualFile != null && !aClass.getName().equals(virtualFile.getNameWithoutExtension())) { - String message = JavaErrorMessages.message("public.class.should.be.named.after.file", aClass.getName()); - TextRange range = HighlightNamesUtil.getClassDeclarationTextRange(aClass); - errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR). - range(aClass, range.getStartOffset(), range.getEndOffset()). - descriptionAndTooltip(message).create(); - PsiModifierList psiModifierList = aClass.getModifierList(); - QuickFixAction.registerQuickFixAction(errorResult, - QUICK_FIX_FACTORY.createModifierListFix(psiModifierList, PsiModifier.PUBLIC, false, false)); - PsiClass[] classes = file.getClasses(); - if (classes.length > 1) { - QuickFixAction.registerQuickFixAction(errorResult, QUICK_FIX_FACTORY.createMoveClassToSeparateFileFix(aClass)); - } - for (PsiClass otherClass : classes) { - if (!otherClass.getManager().areElementsEquivalent(otherClass, aClass) && - otherClass.hasModifierProperty(PsiModifier.PUBLIC) && - otherClass.getName().equals(virtualFile.getNameWithoutExtension())) { - return errorResult; - } - } - QuickFixAction.registerQuickFixAction(errorResult, QUICK_FIX_FACTORY.createRenameFileFix(aClass.getName() + JavaFileType.DOT_DEFAULT_EXTENSION)); - QuickFixAction.registerQuickFixAction(errorResult, QUICK_FIX_FACTORY.createRenameElementFix(aClass)); + if (virtualFile == null || aClass.getName().equals(virtualFile.getNameWithoutExtension())) { + return null; } + String message = JavaErrorMessages.message("public.class.should.be.named.after.file", aClass.getName()); + TextRange range = HighlightNamesUtil.getClassDeclarationTextRange(aClass); + HighlightInfo errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR). + range(aClass, range.getStartOffset(), range.getEndOffset()). + descriptionAndTooltip(message).create(); + PsiModifierList psiModifierList = aClass.getModifierList(); + QuickFixAction.registerQuickFixAction(errorResult, + QUICK_FIX_FACTORY.createModifierListFix(psiModifierList, PsiModifier.PUBLIC, false, false)); + PsiClass[] classes = file.getClasses(); + if (classes.length > 1) { + QuickFixAction.registerQuickFixAction(errorResult, QUICK_FIX_FACTORY.createMoveClassToSeparateFileFix(aClass)); + } + for (PsiClass otherClass : classes) { + if (!otherClass.getManager().areElementsEquivalent(otherClass, aClass) && + otherClass.hasModifierProperty(PsiModifier.PUBLIC) && + otherClass.getName().equals(virtualFile.getNameWithoutExtension())) { + return errorResult; + } + } + QuickFixAction.registerQuickFixAction(errorResult, QUICK_FIX_FACTORY.createRenameFileFix(aClass.getName() + JavaFileType.DOT_DEFAULT_EXTENSION)); + QuickFixAction.registerQuickFixAction(errorResult, QUICK_FIX_FACTORY.createRenameElementFix(aClass)); return errorResult; } @@ -288,7 +287,7 @@ public class HighlightClassUtil { } @Nullable - private static HighlightInfo checkStaticFieldDeclarationInInnerClass(PsiKeyword keyword) { + private static HighlightInfo checkStaticFieldDeclarationInInnerClass(@NotNull PsiKeyword keyword) { if (getEnclosingStaticClass(keyword, PsiField.class) == null) { return null; } @@ -340,7 +339,7 @@ public class HighlightClassUtil { return result; } - private static PsiElement getEnclosingStaticClass(PsiKeyword keyword, Class parentClass) { + private static PsiElement getEnclosingStaticClass(@NotNull PsiKeyword keyword, @NotNull Class parentClass) { return new PsiMatcherImpl(keyword) .dot(PsiMatchers.hasText(PsiModifier.STATIC)) .parent(PsiMatchers.hasClass(PsiModifierList.class)) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 60c047e6850b..5492bb5b6314 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -2580,9 +2580,9 @@ public class HighlightUtil extends HighlightUtilBase { } @Nullable - static HighlightInfo checkPackageAndClassConflict(@NotNull PsiJavaCodeReferenceElement ref) { + static HighlightInfo checkPackageAndClassConflict(@NotNull PsiJavaCodeReferenceElement ref, @NotNull PsiFile containingFile) { if (ref.isQualified() && isInsidePackageStatement(ref)) { - VirtualFile file = ref.getContainingFile().getVirtualFile(); + VirtualFile file = containingFile.getVirtualFile(); if (file != null) { Module module = ProjectFileIndex.SERVICE.getInstance(ref.getProject()).getModuleForFile(file); if (module != null) { diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index bf9f3e085ef5..4e9d79fecf57 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -1108,7 +1108,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh } } - if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkPackageAndClassConflict(ref)); + if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkPackageAndClassConflict(ref, myFile)); return result; } diff --git a/java/java-psi-api/src/com/intellij/psi/util/EnclosingLoopMatcherExpression.java b/java/java-analysis-impl/src/com/intellij/psi/util/EnclosingLoopMatcherExpression.java similarity index 97% rename from java/java-psi-api/src/com/intellij/psi/util/EnclosingLoopMatcherExpression.java rename to java/java-analysis-impl/src/com/intellij/psi/util/EnclosingLoopMatcherExpression.java index c1c70cefb703..b2f913da1673 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/EnclosingLoopMatcherExpression.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/EnclosingLoopMatcherExpression.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/java/java-psi-api/src/com/intellij/psi/util/EnclosingLoopOrSwitchMatcherExpression.java b/java/java-analysis-impl/src/com/intellij/psi/util/EnclosingLoopOrSwitchMatcherExpression.java similarity index 97% rename from java/java-psi-api/src/com/intellij/psi/util/EnclosingLoopOrSwitchMatcherExpression.java rename to java/java-analysis-impl/src/com/intellij/psi/util/EnclosingLoopOrSwitchMatcherExpression.java index c4d722beb144..52419c93bf28 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/EnclosingLoopOrSwitchMatcherExpression.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/EnclosingLoopOrSwitchMatcherExpression.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/java/java-psi-api/src/com/intellij/psi/util/JavaMatchers.java b/java/java-analysis-impl/src/com/intellij/psi/util/JavaMatchers.java similarity index 97% rename from java/java-psi-api/src/com/intellij/psi/util/JavaMatchers.java rename to java/java-analysis-impl/src/com/intellij/psi/util/JavaMatchers.java index 4378141bfc5d..9b1efff5c6d4 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/JavaMatchers.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/JavaMatchers.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/core-api/src/com/intellij/psi/util/PsiMatcher.java b/java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcher.java similarity index 95% rename from platform/core-api/src/com/intellij/psi/util/PsiMatcher.java rename to java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcher.java index 882643bfde06..d86698ba508a 100644 --- a/platform/core-api/src/com/intellij/psi/util/PsiMatcher.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcher.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/core-api/src/com/intellij/psi/util/PsiMatcherExpression.java b/java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcherExpression.java similarity index 94% rename from platform/core-api/src/com/intellij/psi/util/PsiMatcherExpression.java rename to java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcherExpression.java index 75af6d0543dc..0a49c2486e82 100644 --- a/platform/core-api/src/com/intellij/psi/util/PsiMatcherExpression.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcherExpression.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/core-api/src/com/intellij/psi/util/PsiMatcherImpl.java b/java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcherImpl.java similarity index 98% rename from platform/core-api/src/com/intellij/psi/util/PsiMatcherImpl.java rename to java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcherImpl.java index 2f79c28127c0..6c62daa7ef5f 100644 --- a/platform/core-api/src/com/intellij/psi/util/PsiMatcherImpl.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/PsiMatcherImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/core-api/src/com/intellij/psi/util/PsiMatchers.java b/java/java-analysis-impl/src/com/intellij/psi/util/PsiMatchers.java similarity index 82% rename from platform/core-api/src/com/intellij/psi/util/PsiMatchers.java rename to java/java-analysis-impl/src/com/intellij/psi/util/PsiMatchers.java index 61b45080a4b3..4d97d99800de 100644 --- a/platform/core-api/src/com/intellij/psi/util/PsiMatchers.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/PsiMatchers.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,8 @@ public class PsiMatchers { private PsiMatchers() { } - public static PsiMatcherExpression hasName(final String name) { + @NotNull + public static PsiMatcherExpression hasName(@NotNull final String name) { return new PsiMatcherExpression() { @Override public Boolean match(PsiElement element) { @@ -39,7 +40,8 @@ public class PsiMatchers { }; } - public static PsiMatcherExpression hasText(final String text) { + @NotNull + public static PsiMatcherExpression hasText(@NotNull final String text) { return new PsiMatcherExpression() { @Override public Boolean match(PsiElement element) { @@ -49,6 +51,7 @@ public class PsiMatchers { }; } + @NotNull public static PsiMatcherExpression hasText(@NotNull final String... texts) { return new PsiMatcherExpression() { @Override @@ -59,7 +62,8 @@ public class PsiMatchers { }; } - public static PsiMatcherExpression hasClass(final Class aClass) { + @NotNull + public static PsiMatcherExpression hasClass(@NotNull final Class aClass) { return new PsiMatcherExpression() { @Override public Boolean match(PsiElement element) { @@ -69,11 +73,12 @@ public class PsiMatchers { }; } - public static PsiMatcherExpression hasClass(final Class... classes) { + @NotNull + public static PsiMatcherExpression hasClass(@NotNull final Class... classes) { return new PsiMatcherExpression() { @Override public Boolean match(PsiElement element) { - for (Class aClass : classes) { + for (Class aClass : classes) { if (aClass.isAssignableFrom(element.getClass())) return Boolean.TRUE; } return Boolean.FALSE; diff --git a/java/openapi/src/com/intellij/psi/util/XmlMatchers.java b/java/openapi/src/com/intellij/psi/util/XmlMatchers.java deleted file mode 100644 index d3252963aaf1..000000000000 --- a/java/openapi/src/com/intellij/psi/util/XmlMatchers.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2000-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.psi.util; - -import com.intellij.psi.PsiElement; -import com.intellij.psi.xml.XmlTag; - -public class XmlMatchers { - public static PsiMatcherExpression hasTagValue(final String value) { - return new PsiMatcherExpression() { - @Override - public Boolean match(PsiElement element) { - if (element instanceof XmlTag && value.equals(((XmlTag) element).getValue().getTrimmedText())) return Boolean.TRUE; - return Boolean.FALSE; - } - }; - } -}