[java] IDEA-379571 Revert: Improve PsiPackageStatement.getAnnotationList() so it never returns null value

1) git reverts: Improve PsiPackageStatement.getAnnotationList() so it never returns null value
2) Solves merge conflicts in:
 - community/java/java-impl/src/com/intellij/lang/OuterModelsModificationTracker.java
 - community/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveAnnotationToPackageInfoFileFix.java
3) bumps STUB_VERSION in
 - ClassFileStubBuilder.java
 - JavaFileElementType.java

Merge-request: IJ-MR-177519
Merged-by: Marcin Mikosik <marcin.mikosik@jetbrains.com>

GitOrigin-RevId: 14ced51685daf90d3b2a8224bf35c8478ed2909f
This commit is contained in:
Marcin Mikosik
2025-10-06 09:43:02 +00:00
committed by intellij-monorepo-bot
parent 91ca142605
commit 55ace90cfb
67 changed files with 63 additions and 160 deletions
@@ -73,7 +73,8 @@ final class AnnotationChecker {
}
void checkPackageAnnotationContainingFile(@NotNull PsiPackageStatement statement) {
if (statement.getAnnotationList().getAnnotations().length > 0 && !PsiPackage.PACKAGE_INFO_FILE.equals(myVisitor.file().getName())) {
PsiModifierList annotationList = statement.getAnnotationList();
if (annotationList != null && !PsiPackage.PACKAGE_INFO_FILE.equals(myVisitor.file().getName())) {
myVisitor.report(JavaErrorKinds.ANNOTATION_NOT_ALLOWED_ON_PACKAGE.create(statement));
}
}
@@ -104,7 +104,7 @@ public final class JavaErrorKinds {
public static final Simple<PsiAnnotation> ANNOTATION_NOT_ALLOWED_IN_PERMIT_LIST = error("annotation.not.allowed.in.permit.list");
public static final Simple<PsiPackageStatement> ANNOTATION_NOT_ALLOWED_ON_PACKAGE =
error(PsiPackageStatement.class, "annotation.not.allowed.on.package")
.withAnchor(PsiPackageStatement::getAnnotationList);
.withAnchor(statement -> requireNonNull(statement.getAnnotationList()));
public static final Simple<PsiReferenceList> ANNOTATION_MEMBER_THROWS_NOT_ALLOWED =
error(PsiReferenceList.class, "annotation.member.may.not.have.throws.list").withAnchor(list -> requireNonNull(list.getFirstChild()));
public static final Simple<PsiParameterList> ANNOTATION_MEMBER_MAY_NOT_HAVE_PARAMETERS =
@@ -1117,7 +1117,8 @@ public final class DefaultJavaErrorFixProvider extends AbstractJavaErrorFixProvi
return myFactory.createUnwrapArrayInitializerMemberValueAction(error.psi());
});
multi(ANNOTATION_NOT_ALLOWED_ON_PACKAGE, error ->
List.of(myFactory.createDeleteFix(error.psi().getAnnotationList(), JavaAnalysisBundle.message("intention.text.remove.annotation")),
List.of(myFactory.createDeleteFix(requireNonNull(error.psi().getAnnotationList()),
JavaAnalysisBundle.message("intention.text.remove.annotation")),
new MoveAnnotationToPackageInfoFileFix(error.psi())));
fix(ANNOTATION_NOT_ALLOWED_ON_PACKAGE, error ->
myFactory.createDeleteFix(error.psi(), JavaAnalysisBundle.message("intention.text.remove.annotation")));
@@ -30,7 +30,7 @@ public class MoveAnnotationToPackageInfoFileFix extends PsiUpdateModCommandActio
PsiPackageStatement packageStatementInPackageInfoFile = PsiTreeUtil.findChildOfType(packageInfoFile, PsiPackageStatement.class);
if (packageStatementInPackageInfoFile == null) return null;
PsiModifierList missingAnnotations = findMissingAnnotations(packageStatement, packageStatementInPackageInfoFile);
if (!missingAnnotations.hasAnnotations()) return null;
if (missingAnnotations == null || !missingAnnotations.hasAnnotations()) return null;
return Presentation.of(getFamilyName());
}
@@ -71,16 +71,22 @@ public class MoveAnnotationToPackageInfoFileFix extends PsiUpdateModCommandActio
packageStatementInPackageInfoFile = (PsiPackageStatement)packageInfoFile.addBefore(copy, packageInfoFile.getFirstChild());
}
PsiModifierList missingAnnotations = findMissingAnnotations(packageStatement, packageStatementInPackageInfoFile);
if (missingAnnotations.getAnnotations().length == 0) return null;
if (missingAnnotations == null) return null;
PsiModifierList annotationList = packageStatementInPackageInfoFile.getAnnotationList();
StreamEx.of(missingAnnotations.getAnnotations()).forEach(annotationList::add);
if (annotationList != null) {
StreamEx.of(missingAnnotations.getAnnotations()).forEach(annotationList::add);
}
else {
packageStatementInPackageInfoFile.addBefore(missingAnnotations, packageStatementInPackageInfoFile.getFirstChild());
}
CodeStyleManager.getInstance(packageInfoFile.getProject()).reformat(packageInfoFile);
return packageInfoFile;
}
private static @NotNull PsiModifierList findMissingAnnotations(@NotNull PsiPackageStatement packageStatement,
private static @Nullable PsiModifierList findMissingAnnotations(@NotNull PsiPackageStatement packageStatement,
@NotNull PsiPackageStatement packageStatementInPackageInfoFile) {
PsiModifierList annotationList = packageStatementInPackageInfoFile.getAnnotationList();
if (annotationList == null) return packageStatement.getAnnotationList();
PsiPackageStatement copy = (PsiPackageStatement)packageStatement.copy();
StreamEx.of(copy.getAnnotationList().getChildren())
.select(PsiAnnotation.class)
@@ -128,14 +128,14 @@ public class BasicFileParser {
private void parsePackageStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
PsiBuilder.Marker modList = builder.mark();
if (builder.getTokenType() != JavaTokenType.PACKAGE_KEYWORD) {
myParser.getDeclarationParser().parseAnnotations(builder);
}
done(modList, myJavaElementTypeContainer.MODIFIER_LIST, builder, myWhiteSpaceAndCommentSetHolder);
if (!expect(builder, JavaTokenType.PACKAGE_KEYWORD)) {
statement.rollbackTo();
return;
PsiBuilder.Marker modList = builder.mark();
myParser.getDeclarationParser().parseAnnotations(builder);
done(modList, myJavaElementTypeContainer.MODIFIER_LIST, builder, myWhiteSpaceAndCommentSetHolder);
if (!expect(builder, JavaTokenType.PACKAGE_KEYWORD)) {
statement.rollbackTo();
return;
}
}
PsiBuilder.Marker ref = myParser.getReferenceParser().parseJavaCodeReference(builder, true, false, false, false);
@@ -380,8 +380,11 @@ public class NullableNotNullManagerImpl extends NullableNotNullManager implement
if (packageFile instanceof PsiJavaFile javaFile) {
PsiPackageStatement stmt = javaFile.getPackageStatement();
if (stmt != null) {
for (PsiAnnotation annotation : stmt.getAnnotationList().getAnnotations()) {
info = info.orElse(checkNullityDefault(annotation, placeTargetTypes, superPackage));
PsiModifierList modifierList = stmt.getAnnotationList();
if (modifierList != null) {
for (PsiAnnotation annotation : modifierList.getAnnotations()) {
info = info.orElse(checkNullityDefault(annotation, placeTargetTypes, superPackage));
}
}
}
}
@@ -312,7 +312,10 @@ public class OuterModelsModificationTracker extends SimpleModificationTracker {
private static boolean isAnnotatedPackageStatement(PsiElement psiElement) {
if (psiElement instanceof PsiPackageStatement psiPackageStatement) {
try {
return psiPackageStatement.getAnnotationList().hasAnnotations();
PsiModifierList psiModifierList = psiPackageStatement.getAnnotationList();
if (psiModifierList != null) {
return psiModifierList.hasAnnotations();
}
}
catch (PsiInvalidElementAccessException ignored) {
}
@@ -70,7 +70,7 @@ public final class AnnotatedPackagesSearcher implements QueryExecutor<PsiPackage
if (stmt == null) return true;
final PsiModifierList annotations1 = stmt.getAnnotationList();
if (annotations1.getAnnotations().length == 0) return true;
if (annotations1 == null) return true;
final PsiAnnotation ann = annotations1.findAnnotation(annotationFQN);
if (ann == null) return true;
@@ -40,5 +40,5 @@ public interface PsiPackageStatement extends PsiElement {
*
* @return the modifier list containing the annotations applied to the package statement.
*/
@NotNull PsiModifierList getAnnotationList();
PsiModifierList getAnnotationList();
}
@@ -19,7 +19,7 @@ import static com.intellij.psi.compiled.ClassFileDecompilers.Full;
public class ClassFileStubBuilder implements BinaryFileStubBuilder.CompositeBinaryFileStubBuilder<Full> {
private static final Logger LOG = Logger.getInstance(ClassFileStubBuilder.class);
public static final int STUB_VERSION = 30;
public static final int STUB_VERSION = 31;
@Override
public @NotNull VirtualFileFilter getFileFilter() {
@@ -4,16 +4,11 @@ package com.intellij.psi.impl.compiled;
import com.intellij.psi.*;
import com.intellij.psi.impl.java.stubs.JavaStubElementTypes;
import com.intellij.psi.impl.java.stubs.PsiPackageStatementStub;
import com.intellij.psi.impl.light.LightModifierList;
import com.intellij.psi.impl.source.tree.JavaElementType;
import com.intellij.psi.impl.source.tree.TreeElement;
import com.intellij.psi.stubs.StubElement;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
import static java.util.Objects.requireNonNull;
public class ClsPackageStatementImpl extends ClsRepositoryPsiElement<PsiPackageStatementStub> implements PsiPackageStatement {
private final @NotNull String myPackageName;
@@ -29,13 +24,16 @@ public class ClsPackageStatementImpl extends ClsRepositoryPsiElement<PsiPackageS
}
@Override
public @NotNull PsiModifierList getAnnotationList() {
return (PsiModifierList)requireNonNull(getStub().findChildStubByElementType(JavaStubElementTypes.MODIFIER_LIST)).getPsi();
public PsiModifierList getAnnotationList() {
@SuppressWarnings("unchecked") final StubElement<PsiModifierList> child =
(StubElement<PsiModifierList>)getStub().findChildStubByElementType(JavaStubElementTypes.MODIFIER_LIST);
return child == null ? null : child.getPsi();
}
@Override
public PsiElement @NotNull [] getChildren() {
return new PsiElement[]{getAnnotationList()};
PsiModifierList list = getAnnotationList();
return list == null ? EMPTY_ARRAY : new PsiElement[]{list};
}
@Override
@@ -46,9 +44,12 @@ public class ClsPackageStatementImpl extends ClsRepositoryPsiElement<PsiPackageS
@Override
public void appendMirrorText(final int indentLevel, final @NotNull StringBuilder buffer) {
if (!myPackageName.isEmpty()) { // an empty package name should not happen for a well-formed class file
for (PsiAnnotation annotation : getAnnotationList().getAnnotations()) {
appendText(annotation, indentLevel, buffer);
buffer.append("\n");
PsiModifierList list = getAnnotationList();
if (list != null) {
for (PsiAnnotation annotation : list.getAnnotations()) {
appendText(annotation, indentLevel, buffer);
buffer.append("\n");
}
}
buffer.append("package ").append(getPackageName()).append(';');
}
@@ -102,18 +102,17 @@ public class StubBuildingVisitor<T> extends ClassVisitor {
}
String packageName = !(myParent instanceof PsiFileStub) || name.lastIndexOf('/') == -1 ? "" :
name.substring(0, name.lastIndexOf('/')).replace('/', '.');
PsiModifierListStubImpl packageModList = null;
PsiPackageStatementStub packageStatement = null;
if (!packageName.isEmpty()) {
PsiPackageStatementStub packageStatement = new PsiPackageStatementStubImpl(myParent, packageName);
packageModList = new PsiModifierListStubImpl(packageStatement, 0);
packageStatement = new PsiPackageStatementStubImpl(myParent, packageName);
}
myResult =
new PsiClassStubImpl<>(JavaStubElementTypes.CLASS, myParent, fqn == null ? TypeInfo.SimpleTypeInfo.NULL : fqn, shortName, null,
stubFlags);
myModList = new PsiModifierListStubImpl(myResult, classFlags);
if (PsiPackage.PACKAGE_INFO_CLASS.equals(shortName) && packageModList != null) {
if (PsiPackage.PACKAGE_INFO_CLASS.equals(shortName)) {
// Attach annotations to the package statement
myModList = packageModList;
myModList = new PsiModifierListStubImpl(packageStatement, 0);
}
if (isRecord) {
myHeaderStub = new PsiRecordHeaderStubImpl(myResult);
@@ -435,7 +435,7 @@ public class PsiPackageImpl extends PsiPackageBase implements PsiPackage, Querya
if (file instanceof PsiJavaFile) {
PsiPackageStatement stmt = ((PsiJavaFile)file).getPackageStatement();
if (stmt != null) {
modifiers.add(stmt.getAnnotationList());
ContainerUtil.addIfNotNull(modifiers, stmt.getAnnotationList());
}
}
}
@@ -20,7 +20,7 @@ import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
public class JavaFileElementType extends IFileElementType {
public static final int STUB_VERSION = 65;
public static final int STUB_VERSION = 66;
public JavaFileElementType() {
super("java.FILE", JavaLanguage.INSTANCE);
@@ -158,7 +158,7 @@ public abstract class PsiJavaFileBaseImpl extends PsiFileImpl implements PsiJava
private void cleanupBrokenPackageKeyword() {
PsiElement child = getFirstChild();
while (child instanceof PsiWhiteSpace || child instanceof PsiComment || child instanceof PsiErrorElement) {
if (isErrorElementThatContainsPackageStatement(child)) {
if (child instanceof PsiErrorElement && child.getFirstChild() != null && child.getFirstChild().textMatches(JavaKeywords.PACKAGE)) {
child.delete();
break;
}
@@ -166,17 +166,6 @@ public abstract class PsiJavaFileBaseImpl extends PsiFileImpl implements PsiJava
}
}
private static boolean isErrorElementThatContainsPackageStatement(PsiElement element) {
if (!(element instanceof PsiErrorElement)) return false;
PsiElement firstChild = element.getFirstChild();
if (firstChild == null) return false;
if (firstChild.textMatches(JavaKeywords.PACKAGE)) return true;
if (!(firstChild instanceof PsiModifierList)) return false;
PsiElement secondChild = firstChild.getNextSibling();
if (secondChild == null) return false;
return secondChild.textMatches(JavaKeywords.PACKAGE);
}
@Override
public PsiImportList getImportList() {
return withGreenStubOrAst(
@@ -55,8 +55,8 @@ public class PsiPackageStatementImpl extends JavaStubPsiElement<PsiPackageStatem
}
@Override
public @NotNull PsiModifierList getAnnotationList() {
return getRequiredStubOrPsiChild(JavaStubElementTypes.MODIFIER_LIST, PsiModifierList.class);
public PsiModifierList getAnnotationList() {
return getStubOrPsiChild(JavaStubElementTypes.MODIFIER_LIST, PsiModifierList.class);
}
@Override
@@ -102,14 +102,14 @@ open class FileParser(private val myParser: JavaParser) {
private fun parsePackageStatement(builder: SyntaxTreeBuilder) {
val statement = builder.mark()
val modList = builder.mark()
if (builder.tokenType != JavaSyntaxTokenType.PACKAGE_KEYWORD) {
myParser.declarationParser.parseAnnotations(builder)
}
JavaParserUtil.done(modList, JavaSyntaxElementType.MODIFIER_LIST, myParser.languageLevel)
if (!builder.expect(JavaSyntaxTokenType.PACKAGE_KEYWORD)) {
statement.rollbackTo()
return
val modList = builder.mark()
myParser.declarationParser.parseAnnotations(builder)
JavaParserUtil.done(modList, JavaSyntaxElementType.MODIFIER_LIST, myParser.languageLevel)
if (!builder.expect(JavaSyntaxTokenType.PACKAGE_KEYWORD)) {
statement.rollbackTo()
return
}
}
val ref = myParser.referenceParser.parseJavaCodeReference(builder, true, false, false, false)
@@ -1,6 +1,5 @@
PsiJavaFileStub [pack]
PsiPackageStatementStub[pack]
PsiModifierListStub[mask=0]
PsiClassStub[name=Modifiers fqn=pack.Modifiers]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
@@ -1,6 +1,5 @@
PsiJavaFileStub [org.jetbrains.annotations]
PsiPackageStatementStub[org.jetbrains.annotations]
PsiModifierListStub[mask=0]
PsiClassStub[interface annotation name=Nullable fqn=org.jetbrains.annotations.Nullable]
PsiModifierListStub[mask=1025]
PsiAnnotationStub[@java.lang.annotation.Documented]
@@ -1,9 +0,0 @@
PsiJavaFileStub [com.mylib]
PsiPackageStatementStub[com.mylib]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@org.jspecify.annotations.NullMarked]
PsiClassStub[interface name=package-info fqn=com.mylib.package-info]
PsiModifierListStub[mask=5120]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
@@ -1,8 +0,0 @@
PsiJavaFileStub [com.mylib]
PsiPackageStatementStub[com.mylib]
PsiModifierListStub[mask=0]
PsiClassStub[interface name=package-info fqn=com.mylib.package-info]
PsiModifierListStub[mask=5120]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
@@ -1,6 +1,5 @@
PsiJavaFileStub [junit.framework]
PsiPackageStatementStub[junit.framework]
PsiModifierListStub[mask=0]
PsiClassStub[name=TestSuite fqn=junit.framework.TestSuite]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
@@ -1,6 +1,5 @@
PsiJavaFileStub [java.util.concurrent]
PsiPackageStatementStub[java.util.concurrent]
PsiModifierListStub[mask=0]
PsiClassStub[enum name=TimeUnit fqn=java.util.concurrent.TimeUnit]
PsiModifierListStub[mask=1025]
PsiTypeParameterListStub
@@ -1,6 +1,5 @@
PsiJavaFileStub [java.util]
PsiPackageStatementStub[java.util]
PsiModifierListStub[mask=0]
PsiClassStub[name=Collections fqn=java.util.Collections]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
@@ -1,6 +1,5 @@
PsiJavaFileStub [java.util]
PsiPackageStatementStub[java.util]
PsiModifierListStub[mask=0]
PsiClassStub[name=HashMap fqn=java.util.HashMap]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
@@ -1,6 +1,5 @@
PsiJavaFileStub [java.util]
PsiPackageStatementStub[java.util]
PsiModifierListStub[mask=0]
PsiClassStub[interface name=List fqn=java.util.List]
PsiModifierListStub[mask=1025]
PsiTypeParameterListStub
@@ -1,6 +1,5 @@
PsiJavaFileStub [java.util]
PsiPackageStatementStub[java.util]
PsiModifierListStub[mask=0]
PsiClassStub[interface name=Map fqn=java.util.Map]
PsiModifierListStub[mask=1025]
PsiTypeParameterListStub
@@ -1,7 +1,5 @@
PsiJavaFile:ExtraOpeningBraceInMethod.java
PsiPackageStatement:foo
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:foo
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:ImplicitClass3.java
PsiPackageStatement:pack1.pack2
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:pack1.pack2
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:ImplicitClass4.java
PsiPackageStatement:pack1.pack2
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:pack1.pack2
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:ImplicitClass5.java
PsiErrorElement:'class' or 'interface' expected
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiImportList
@@ -1,7 +1,5 @@
java.FILE
ERROR_ELEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
IMPORT_LIST
@@ -1,7 +1,5 @@
PsiJavaFile:IncompleteAnnotation.java
PsiPackageStatement:foo
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:foo
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:BindBeforeClass1.java
PsiPackageStatement:p
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:p
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:BindBeforeClass4.java
PsiPackageStatement:p
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:p
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:MarkdownWithDocCommentAfterMarkdown.java
PsiPackageStatement:test.pkg
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:test.pkg
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:MarkdownWithDocCommentBeforeMarkdown.java
PsiPackageStatement:test.pkg
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:test.pkg
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:OnlyMarkdownAfterMarkdown.java
PsiPackageStatement:test.pkg
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:test.pkg
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:OnlyMarkdownBeforeMarkdown.java
PsiPackageStatement:test.pkg
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:test.pkg
@@ -1,7 +1,5 @@
java.FILE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -6,8 +6,6 @@ PsiJavaFile:BindDocComment1.java
PsiDocToken:DOC_COMMENT_END('*/')
PsiWhiteSpace('\n')
PsiPackageStatement:a
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:a
@@ -6,8 +6,6 @@ test.java.file
DOC_COMMENT_END
WHITE_SPACE
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:ExtraSemicolons.java
PsiPackageStatement:p
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:p
@@ -1,7 +1,5 @@
test.java.file
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:FileWithClass.java
PsiPackageStatement:a
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:a
@@ -1,7 +1,5 @@
test.java.file
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:Package.java
PsiPackageStatement:a.b.c
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:a.b.c
@@ -1,7 +1,5 @@
test.java.file
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:UnclosedPackage0.java
PsiErrorElement:'class' or 'interface' expected
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiImportList
<empty list>
@@ -1,7 +1,5 @@
test.java.file
ERROR_ELEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
IMPORT_LIST
<empty list>
@@ -1,7 +1,5 @@
PsiJavaFile:UnclosedPackage1.java
PsiPackageStatement:a
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:a
@@ -1,7 +1,5 @@
test.java.file
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -1,7 +1,5 @@
PsiJavaFile:Packaged.java
PsiPackageStatement:pkg
PsiModifierList:
<empty list>
PsiKeyword:package('package')
PsiWhiteSpace(' ')
PsiJavaCodeReferenceElement:pkg
@@ -1,7 +1,5 @@
test.java.file
PACKAGE_STATEMENT
MODIFIER_LIST
<empty list>
PACKAGE_KEYWORD
WHITE_SPACE
JAVA_CODE_REFERENCE
@@ -50,8 +50,7 @@ public class ClsStubBuilderTest extends LightJavaCodeInsightTestCase {
public void testModifiers() { doTest("../repo/pack/" + getTestName(false)); }
public void testModuleInfo() { doTest("module-info"); }
public void testPackageInfoWithAnnotations() { doTest("packageInfoWithAnnotations/package-info"); }
public void testPackageInfoWithoutAnnotations() { doTest("packageInfoWithoutAnnotations/package-info"); }
public void testPackageInfo() { doTest("package-info"); }
private void doClassTest(String className) {
PsiClass aClass = getJavaFacade().findClass(className);
@@ -64,7 +64,6 @@ public class JavaStubBuilderTest extends LightIdeaTestCase {
"""
PsiJavaFileStub [p]
PACKAGE_STATEMENT:PsiPackageStatementStub[p]
MODIFIER_LIST:PsiModifierListStub[mask=0]
IMPORT_LIST:PsiImportListStub
IMPORT_STATEMENT:PsiImportStatementStub[a.b]
IMPORT_STATIC_STATEMENT:PsiImportStatementStub[static c.d.*]
@@ -83,7 +82,6 @@ public class JavaStubBuilderTest extends LightIdeaTestCase {
"""
PsiJavaFileStub [p]
PACKAGE_STATEMENT:PsiPackageStatementStub[p]
MODIFIER_LIST:PsiModifierListStub[mask=0]
IMPORT_LIST:PsiImportListStub
CLASS:PsiClassStub[name=A fqn=p.A]
MODIFIER_LIST:PsiModifierListStub[mask=0]