Add isAnnotation to class stub
This commit is contained in:
@@ -154,6 +154,11 @@ public class JetClass extends JetTypeParameterListOwnerStub<PsiJetClassStub> imp
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAnnotation() {
|
public boolean isAnnotation() {
|
||||||
|
PsiJetClassStub stub = getStub();
|
||||||
|
if (stub != null) {
|
||||||
|
return stub.isAnnotation();
|
||||||
|
}
|
||||||
|
|
||||||
return hasModifier(JetTokens.ANNOTATION_KEYWORD);
|
return hasModifier(JetTokens.ANNOTATION_KEYWORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ public interface PsiJetClassStub extends NamedStub<JetClass> {
|
|||||||
|
|
||||||
boolean isTrait();
|
boolean isTrait();
|
||||||
|
|
||||||
|
boolean isAnnotation();
|
||||||
|
|
||||||
boolean isEnumEntry();
|
boolean isEnumEntry();
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+4
-2
@@ -58,7 +58,7 @@ public class JetClassElementType extends JetStubElementType<PsiJetClassStub, Jet
|
|||||||
FqName fqName = JetPsiUtil.getFQName(psi);
|
FqName fqName = JetPsiUtil.getFQName(psi);
|
||||||
boolean isEnumEntry = psi instanceof JetEnumEntry;
|
boolean isEnumEntry = psi instanceof JetEnumEntry;
|
||||||
return new PsiJetClassStubImpl(getStubType(isEnumEntry), parentStub, fqName != null ? fqName.getFqName() : null, psi.getName(),
|
return new PsiJetClassStubImpl(getStubType(isEnumEntry), parentStub, fqName != null ? fqName.getFqName() : null, psi.getName(),
|
||||||
psi.getSuperNames(), psi.isTrait(), isEnumEntry);
|
psi.getSuperNames(), psi.isTrait(), isEnumEntry, psi.isAnnotation());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -67,6 +67,7 @@ public class JetClassElementType extends JetStubElementType<PsiJetClassStub, Jet
|
|||||||
dataStream.writeName(stub.getQualifiedName());
|
dataStream.writeName(stub.getQualifiedName());
|
||||||
dataStream.writeBoolean(stub.isTrait());
|
dataStream.writeBoolean(stub.isTrait());
|
||||||
dataStream.writeBoolean(stub.isEnumEntry());
|
dataStream.writeBoolean(stub.isEnumEntry());
|
||||||
|
dataStream.writeBoolean(stub.isAnnotation());
|
||||||
|
|
||||||
List<String> superNames = stub.getSuperNames();
|
List<String> superNames = stub.getSuperNames();
|
||||||
dataStream.writeVarInt(superNames.size());
|
dataStream.writeVarInt(superNames.size());
|
||||||
@@ -81,6 +82,7 @@ public class JetClassElementType extends JetStubElementType<PsiJetClassStub, Jet
|
|||||||
StringRef qualifiedName = dataStream.readName();
|
StringRef qualifiedName = dataStream.readName();
|
||||||
boolean isTrait = dataStream.readBoolean();
|
boolean isTrait = dataStream.readBoolean();
|
||||||
boolean isEnumEntry = dataStream.readBoolean();
|
boolean isEnumEntry = dataStream.readBoolean();
|
||||||
|
boolean isAnnotation = dataStream.readBoolean();
|
||||||
|
|
||||||
int superCount = dataStream.readVarInt();
|
int superCount = dataStream.readVarInt();
|
||||||
StringRef[] superNames = StringRef.createArray(superCount);
|
StringRef[] superNames = StringRef.createArray(superCount);
|
||||||
@@ -88,7 +90,7 @@ public class JetClassElementType extends JetStubElementType<PsiJetClassStub, Jet
|
|||||||
superNames[i] = dataStream.readName();
|
superNames[i] = dataStream.readName();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PsiJetClassStubImpl(getStubType(isEnumEntry), parentStub, qualifiedName, name, superNames, isTrait, isEnumEntry);
|
return new PsiJetClassStubImpl(getStubType(isEnumEntry), parentStub, qualifiedName, name, superNames, isTrait, isEnumEntry, isAnnotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@ import java.io.IOException;
|
|||||||
* @author Nikolay Krasko
|
* @author Nikolay Krasko
|
||||||
*/
|
*/
|
||||||
public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> {
|
public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> {
|
||||||
public static final int STUB_VERSION = 14;
|
public static final int STUB_VERSION = 15;
|
||||||
|
|
||||||
public JetFileElementType() {
|
public JetFileElementType() {
|
||||||
super("jet.FILE", JetLanguage.INSTANCE);
|
super("jet.FILE", JetLanguage.INSTANCE);
|
||||||
|
|||||||
+15
-4
@@ -39,6 +39,7 @@ public class PsiJetClassStubImpl extends StubBase<JetClass> implements PsiJetCla
|
|||||||
private final StringRef[] superNames;
|
private final StringRef[] superNames;
|
||||||
private final boolean isTrait;
|
private final boolean isTrait;
|
||||||
private final boolean isEnumEntry;
|
private final boolean isEnumEntry;
|
||||||
|
private final boolean isAnnotation;
|
||||||
|
|
||||||
public PsiJetClassStubImpl(
|
public PsiJetClassStubImpl(
|
||||||
JetClassElementType type,
|
JetClassElementType type,
|
||||||
@@ -46,9 +47,9 @@ public class PsiJetClassStubImpl extends StubBase<JetClass> implements PsiJetCla
|
|||||||
@Nullable final String qualifiedName,
|
@Nullable final String qualifiedName,
|
||||||
String name,
|
String name,
|
||||||
List<String> superNames,
|
List<String> superNames,
|
||||||
boolean isTrait, boolean isEnumEntry) {
|
boolean isTrait, boolean isEnumEntry, boolean isAnnotation) {
|
||||||
this(type, parent, StringRef.fromString(qualifiedName), StringRef.fromString(name), wrapStrings(superNames),
|
this(type, parent, StringRef.fromString(qualifiedName), StringRef.fromString(name), wrapStrings(superNames),
|
||||||
isTrait, isEnumEntry);
|
isTrait, isEnumEntry, isAnnotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PsiJetClassStubImpl(
|
public PsiJetClassStubImpl(
|
||||||
@@ -57,14 +58,15 @@ public class PsiJetClassStubImpl extends StubBase<JetClass> implements PsiJetCla
|
|||||||
StringRef qualifiedName,
|
StringRef qualifiedName,
|
||||||
StringRef name,
|
StringRef name,
|
||||||
StringRef[] superNames,
|
StringRef[] superNames,
|
||||||
boolean isTrait, boolean isEnumEntry
|
boolean isTrait, boolean isEnumEntry,
|
||||||
) {
|
boolean isAnnotation) {
|
||||||
super(parent, type);
|
super(parent, type);
|
||||||
this.qualifiedName = qualifiedName;
|
this.qualifiedName = qualifiedName;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.superNames = superNames;
|
this.superNames = superNames;
|
||||||
this.isTrait = isTrait;
|
this.isTrait = isTrait;
|
||||||
this.isEnumEntry = isEnumEntry;
|
this.isEnumEntry = isEnumEntry;
|
||||||
|
this.isAnnotation = isAnnotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static StringRef[] wrapStrings(List<String> names) {
|
private static StringRef[] wrapStrings(List<String> names) {
|
||||||
@@ -85,6 +87,11 @@ public class PsiJetClassStubImpl extends StubBase<JetClass> implements PsiJetCla
|
|||||||
return isTrait;
|
return isTrait;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAnnotation() {
|
||||||
|
return isAnnotation;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnumEntry() {
|
public boolean isEnumEntry() {
|
||||||
return isEnumEntry;
|
return isEnumEntry;
|
||||||
@@ -118,6 +125,10 @@ public class PsiJetClassStubImpl extends StubBase<JetClass> implements PsiJetCla
|
|||||||
builder.append("trait ");
|
builder.append("trait ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isAnnotation()) {
|
||||||
|
builder.append("isAnnotation ");
|
||||||
|
}
|
||||||
|
|
||||||
builder.append("name=").append(getName());
|
builder.append("name=").append(getName());
|
||||||
builder.append(" fqn=").append(getQualifiedName());
|
builder.append(" fqn=").append(getQualifiedName());
|
||||||
builder.append(" superNames=").append("[").append(StringUtil.join(ArrayUtil.toStringArray(getSuperNames()))).append("]");
|
builder.append(" superNames=").append("[").append(StringUtil.join(ArrayUtil.toStringArray(getSuperNames()))).append("]");
|
||||||
|
|||||||
@@ -129,6 +129,13 @@ public class JetStubsTest extends LightCodeInsightFixtureTestCase {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testAnnotationClass() {
|
||||||
|
doBuildTest("annotation class Test {}",
|
||||||
|
"PsiJetFileStubImpl[package=]\n" +
|
||||||
|
" CLASS:PsiJetClassStubImpl[isAnnotation name=Test fqn=Test superNames=[]]\n" +
|
||||||
|
" TYPE_PARAMETER_LIST:PsiJetTypeParameterListStubImpl\n");
|
||||||
|
}
|
||||||
|
|
||||||
private void doBuildTest(@NonNls final String source, @NonNls @NotNull final String tree) {
|
private void doBuildTest(@NonNls final String source, @NonNls @NotNull final String tree) {
|
||||||
final JetFile file = (JetFile) createLightFile(JetFileType.INSTANCE, source);
|
final JetFile file = (JetFile) createLightFile(JetFileType.INSTANCE, source);
|
||||||
final FileASTNode fileNode = file.getNode();
|
final FileASTNode fileNode = file.getNode();
|
||||||
|
|||||||
Reference in New Issue
Block a user