Don't override StubBasedPsiElementBase.getStub

#KT-9575 Fixed
This commit is contained in:
Pavel V. Talanov
2015-10-14 15:20:57 +03:00
parent 890ae3e914
commit bfcabad148
3 changed files with 11 additions and 14 deletions
@@ -30,18 +30,19 @@ public open class JetClass : JetClassOrObject {
public constructor(node: ASTNode) : super(node) public constructor(node: ASTNode) : super(node)
public constructor(stub: KotlinClassStub) : super(stub, JetStubElementTypes.CLASS) public constructor(stub: KotlinClassStub) : super(stub, JetStubElementTypes.CLASS)
override fun getStub(): KotlinClassStub? = super.getStub() as? KotlinClassStub
override fun <R, D> accept(visitor: JetVisitor<R, D>, data: D): R { override fun <R, D> accept(visitor: JetVisitor<R, D>, data: D): R {
return visitor.visitClass(this, data) return visitor.visitClass(this, data)
} }
private val _stub: KotlinClassStub?
get() = stub as? KotlinClassStub
public fun getColon(): PsiElement? = findChildByType(JetTokens.COLON) public fun getColon(): PsiElement? = findChildByType(JetTokens.COLON)
public fun getProperties(): List<JetProperty> = getBody()?.getProperties().orEmpty() public fun getProperties(): List<JetProperty> = getBody()?.getProperties().orEmpty()
public fun isInterface(): Boolean = public fun isInterface(): Boolean =
getStub()?.isInterface() ?: (findChildByType<PsiElement>(JetTokens.INTERFACE_KEYWORD) != null) _stub?.isInterface() ?: (findChildByType<PsiElement>(JetTokens.INTERFACE_KEYWORD) != null)
public fun isEnum(): Boolean = hasModifier(JetTokens.ENUM_KEYWORD) public fun isEnum(): Boolean = hasModifier(JetTokens.ENUM_KEYWORD)
public fun isSealed(): Boolean = hasModifier(JetTokens.SEALED_KEYWORD) public fun isSealed(): Boolean = hasModifier(JetTokens.SEALED_KEYWORD)
@@ -17,16 +17,14 @@
package org.jetbrains.kotlin.psi; package org.jetbrains.kotlin.psi;
import com.intellij.lang.ASTNode; import com.intellij.lang.ASTNode;
import com.intellij.openapi.util.Comparing;
import com.intellij.psi.PsiClass; import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiEnumConstant; import com.intellij.psi.PsiEnumConstant;
import com.intellij.psi.PsiField;
import com.intellij.util.IncorrectOperationException; import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub;
import org.jetbrains.kotlin.psi.stubs.KotlinClassStub; import org.jetbrains.kotlin.psi.stubs.KotlinClassStub;
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes; import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes;
@@ -44,7 +42,7 @@ public class JetEnumEntry extends JetClass {
@Override @Override
public String getName() { public String getName() {
KotlinClassStub classStub = getStub(); KotlinClassOrObjectStub<? extends JetClassOrObject> classStub = getStub();
if (classStub != null) { if (classStub != null) {
return classStub.getName(); return classStub.getName();
} }
@@ -28,13 +28,11 @@ public class JetObjectDeclaration : JetClassOrObject {
public constructor(node: ASTNode) : super(node) public constructor(node: ASTNode) : super(node)
public constructor(stub: KotlinObjectStub) : super(stub, JetStubElementTypes.OBJECT_DECLARATION) public constructor(stub: KotlinObjectStub) : super(stub, JetStubElementTypes.OBJECT_DECLARATION)
override fun getStub(): KotlinObjectStub? = super.getStub() as? KotlinObjectStub private val _stub: KotlinObjectStub?
get() = stub as? KotlinObjectStub
override fun getName(): String? { override fun getName(): String? {
val stub = stub _stub?.name?.let { return it }
if (stub != null) {
return stub.name
}
val nameAsDeclaration = getNameAsDeclaration() val nameAsDeclaration = getNameAsDeclaration()
if (nameAsDeclaration == null && isCompanion()) { if (nameAsDeclaration == null && isCompanion()) {
@@ -60,7 +58,7 @@ public class JetObjectDeclaration : JetClassOrObject {
} }
} }
public fun isCompanion(): Boolean = stub?.isCompanion() ?: hasModifier(JetTokens.COMPANION_KEYWORD) public fun isCompanion(): Boolean = _stub?.isCompanion() ?: hasModifier(JetTokens.COMPANION_KEYWORD)
override fun getTextOffset(): Int = nameIdentifier?.textRange?.startOffset override fun getTextOffset(): Int = nameIdentifier?.textRange?.startOffset
?: getObjectKeyword().textRange.startOffset ?: getObjectKeyword().textRange.startOffset
@@ -69,7 +67,7 @@ public class JetObjectDeclaration : JetClassOrObject {
return visitor.visitObjectDeclaration(this, data) return visitor.visitObjectDeclaration(this, data)
} }
public fun isObjectLiteral(): Boolean = stub?.isObjectLiteral() ?: (parent is JetObjectLiteralExpression) public fun isObjectLiteral(): Boolean = _stub?.isObjectLiteral() ?: (parent is JetObjectLiteralExpression)
public fun getObjectKeyword(): PsiElement = findChildByType(JetTokens.OBJECT_KEYWORD)!! public fun getObjectKeyword(): PsiElement = findChildByType(JetTokens.OBJECT_KEYWORD)!!
} }