2 * Copyright 2000-2013 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.intellij.codeInsight.daemon;
18 import com.intellij.codeInspection.LocalInspectionTool;
19 import com.intellij.codeInspection.deadCode.UnusedDeclarationInspection;
20 import com.intellij.codeInspection.uncheckedWarnings.UncheckedWarningLocalInspection;
21 import com.intellij.codeInspection.unusedImport.UnusedImportLocalInspection;
22 import com.intellij.openapi.projectRoots.JavaSdkVersion;
23 import com.intellij.openapi.projectRoots.Sdk;
24 import com.intellij.openapi.roots.LanguageLevelProjectExtension;
25 import com.intellij.openapi.util.text.StringUtil;
26 import com.intellij.pom.java.LanguageLevel;
27 import com.intellij.psi.GenericsUtil;
28 import com.intellij.psi.PsiClass;
29 import com.intellij.psi.PsiManager;
30 import com.intellij.psi.PsiType;
31 import com.intellij.psi.search.GlobalSearchScope;
32 import com.intellij.testFramework.IdeaTestUtil;
33 import org.jetbrains.annotations.NonNls;
34 import org.jetbrains.annotations.NotNull;
36 public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase {
37 @NonNls private static final String BASE_PATH = "/codeInsight/daemonCodeAnalyzer/genericsHighlighting";
40 protected void setUp() throws Exception {
42 enableInspectionTool(new UnusedDeclarationInspection());
47 protected LocalInspectionTool[] configureLocalInspectionTools() {
48 return new LocalInspectionTool[]{new UncheckedWarningLocalInspection(), new UnusedImportLocalInspection()};
52 protected Sdk getProjectJDK() {
53 return getTestName(false).contains("Jdk14") ? IdeaTestUtil.getMockJdk14() : super.getProjectJDK();
56 private void doTest(@NotNull LanguageLevel languageLevel, @NotNull JavaSdkVersion sdkVersion, boolean checkWarnings) {
57 LanguageLevelProjectExtension.getInstance(getJavaFacade().getProject()).setLanguageLevel(languageLevel);
58 IdeaTestUtil.setTestVersion(sdkVersion, getModule(), myTestRootDisposable);
59 doTest(BASE_PATH + "/" + getTestName(false) + ".java", checkWarnings, false);
61 private void doTest5(boolean checkWarnings) { doTest(LanguageLevel.JDK_1_5, JavaSdkVersion.JDK_1_6, checkWarnings); }
62 private void doTest6(boolean checkWarnings) { doTest(LanguageLevel.JDK_1_6, JavaSdkVersion.JDK_1_6, checkWarnings); }
63 private void doTest7Incompatibility(boolean checkWarnings) { doTest(LanguageLevel.JDK_1_5, JavaSdkVersion.JDK_1_7, checkWarnings); }
65 public void testReferenceTypeParams() { doTest5(false); }
66 public void testOverridingMethods() { doTest5(false); }
67 public void testTypeParameterBoundsList() { doTest5(false); }
68 public void testClassInheritance() { doTest5(false); }
69 public void testTypeInference() { doTest5(false); }
70 public void testRaw() { doTest5(true); }
71 public void testExceptions() { doTest5(false); }
72 public void testExplicitMethodParameters() { doTest5(false); }
73 public void testExplicitMethodParameters1() { doTest5(false); }
74 public void testInferenceWithBounds() { doTest5(false); }
75 public void testInferenceWithSuperBounds() { doTest5(false); }
76 public void testInferenceWithUpperBoundPromotion() { doTest7Incompatibility(false); }
77 public void testVariance() { doTest5(false); }
78 public void testForeachTypes() { doTest5(false); }
79 public void testRawOverridingMethods() { doTest5(false); }
80 public void testAutoboxing() { doTest5(false); }
81 public void testAutoboxingMethods() { doTest5(false); }
82 public void testAutoboxingConstructors() { doTest5(false); }
83 public void testEnumWithAbstractMethods() { doTest5(false); }
84 public void testEnum() { doTest(LanguageLevel.JDK_1_5, JavaSdkVersion.JDK_1_5, false); }
85 public void testEnum56239() { doTest(LanguageLevel.JDK_1_6, JavaSdkVersion.JDK_1_6, false); }
86 public void testSameErasure() { doTest5(false); }
87 public void testPairsWithSameErasure() { doTest5(false); }
88 public void testMethods() { doTest5(false); }
89 public void testFields() { doTest5(false); }
90 public void testStaticImports() { doTest5(true); }
91 public void testUncheckedCasts() { doTest5(true); }
92 public void testUncheckedOverriding() { doTest5(true); }
93 public void testWildcardTypes() { doTest5(true); }
94 public void testConvertibleTypes() { doTest5(true); }
95 public void testIntersectionTypes() { doTest6(true); }
96 public void testVarargs() { doTest5(true); }
97 public void testTypeArgsOnRaw() { doTest5(false); }
98 public void testConditionalExpression() { doTest5(false); }
99 public void testUnused() { doTest5(true); }
100 public void testIDEADEV7337() { doTest5(true); }
101 public void testIDEADEV10459() { doTest5(true); }
102 public void testIDEADEV12951() { doTest5(true); }
103 public void testIDEADEV13011() { doTest5(true); }
104 public void testIDEADEV14006() { doTest5(true); }
105 public void testIDEADEV14103() { doTest5(true); }
106 public void testIDEADEV15534() { doTest5(true); }
107 public void testIDEADEV23157() { doTest5(true); }
108 public void testIDEADEV24166() { doTest5(true); }
109 public void testIDEADEV25778() { doTest5(true); }
110 public void testIDEADEV57343() { doTest5(false); }
111 public void testSOE() { doTest5(true); }
112 public void testGenericExtendException() { doTest5(false); }
113 public void testSameErasureDifferentReturnTypes() { doTest7Incompatibility(false); }
114 public void testSameErasureDifferentReturnTypesJdk14() { doTest5(false); }
115 public void testDeepConflictingReturnTypes() { doTest5(false); }
116 public void testInheritFromTypeParameter() { doTest5(false); }
117 public void testAnnotationsAsPartOfModifierList() { doTest5(false); }
118 public void testImplementAnnotation() { doTest5(false); }
119 public void testOverrideAtLanguageLevel5() { doTest5(false); }
120 public void testOverrideAtLanguageLevel6() { doTest6(false); }
121 public void testSuperMethodCallWithErasure() { doTest5(false); }
122 public void testWildcardCastConversion() { doTest5(false); }
123 public void testTypeWithinItsWildcardBound() { doTest5(false); }
124 public void testMethodSignatureEquality() { doTest5(false); }
125 public void testInnerClassRef() { doTest5(false); }
126 public void testPrivateInnerClassRef() { doTest5(false); }
127 public void testWideningCastToTypeParam() { doTest5(false); }
128 public void testCapturedWildcardAssignments() { doTest5(false); }
129 public void testTypeParameterBoundVisibility() { doTest7Incompatibility(false); }
130 public void testTypeParameterBoundVisibilityJdk14() { doTest5(false); }
131 public void testUncheckedWarningsLevel6() { doTest6(true); }
132 public void testIDEA77991() { doTest5(false); }
133 public void testIDEA80386() { doTest5(false); }
134 public void testIDEA66311() { doTest7Incompatibility(false); }
135 public void testIDEA67672() { doTest7Incompatibility(false); }
136 public void testIDEA88895() { doTest7Incompatibility(false); }
137 public void testIDEA67667() { doTest7Incompatibility(false); }
138 public void testIDEA66311_16() { doTest5(false); }
139 public void testIDEA76283() { doTest5(false); }
140 public void testIDEA74899() { doTest5(false); }
141 public void testIDEA63291() { doTest5(false); }
142 public void testIDEA72912() { doTest5(false); }
143 public void testIllegalGenericTypeInInstanceof() { doTest5(false); }
144 public void testIDEA57339() { doTest5(false); }
145 public void testIDEA57340() { doTest5(false); }
146 public void testIDEA89771() { doTest5(false); }
147 public void testIDEA89801() { doTest5(false); }
148 public void testIDEA67681() { doTest5(false); }
149 public void testIDEA67599() { doTest5(false); }
150 public void testIDEA57668() { doTest5(false); }
151 public void testIDEA57667() { doTest7Incompatibility(false); }
152 public void testIDEA57650() { doTest7Incompatibility(false); }
153 public void testIDEA57378() { doTest5(false); }
154 public void testIDEA57557() { doTest5(false); }
155 public void testIDEA57563() { doTest5(false); }
156 public void testIDEA57275() { doTest5(false); }
157 public void testIDEA57533() { doTest5(false); }
158 public void testIDEA57509() { doTest5(false); }
159 public void testIDEA57410() { doTest5(false); }
160 public void testIDEA57411() { doTest5(false); }
161 public void testIDEA57484() { doTest5(false); }
162 public void testIDEA57485() { doTest5(false); }
163 public void testIDEA57486() { doTest5(false); }
164 public void testIDEA57492() { doTest5(false); }
165 public void testIDEA57493() { doTest5(false); }
166 public void testIDEA57495() { doTest5(false); }
167 public void testIDEA57494() { doTest5(false); }
168 public void testIDEA57496() { doTest5(false); }
169 public void testIDEA57264() { doTest5(false); }
170 public void testIDEA57315() { doTest5(false); }
171 public void testIDEA57346() { doTest5(false); }
172 public void testIDEA57284() { doTest5(false); }
173 public void testIDEA57286() { doTest5(false); }
174 public void testIDEA57307() { doTest5(true); }
175 public void testIDEA57308() { doTest5(false); }
176 public void testIDEA57310() { doTest5(false); }
177 public void testIDEA57311() { doTest5(false); }
178 public void testIDEA57309() { doTest5(false); }
179 public void testIDEA90802() { doTest5(false); }
180 public void testIDEA70370() { doTest5(true); }
181 public void testInaccessibleThroughWildcard() { doTest7Incompatibility(false);}
182 public void testInconvertibleTypes() { doTest5(false); }
183 public void testIncompatibleReturnType() { doTest5(false); }
184 public void testContinueInferenceAfterFirstRawResult() { doTest5(false); }
185 public void testDoNotAcceptLowerBoundIfRaw() { doTest5(false); }
186 public void testStaticOverride() { doTest5(false); }
187 public void testTypeArgumentsGivenOnRawType() { doTest7Incompatibility(false); }
188 public void testSelectFromTypeParameter() { doTest5(false); }
189 public void testTypeArgumentsGivenOnAnonymousClassCreation() { doTest5(false); }
191 public void testIDEA94011() { doTest5(false); }
192 public void testDifferentTypeParamsInOverloadedMethods() { doTest5(true); }
193 public void testIDEA91626() { doTest5(true); }
194 public void testIDEA92022() { doTest5(false); }
195 public void testRawOnParameterized() { doTest5(false); }
196 public void testFailedInferenceWithBoxing() { doTest5(false); }
197 public void testFixedFailedInferenceWithBoxing() { doTest7Incompatibility(false); }
198 public void testInferenceWithBoxingCovariant() { doTest7Incompatibility(false); }
199 public void testSuperWildcardIsNotWithinItsBound() { doTest7Incompatibility(false); }
200 public void testSpecificReturnType() { doTest7Incompatibility(false); }
201 public void testParameterizedParameterBound() { doTest7Incompatibility(false); }
202 public void testInstanceClassInStaticContextAccess() { doTest7Incompatibility(false); }
203 public void testFlattenIntersectionType() { doTest7Incompatibility(false); }
204 public void testIDEA97276() { doTest7Incompatibility(false); }
205 public void testWildcardsBoundsIntersection() { doTest7Incompatibility(false); }
206 public void testOverrideWithMoreSpecificReturn() { doTest7Incompatibility(false); }
207 public void testIDEA97888() { doTest7Incompatibility(false); }
208 public void testMethodCallParamsOnRawType() { doTest5(false); }
209 public void testIDEA98421() { doTest5(false); }
210 public void testErasureTypeParameterBound() { doTest5(false); }
211 public void testThisAsAccessObject() { doTest5(false); }
212 public void testIDEA67861() { doTest7Incompatibility(false); }
213 public void testIDEA67597() { doTest5(false); }
214 public void testIDEA57539() { doTest5(false); }
215 public void testIDEA67570() { doTest5(false); }
216 public void testIDEA99061() { doTest5(false); }
217 public void testIDEA99347() { doTest5(false); }
218 public void testIDEA86875() { doTest5(false); }
219 public void testIDEA103760(){ doTest5(false); }
220 public void testIDEA105846(){ doTest5(false); }
221 public void testIDEA105695(){ doTest5(false); }
222 public void testIDEA104992(){ doTest5(false); }
223 public void testIDEA57446(){ doTest5(false); }
224 public void testIDEA67677(){ doTest5(false); }
225 public void testIDEA67798(){ doTest5(false); }
226 public void testIDEA57534(){ doTest5(false); }
227 public void testIDEA57482(){ doTest5(false); }
228 public void testIDEA67577(){ doTest5(false); }
229 public void testIDEA57413(){ doTest5(false); }
230 public void testIDEA57265(){ doTest5(false); }
231 public void testIDEA57271(){ doTest5(false); }
232 public void testIDEA57272(){ doTest5(false); }
233 public void testIDEA57285(){ doTest5(false); }
234 public void testIDEA65066(){ doTest5(false); }
235 public void testIDEA67998(){ doTest5(false); }
236 public void testIDEA18425(){ doTest5(false); }
237 public void testIDEA27080(){ doTest5(false); }
238 public void testIDEA22079(){ doTest5(false); }
239 public void testIDEA21602(){ doTest5(false); }
240 public void testIDEA21602_7(){ doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
242 public void testIDEA21597() throws Exception { doTest5(false);}
243 public void testIDEA20573() throws Exception { doTest5(false);}
244 public void testIDEA20244() throws Exception { doTest5(false);}
245 public void testIDEA22005() throws Exception { doTest5(false);}
246 public void testIDEA57259() throws Exception { doTest5(false);}
247 public void testIDEA107957() throws Exception { doTest6(false);}
248 public void testIDEA109875() throws Exception { doTest6(false);}
249 public void testIDEA106964() throws Exception { doTest5(false);}
250 public void testIDEA107782() throws Exception { doTest5(false);}
251 public void testInheritedWithDifferentArgsInTypeParams() throws Exception { doTest5(false);}
252 public void testInheritedWithDifferentArgsInTypeParams1() throws Exception { doTest5(false);}
253 public void testIllegalForwardReferenceInTypeParameterDefinition() throws Exception { doTest5(false);}
255 public void testIDEA57877() throws Exception { doTest5(false);}
256 public void testIDEA110568() throws Exception { doTest5(false);}
257 public void testTypeParamsCyclicInference() throws Exception { doTest5(false);}
258 public void testCaptureTopLevelWildcardsForConditionalExpression() throws Exception { doTest5(false);}
259 public void testGenericsOverrideMethodInRawInheritor() throws Exception { doTest5(false);}
261 public void testIDEA107654() throws Exception {
265 public void testIDEA55510() throws Exception {
269 public void testIDEA27185(){ doTest(LanguageLevel.JDK_1_6, JavaSdkVersion.JDK_1_6, false); }
270 public void testIDEA67571(){ doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
271 public void testTypeArgumentsOnRawType(){ doTest(LanguageLevel.JDK_1_6, JavaSdkVersion.JDK_1_6, false); }
272 public void testTypeArgumentsOnRawType17(){ doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
274 public void testWildcardsOnRawTypes() { doTest5(false); }
275 public void testDisableWithinBoundsCheckForSuperWildcards() {
276 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
279 public void testIDEA108287() throws Exception {
283 public void testIDEA77128() throws Exception {
284 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
287 public void testDisableCastingToNestedWildcards() throws Exception {
291 public void testBooleanInferenceFromIfCondition() throws Exception {
295 public void testMethodCallOnRawTypesExtended() throws Exception {
299 public void testIDEA104100() {doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);}
300 public void testIDEA104160() {doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);}
301 public void testSOEInLeastUpperClass() {doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);}
303 public void testIDEA57334() {
307 public void testIDEA57325() { doTest5(false); }
308 public void testIDEA67835() { doTest5(false); }
309 public void testIDEA67744() { doTest5(false); }
310 public void testIDEA67682() { doTest5(false); }
311 public void testIDEA57391() { doTest5(false); }
312 public void testIDEA110869() { doTest5(false); }
313 /*public void testIDEA110947() { doTest5(false); }*/
314 public void testIDEA112122() { doTest5(false); }
315 public void testNoInferenceFromTypeCast() { doTest5(false); }
316 public void testCaptureWildcardsInTypeCasts() { doTest5(false); }
317 public void testIDEA111085() { doTest5(false); }
318 public void testIDEA109556() { doTest5(false); }
319 public void testIDEA107440() { doTest5(false); }
320 public void testIDEA57289() { doTest5(false); }
321 public void testIDEA57439() { doTest5(false); }
322 public void testIDEA57312() { doTest5(false); }
323 public void testIDEA67865() { doTest5(false); }
324 public void testBoxingSpecific() { doTest5(false); }
325 public void testIDEA67843() { doTest5(false); }
326 public void testAmbiguousTypeParamVsConcrete() { doTest5(false); }
327 public void testRawAssignments() throws Exception { doTest5(false); }
328 public void testIDEA87860() throws Exception { doTest5(false); }
329 public void testIDEA67584() throws Exception { doTest5(false); }
330 public void testIDEA113225() throws Exception { doTest5(false); }
331 public void testIDEA67518() throws Exception { doTest5(false); }
332 public void testIDEA57252() throws Exception { doTest5(false); }
333 public void testIDEA57274() throws Exception { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
334 public void testIDEA67591() throws Exception {
338 public void testIDEA114894() { doTest5(false); }
339 public void testIDEA60818() { doTest5(false); }
340 public void testIDEA63331() { doTest5(false); }
341 public void testIDEA60836() { doTest5(false); }
342 public void testIDEA54197() { doTest5(false); }
343 public void testIDEA71582() { doTest5(false); }
344 public void testIDEA65377() { doTest5(false); }
345 public void testIDEA113526() { doTest5(true); }
346 public void testIDEA116493() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
347 public void testIDEA117827() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
348 public void testIDEA118037() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
349 public void testIDEA119546() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
350 public void testIDEA118527() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
351 public void testIDEA120153() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
352 public void testIDEA120563() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
353 public void testIDEA121400() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
354 public void testIDEA123316() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
355 public void testUnrelatedReturnInTypeArgs() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
356 public void testIDEA123352() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
357 public void testIDEA123518() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
358 public void testIDEA64103() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
359 public void testIDEA123338() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
360 public void testIDEA124271() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
361 public void testIDEA124352() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
362 public void testIDEA124019() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
363 public void testIDEA123509() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
364 public void testIDEA125031() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
365 public void testIDEA24479() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
366 public void testIDEA118536() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
367 public void testIDEA125744() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
368 public void testIDEA125423() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
369 public void testIDEA118533() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
370 public void testIDEA112117() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
371 public void testIDEA24496() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
372 public void testIDEA58692() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
373 public void testIDEA57290() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
374 public void testIDEA119757() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
375 public void testIDEA67578() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
376 public void testIDEA57388() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
377 public void testIDEA125800() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
378 public void testIDEA125816() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
379 public void testIDEA57338() { doTest(LanguageLevel.JDK_1_6, JavaSdkVersion.JDK_1_6, false); }
380 public void testIDEA67600() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
381 public void testIDEA126697() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true); }
382 public void testIDEA126633() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
383 public void testIDEA124363() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
384 public void testIDEA78402() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
385 public void testIDEA106985() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
386 public void testIDEA114797() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
387 public void testCaptureWildcardFromUnboundCaptureWildcard() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
388 public void testSuperCaptureSubstitutionWhenTypeParameterHasUpperBounds() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
389 public void testParameterBoundsWithCapturedWildcard() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); }
390 //jdk should propagate LL 1.4 but actually it provides LL 1.7?!
391 public void testCastObjectToIntJdk14() { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_4, false); }
393 public void testSubstitutorCaptureBoundComposition() {
394 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
397 public void testIDEA57508() {
398 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
401 public void testIDEA57293() {
402 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
405 public void testIDEA59283() {
406 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
409 public void testIDEA127767() {
410 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
413 public void testIDEA113631() {
414 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
417 public void testIDEA57537() {
418 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
421 public void testMethodCallTypeErasedWhenUncheckedConversionWasAppliedDuringApplicabilityCheck() {
422 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
425 public void testMethodCallTypeNotErasedWhenUncheckedConversionWasAppliedButNoTypeParamsProvided() {
426 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
429 public void testInferredParameterInBoundsInRecursiveGenerics() {
430 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
433 public void testIDEA65386() {
434 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true);
437 public void testHiddenMethodsOfAnonymousClass() throws Exception {
438 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
441 public void testNestedLevelsToCheckTypeArguments() throws Exception {
442 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
445 public void testExpectedTypeFromOuterArrayCreation() throws Exception {
446 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
449 public void testDistinguishWildcardCapturesAlsoByMethodCalls() throws Exception {
450 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
453 public void testSubstituteTypeParameterOfCapturedWildcardOnSubstitution() throws Exception {
454 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
457 public void testAssignabilityBetweenWildcardsAndArrays() throws Exception {
458 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
461 public void testCastConversionToTypeParameter() throws Exception {
462 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
465 public void testTypeDistinctProverForWildcardAndTypeParameter() throws Exception {
466 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
469 public void testIDEA58687() throws Exception {
470 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
473 public void testDontReportWeakerVisibilityProblemUpInHierarchy() throws Exception {
474 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
477 public void testSuperObjectCapturedWildcardEquality() throws Exception {
478 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
481 public void testSOEInInfiniteTypesWithSuperWildcards() throws Exception {
482 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
486 public void testMakeUseOfUpperBoundOfCaptureWildcardDuringNormalization() throws Exception {
487 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
490 public void testCastFromGenericTypeWithTypeParameterWithExtendsAsArgument() throws Exception {
491 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true);
494 public void testIDEA139067() throws Exception {
495 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true);
498 public void testIDEA57336() throws Exception {
499 doTest(LanguageLevel.JDK_1_8, JavaSdkVersion.JDK_1_8, true);
502 public void testPreserveCaptureWildcardsInUpperBounds() throws Exception {
503 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
506 public void testIDEA57361() throws Exception {
507 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
510 public void testRetrieveBoundFromCapturedWildcardUpperBoundOnNormalize() throws Exception {
511 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
514 public void testCapturedBoundOfCapture() throws Exception {
515 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
518 public void testWildcardsWithRawBound() throws Exception {
519 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
522 public void testIDEA98866() throws Exception {
523 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
526 public void testIDEA81318() throws Exception {
527 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
530 public void testIDEA138957() throws Exception {
531 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
534 public void testIDEA130453() throws Exception {
535 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
538 public void testReifiableTypeWithLocalClasses() throws Exception {
539 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
542 public void testStopBoundsPromotionInsideNestedWildcards() throws Exception {
543 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
546 public void testIDEA130243() throws Exception {
547 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
550 public void testCastingToPrimitive() throws Exception {
551 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
554 public void testProvablyDistinctForWildcardsWithArrayBounds() throws Exception {
555 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
558 public void testReturnTypeOverrideEquivalenceWithTypeHierarchy() throws Exception {
559 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
562 public void testIgnoreReturnTypeClashForObjectProtectedMethodsAndInterfaceMethodsWithSameSignature() throws Exception {
563 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
566 public void testIDEA150499() throws Exception {
567 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
570 public void testRecursiveTypesTypeArgumentDistinction() throws Exception {
571 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true);
574 public void testRecursiveBoundsDependencies() throws Exception {
575 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
578 public void testUnboxingFromTypeParameter() throws Exception {
579 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
582 public void testLeastUpperBoundWithRecursiveTypes() throws Exception {
583 final PsiManager manager = getPsiManager();
584 final GlobalSearchScope scope = GlobalSearchScope.allScope(getProject());
585 final PsiType leastUpperBound = GenericsUtil.getLeastUpperBound(PsiType.INT.getBoxedType(manager, scope),
586 PsiType.LONG.getBoxedType(manager, scope),
588 assertNotNull(leastUpperBound);
589 assertEquals("Number & Comparable<? extends Number & Comparable<?>>", leastUpperBound.getPresentableText());
592 public void testJavaUtilCollections_NoVerify() throws Exception {
593 PsiClass collectionsClass = getJavaFacade().findClass("java.util.Collections", GlobalSearchScope.moduleWithLibrariesScope(getModule()));
594 assertNotNull(collectionsClass);
595 collectionsClass = (PsiClass)collectionsClass.getNavigationElement();
596 final String text = collectionsClass.getContainingFile().getText();
597 configureFromFileText("Collections.java", StringUtil.convertLineSeparators(StringUtil.replace(text, "package java.util;", "package java.utilx; import java.util.*;")));
598 doTestConfiguredFile(false, false, null);
601 public void testReturnTypeSubstitutableForSameOverrideEquivalentMethods() throws Exception {
602 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
605 public void testCaptureConversionWithWildcardBounds() throws Exception {
606 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
609 public void testIntersectTypeParameterBounds() throws Exception {
610 doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);