Stubs for JetClassObject

This commit is contained in:
Pavel V. Talanov
2014-03-28 16:44:23 +04:00
parent 8835063188
commit 1661a2e4f5
5 changed files with 12 additions and 4 deletions
@@ -36,7 +36,7 @@ public interface JetNodeTypes {
IElementType OBJECT_DECLARATION = JetStubElementTypes.OBJECT_DECLARATION;
JetNodeType OBJECT_DECLARATION_NAME = new JetNodeType("OBJECT_DECLARATION_NAME", JetObjectDeclarationName.class);
JetNodeType CLASS_OBJECT = new JetNodeType("CLASS_OBJECT", JetClassObject.class);
IElementType CLASS_OBJECT = JetStubElementTypes.CLASS_OBJECT;
IElementType ENUM_ENTRY = JetStubElementTypes.ENUM_ENTRY;
JetNodeType ANONYMOUS_INITIALIZER = new JetNodeType("ANONYMOUS_INITIALIZER", JetClassInitializer.class);
@@ -803,7 +803,7 @@ public class JetParsing extends AbstractJetParsing {
* : modifiers "class" object
* ;
*/
private JetNodeType parseClassObject() {
private IElementType parseClassObject() {
assert _at(CLASS_KEYWORD) && lookahead(1) == OBJECT_KEYWORD;
advance(); // CLASS_KEYWORD
@@ -21,13 +21,19 @@ import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetNodeTypes;
import org.jetbrains.jet.lang.psi.stubs.PsiJetPlaceHolderStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
import org.jetbrains.jet.lexer.JetTokens;
public class JetClassObject extends JetDeclarationImpl implements JetStatementExpression {
public class JetClassObject extends JetDeclarationStub<PsiJetPlaceHolderStub<JetClassObject>> implements JetStatementExpression {
public JetClassObject(@NotNull ASTNode node) {
super(node);
}
public JetClassObject(@NotNull PsiJetPlaceHolderStub<JetClassObject> stub) {
super(stub, JetStubElementTypes.CLASS_OBJECT);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitClassObject(this, data);
@@ -26,6 +26,8 @@ public interface JetStubElementTypes {
JetPropertyElementType PROPERTY = new JetPropertyElementType("PROPERTY");
JetClassElementType ENUM_ENTRY = new JetClassElementType("ENUM_ENTRY");
JetObjectElementType OBJECT_DECLARATION = new JetObjectElementType("OBJECT_DECLARATION");
JetPlaceHolderStubElementType<JetClassObject> CLASS_OBJECT =
new JetPlaceHolderStubElementType<JetClassObject>("CLASS_OBJECT", JetClassObject.class);
JetParameterElementType VALUE_PARAMETER = new JetParameterElementType("VALUE_PARAMETER");
JetPlaceHolderStubElementType<JetParameterList> VALUE_PARAMETER_LIST =
@@ -62,7 +62,7 @@ public class StubIndexServiceImpl implements StubIndexService {
FqName fqName = stub.getFqName();
if (stub.isClassObject()) {
StubElement parentClassStub = stub.getParentStub().getParentStub();
StubElement parentClassStub = stub.getParentStub().getParentStub().getParentStub();
assert parentClassStub instanceof PsiJetStubWithFqName<?>
: "Something but a class/object is a parent to class object stub: " + parentClassStub;