Make JetSimpleNameExpression a trait
This commit is contained in:
@@ -18,4 +18,4 @@ package org.jetbrains.jet.lang.psi
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
|
||||
public class JetLabelReferenceExpression(node: ASTNode) : JetSimpleNameExpression(node)
|
||||
public class JetLabelReferenceExpression(node: ASTNode) : JetSimpleNameExpressionImpl(node)
|
||||
|
||||
@@ -18,4 +18,4 @@ package org.jetbrains.jet.lang.psi
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
|
||||
public class JetNameReferenceExpression(node: ASTNode) : JetSimpleNameExpression(node)
|
||||
public class JetNameReferenceExpression(node: ASTNode) : JetSimpleNameExpressionImpl(node)
|
||||
@@ -18,4 +18,4 @@ package org.jetbrains.jet.lang.psi
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
|
||||
public class JetOperationReferenceExpression(node: ASTNode) : JetSimpleNameExpression(node)
|
||||
public class JetOperationReferenceExpression(node: ASTNode) : JetSimpleNameExpressionImpl(node)
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.jetbrains.jet.lexer.JetTokens
|
||||
import org.jetbrains.jet.lexer.JetTokens.*
|
||||
import org.jetbrains.jet.lang.types.expressions.OperatorConventions
|
||||
|
||||
public abstract class JetSimpleNameExpression(node: ASTNode) : JetExpressionImpl(node), JetReferenceExpression {
|
||||
public trait JetSimpleNameExpression : JetReferenceExpression {
|
||||
|
||||
public fun getReceiverExpression(): JetExpression? {
|
||||
val parent = getParent()
|
||||
@@ -86,24 +86,30 @@ public abstract class JetSimpleNameExpression(node: ASTNode) : JetExpressionImpl
|
||||
return Name.identifierNoValidate(name)
|
||||
}
|
||||
|
||||
public fun getReferencedNameElement(): PsiElement {
|
||||
return findChildByType(REFERENCE_TOKENS) ?:
|
||||
findChildByType(JetExpressionParsing.ALL_OPERATIONS) ?:
|
||||
this
|
||||
}
|
||||
public fun getReferencedNameElement(): PsiElement
|
||||
|
||||
public fun getIdentifier(): PsiElement? {
|
||||
return findChildByType(JetTokens.IDENTIFIER)
|
||||
}
|
||||
public fun getIdentifier(): PsiElement?
|
||||
|
||||
public fun getReferencedNameElementType(): IElementType {
|
||||
return getReferencedNameElement().getNode()!!.getElementType()!!
|
||||
}
|
||||
}
|
||||
|
||||
abstract class JetSimpleNameExpressionImpl(node: ASTNode) : JetExpressionImpl(node), JetSimpleNameExpression {
|
||||
public override fun getIdentifier(): PsiElement? {
|
||||
return findChildByType(JetTokens.IDENTIFIER)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: JetVisitor<R, D>, data: D?): R {
|
||||
return visitor.visitSimpleNameExpression(this, data) as R
|
||||
}
|
||||
|
||||
public override fun getReferencedNameElement(): PsiElement {
|
||||
return findChildByType(REFERENCE_TOKENS) ?:
|
||||
findChildByType(JetExpressionParsing.ALL_OPERATIONS) ?:
|
||||
this
|
||||
}
|
||||
|
||||
class object {
|
||||
public val REFERENCE_TOKENS: TokenSet = TokenSet.create(LABEL_IDENTIFIER, IDENTIFIER, FIELD_IDENTIFIER, THIS_KEYWORD, SUPER_KEYWORD)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user