mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] new module-info PSI
- a module may own a modifier list
This commit is contained in:
@@ -22,7 +22,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
*
|
||||
* @since 2016.3
|
||||
*/
|
||||
public interface PsiJavaModule extends NavigatablePsiElement, PsiNameIdentifierOwner, PsiJavaDocumentedElement {
|
||||
public interface PsiJavaModule extends NavigatablePsiElement, PsiNameIdentifierOwner, PsiModifierListOwner, PsiJavaDocumentedElement {
|
||||
String MODULE_INFO_CLASS = "module-info";
|
||||
String MODULE_INFO_FILE = MODULE_INFO_CLASS + ".java";
|
||||
String MODULE_INFO_CLS_FILE = MODULE_INFO_CLASS + ".class";
|
||||
|
||||
@@ -19,11 +19,13 @@ import com.intellij.navigation.ItemPresentation;
|
||||
import com.intellij.navigation.ItemPresentationProviders;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.java.stubs.JavaStubElementTypes;
|
||||
import com.intellij.psi.impl.java.stubs.PsiJavaModuleStub;
|
||||
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
|
||||
import com.intellij.psi.impl.source.tree.JavaElementType;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.stubs.StubElement;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.JBIterable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -95,6 +97,7 @@ public class ClsJavaModuleImpl extends ClsRepositoryPsiElement<PsiJavaModuleStub
|
||||
|
||||
setMirrorCheckingType(element, JavaElementType.MODULE);
|
||||
setMirror(getNameIdentifier(), mirror.getNameIdentifier());
|
||||
setMirror(getModifierList(), mirror.getModifierList());
|
||||
|
||||
setMirrors(newArrayList(getStub().getChildrenByType(JavaElementType.REQUIRES_STATEMENT, PsiRequiresStatement.EMPTY_ARRAY)),
|
||||
newArrayList(mirror.getRequires()));
|
||||
@@ -120,6 +123,18 @@ public class ClsJavaModuleImpl extends ClsRepositoryPsiElement<PsiJavaModuleStub
|
||||
throw cannotModifyException(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiModifierList getModifierList() {
|
||||
StubElement<PsiModifierList> childStub = getStub().findChildStubByType(JavaStubElementTypes.MODIFIER_LIST);
|
||||
return childStub != null ? childStub.getPsi() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasModifierProperty(@NotNull String name) {
|
||||
PsiModifierList modifierList = getModifierList();
|
||||
return modifierList != null && modifierList.hasModifierProperty(name);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public PsiDocComment getDocComment() {
|
||||
|
||||
@@ -102,6 +102,16 @@ public class LightJavaModule extends LightElement implements PsiJavaModule {
|
||||
throw new IncorrectOperationException("Cannot modify automatic module '" + getName() + "'");
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiModifierList getModifierList() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasModifierProperty(@NotNull String name) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemPresentation getPresentation() {
|
||||
return ItemPresentationProviders.getItemPresentation(this);
|
||||
|
||||
@@ -128,6 +128,17 @@ public class PsiJavaModuleImpl extends JavaStubPsiElement<PsiJavaModuleStub> imp
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiModifierList getModifierList() {
|
||||
return getStubOrPsiChild(JavaStubElementTypes.MODIFIER_LIST);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasModifierProperty(@NotNull String name) {
|
||||
PsiModifierList modifierList = getModifierList();
|
||||
return modifierList != null && modifierList.hasModifierProperty(name);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public PsiDocComment getDocComment() {
|
||||
|
||||
Reference in New Issue
Block a user