mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-18 16:17:00 +07:00
200 lines
11 KiB
Java
200 lines
11 KiB
Java
/*
|
|
* Copyright 2000-2017 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.codeInsight.daemon;
|
|
|
|
import com.intellij.ToolExtensionPoints;
|
|
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
|
|
import com.intellij.codeInspection.InspectionProfileEntry;
|
|
import com.intellij.codeInspection.compiler.JavacQuirksInspection;
|
|
import com.intellij.codeInspection.deadCode.UnusedDeclarationInspection;
|
|
import com.intellij.codeInspection.deadCode.UnusedDeclarationInspectionBase;
|
|
import com.intellij.codeInspection.defUse.DefUseInspection;
|
|
import com.intellij.codeInspection.redundantCast.RedundantCastInspection;
|
|
import com.intellij.codeInspection.reference.EntryPoint;
|
|
import com.intellij.codeInspection.reference.RefElement;
|
|
import com.intellij.codeInspection.uncheckedWarnings.UncheckedWarningLocalInspection;
|
|
import com.intellij.lang.annotation.HighlightSeverity;
|
|
import com.intellij.openapi.extensions.ExtensionPoint;
|
|
import com.intellij.openapi.extensions.Extensions;
|
|
import com.intellij.openapi.projectRoots.JavaSdkVersion;
|
|
import com.intellij.openapi.projectRoots.Sdk;
|
|
import com.intellij.openapi.util.text.StringUtil;
|
|
import com.intellij.pom.java.LanguageLevel;
|
|
import com.intellij.psi.PsiClass;
|
|
import com.intellij.psi.PsiCompiledElement;
|
|
import com.intellij.psi.PsiElement;
|
|
import com.intellij.psi.search.GlobalSearchScope;
|
|
import com.intellij.testFramework.IdeaTestUtil;
|
|
import org.jdom.Element;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import java.util.List;
|
|
|
|
public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase {
|
|
private static final String BASE_PATH = "/codeInsight/daemonCodeAnalyzer/advHighlighting7";
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
enableInspectionTools(new UnusedDeclarationInspection(), new UncheckedWarningLocalInspection(), new JavacQuirksInspection(), new RedundantCastInspection());
|
|
setLanguageLevel(LanguageLevel.JDK_1_7);
|
|
IdeaTestUtil.setTestVersion(JavaSdkVersion.JDK_1_7, getModule(), getTestRootDisposable());
|
|
}
|
|
|
|
@Override
|
|
protected Sdk getProjectJDK() {
|
|
return IdeaTestUtil.getMockJdk17(); // has to have src.zip and weird method handle signatures
|
|
}
|
|
|
|
private void doTest(boolean checkWarnings, boolean checkInfos, InspectionProfileEntry... inspections) {
|
|
enableInspectionTools(inspections);
|
|
doTest(BASE_PATH + "/" + getTestName(false) + ".java", checkWarnings, checkInfos);
|
|
}
|
|
|
|
public void testAllJava15Features() { doTest(false, false); }
|
|
public void testEnumSyntheticMethods() { doTest(false, false); }
|
|
public void testDuplicateAnnotations() { doTest(false, false); }
|
|
public void testSwitchByString() { doTest(false, false); }
|
|
public void testSwitchByInaccessibleEnum() { doTest(false, false); }
|
|
public void testDiamondPos1() { doTest(false, false); }
|
|
public void testDiamondPos2() { doTest(false, false); }
|
|
public void testDiamondPos3() { doTest(false, false); }
|
|
public void testDiamondPos4() { doTest(false, false); }
|
|
public void testDiamondPos5() { doTest(false, false); }
|
|
public void testDiamondPos6() { doTest(false, false); }
|
|
public void testDiamondPos7() { doTest(false, false); }
|
|
public void testDiamondNeg15() { doTest(false, false); }
|
|
public void testDiamondPos9() { doTest(false, false); }
|
|
public void testDiamondNeg1() { doTest(false, false); }
|
|
public void testDiamondNeg2() { doTest(false, false); }
|
|
public void testDiamondNeg3() { doTest(false, false); }
|
|
public void testDiamondNeg4() { doTest(false, false); }
|
|
public void testDiamondNeg5() { doTest(false, false); }
|
|
public void testDiamondNeg6() { doTest(false, false); }
|
|
public void testDiamondNeg7() { doTest(false, false); }
|
|
public void testDiamondNeg8() { doTest(false, false); }
|
|
public void testDiamondNeg9() { doTest(false, false); }
|
|
public void testDiamondNeg10() { doTest(false, false); }
|
|
public void testDiamondNeg11() { doTest(false, false); }
|
|
public void testDiamondNeg12() { doTest(false, false); }
|
|
public void testDiamondNeg13() { doTest(false, false); }
|
|
public void testDiamondNeg14() { doTest(false, false); }
|
|
public void testDiamondMisc() { doTest(false, false); }
|
|
public void testNestedDiamond() { doTest(false, false); }
|
|
public void testMultipleConstructors() { doTest(false, false); }
|
|
public void testHighlightInaccessibleFromClassModifierList() { doTest(false, false); }
|
|
public void testInnerInTypeArguments() { doTest(false, false); }
|
|
public void testRawSubstitutor() { doTest(false, false); }
|
|
public void testIncompleteDiamonds() { doTest(false, false); }
|
|
public void testResolveConflictDiamonds() { doTest(false, false); }
|
|
|
|
public void testDynamicallyAddIgnoredAnnotations() {
|
|
ExtensionPoint<EntryPoint> point = Extensions.getRootArea().getExtensionPoint(ToolExtensionPoints.DEAD_CODE_TOOL);
|
|
EntryPoint extension = new EntryPoint() {
|
|
@NotNull @Override public String getDisplayName() { return "duh"; }
|
|
@Override public boolean isEntryPoint(@NotNull RefElement refElement, @NotNull PsiElement psiElement) { return false; }
|
|
@Override public boolean isEntryPoint(@NotNull PsiElement psiElement) { return false; }
|
|
@Override public boolean isSelected() { return false; }
|
|
@Override public void setSelected(boolean selected) { }
|
|
@Override public void readExternal(Element element) { }
|
|
@Override public void writeExternal(Element element) { }
|
|
@Override public String[] getIgnoreAnnotations() { return new String[]{"MyAnno"}; }
|
|
};
|
|
|
|
enableInspectionTool(new UnusedDeclarationInspectionBase(true));
|
|
|
|
doTest(true, false);
|
|
List<HighlightInfo> infos = doHighlighting(HighlightSeverity.WARNING);
|
|
assertEquals(2, infos.size()); // unused class and unused method
|
|
|
|
try {
|
|
point.registerExtension(extension);
|
|
|
|
infos = doHighlighting(HighlightSeverity.WARNING);
|
|
HighlightInfo info = assertOneElement(infos);
|
|
assertEquals("Class 'WithMain' is never used", info.getDescription());
|
|
}
|
|
finally {
|
|
point.unregisterExtension(extension);
|
|
}
|
|
}
|
|
|
|
public void testNumericLiterals() { doTest(false, false); }
|
|
public void testMultiCatch() { doTest(false, false); }
|
|
public void testTryWithResources() { doTest(false, false); }
|
|
public void testTryWithResourcesWarn() { doTest(true, false, new DefUseInspection()); }
|
|
public void testSafeVarargsApplicability() { doTest(true, false); }
|
|
public void testUncheckedGenericsArrayCreation() { doTest(true, false); }
|
|
public void testGenericsArrayCreation() { doTest(false, false); }
|
|
public void testPreciseRethrow() { doTest(false, false); }
|
|
public void testPreciseRethrowNonAssignableToException() { doTest(false, false); }
|
|
public void testPreciseRethrowOfOneExceptionInTheBlock() { doTest(false, false); }
|
|
public void testImprovedCatchAnalysis() { doTest(true, false); }
|
|
public void testPolymorphicTypeCast() { doTest(true, false); }
|
|
public void testTypeCastInInstanceof() { doTest(true, false); }
|
|
public void testErasureClashConfusion() { doTest(true, false, new UnusedDeclarationInspectionBase(true)); }
|
|
public void testUnused() { doTest(true, false, new UnusedDeclarationInspectionBase(true)); }
|
|
public void testSuperBound() { doTest(false, false); }
|
|
public void testExtendsBound() { doTest(false, false); }
|
|
public void testIDEA84533() { doTest(false, false); }
|
|
public void testClassLiteral() { doTest(false, false); }
|
|
public void testUncheckedWarning() { doTest(true, false); }
|
|
public void testUncheckedWarningIDEA59290() { doTest(true, false); }
|
|
public void testUncheckedWarningIDEA70620() { doTest(true, false); }
|
|
public void testUncheckedWarningIDEA60166() { doTest(true, false); }
|
|
public void testUncheckedWarningIDEA21432() { doTest(true, false); }
|
|
public void testUncheckedWarningIDEA99357() { doTest(true, false); }
|
|
public void testUncheckedWarningIDEA26738() { doTest(true, false); }
|
|
public void testUncheckedWarningIDEA99536() { doTest(true, false); }
|
|
public void testEnclosingInstance() { doTest(false, false); }
|
|
public void testIDEA122519EnclosingInstance() { doTest(false, false); }
|
|
public void testWrongArgsAndUnknownTypeParams() { doTest(false, false); }
|
|
public void testAmbiguousMethodCallIDEA97983() { doTest(false, false); }
|
|
public void testAmbiguousMethodCallIDEA100314() { doTest(false, false); }
|
|
public void testAmbiguousMethodCallIDEA67668() { doTest(false, false); }
|
|
public void testAmbiguousMethodCallIDEA67671() { doTest(false, false); }
|
|
public void testAmbiguousMethodCallIDEA67669() { doTest(false, false); }
|
|
public void testInstanceMemberNotAccessibleInStaticContext() { doTest(false, false); }
|
|
public void testRejectedTypeParamsForConstructor() { doTest(false, false); }
|
|
public void testAnnotationArgs() { doTest(false, false);}
|
|
public void testIDEA70890() { doTest(false, false); }
|
|
public void testIDEA63731() { doTest(false, false); }
|
|
public void testIDEA62056() { doTest(false, false); }
|
|
public void testIDEA78916() { doTest(false, false); }
|
|
public void testIDEA111420() { doTest(false, false); }
|
|
public void testIDEA111450() { doTest(true, false); }
|
|
public void testExternalizable() { doTest(true, false); }
|
|
public void testAccessToStaticMethodsFromInterfaces() { doTest(true, false); }
|
|
public void testUncheckedExtendedWarnings() { doTest(true, false); }
|
|
public void testInaccessibleInferredTypeForVarargsArgument() { doTest(false, false);}
|
|
public void testRuntimeClassCast() { doTest(true, false);}
|
|
public void testTryWithResourcesWithMultipleCloseInterfaces() { doTest(false, false);}
|
|
public void testIDEA138978() { doTest(false, false); }
|
|
public void testIntersectionTypeCast() { doTest(false, false); }
|
|
public void testUsedMethodCalledViaReflectionInTheSameFile() { doTest(true, false); }
|
|
|
|
public void testArrayInitializerTypeCheckVariableType() { doTest(false, false);}
|
|
|
|
public void testJavaUtilCollections_NoVerify() throws Exception {
|
|
PsiClass collectionsClass = getJavaFacade().findClass("java.util.Collections", GlobalSearchScope.moduleWithLibrariesScope(getModule()));
|
|
assertNotNull(collectionsClass);
|
|
collectionsClass = (PsiClass)collectionsClass.getNavigationElement();
|
|
assertTrue(!(collectionsClass instanceof PsiCompiledElement));
|
|
final String text = collectionsClass.getContainingFile().getText();
|
|
configureFromFileText("Collections.java", StringUtil.convertLineSeparators(StringUtil.replace(text, "package java.util;", "package java.utilx; import java.util.*;")));
|
|
doTestConfiguredFile(false, false, null);
|
|
}
|
|
} |