From d77c31eaba2863882a07ba420d1c05c5b08e302c Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 22 Apr 2016 18:53:21 +0200 Subject: [PATCH] [java] introduces PsiType.annotate(); minor optimization --- java/java-psi-api/src/com/intellij/psi/PsiArrayType.java | 2 +- .../src/com/intellij/psi/PsiEllipsisType.java | 2 +- .../src/com/intellij/psi/PsiPrimitiveType.java | 2 +- .../src/com/intellij/psi/PsiWildcardType.java | 2 +- .../intellij/psi/impl/source/PsiClassReferenceType.java | 2 +- .../intellij/psi/impl/source/PsiImmediateClassType.java | 9 ++++----- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/PsiArrayType.java b/java/java-psi-api/src/com/intellij/psi/PsiArrayType.java index d8f7e29c11b7..5019d5b57fed 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiArrayType.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiArrayType.java @@ -43,7 +43,7 @@ public class PsiArrayType extends PsiType.Stub { @NotNull @Override public PsiArrayType annotate(@NotNull TypeAnnotationProvider provider) { - return new PsiArrayType(myComponentType, provider); + return provider == getAnnotationProvider() ? this : new PsiArrayType(myComponentType, provider); } @NotNull diff --git a/java/java-psi-api/src/com/intellij/psi/PsiEllipsisType.java b/java/java-psi-api/src/com/intellij/psi/PsiEllipsisType.java index 639bbeb46211..d7105defd1a2 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiEllipsisType.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiEllipsisType.java @@ -38,7 +38,7 @@ public class PsiEllipsisType extends PsiArrayType { @NotNull @Override public PsiEllipsisType annotate(@NotNull TypeAnnotationProvider provider) { - return new PsiEllipsisType(getComponentType(), provider); + return provider == getAnnotationProvider() ? this : new PsiEllipsisType(getComponentType(), provider); } @NotNull diff --git a/java/java-psi-api/src/com/intellij/psi/PsiPrimitiveType.java b/java/java-psi-api/src/com/intellij/psi/PsiPrimitiveType.java index 231744cdddef..5ce28619f7fb 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiPrimitiveType.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiPrimitiveType.java @@ -56,7 +56,7 @@ public class PsiPrimitiveType extends PsiType.Stub { @NotNull @Override public PsiPrimitiveType annotate(@NotNull TypeAnnotationProvider provider) { - return new PsiPrimitiveType(myName, provider); + return provider == getAnnotationProvider() ? this : new PsiPrimitiveType(myName, provider); } @NotNull diff --git a/java/java-psi-api/src/com/intellij/psi/PsiWildcardType.java b/java/java-psi-api/src/com/intellij/psi/PsiWildcardType.java index 76d6914ed612..5ed01f39b4a8 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiWildcardType.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiWildcardType.java @@ -89,7 +89,7 @@ public class PsiWildcardType extends PsiType.Stub { @NotNull @Override public PsiWildcardType annotate(@NotNull TypeAnnotationProvider provider) { - return new PsiWildcardType(this, provider); + return provider == getAnnotationProvider() ? this : new PsiWildcardType(this, provider); } @NotNull diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java index a03c7956aca1..585922734345 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java @@ -61,7 +61,7 @@ public class PsiClassReferenceType extends PsiClassType.Stub { @NotNull @Override public PsiClassReferenceType annotate(@NotNull TypeAnnotationProvider provider) { - return new PsiClassReferenceType(myReference, myLanguageLevel, provider); + return provider == getAnnotationProvider() ? this : new PsiClassReferenceType(myReference, myLanguageLevel, provider); } @Override diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiImmediateClassType.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiImmediateClassType.java index 9c26c187b6b3..f2bd79ba335e 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiImmediateClassType.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiImmediateClassType.java @@ -111,7 +111,7 @@ public class PsiImmediateClassType extends PsiClassType.Stub { @NotNull @Override public PsiImmediateClassType annotate(@NotNull TypeAnnotationProvider provider) { - return new PsiImmediateClassType(myClass, mySubstitutor, myLanguageLevel, provider); + return provider == getAnnotationProvider() ? this : new PsiImmediateClassType(myClass, mySubstitutor, myLanguageLevel, provider); } @Override @@ -123,6 +123,7 @@ public class PsiImmediateClassType extends PsiClassType.Stub { public String getClassName() { return myClass.getName(); } + @Override @NotNull public PsiType[] getParameters() { @@ -134,12 +135,10 @@ public class PsiImmediateClassType extends PsiClassType.Stub { List lst = new ArrayList(); for (PsiTypeParameter parameter : parameters) { PsiType substituted = mySubstitutor.substitute(parameter); - if (substituted != null) { - lst.add(substituted); - } - else { + if (substituted == null) { return PsiType.EMPTY_ARRAY; } + lst.add(substituted); } return lst.toArray(createArray(lst.size())); }