From 1661a2e4f5dd66faa530ec958a22d2024f8a7c17 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 28 Mar 2014 16:44:23 +0400 Subject: [PATCH] Stubs for JetClassObject --- compiler/frontend/src/org/jetbrains/jet/JetNodeTypes.java | 2 +- .../src/org/jetbrains/jet/lang/parsing/JetParsing.java | 2 +- .../src/org/jetbrains/jet/lang/psi/JetClassObject.java | 8 +++++++- .../jet/lang/psi/stubs/elements/JetStubElementTypes.java | 2 ++ .../jet/plugin/stubindex/StubIndexServiceImpl.java | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/JetNodeTypes.java b/compiler/frontend/src/org/jetbrains/jet/JetNodeTypes.java index 0e117d94e70..029d5072b55 100644 --- a/compiler/frontend/src/org/jetbrains/jet/JetNodeTypes.java +++ b/compiler/frontend/src/org/jetbrains/jet/JetNodeTypes.java @@ -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); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java index d7c35537f8e..61bb2abfb4e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -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 diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassObject.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassObject.java index e41cf84f7f5..71c5dbedbf1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassObject.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassObject.java @@ -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> implements JetStatementExpression { public JetClassObject(@NotNull ASTNode node) { super(node); } + public JetClassObject(@NotNull PsiJetPlaceHolderStub stub) { + super(stub, JetStubElementTypes.CLASS_OBJECT); + } + @Override public R accept(@NotNull JetVisitor visitor, D data) { return visitor.visitClassObject(this, data); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetStubElementTypes.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetStubElementTypes.java index 4794bc1237f..dbda8cffb28 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetStubElementTypes.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetStubElementTypes.java @@ -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 CLASS_OBJECT = + new JetPlaceHolderStubElementType("CLASS_OBJECT", JetClassObject.class); JetParameterElementType VALUE_PARAMETER = new JetParameterElementType("VALUE_PARAMETER"); JetPlaceHolderStubElementType VALUE_PARAMETER_LIST = diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java b/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java index 928896073cb..b8dbed61f19 100644 --- a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java +++ b/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java @@ -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;