Skip to content

Commit 8edc24a

Browse files
committed
Refactoring descendants of PsiAnnotationOwner.
1 parent 9d6db10 commit 8edc24a

17 files changed

Lines changed: 288 additions & 241 deletions

File tree

java-language-api/src/main/java/com/intellij/java/language/psi/PsiModifierList.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
*/
1616
package com.intellij.java.language.psi;
1717

18+
import consulo.annotation.access.RequiredReadAction;
1819
import consulo.language.psi.PsiElement;
1920
import consulo.language.util.IncorrectOperationException;
2021
import jakarta.annotation.Nonnull;
21-
import org.jetbrains.annotations.NonNls;
2222

2323
/**
2424
* Represents the list of modifiers and annotations on a Java element (class, method,
@@ -35,7 +35,8 @@ public interface PsiModifierList extends PsiElement, PsiAnnotationOwner {
3535
* @return true if the list has the modifier, false otherwise
3636
* @see #hasExplicitModifier(String)
3737
*/
38-
boolean hasModifierProperty(@PsiModifier.ModifierConstant @Nonnull @NonNls String name);
38+
@RequiredReadAction
39+
boolean hasModifierProperty(@PsiModifier.ModifierConstant @Nonnull String name);
3940

4041
/**
4142
* Checks if the modifier list has the specified modifier set by an explicit keyword.
@@ -44,7 +45,7 @@ public interface PsiModifierList extends PsiElement, PsiAnnotationOwner {
4445
* @return true if the list has the modifier, false otherwise
4546
* @see #hasModifierProperty(String)
4647
*/
47-
boolean hasExplicitModifier(@PsiModifier.ModifierConstant @Nonnull @NonNls String name);
48+
boolean hasExplicitModifier(@PsiModifier.ModifierConstant @Nonnull String name);
4849

4950
/**
5051
* Adds or removes the specified modifier to the modifier list.
@@ -53,7 +54,7 @@ public interface PsiModifierList extends PsiElement, PsiAnnotationOwner {
5354
* @param value true if the modifier should be added, false if it should be removed.
5455
* @throws IncorrectOperationException if the modification fails for some reason.
5556
*/
56-
void setModifierProperty(@PsiModifier.ModifierConstant @Nonnull @NonNls String name, boolean value) throws IncorrectOperationException;
57+
void setModifierProperty(@PsiModifier.ModifierConstant @Nonnull String name, boolean value) throws IncorrectOperationException;
5758

5859
/**
5960
* Checks if it is possible to add or remove the specified modifier to the modifier list,
@@ -64,6 +65,6 @@ public interface PsiModifierList extends PsiElement, PsiAnnotationOwner {
6465
* @param value true if the modifier should be added, false if it should be removed.
6566
* @throws IncorrectOperationException if the modification fails for some reason.
6667
*/
67-
void checkSetModifierProperty(@PsiModifier.ModifierConstant @Nonnull @NonNls String name, boolean value)
68+
void checkSetModifierProperty(@PsiModifier.ModifierConstant @Nonnull String name, boolean value)
6869
throws IncorrectOperationException;
6970
}

java-language-api/src/main/java/com/intellij/java/language/psi/PsiType.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public static PsiType[] createArray(int count) {
6262
/**
6363
* Constructs a PsiType with given annotations
6464
*/
65-
protected PsiType(@Nonnull final PsiAnnotation[] annotations) {
65+
protected PsiType(@Nonnull PsiAnnotation[] annotations) {
6666
this(TypeAnnotationProvider.Static.create(annotations));
6767
}
6868

@@ -145,7 +145,7 @@ public String getInternalCanonicalText() {
145145
* Checks if the type is currently valid.
146146
*
147147
* @return true if the type is valid, false otherwise.
148-
* @see PsiElement#isValid()
148+
* @see consulo.language.psi.PsiElement#isValid()
149149
*/
150150
public abstract boolean isValid();
151151

@@ -175,7 +175,7 @@ public boolean isConvertibleFrom(@Nonnull PsiType type) {
175175
* Returns the class type for qualified class name.
176176
*
177177
* @param qName qualified class name.
178-
* @param project
178+
* @param project current project.
179179
* @param resolveScope the scope in which the class is searched.
180180
* @return the class instance.
181181
*/
@@ -272,9 +272,9 @@ public static PsiClassType getJavaLangRuntimeException(@Nonnull PsiManager manag
272272
public final int getArrayDimensions() {
273273
PsiType type = this;
274274
int dims = 0;
275-
while (type instanceof PsiArrayType) {
275+
while (type instanceof PsiArrayType arrayType) {
276276
dims++;
277-
type = ((PsiArrayType)type).getComponentType();
277+
type = arrayType.getComponentType();
278278
}
279279
return dims;
280280
}
@@ -288,8 +288,8 @@ public final int getArrayDimensions() {
288288
@Nonnull
289289
public final PsiType getDeepComponentType() {
290290
PsiType type = this;
291-
while (type instanceof PsiArrayType) {
292-
type = ((PsiArrayType)type).getComponentType();
291+
while (type instanceof PsiArrayType arrayType) {
292+
type = arrayType.getComponentType();
293293
}
294294
return type;
295295
}

java-language-api/src/main/java/com/intellij/java/language/psi/PsiTypeParameter.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@
1818
import com.intellij.java.language.jvm.JvmTypeParameter;
1919
import com.intellij.java.language.jvm.types.JvmReferenceType;
2020
import consulo.util.collection.ArrayFactory;
21-
import jakarta.annotation.Nullable;
22-
import org.jetbrains.annotations.NonNls;
2321
import jakarta.annotation.Nonnull;
22+
import jakarta.annotation.Nullable;
2423

2524
/**
2625
* Represents the type parameter of a generic class, interface, method or constructor.
@@ -40,8 +39,8 @@ public interface PsiTypeParameter extends PsiClass, PsiAnnotationOwner, JvmTypeP
4039
*
4140
* @return the extends list. For this particular kind of classes it never returns null.
4241
*/
43-
@Override
4442
@Nonnull
43+
@Override
4544
PsiReferenceList getExtendsList();
4645

4746
/**
@@ -67,7 +66,7 @@ default PsiAnnotation[] getAnnotations() {
6766
}
6867

6968
@Override
70-
default boolean hasAnnotation(@Nonnull @NonNls String fqn) {
69+
default boolean hasAnnotation(@Nonnull String fqn) {
7170
return PsiClass.super.hasAnnotation(fqn);
7271
}
7372

java-language-impl/src/main/java/com/intellij/java/language/impl/psi/impl/PsiImplUtil.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ public static int getTypeParameterIndex(@Nonnull PsiTypeParameter typeParameter,
214214
}
215215

216216
@Nonnull
217+
@RequiredReadAction
217218
public static Object[] getReferenceVariantsByFilter(@Nonnull PsiJavaCodeReferenceElement reference, @Nonnull ElementFilter filter) {
218219
FilterScopeProcessor processor = new FilterScopeProcessor(filter);
219220
PsiScopesUtil.resolveAndWalk(processor, reference, null, true);
@@ -383,6 +384,7 @@ public static PsiAnnotation findAnnotation(@Nullable PsiAnnotationOwner annotati
383384
* @deprecated use {@link AnnotationTargetUtil#findAnnotationTarget(PsiAnnotation, TargetType...)} (to be removed ion IDEA 17)
384385
*/
385386
@SuppressWarnings("unused")
387+
@RequiredReadAction
386388
public static TargetType findApplicableTarget(@Nonnull PsiAnnotation annotation, @Nonnull TargetType... types) {
387389
return AnnotationTargetUtil.findAnnotationTarget(annotation, types);
388390
}
@@ -391,6 +393,7 @@ public static TargetType findApplicableTarget(@Nonnull PsiAnnotation annotation,
391393
* @deprecated use {@link AnnotationTargetUtil#findAnnotationTarget(PsiClass, TargetType...)} (to be removed ion IDEA 17)
392394
*/
393395
@SuppressWarnings("unused")
396+
@RequiredReadAction
394397
public static TargetType findApplicableTarget(@Nonnull PsiClass annotationType, @Nonnull TargetType... types) {
395398
return AnnotationTargetUtil.findAnnotationTarget(annotationType, types);
396399
}
@@ -399,6 +402,7 @@ public static TargetType findApplicableTarget(@Nonnull PsiClass annotationType,
399402
* @deprecated use {@link AnnotationTargetUtil#getAnnotationTargets(PsiClass)} (to be removed ion IDEA 17)
400403
*/
401404
@SuppressWarnings("unused")
405+
@RequiredReadAction
402406
public static Set<TargetType> getAnnotationTargets(@Nonnull PsiClass annotationType) {
403407
return AnnotationTargetUtil.getAnnotationTargets(annotationType);
404408
}
@@ -744,10 +748,12 @@ public static PsiModifierList findNeighbourModifierList(@Nonnull PsiJavaCodeRefe
744748
return null;
745749
}
746750

751+
@RequiredReadAction
747752
public static boolean isTypeAnnotation(@Nullable PsiElement element) {
748753
return element instanceof PsiAnnotation annotation && AnnotationTargetUtil.isTypeAnnotation(annotation);
749754
}
750755

756+
@RequiredReadAction
751757
public static void collectTypeUseAnnotations(@Nonnull PsiModifierList modifierList, @Nonnull List<PsiAnnotation> annotations) {
752758
for (PsiAnnotation annotation : modifierList.getAnnotations()) {
753759
if (AnnotationTargetUtil.isTypeAnnotation(annotation)) {
@@ -760,6 +766,7 @@ public static void collectTypeUseAnnotations(@Nonnull PsiModifierList modifierLi
760766
* @deprecated use {@link #collectTypeUseAnnotations(PsiModifierList, List)} (to be removed in IDEA 16)
761767
*/
762768
@SuppressWarnings("unused")
769+
@RequiredReadAction
763770
public static List<PsiAnnotation> getTypeUseAnnotations(@Nonnull PsiModifierList modifierList) {
764771
SmartList<PsiAnnotation> result = null;
765772

@@ -789,7 +796,7 @@ public static void markTypeAnnotations(@Nonnull PsiTypeElement typeElement) {
789796
}
790797
}
791798

792-
@RequiredReadAction
799+
@RequiredWriteAction
793800
public static void deleteTypeAnnotations(@Nonnull PsiTypeElement typeElement) {
794801
PsiElement left = PsiTreeUtil.skipSiblingsBackward(typeElement, PsiComment.class, PsiWhiteSpace.class, PsiTypeParameterList.class);
795802
if (left instanceof PsiModifierList modifierList) {
@@ -809,6 +816,7 @@ public static boolean isLeafElementOfType(PsiElement element, TokenSet tokenSet)
809816
return element instanceof LeafElement leafElement && tokenSet.contains(leafElement.getElementType());
810817
}
811818

819+
@RequiredReadAction
812820
public static PsiType buildTypeFromTypeString(@Nonnull String typeName, @Nonnull PsiElement context, @Nonnull PsiFile psiFile) {
813821
PsiType resultType;
814822
PsiManager psiManager = psiFile.getManager();

java-language-impl/src/main/java/com/intellij/java/language/impl/psi/impl/compiled/ClsModifierListImpl.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.intellij.java.language.impl.psi.impl.java.stubs.PsiModifierListStub;
2222
import com.intellij.java.language.impl.psi.impl.source.tree.JavaElementType;
2323
import com.intellij.java.language.psi.*;
24+
import consulo.annotation.access.RequiredReadAction;
2425
import consulo.language.impl.ast.TreeElement;
2526
import consulo.language.impl.psi.SourceTreeToPsiMap;
2627
import consulo.language.psi.PsiElement;
@@ -34,18 +35,21 @@ public ClsModifierListImpl(PsiModifierListStub stub) {
3435
super(stub);
3536
}
3637

37-
@Override
3838
@Nonnull
39+
@Override
40+
@RequiredReadAction
3941
public PsiElement[] getChildren() {
4042
return getAnnotations();
4143
}
4244

4345
@Override
46+
@RequiredReadAction
4447
public boolean hasModifierProperty(@Nonnull String name) {
4548
return ModifierFlags.hasModifierProperty(name, getStub().getModifiersMask());
4649
}
4750

4851
@Override
52+
@RequiredReadAction
4953
public boolean hasExplicitModifier(@Nonnull String name) {
5054
return hasModifierProperty(name);
5155
}
@@ -84,6 +88,7 @@ public PsiAnnotation addAnnotation(@Nonnull String qualifiedName) {
8488
}
8589

8690
@Override
91+
@RequiredReadAction
8792
public void appendMirrorText(int indentLevel, @Nonnull StringBuilder buffer) {
8893
PsiElement parent = getParent();
8994
PsiAnnotation[] annotations = getAnnotations();
@@ -99,11 +104,11 @@ public void appendMirrorText(int indentLevel, @Nonnull StringBuilder buffer) {
99104
boolean isClass = parent instanceof PsiClass;
100105
boolean isInterface = isClass && ((PsiClass)parent).isInterface();
101106
boolean isEnum = isClass && ((PsiClass)parent).isEnum();
102-
boolean isInterfaceClass = isClass && parent.getParent() instanceof PsiClass && ((PsiClass)parent.getParent()).isInterface();
107+
boolean isInterfaceClass = isClass && parent.getParent() instanceof PsiClass outerClass && outerClass.isInterface();
103108
boolean isMethod = parent instanceof PsiMethod;
104-
boolean isInterfaceMethod = isMethod && parent.getParent() instanceof PsiClass && ((PsiClass)parent.getParent()).isInterface();
109+
boolean isInterfaceMethod = isMethod && parent.getParent() instanceof PsiClass psiClass && psiClass.isInterface();
105110
boolean isField = parent instanceof PsiField;
106-
boolean isInterfaceField = isField && parent.getParent() instanceof PsiClass && ((PsiClass)parent.getParent()).isInterface();
111+
boolean isInterfaceField = isField && parent.getParent() instanceof PsiClass psiClass && psiClass.isInterface();
107112
boolean isEnumConstant = parent instanceof PsiEnumConstant;
108113

109114
if (hasModifierProperty(PsiModifier.PUBLIC) && !isInterfaceMethod && !isInterfaceField && !isInterfaceClass && !isEnumConstant) {
@@ -158,8 +163,8 @@ public void setMirror(@Nonnull TreeElement element) throws InvalidMirrorExceptio
158163

159164
@Override
160165
public void accept(@Nonnull PsiElementVisitor visitor) {
161-
if (visitor instanceof JavaElementVisitor) {
162-
((JavaElementVisitor)visitor).visitModifierList(this);
166+
if (visitor instanceof JavaElementVisitor elemVisitor) {
167+
elemVisitor.visitModifierList(this);
163168
}
164169
else {
165170
visitor.visitElement(this);

0 commit comments

Comments
 (0)