assignability to primitive: check type parameter bounds if applicable (IDEA-155551)
[idea/community.git] / java / java-tests / testSrc / com / intellij / codeInsight / daemon / GenericsHighlightingTest.java
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package com.intellij.codeInsight.daemon;
17
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;
35
36 public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase {
37   @NonNls private static final String BASE_PATH = "/codeInsight/daemonCodeAnalyzer/genericsHighlighting";
38
39   @Override
40   protected void setUp() throws Exception {
41     super.setUp();
42     enableInspectionTool(new UnusedDeclarationInspection());
43   }
44
45   @NotNull
46   @Override
47   protected LocalInspectionTool[] configureLocalInspectionTools() {
48     return new LocalInspectionTool[]{new UncheckedWarningLocalInspection(), new UnusedImportLocalInspection()};
49   }
50
51   @Override
52   protected Sdk getProjectJDK() {
53     return getTestName(false).contains("Jdk14") ? IdeaTestUtil.getMockJdk14() : super.getProjectJDK();
54   }
55
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);
60   }
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); }
64
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); }
190
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); }
241
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);}
254
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);}
260
261   public void testIDEA107654() throws Exception {
262     doTest5(false);
263   }
264
265   public void testIDEA55510() throws Exception {
266     doTest5(false);
267   }
268
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); }
273
274   public void testWildcardsOnRawTypes() { doTest5(false); }
275   public void testDisableWithinBoundsCheckForSuperWildcards() {
276     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
277   }
278
279   public void testIDEA108287() throws Exception {
280     doTest5(false);
281   }
282
283   public void testIDEA77128() throws Exception {
284     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
285   }
286
287   public void testDisableCastingToNestedWildcards() throws Exception {
288     doTest5(false);
289   }
290
291   public void testBooleanInferenceFromIfCondition() throws Exception {
292     doTest5(false);
293   }
294
295   public void testMethodCallOnRawTypesExtended() throws Exception {
296     doTest5(false);
297   }
298
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);}
302
303   public void testIDEA57334() {
304     doTest5(false);
305   }
306
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 {
335     doTest5(false);
336   }
337
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); }
392
393   public void testSubstitutorCaptureBoundComposition() {
394     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
395   }
396
397   public void testIDEA57508() {
398     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
399   }
400
401   public void testIDEA57293() {
402     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
403   }
404   
405   public void testIDEA59283() {
406     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
407   }
408
409   public void testIDEA127767() {
410     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
411   }
412
413   public void testIDEA113631() {
414     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
415   }
416
417   public void testIDEA57537() {
418     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
419   }
420
421   public void testMethodCallTypeErasedWhenUncheckedConversionWasAppliedDuringApplicabilityCheck() {
422     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
423   }
424   
425   public void testMethodCallTypeNotErasedWhenUncheckedConversionWasAppliedButNoTypeParamsProvided() {
426     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
427   }
428
429   public void testInferredParameterInBoundsInRecursiveGenerics() {
430     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
431   }
432
433   public void testIDEA65386() {
434     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true);
435   }
436
437   public void testHiddenMethodsOfAnonymousClass() throws Exception {
438     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
439   }
440
441   public void testNestedLevelsToCheckTypeArguments() throws Exception {
442     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
443   }
444
445   public void testExpectedTypeFromOuterArrayCreation() throws Exception {
446     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
447   }
448
449   public void testDistinguishWildcardCapturesAlsoByMethodCalls() throws Exception {
450     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
451   }
452
453   public void testSubstituteTypeParameterOfCapturedWildcardOnSubstitution() throws Exception {
454     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
455   }
456
457   public void testAssignabilityBetweenWildcardsAndArrays() throws Exception {
458     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
459   }
460
461   public void testCastConversionToTypeParameter() throws Exception {
462     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
463   }
464
465   public void testTypeDistinctProverForWildcardAndTypeParameter() throws Exception {
466     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
467   }
468
469   public void testIDEA58687() throws Exception {
470     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
471   }
472
473   public void testDontReportWeakerVisibilityProblemUpInHierarchy() throws Exception {
474     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
475   }
476
477   public void testSuperObjectCapturedWildcardEquality() throws Exception {
478     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
479   }
480
481   public void testSOEInInfiniteTypesWithSuperWildcards() throws Exception {
482     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
483
484   }
485
486   public void testMakeUseOfUpperBoundOfCaptureWildcardDuringNormalization() throws Exception {
487     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
488   }
489
490   public void testCastFromGenericTypeWithTypeParameterWithExtendsAsArgument() throws Exception {
491     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true);
492   }
493
494   public void testIDEA139067() throws Exception {
495     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true);
496   }
497
498   public void testIDEA57336() throws Exception {
499     doTest(LanguageLevel.JDK_1_8, JavaSdkVersion.JDK_1_8, true);
500   }
501
502   public void testPreserveCaptureWildcardsInUpperBounds() throws Exception {
503     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
504   }
505
506   public void testIDEA57361() throws Exception {
507     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
508   }
509
510   public void testRetrieveBoundFromCapturedWildcardUpperBoundOnNormalize() throws Exception {
511     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
512   }
513
514   public void testCapturedBoundOfCapture() throws Exception {
515     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
516   }
517
518   public void testWildcardsWithRawBound() throws Exception {
519     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
520   }
521
522   public void testIDEA98866() throws Exception {
523     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
524   }
525
526   public void testIDEA81318() throws Exception {
527     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
528   }
529
530   public void testIDEA138957() throws Exception {
531     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
532   }
533
534   public void testIDEA130453() throws Exception {
535     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
536   }
537
538   public void testReifiableTypeWithLocalClasses() throws Exception {
539     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
540   }
541
542   public void testStopBoundsPromotionInsideNestedWildcards() throws Exception {
543     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
544   }
545
546   public void testIDEA130243() throws Exception {
547     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
548   }
549
550   public void testCastingToPrimitive() throws Exception {
551     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
552   }
553
554   public void testProvablyDistinctForWildcardsWithArrayBounds() throws Exception {
555     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
556   }
557
558   public void testReturnTypeOverrideEquivalenceWithTypeHierarchy() throws Exception {
559     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
560   }
561
562   public void testIgnoreReturnTypeClashForObjectProtectedMethodsAndInterfaceMethodsWithSameSignature() throws Exception {
563     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
564   }
565
566   public void testIDEA150499() throws Exception {
567     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
568   }
569
570   public void testRecursiveTypesTypeArgumentDistinction() throws Exception {
571     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, true);
572   }
573
574   public void testRecursiveBoundsDependencies() throws Exception {
575     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
576   }
577
578   public void testUnboxingFromTypeParameter() throws Exception {
579     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
580   }
581
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), 
587                                                                     manager);
588     assertNotNull(leastUpperBound);
589     assertEquals("Number & Comparable<? extends Number & Comparable<?>>", leastUpperBound.getPresentableText());
590   }
591
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);
599   }
600
601   public void testReturnTypeSubstitutableForSameOverrideEquivalentMethods() throws Exception {
602     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
603   }
604
605   public void testCaptureConversionWithWildcardBounds() throws Exception {
606     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
607   }
608
609   public void testIntersectTypeParameterBounds() throws Exception {
610     doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
611   }
612 }