From 1af524b889a0e00f3fc485d69e11c1d7fb115135 Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 30 Nov 2012 16:16:39 +0100 Subject: [PATCH 1/5] field may be final: ignore throw clause when field was not assigned (IDEA-96018) --- .../src/com/siyeh/ig/psiutils/FinalUtils.java | 5 +++-- .../style/field_final/FieldMayBeFinal.java | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/FinalUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/FinalUtils.java index 6ed4cfaec704..143da3cfdd17 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/FinalUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/FinalUtils.java @@ -630,8 +630,9 @@ public class FinalUtils { } private void satisfyVacuously() { - definitelyAssigned = true; - definitelyUnassigned = true; + if (definitelyAssigned) { + definitelyUnassigned = true; + } } private static boolean isPrePostFixExpression( diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java index c0d4b9886655..39803b92a53e 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java @@ -398,4 +398,21 @@ class Q implements Iterator { public void remove() { throw new UnsupportedOperationException(); } +} +class R { + private static final String someStaticStuff; + static { + try { + someStaticStuff = ""; + } + catch (Exception e) { + throw new RuntimeException(e); + } + } + + private String someInjectedStuff; + + public String getSomeInjectedStuff() { + return someInjectedStuff; + } } \ No newline at end of file From 8d44b61a55e71cbce0b03f3c8c44995ea24e97c7 Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 30 Nov 2012 12:04:44 +0100 Subject: [PATCH 2/5] cast conversion java 7 (IDEA-96213) [Roma] (cherry picked from commit d433089be2856a9c3ae05c10daeeb12736d13023) --- .../src/com/intellij/psi/util/TypeConversionUtil.java | 4 ++-- .../advHighlighting7/PolymorphicTypeCast.java | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java b/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java index dbfc77322661..45efd2b53250 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java @@ -115,8 +115,8 @@ public class TypeConversionUtil { final PsiClass psiClass = classType.resolve(); if (psiClass == null || psiClass instanceof PsiTypeParameter) return false; final PsiClassType boxedType = ((PsiPrimitiveType)toType).getBoxedType(psiClass.getManager(), psiClass.getResolveScope()); - if (boxedType != null) { - return isAssignable(fromType, boxedType); + if (boxedType != null && isAssignable(fromType, boxedType)) { + return true; } } return fromTypeRank == toTypeRank || diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/PolymorphicTypeCast.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/PolymorphicTypeCast.java index c967a7328b62..8be16fc1db85 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/PolymorphicTypeCast.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/PolymorphicTypeCast.java @@ -90,4 +90,8 @@ class C { } void m(int i) { } + + void asLongs(Integer i) { + long l = (long) i; + } } \ No newline at end of file From 6fe44eee738b7fadc34c6c7b8eb18506a7135b58 Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 30 Nov 2012 12:10:29 +0100 Subject: [PATCH 3/5] erasure wildcards when generate overriding (cherry picked from commit 58ced7b4e6be23577a1427c93a7b9c58a4edb5f3) --- .../codeInsight/generation/GenerateMembersUtil.java | 7 ++++++- .../overrideImplement/afterErasureWildcard.java | 9 +++++++++ .../overrideImplement/beforeErasureWildcard.java | 7 +++++++ .../com/intellij/codeInsight/OverrideImplementTest.java | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/overrideImplement/afterErasureWildcard.java create mode 100644 java/java-tests/testData/codeInsight/overrideImplement/beforeErasureWildcard.java diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java index bf68e18d2f3d..98d8894c7034 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java @@ -427,7 +427,12 @@ public class GenerateMembersUtil { private static PsiType substituteType(final PsiSubstitutor substitutor, final PsiType type) { final PsiType psiType = substitutor.substitute(type); - if (psiType != null) return psiType; + if (psiType != null) { + final PsiType deepComponentType = psiType.getDeepComponentType(); + if (!(deepComponentType instanceof PsiCapturedWildcardType || deepComponentType instanceof PsiWildcardType)){ + return psiType; + } + } return TypeConversionUtil.erasure(type); } diff --git a/java/java-tests/testData/codeInsight/overrideImplement/afterErasureWildcard.java b/java/java-tests/testData/codeInsight/overrideImplement/afterErasureWildcard.java new file mode 100644 index 000000000000..4c7590955daa --- /dev/null +++ b/java/java-tests/testData/codeInsight/overrideImplement/afterErasureWildcard.java @@ -0,0 +1,9 @@ +interface Generic { + T foo(); +} + +class II implements Generic { + public Object foo() { + return null; //To change body of implemented methods use File | Settings | File Templates. + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/overrideImplement/beforeErasureWildcard.java b/java/java-tests/testData/codeInsight/overrideImplement/beforeErasureWildcard.java new file mode 100644 index 000000000000..9c2cfbc37a34 --- /dev/null +++ b/java/java-tests/testData/codeInsight/overrideImplement/beforeErasureWildcard.java @@ -0,0 +1,7 @@ +interface Generic { + T foo(); +} + +class II implements Generic { + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.java index 6de5002321a7..0e8813f19043 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.java @@ -61,6 +61,7 @@ public class OverrideImplementTest extends LightCodeInsightTestCase { public void testClone() { doTest(false); } public void testOnTheLineWithExistingExpression() { doTest(false); } public void testSimplifyObjectWildcard() { doTest(false); } + public void testErasureWildcard() { doTest(false); } public void testImplementExtensionMethods() { doTest8(false, true); } public void testDoNotImplementExtensionMethods() { doTest8(false, true); } From 5336abf404d91e172b6d6edd10737c94679b1b3a Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 30 Nov 2012 13:28:35 +0100 Subject: [PATCH 4/5] IDEA-96180: one name is sufficient (cherry picked from commit 1920707805d02c74f721d5b1c4fc162949c11845) --- .../codeInspection/ex/HTMLComposerImpl.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/HTMLComposerImpl.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/HTMLComposerImpl.java index d48c53a4915a..dc75dd7ed4ea 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/HTMLComposerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/HTMLComposerImpl.java @@ -126,17 +126,18 @@ public abstract class HTMLComposerImpl extends HTMLComposer { final HTMLComposerExtension extension = getLanguageExtension(refElement); if (extension != null) { extension.appendShortName(refElement, buf); - } - refElement.accept(new RefVisitor() { - @Override public void visitFile(RefFile file) { - final PsiFile psiFile = file.getElement(); - if (psiFile != null) { - buf.append(B_OPENING); - buf.append(psiFile.getName()); - buf.append(B_CLOSING); + } else { + refElement.accept(new RefVisitor() { + @Override public void visitFile(RefFile file) { + final PsiFile psiFile = file.getElement(); + if (psiFile != null) { + buf.append(B_OPENING); + buf.append(psiFile.getName()); + buf.append(B_CLOSING); + } } - } - }); + }); + } } protected void appendQualifiedName(StringBuffer buf, RefEntity refEntity) { From b10b6fd64df15f93097154ae0d684fd078e6ec7a Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 30 Nov 2012 13:40:46 +0100 Subject: [PATCH 5/5] EA-41550 - PIEAE: CompositePsiElement.getProject (cherry picked from commit ff668adf891283edfe677a0a1d85182570b4f5b5) --- .../refactoring/typeMigration/TypeMigrationLabeler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationLabeler.java b/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationLabeler.java index 0dcb61f2251d..d4fe594814c9 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationLabeler.java +++ b/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationLabeler.java @@ -116,7 +116,7 @@ public class TypeMigrationLabeler { usages.add(new UsageInfo(expr) { @Nullable public String getTooltipText() { - final PsiType type = expr.getType(); + final PsiType type = expr.isValid() ? expr.getType() : null; if (type == null) return null; return "Cannot convert type of the expression from " + type.getCanonicalText() + " to " + p.getSecond().getCanonicalText();