diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetClass.java b/idea/src/org/jetbrains/jet/lang/psi/JetClass.java index 480ee2259cf..edf9399f7d6 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetClass.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetClass.java @@ -11,11 +11,12 @@ import java.util.List; /** * @author max */ -public class JetClass extends JetTypeParameterListOwner { +public class JetClass extends JetTypeParameterListOwner implements JetClassOrObject { public JetClass(@NotNull ASTNode node) { super(node); } + @Override public List getDeclarations() { JetClassBody body = (JetClassBody) findChildByType(JetNodeTypes.CLASS_BODY); if (body == null) return Collections.emptyList(); @@ -39,4 +40,17 @@ public class JetClass extends JetTypeParameterListOwner { if (list == null) return Collections.emptyList(); return list.getParameters(); } + + @Override + @Nullable + public JetDelegationSpecifierList getDelegationSpecifierList() { + return (JetDelegationSpecifierList) findChildByType(JetNodeTypes.DELEGATION_SPECIFIER_LIST); + } + + @Override + @NotNull + public List getDelegationSpecifiers() { + JetDelegationSpecifierList list = getDelegationSpecifierList(); + return list != null ? list.getDelegationSpecifiers() : Collections.emptyList(); + } } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetClassOrObject.java b/idea/src/org/jetbrains/jet/lang/psi/JetClassOrObject.java new file mode 100644 index 00000000000..25efc2e3f61 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetClassOrObject.java @@ -0,0 +1,19 @@ +package org.jetbrains.jet.lang.psi; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +/** + * @author max + */ +public interface JetClassOrObject { + List getDeclarations(); + + @Nullable + JetDelegationSpecifierList getDelegationSpecifierList(); + + @NotNull + List getDelegationSpecifiers(); +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifierList.java b/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifierList.java index b86e19bf35a..9892b1778ec 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifierList.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifierList.java @@ -1,8 +1,11 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; +import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; +import java.util.List; + /** * @author max */ @@ -15,4 +18,8 @@ public class JetDelegationSpecifierList extends JetElement { public void accept(JetVisitor visitor) { visitor.visitDelegationSpecifierList(this); } + + public List getDelegationSpecifiers() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, JetDelegationSpecifier.class); + } } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetObjectLiteralExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetObjectLiteralExpression.java index 8721f89599a..170e60e31a6 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetObjectLiteralExpression.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetObjectLiteralExpression.java @@ -2,11 +2,16 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.JetNodeTypes; + +import java.util.Collections; +import java.util.List; /** * @author max */ -public class JetObjectLiteralExpression extends JetExpression { +public class JetObjectLiteralExpression extends JetExpression implements JetClassOrObject { public JetObjectLiteralExpression(@NotNull ASTNode node) { super(node); } @@ -15,4 +20,25 @@ public class JetObjectLiteralExpression extends JetExpression { public void accept(JetVisitor visitor) { visitor.visitObjectLiteralExpression(this); } + + @Override + @Nullable + public JetDelegationSpecifierList getDelegationSpecifierList() { + return (JetDelegationSpecifierList) findChildByType(JetNodeTypes.DELEGATION_SPECIFIER_LIST); + } + + @Override + @NotNull + public List getDelegationSpecifiers() { + JetDelegationSpecifierList list = getDelegationSpecifierList(); + return list != null ? list.getDelegationSpecifiers() : Collections.emptyList(); + } + + @Override + public List getDeclarations() { + JetClassBody body = (JetClassBody) findChildByType(JetNodeTypes.CLASS_BODY); + if (body == null) return Collections.emptyList(); + + return body.getDeclarations(); + } }