clean up psi package
This commit is contained in:
committed by
Mikhail Glukhikh
parent
e10d10c49e
commit
ba7f60040a
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -28,8 +28,8 @@ fun KtElement.getDebugText(): String {
|
||||
return text
|
||||
}
|
||||
if (this is KtPackageDirective) {
|
||||
val fqName = getFqName()
|
||||
if (fqName.isRoot()) {
|
||||
val fqName = fqName
|
||||
if (fqName.isRoot) {
|
||||
return ""
|
||||
}
|
||||
return "package " + fqName.asString()
|
||||
@@ -54,12 +54,9 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
}
|
||||
|
||||
override fun visitImportDirective(importDirective: KtImportDirective, data: Unit?): String? {
|
||||
val importPath = importDirective.getImportPath()
|
||||
if (importPath == null) {
|
||||
return "import <invalid>"
|
||||
}
|
||||
val aliasStr = if (importPath.hasAlias()) " as " + importPath.getAlias()!!.asString() else ""
|
||||
return "import ${importPath.getPathStr()}" + aliasStr
|
||||
val importPath = importDirective.importPath ?: return "import <invalid>"
|
||||
val aliasStr = if (importPath.hasAlias()) " as " + importPath.alias!!.asString() else ""
|
||||
return "import ${importPath.pathStr}" + aliasStr
|
||||
}
|
||||
|
||||
override fun visitImportList(importList: KtImportList, data: Unit?): String? {
|
||||
@@ -67,7 +64,7 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
}
|
||||
|
||||
override fun visitAnnotationEntry(annotationEntry: KtAnnotationEntry, data: Unit?): String? {
|
||||
return render(annotationEntry, annotationEntry.getCalleeExpression(), annotationEntry.getTypeArgumentList())
|
||||
return render(annotationEntry, annotationEntry.calleeExpression, annotationEntry.typeArgumentList)
|
||||
}
|
||||
|
||||
override fun visitTypeReference(typeReference: KtTypeReference, data: Unit?): String? {
|
||||
@@ -83,7 +80,7 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
}
|
||||
|
||||
override fun visitUserType(userType: KtUserType, data: Unit?): String? {
|
||||
return render(userType, userType.getQualifier(), userType.getReferenceExpression(), userType.getTypeArgumentList())
|
||||
return render(userType, userType.qualifier, userType.referenceExpression, userType.typeArgumentList)
|
||||
}
|
||||
|
||||
override fun visitDynamicType(type: KtDynamicType, data: Unit?): String? {
|
||||
@@ -95,11 +92,11 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
}
|
||||
|
||||
override fun visitConstructorCalleeExpression(constructorCalleeExpression: KtConstructorCalleeExpression, data: Unit?): String? {
|
||||
return render(constructorCalleeExpression, constructorCalleeExpression.getConstructorReferenceExpression())
|
||||
return render(constructorCalleeExpression, constructorCalleeExpression.constructorReferenceExpression)
|
||||
}
|
||||
|
||||
override fun visitSuperTypeListEntry(specifier: KtSuperTypeListEntry, data: Unit?): String? {
|
||||
return render(specifier, specifier.getTypeReference())
|
||||
return render(specifier, specifier.typeReference)
|
||||
}
|
||||
|
||||
override fun visitSuperTypeList(list: KtSuperTypeList, data: Unit?): String? {
|
||||
@@ -125,34 +122,34 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
override fun visitEnumEntry(enumEntry: KtEnumEntry, data: Unit?): String? {
|
||||
return buildText {
|
||||
append("STUB: ")
|
||||
appendInn(enumEntry.getModifierList(), suffix = " ")
|
||||
appendInn(enumEntry.modifierList, suffix = " ")
|
||||
append("enum entry ")
|
||||
appendInn(enumEntry.getNameAsName())
|
||||
appendInn(enumEntry.getInitializerList(), prefix = " : ")
|
||||
appendInn(enumEntry.nameAsName)
|
||||
appendInn(enumEntry.initializerList, prefix = " : ")
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitFunctionType(functionType: KtFunctionType, data: Unit?): String? {
|
||||
return buildText {
|
||||
appendInn(functionType.getReceiverTypeReference(), suffix = ".")
|
||||
appendInn(functionType.getParameterList())
|
||||
appendInn(functionType.getReturnTypeReference(), prefix = " -> ")
|
||||
appendInn(functionType.receiverTypeReference, suffix = ".")
|
||||
appendInn(functionType.parameterList)
|
||||
appendInn(functionType.returnTypeReference, prefix = " -> ")
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitTypeParameter(parameter: KtTypeParameter, data: Unit?): String? {
|
||||
return buildText {
|
||||
appendInn(parameter.getModifierList(), suffix = " ")
|
||||
appendInn(parameter.getNameAsName())
|
||||
appendInn(parameter.getExtendsBound(), prefix = " : ")
|
||||
appendInn(parameter.modifierList, suffix = " ")
|
||||
appendInn(parameter.nameAsName)
|
||||
appendInn(parameter.extendsBound, prefix = " : ")
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitTypeProjection(typeProjection: KtTypeProjection, data: Unit?): String? {
|
||||
return buildText {
|
||||
val token = typeProjection.getProjectionKind().getToken()
|
||||
appendInn(token?.getValue())
|
||||
val typeReference = typeProjection.getTypeReference()
|
||||
val token = typeProjection.projectionKind.token
|
||||
appendInn(token?.value)
|
||||
val typeReference = typeProjection.typeReference
|
||||
if (token != null && typeReference != null) {
|
||||
append(" ")
|
||||
}
|
||||
@@ -195,17 +192,17 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
|
||||
override fun visitPropertyAccessor(accessor: KtPropertyAccessor, data: Unit?): String? {
|
||||
val containingProperty = KtStubbedPsiUtil.getContainingDeclaration(accessor, KtProperty::class.java)
|
||||
val what = (if (accessor.isGetter()) "getter" else "setter")
|
||||
val what = (if (accessor.isGetter) "getter" else "setter")
|
||||
return what + " for " + (containingProperty?.getDebugText() ?: "...")
|
||||
}
|
||||
|
||||
override fun visitClass(klass: KtClass, data: Unit?): String? {
|
||||
return buildText {
|
||||
append("STUB: ")
|
||||
appendInn(klass.getModifierList(), suffix = " ")
|
||||
appendInn(klass.modifierList, suffix = " ")
|
||||
append("class ")
|
||||
appendInn(klass.getNameAsName())
|
||||
appendInn(klass.getTypeParameterList())
|
||||
appendInn(klass.nameAsName)
|
||||
appendInn(klass.typeParameterList)
|
||||
appendInn(klass.getPrimaryConstructorModifierList(), prefix = " ", suffix = " ")
|
||||
appendInn(klass.getPrimaryConstructorParameterList())
|
||||
appendInn(klass.getSuperTypeList(), prefix = " : ")
|
||||
@@ -215,30 +212,30 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
override fun visitNamedFunction(function: KtNamedFunction, data: Unit?): String? {
|
||||
return buildText {
|
||||
append("STUB: ")
|
||||
appendInn(function.getModifierList(), suffix = " ")
|
||||
appendInn(function.modifierList, suffix = " ")
|
||||
append("fun ")
|
||||
|
||||
val typeParameterList = function.getTypeParameterList()
|
||||
val typeParameterList = function.typeParameterList
|
||||
if (function.hasTypeParameterListBeforeFunctionName()) {
|
||||
appendInn(typeParameterList, suffix = " ")
|
||||
}
|
||||
appendInn(function.getReceiverTypeReference(), suffix = ".")
|
||||
appendInn(function.getNameAsName())
|
||||
appendInn(function.receiverTypeReference, suffix = ".")
|
||||
appendInn(function.nameAsName)
|
||||
if (!function.hasTypeParameterListBeforeFunctionName()) {
|
||||
appendInn(typeParameterList)
|
||||
}
|
||||
appendInn(function.getValueParameterList())
|
||||
appendInn(function.getTypeReference(), prefix = ": ")
|
||||
appendInn(function.getTypeConstraintList(), prefix = " ")
|
||||
appendInn(function.valueParameterList)
|
||||
appendInn(function.typeReference, prefix = ": ")
|
||||
appendInn(function.typeConstraintList, prefix = " ")
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitObjectDeclaration(declaration: KtObjectDeclaration, data: Unit?): String? {
|
||||
return buildText {
|
||||
append("STUB: ")
|
||||
appendInn(declaration.getModifierList(), suffix = " ")
|
||||
appendInn(declaration.modifierList, suffix = " ")
|
||||
append("object ")
|
||||
appendInn(declaration.getNameAsName())
|
||||
appendInn(declaration.nameAsName)
|
||||
appendInn(declaration.getSuperTypeList(), prefix = " : ")
|
||||
}
|
||||
}
|
||||
@@ -246,11 +243,11 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
override fun visitParameter(parameter: KtParameter, data: Unit?): String? {
|
||||
return buildText {
|
||||
if (parameter.hasValOrVar()) {
|
||||
if (parameter.isMutable()) append("var ") else append("val ")
|
||||
if (parameter.isMutable) append("var ") else append("val ")
|
||||
}
|
||||
val name = parameter.getNameAsName()
|
||||
val name = parameter.nameAsName
|
||||
appendInn(name)
|
||||
val typeReference = parameter.getTypeReference()
|
||||
val typeReference = parameter.typeReference
|
||||
if (typeReference != null && name != null) {
|
||||
append(": ")
|
||||
}
|
||||
@@ -261,17 +258,17 @@ private object DebugTextBuildingVisitor : KtVisitor<String, Unit>() {
|
||||
override fun visitProperty(property: KtProperty, data: Unit?): String? {
|
||||
return buildText {
|
||||
append("STUB: ")
|
||||
appendInn(property.getModifierList(), suffix = " ")
|
||||
append(if (property.isVar()) "var " else "val ")
|
||||
appendInn(property.getNameAsName())
|
||||
appendInn(property.getTypeReference(), prefix = ": ")
|
||||
appendInn(property.modifierList, suffix = " ")
|
||||
append(if (property.isVar) "var " else "val ")
|
||||
appendInn(property.nameAsName)
|
||||
appendInn(property.typeReference, prefix = ": ")
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitTypeConstraint(constraint: KtTypeConstraint, data: Unit?): String? {
|
||||
return buildText {
|
||||
appendInn(constraint.getSubjectTypeParameterName())
|
||||
appendInn(constraint.getBoundTypeReference(), prefix = " : ")
|
||||
appendInn(constraint.subjectTypeParameterName)
|
||||
appendInn(constraint.boundTypeReference, prefix = " : ")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -63,10 +63,10 @@ object EditCommaSeparatedListHelper {
|
||||
if (anchor != null) {
|
||||
val index = allItems.indexOf(anchor)
|
||||
assert(index >= 0)
|
||||
anchorAfter = if (index > 0) allItems.get(index - 1) else null
|
||||
anchorAfter = if (index > 0) allItems[index - 1] else null
|
||||
}
|
||||
else {
|
||||
anchorAfter = allItems.get(allItems.size - 1)
|
||||
anchorAfter = allItems[allItems.size - 1]
|
||||
}
|
||||
}
|
||||
return addItemAfter(list, allItems, item, anchorAfter, prefix)
|
||||
@@ -74,9 +74,9 @@ object EditCommaSeparatedListHelper {
|
||||
|
||||
fun <TItem: KtElement> removeItem(item: TItem) {
|
||||
var comma = item.siblings(withItself = false).firstOrNull { it !is PsiWhiteSpace && it !is PsiComment }
|
||||
if (comma?.getNode()?.getElementType() != KtTokens.COMMA) {
|
||||
if (comma?.node?.elementType != KtTokens.COMMA) {
|
||||
comma = item.siblings(forward = false, withItself = false).firstOrNull { it !is PsiWhiteSpace && it !is PsiComment }
|
||||
if (comma?.getNode()?.getElementType() != KtTokens.COMMA) {
|
||||
if (comma?.node?.elementType != KtTokens.COMMA) {
|
||||
comma = null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,11 +16,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.psi.findDocComment
|
||||
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
|
||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import com.intellij.psi.PsiComment
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.psi.psiUtil.allChildren
|
||||
|
||||
fun findDocComment(declaration: KtDeclaration): KDoc? {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,13 +17,9 @@
|
||||
package org.jetbrains.kotlin.psi
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
import com.intellij.psi.impl.source.tree.TreeElement
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.lexer.KtKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinAnnotationEntryStub
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinAnnotationUseSiteTargetStub
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinPlaceHolderStub
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes
|
||||
|
||||
class KtAnnotationUseSiteTarget : KtElementImplStub<KotlinAnnotationUseSiteTargetStub> {
|
||||
@@ -44,8 +40,8 @@ class KtAnnotationUseSiteTarget : KtElementImplStub<KotlinAnnotationUseSiteTarge
|
||||
}
|
||||
}
|
||||
|
||||
val node = getFirstChild().getNode()
|
||||
return when (node.getElementType()) {
|
||||
val node = firstChild.node
|
||||
return when (node.elementType) {
|
||||
KtTokens.FIELD_KEYWORD -> AnnotationUseSiteTarget.FIELD
|
||||
KtTokens.FILE_KEYWORD -> AnnotationUseSiteTarget.FILE
|
||||
KtTokens.PROPERTY_KEYWORD -> AnnotationUseSiteTarget.PROPERTY
|
||||
@@ -55,7 +51,7 @@ class KtAnnotationUseSiteTarget : KtElementImplStub<KotlinAnnotationUseSiteTarge
|
||||
KtTokens.PARAM_KEYWORD -> AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER
|
||||
KtTokens.SETPARAM_KEYWORD -> AnnotationUseSiteTarget.SETTER_PARAMETER
|
||||
KtTokens.DELEGATE_KEYWORD -> AnnotationUseSiteTarget.PROPERTY_DELEGATE_FIELD
|
||||
else -> throw IllegalStateException("Unknown annotation target " + node.getText())
|
||||
else -> throw IllegalStateException("Unknown annotation target " + node.text)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -74,8 +74,7 @@ open class KtClass : KtClassOrObject {
|
||||
parts.add(current.name!!)
|
||||
current = PsiTreeUtil.getParentOfType<KtClassOrObject>(current, KtClassOrObject::class.java)
|
||||
}
|
||||
val file = containingFile
|
||||
if (file !is KtFile) return null
|
||||
val file = containingFile as? KtFile ?: return null
|
||||
val fileQualifiedName = file.packageFqName.asString()
|
||||
if (!fileQualifiedName.isEmpty()) {
|
||||
parts.add(fileQualifiedName)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -36,7 +36,7 @@ abstract class KtConstructor<T : KtConstructor<T>> : KtDeclarationStub<KotlinPla
|
||||
|
||||
override fun getValueParameterList() = getStubOrPsiChild(KtStubElementTypes.VALUE_PARAMETER_LIST)
|
||||
|
||||
override fun getValueParameters() = getValueParameterList()?.getParameters() ?: emptyList()
|
||||
override fun getValueParameters() = valueParameterList?.parameters ?: emptyList()
|
||||
|
||||
override fun getReceiverTypeReference() = null
|
||||
|
||||
@@ -51,9 +51,9 @@ abstract class KtConstructor<T : KtConstructor<T>> : KtDeclarationStub<KotlinPla
|
||||
|
||||
override fun getEqualsToken() = null
|
||||
|
||||
override fun hasBlockBody() = getBodyExpression() != null
|
||||
override fun hasBlockBody() = bodyExpression != null
|
||||
|
||||
override fun hasBody() = getBodyExpression() != null
|
||||
override fun hasBody() = bodyExpression != null
|
||||
|
||||
override fun hasDeclaredReturnType() = false
|
||||
|
||||
@@ -65,13 +65,13 @@ abstract class KtConstructor<T : KtConstructor<T>> : KtDeclarationStub<KotlinPla
|
||||
|
||||
override fun getTypeParameters() = emptyList<KtTypeParameter>()
|
||||
|
||||
override fun getName(): String? = getContainingClassOrObject().getName()
|
||||
override fun getName(): String? = getContainingClassOrObject().name
|
||||
|
||||
override fun getNameAsSafeName() = KtPsiUtil.safeName(getName())
|
||||
override fun getNameAsSafeName() = KtPsiUtil.safeName(name)
|
||||
|
||||
override fun getFqName() = null
|
||||
|
||||
override fun getNameAsName() = getNameAsSafeName()
|
||||
override fun getNameAsName() = nameAsSafeName
|
||||
|
||||
override fun getNameIdentifier() = null
|
||||
|
||||
@@ -82,15 +82,15 @@ abstract class KtConstructor<T : KtConstructor<T>> : KtDeclarationStub<KotlinPla
|
||||
|
||||
open fun getConstructorKeyword(): PsiElement? = findChildByType(KtTokens.CONSTRUCTOR_KEYWORD)
|
||||
|
||||
fun hasConstructorKeyword(): Boolean = getStub() != null || getConstructorKeyword() != null
|
||||
fun hasConstructorKeyword(): Boolean = stub != null || getConstructorKeyword() != null
|
||||
|
||||
override fun getTextOffset(): Int {
|
||||
return getConstructorKeyword()?.getTextOffset()
|
||||
?: getValueParameterList()?.getTextOffset()
|
||||
return getConstructorKeyword()?.textOffset
|
||||
?: valueParameterList?.textOffset
|
||||
?: super.getTextOffset()
|
||||
}
|
||||
|
||||
override fun getUseScope(): SearchScope {
|
||||
return getContainingClassOrObject().getUseScope()
|
||||
return getContainingClassOrObject().useScope
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -64,7 +64,7 @@ class KtDotQualifiedExpression : KtExpressionImplStub<KotlinPlaceHolderStub<KtDo
|
||||
}
|
||||
else {
|
||||
val expressions = stub.getChildrenByType(INSIDE_DIRECTIVE_EXPRESSIONS, KtExpression.ARRAY_FACTORY)
|
||||
if (expressions.size < 1 || expressions.size > 2) {
|
||||
if (expressions.size !in 1..2) {
|
||||
LOG.error("Invalid stub structure. DOT_QUALIFIED_EXPRESSION must have one or two children. Was: ${expressions.size}\n" +
|
||||
"File text:\n${containingFile.text}")
|
||||
return null
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -40,12 +40,7 @@ abstract class KtDoubleColonExpression(node: ASTNode) : KtExpressionImpl(node) {
|
||||
|
||||
fun setReceiverExpression(newReceiverExpression: KtExpression) {
|
||||
val oldReceiverExpression = this.receiverExpression
|
||||
if (oldReceiverExpression != null) {
|
||||
oldReceiverExpression.replace(newReceiverExpression)
|
||||
}
|
||||
else {
|
||||
addBefore(newReceiverExpression, doubleColonTokenReference)
|
||||
}
|
||||
oldReceiverExpression?.replace(newReceiverExpression) ?: addBefore(newReceiverExpression, doubleColonTokenReference)
|
||||
}
|
||||
|
||||
val isEmptyLHS: Boolean
|
||||
|
||||
+6
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -41,11 +41,11 @@ class KtEnumEntrySuperclassReferenceExpression :
|
||||
|
||||
private fun calcReferencedElement(): KtClass? {
|
||||
val owner = this.getStrictParentOfType<KtEnumEntry>() as? KtEnumEntry
|
||||
return owner?.getParent()?.getParent() as? KtClass
|
||||
return owner?.parent?.parent as? KtClass
|
||||
}
|
||||
|
||||
override fun getReferencedName(): String {
|
||||
val stub = getStub()
|
||||
val stub = stub
|
||||
if (stub != null) {
|
||||
return stub.getReferencedName()
|
||||
}
|
||||
@@ -54,7 +54,7 @@ class KtEnumEntrySuperclassReferenceExpression :
|
||||
}
|
||||
|
||||
override fun getReferencedNameAsName(): Name {
|
||||
return referencedElement.getName()?.let { Name.identifier(it) } ?: SpecialNames.NO_NAME_PROVIDED
|
||||
return referencedElement.name?.let { Name.identifier(it) } ?: SpecialNames.NO_NAME_PROVIDED
|
||||
}
|
||||
|
||||
override fun getReferencedNameElement(): PsiElement {
|
||||
@@ -62,11 +62,11 @@ class KtEnumEntrySuperclassReferenceExpression :
|
||||
}
|
||||
|
||||
override fun getIdentifier(): PsiElement? {
|
||||
return referencedElement.getNameIdentifier()
|
||||
return referencedElement.nameIdentifier
|
||||
}
|
||||
|
||||
override fun getReferencedNameElementType(): IElementType {
|
||||
return getReferencedNameElement().getNode()!!.getElementType()
|
||||
return getReferencedNameElement().node!!.elementType
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: KtVisitor<R, D>, data: D): R {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,8 +17,6 @@
|
||||
package org.jetbrains.kotlin.psi
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import com.intellij.psi.PsiElement
|
||||
|
||||
class KtLabelReferenceExpression(node: ASTNode) : KtSimpleNameExpressionImpl(node) {
|
||||
override fun getReferencedNameElement() = getIdentifier() ?: this
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -20,12 +20,11 @@ import com.intellij.lang.ASTNode
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.tree.IElementType
|
||||
import com.intellij.psi.tree.TokenSet
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinNameReferenceExpressionStub
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.*
|
||||
|
||||
class KtNameReferenceExpression : KtExpressionImplStub<KotlinNameReferenceExpressionStub>, KtSimpleNameExpression {
|
||||
constructor(node: ASTNode) : super(node) {
|
||||
@@ -35,7 +34,7 @@ class KtNameReferenceExpression : KtExpressionImplStub<KotlinNameReferenceExpres
|
||||
}
|
||||
|
||||
override fun getReferencedName(): String {
|
||||
val stub = getStub()
|
||||
val stub = stub
|
||||
if (stub != null) {
|
||||
return stub.getReferencedName()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -30,7 +30,7 @@ class KtPrimaryConstructor : KtConstructor<KtPrimaryConstructor> {
|
||||
|
||||
override fun <R, D> accept(visitor: KtVisitor<R, D>, data: D) = visitor.visitPrimaryConstructor(this, data)
|
||||
|
||||
override fun getContainingClassOrObject() = getParent() as KtClassOrObject
|
||||
override fun getContainingClassOrObject() = parent as KtClassOrObject
|
||||
|
||||
private fun getOrCreateConstructorKeyword(): PsiElement {
|
||||
return getConstructorKeyword() ?: addBefore(KtPsiFactory(this).createConstructorKeyword(), valueParameterList!!)
|
||||
@@ -59,13 +59,13 @@ class KtPrimaryConstructor : KtConstructor<KtPrimaryConstructor> {
|
||||
}
|
||||
|
||||
override fun addAnnotationEntry(annotationEntry: KtAnnotationEntry): KtAnnotationEntry {
|
||||
val modifierList = getModifierList()
|
||||
val modifierList = modifierList
|
||||
return if (modifierList != null) {
|
||||
modifierList.addBefore(annotationEntry, modifierList.firstChild) as KtAnnotationEntry
|
||||
}
|
||||
else {
|
||||
val parameterList = getValueParameterList()!!
|
||||
val newModifierList = KtPsiFactory(getProject()).createModifierList(annotationEntry.text)
|
||||
val parameterList = valueParameterList!!
|
||||
val newModifierList = KtPsiFactory(project).createModifierList(annotationEntry.text)
|
||||
(addBefore(newModifierList, parameterList) as KtModifierList).annotationEntries.first()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,12 +47,12 @@ class KtPsiFactory(private val project: Project) {
|
||||
|
||||
fun createValKeyword(): PsiElement {
|
||||
val property = createProperty("val x = 1")
|
||||
return property.getValOrVarKeyword()
|
||||
return property.valOrVarKeyword
|
||||
}
|
||||
|
||||
fun createVarKeyword(): PsiElement {
|
||||
val property = createProperty("var x = 1")
|
||||
return property.getValOrVarKeyword()
|
||||
return property.valOrVarKeyword
|
||||
}
|
||||
|
||||
fun createSafeCallNode(): ASTNode {
|
||||
@@ -61,7 +61,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
|
||||
private fun doCreateExpression(text: String): KtExpression {
|
||||
//TODO: '\n' below if important - some strange code indenting problems appear without it
|
||||
val expression = createProperty("val x =\n$text").getInitializer() ?: error("Failed to create expression from text: '$text'")
|
||||
val expression = createProperty("val x =\n$text").initializer ?: error("Failed to create expression from text: '$text'")
|
||||
return expression
|
||||
}
|
||||
|
||||
@@ -83,12 +83,12 @@ class KtPsiFactory(private val project: Project) {
|
||||
|
||||
fun createCallArguments(text: String): KtValueArgumentList {
|
||||
val property = createProperty("val x = foo $text")
|
||||
return (property.getInitializer() as KtCallExpression).valueArgumentList!!
|
||||
return (property.initializer as KtCallExpression).valueArgumentList!!
|
||||
}
|
||||
|
||||
fun createTypeArguments(text: String): KtTypeArgumentList {
|
||||
val property = createProperty("val x = foo$text()")
|
||||
return (property.getInitializer() as KtCallExpression).typeArgumentList!!
|
||||
return (property.initializer as KtCallExpression).typeArgumentList!!
|
||||
}
|
||||
|
||||
fun createTypeArgument(text: String) = createTypeArguments("<$text>").arguments.first()
|
||||
@@ -114,7 +114,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
|
||||
fun createTypeAlias(name: String, typeParameters: List<String>, body: String): KtTypeAlias {
|
||||
val typeParametersText = if (typeParameters.isNotEmpty()) typeParameters.joinToString(prefix = "<", postfix = ">") else ""
|
||||
return createDeclaration<KtTypeAlias>("typealias $name$typeParametersText = $body")
|
||||
return createDeclaration("typealias $name$typeParametersText = $body")
|
||||
}
|
||||
|
||||
fun createStar(): PsiElement {
|
||||
@@ -134,7 +134,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createEQ(): PsiElement {
|
||||
return createFunction("fun foo() = foo").getEqualsToken()!!
|
||||
return createFunction("fun foo() = foo").equalsToken!!
|
||||
}
|
||||
|
||||
fun createSemicolon(): PsiElement {
|
||||
@@ -177,7 +177,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createFileAnnotationListWithAnnotation(annotationText: String) : KtFileAnnotationList {
|
||||
return createFile("@file:${annotationText}").fileAnnotationList!!
|
||||
return createFile("@file:$annotationText").fileAnnotationList!!
|
||||
}
|
||||
|
||||
fun createFile(text: String): KtFile {
|
||||
@@ -213,7 +213,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createProperty(modifiers: String?, name: String, type: String?, isVar: Boolean, initializer: String?): KtProperty {
|
||||
val text = (modifiers.let { "$it "} ?: "") +
|
||||
val text = modifiers.let { "$it "} +
|
||||
(if (isVar) " var " else " val ") + name +
|
||||
(if (type != null) ":" + type else "") + (if (initializer == null) "" else " = " + initializer)
|
||||
return createProperty(text)
|
||||
@@ -259,11 +259,11 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createNameIdentifier(name: String): PsiElement {
|
||||
return createProperty(name, null, false).getNameIdentifier()!!
|
||||
return createProperty(name, null, false).nameIdentifier!!
|
||||
}
|
||||
|
||||
fun createSimpleName(name: String): KtSimpleNameExpression {
|
||||
return createProperty(name, null, false, name).getInitializer() as KtSimpleNameExpression
|
||||
return createProperty(name, null, false, name).initializer as KtSimpleNameExpression
|
||||
}
|
||||
|
||||
fun createOperationName(name: String): KtSimpleNameExpression {
|
||||
@@ -289,7 +289,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createModifierList(text: String): KtModifierList {
|
||||
return createProperty(text + " val x").getModifierList()!!
|
||||
return createProperty(text + " val x").modifierList!!
|
||||
}
|
||||
|
||||
fun createModifier(modifier: KtModifierKeywordToken): PsiElement {
|
||||
@@ -297,12 +297,12 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createAnnotationEntry(text: String): KtAnnotationEntry {
|
||||
val modifierList = createProperty(text + " val x").getModifierList()
|
||||
return modifierList!!.getAnnotationEntries().first()
|
||||
val modifierList = createProperty(text + " val x").modifierList
|
||||
return modifierList!!.annotationEntries.first()
|
||||
}
|
||||
|
||||
fun createEmptyBody(): KtBlockExpression {
|
||||
return createFunction("fun foo() {}").getBodyExpression() as KtBlockExpression
|
||||
return createFunction("fun foo() {}").bodyExpression as KtBlockExpression
|
||||
}
|
||||
|
||||
fun createAnonymousInitializer(): KtAnonymousInitializer {
|
||||
@@ -318,7 +318,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createParameterList(text: String): KtParameterList {
|
||||
return createFunction("fun foo$text{}").getValueParameterList()!!
|
||||
return createFunction("fun foo$text{}").valueParameterList!!
|
||||
}
|
||||
|
||||
fun createTypeParameterList(text: String) = createClass("class Foo$text").typeParameterList!!
|
||||
@@ -330,7 +330,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createEnumEntry(text: String): KtEnumEntry {
|
||||
return createDeclaration<KtClass>("enum class E {$text}").getDeclarations()[0] as KtEnumEntry
|
||||
return createDeclaration<KtClass>("enum class E {$text}").declarations[0] as KtEnumEntry
|
||||
}
|
||||
|
||||
fun createEnumEntryInitializerList(): KtInitializerList {
|
||||
@@ -338,7 +338,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createWhenEntry(entryText: String): KtWhenEntry {
|
||||
val function = createFunction("fun foo() { when(12) { " + entryText + " } }")
|
||||
val function = createFunction("fun foo() { when(12) { $entryText } }")
|
||||
val whenEntry = PsiTreeUtil.findChildOfType(function, KtWhenEntry::class.java)
|
||||
|
||||
assert(whenEntry != null) { "Couldn't generate when entry" }
|
||||
@@ -386,7 +386,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
|
||||
fun createImportDirectiveWithImportList(importPath: ImportPath): KtImportList {
|
||||
val importDirective = createImportDirective(importPath)
|
||||
return importDirective.getParent() as KtImportList
|
||||
return importDirective.parent as KtImportList
|
||||
}
|
||||
|
||||
fun createPrimaryConstructor(): KtPrimaryConstructor {
|
||||
@@ -485,7 +485,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
private fun placeKeyword() {
|
||||
assert(state == State.MODIFIERS)
|
||||
|
||||
if (sb.length != 0) {
|
||||
if (sb.isNotEmpty()) {
|
||||
sb.append(" ")
|
||||
}
|
||||
sb.append("class ")
|
||||
@@ -592,7 +592,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
private fun placeKeyword() {
|
||||
assert(state == State.MODIFIERS)
|
||||
|
||||
if (sb.length != 0) {
|
||||
if (sb.isNotEmpty()) {
|
||||
sb.append(" ")
|
||||
}
|
||||
val keyword = when (target) {
|
||||
@@ -743,11 +743,11 @@ class KtPsiFactory(private val project: Project) {
|
||||
}
|
||||
|
||||
fun createBlock(bodyText: String): KtBlockExpression {
|
||||
return createFunction("fun foo() {\n" + bodyText + "\n}").getBodyExpression() as KtBlockExpression
|
||||
return createFunction("fun foo() {\n$bodyText\n}").bodyExpression as KtBlockExpression
|
||||
}
|
||||
|
||||
fun createSingleStatementBlock(statement: KtExpression): KtBlockExpression {
|
||||
return createDeclarationByPattern<KtNamedFunction>("fun foo() {\n$0\n}", statement).getBodyExpression() as KtBlockExpression
|
||||
return createDeclarationByPattern<KtNamedFunction>("fun foo() {\n$0\n}", statement).bodyExpression as KtBlockExpression
|
||||
}
|
||||
|
||||
fun createComment(text: String): PsiComment {
|
||||
@@ -765,7 +765,7 @@ class KtPsiFactory(private val project: Project) {
|
||||
return expression
|
||||
}
|
||||
val function = createFunction("fun f() { ${expression.text} }")
|
||||
val block = function.getBodyExpression() as KtBlockExpression
|
||||
val block = function.bodyExpression as KtBlockExpression
|
||||
return BlockWrapper(block, expression)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -27,7 +27,7 @@ class KtSecondaryConstructor : KtConstructor<KtSecondaryConstructor> {
|
||||
|
||||
override fun <R, D> accept(visitor: KtVisitor<R, D>, data: D) = visitor.visitSecondaryConstructor(this, data)
|
||||
|
||||
override fun getContainingClassOrObject() = getParent().getParent() as KtClassOrObject
|
||||
override fun getContainingClassOrObject() = parent.parent as KtClassOrObject
|
||||
|
||||
override fun getBodyExpression() = findChildByClass(KtBlockExpression::class.java)
|
||||
|
||||
@@ -35,16 +35,16 @@ class KtSecondaryConstructor : KtConstructor<KtSecondaryConstructor> {
|
||||
|
||||
fun getDelegationCall(): KtConstructorDelegationCall = findNotNullChildByClass(KtConstructorDelegationCall::class.java)
|
||||
|
||||
fun hasImplicitDelegationCall(): Boolean = getDelegationCall().isImplicit()
|
||||
fun hasImplicitDelegationCall(): Boolean = getDelegationCall().isImplicit
|
||||
|
||||
fun replaceImplicitDelegationCallWithExplicit(isThis: Boolean): KtConstructorDelegationCall {
|
||||
val psiFactory = KtPsiFactory(getProject())
|
||||
val psiFactory = KtPsiFactory(project)
|
||||
val current = getDelegationCall()
|
||||
|
||||
assert(current.isImplicit()) { "Method should not be called with explicit delegation call: " + getText() }
|
||||
assert(current.isImplicit) { "Method should not be called with explicit delegation call: " + text }
|
||||
current.delete()
|
||||
|
||||
val colon = addAfter(psiFactory.createColon(), getValueParameterList())
|
||||
val colon = addAfter(psiFactory.createColon(), valueParameterList)
|
||||
|
||||
val delegationName = if (isThis) "this" else "super"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.psi
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiReference
|
||||
import com.intellij.psi.tree.IElementType
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.jetbrains.kotlin.psi
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
import com.intellij.navigation.ItemPresentation
|
||||
import com.intellij.navigation.ItemPresentationProviders
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.KtNodeTypes
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,20 +16,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.psi.typeRefHelpers
|
||||
|
||||
import org.jetbrains.kotlin.psi.KtTypeReference
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import com.intellij.psi.PsiErrorElement
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtFunctionType
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
import org.jetbrains.kotlin.psi.KtTypeReference
|
||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
|
||||
fun getTypeReference(declaration: KtCallableDeclaration): KtTypeReference? {
|
||||
return declaration.getFirstChild()!!.siblings(forward = true)
|
||||
.dropWhile { it.getNode()!!.getElementType() != KtTokens.COLON }
|
||||
return declaration.firstChild!!.siblings(forward = true)
|
||||
.dropWhile { it.node!!.elementType != KtTokens.COLON }
|
||||
.firstIsInstanceOrNull<KtTypeReference>()
|
||||
}
|
||||
|
||||
@@ -40,16 +40,16 @@ fun setTypeReference(declaration: KtCallableDeclaration, addAfter: PsiElement?,
|
||||
return oldTypeRef.replace(typeRef) as KtTypeReference
|
||||
}
|
||||
else {
|
||||
var anchor = addAfter ?: declaration.getNameIdentifier()?.siblings(forward = true)?.firstOrNull { it is PsiErrorElement }
|
||||
val anchor = addAfter ?: declaration.nameIdentifier?.siblings(forward = true)?.firstOrNull { it is PsiErrorElement }
|
||||
val newTypeRef = declaration.addAfter(typeRef, anchor) as KtTypeReference
|
||||
declaration.addAfter(KtPsiFactory(declaration.getProject()).createColon(), anchor)
|
||||
declaration.addAfter(KtPsiFactory(declaration.project).createColon(), anchor)
|
||||
return newTypeRef
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (oldTypeRef != null) {
|
||||
val colon = declaration.getColon()!!
|
||||
val removeFrom = colon.getPrevSibling() as? PsiWhiteSpace ?: colon
|
||||
val colon = declaration.colon!!
|
||||
val removeFrom = colon.prevSibling as? PsiWhiteSpace ?: colon
|
||||
declaration.deleteChildRange(removeFrom, oldTypeRef)
|
||||
}
|
||||
return null
|
||||
@@ -58,28 +58,28 @@ fun setTypeReference(declaration: KtCallableDeclaration, addAfter: PsiElement?,
|
||||
|
||||
fun KtCallableDeclaration.setReceiverTypeReference(typeRef: KtTypeReference?): KtTypeReference? {
|
||||
val needParentheses = typeRef != null && typeRef.typeElement is KtFunctionType && !typeRef.hasParentheses()
|
||||
val oldTypeRef = getReceiverTypeReference()
|
||||
val oldTypeRef = receiverTypeReference
|
||||
if (typeRef != null) {
|
||||
val newTypeRef =
|
||||
if (oldTypeRef != null) {
|
||||
oldTypeRef.replace(typeRef) as KtTypeReference
|
||||
}
|
||||
else {
|
||||
val anchor = getNameIdentifier() ?: valueParameterList
|
||||
val anchor = nameIdentifier ?: valueParameterList
|
||||
val newTypeRef = addBefore(typeRef, anchor) as KtTypeReference
|
||||
addAfter(KtPsiFactory(getProject()).createDot(), newTypeRef)
|
||||
addAfter(KtPsiFactory(project).createDot(), newTypeRef)
|
||||
newTypeRef
|
||||
}
|
||||
if (needParentheses) {
|
||||
val argList = KtPsiFactory(getProject()).createCallArguments("()")
|
||||
newTypeRef.addBefore(argList.getLeftParenthesis()!!, newTypeRef.getFirstChild())
|
||||
newTypeRef.add(argList.getRightParenthesis()!!)
|
||||
val argList = KtPsiFactory(project).createCallArguments("()")
|
||||
newTypeRef.addBefore(argList.leftParenthesis!!, newTypeRef.firstChild)
|
||||
newTypeRef.add(argList.rightParenthesis!!)
|
||||
}
|
||||
return newTypeRef
|
||||
}
|
||||
else {
|
||||
if (oldTypeRef != null) {
|
||||
val dot = oldTypeRef.siblings(forward = true).firstOrNull { it.getNode().getElementType() == KtTokens.DOT }
|
||||
val dot = oldTypeRef.siblings(forward = true).firstOrNull { it.node.elementType == KtTokens.DOT }
|
||||
deleteChildRange(oldTypeRef, dot ?: oldTypeRef)
|
||||
}
|
||||
return null
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -20,7 +20,6 @@ import com.intellij.psi.PsiComment
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.*
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||
@@ -85,12 +84,12 @@ internal fun addModifier(modifierList: KtModifierList, modifier: KtModifierKeywo
|
||||
return newModifierOrder > order
|
||||
}
|
||||
|
||||
val lastChild = modifierList.getLastChild()
|
||||
val lastChild = modifierList.lastChild
|
||||
val anchor = lastChild?.siblings(forward = false)?.firstOrNull(::placeAfter)
|
||||
modifierList.addAfter(newModifier, anchor)
|
||||
|
||||
if (anchor == lastChild) { // add line break if needed, otherwise visibility keyword may appear on previous line
|
||||
val whiteSpace = modifierList.getNextSibling() as? PsiWhiteSpace
|
||||
val whiteSpace = modifierList.nextSibling as? PsiWhiteSpace
|
||||
if (whiteSpace != null && whiteSpace.text.contains('\n')) {
|
||||
modifierList.addAfter(whiteSpace, anchor)
|
||||
whiteSpace.delete()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -41,7 +41,7 @@ var KtFile.suppressDiagnosticsInDebugMode: Boolean
|
||||
is KtFile -> getUserData(SUPPRESS_DIAGNOSTICS_IN_DEBUG_MODE) ?: false
|
||||
else -> false
|
||||
}
|
||||
set(skip: Boolean) {
|
||||
set(skip) {
|
||||
putUserData(SUPPRESS_DIAGNOSTICS_IN_DEBUG_MODE, skip)
|
||||
}
|
||||
|
||||
@@ -50,8 +50,8 @@ val DEBUG_TYPE_REFERENCE_STRING: String = "DebugTypeKotlinRulezzzz"
|
||||
val DEBUG_TYPE_INFO: Key<KotlinType> = Key.create<KotlinType>("DEBUG_TYPE_INFO")
|
||||
var KtTypeReference.debugTypeInfo: KotlinType?
|
||||
get() = getUserData(DEBUG_TYPE_INFO)
|
||||
set(type: KotlinType?) {
|
||||
if (type != null && this.getText() == DEBUG_TYPE_REFERENCE_STRING) {
|
||||
set(type) {
|
||||
if (type != null && this.text == DEBUG_TYPE_REFERENCE_STRING) {
|
||||
putUserData(DEBUG_TYPE_INFO, type)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -87,10 +87,10 @@ private object PsiChildRangeArgumentType : PsiElementPlaceholderArgumentType<Psi
|
||||
}
|
||||
|
||||
private val SUPPORTED_ARGUMENT_TYPES = listOf(
|
||||
PsiElementArgumentType<KtExpression>(KtExpression::class.java),
|
||||
PsiElementArgumentType<KtTypeReference>(KtTypeReference::class.java),
|
||||
PlainTextArgumentType<String>(String::class.java, toPlainText = { it }),
|
||||
PlainTextArgumentType<Name>(Name::class.java, toPlainText = { it.render() }),
|
||||
PsiElementArgumentType(KtExpression::class.java),
|
||||
PsiElementArgumentType(KtTypeReference::class.java),
|
||||
PlainTextArgumentType(String::class.java, toPlainText = { it }),
|
||||
PlainTextArgumentType(Name::class.java, toPlainText = Name::render),
|
||||
PsiChildRangeArgumentType
|
||||
)
|
||||
|
||||
@@ -130,7 +130,7 @@ fun <TElement : KtElement> createByPattern(pattern: String, vararg args: Any, fa
|
||||
for ((range, text) in placeholders) {
|
||||
val token = resultElement.findElementAt(range.startOffset)!!
|
||||
for (element in token.parentsWithSelf) {
|
||||
val elementRange = element.getTextRange().shiftRight(-start)
|
||||
val elementRange = element.textRange.shiftRight(-start)
|
||||
if (elementRange == range && expectedElementType.isInstance(element)) {
|
||||
val pointer = pointerManager.createSmartPsiElementPointer(element)
|
||||
pointers.put(pointer, n)
|
||||
@@ -208,7 +208,7 @@ private fun processPattern(pattern: String, args: List<Any>): PatternData {
|
||||
val text = buildString {
|
||||
var i = 0
|
||||
while (i < pattern.length) {
|
||||
var c = pattern[i]
|
||||
val c = pattern[i]
|
||||
|
||||
if (c == '$') {
|
||||
val nextChar = charOrNull(++i)
|
||||
|
||||
@@ -47,7 +47,7 @@ fun KtCallElement.getCallNameExpression(): KtSimpleNameExpression? {
|
||||
|
||||
return when (calleeExpression) {
|
||||
is KtSimpleNameExpression -> calleeExpression
|
||||
is KtConstructorCalleeExpression -> calleeExpression.getConstructorReferenceExpression()
|
||||
is KtConstructorCalleeExpression -> calleeExpression.constructorReferenceExpression
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
@@ -82,9 +82,9 @@ fun KtElement.getQualifiedElementSelector(): KtElement? {
|
||||
is KtCallExpression -> calleeExpression
|
||||
is KtQualifiedExpression -> {
|
||||
val selector = selectorExpression
|
||||
if (selector is KtCallExpression) selector.calleeExpression else selector
|
||||
(selector as? KtCallExpression)?.calleeExpression ?: selector
|
||||
}
|
||||
is KtUserType -> getReferenceExpression()
|
||||
is KtUserType -> referenceExpression
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
@@ -111,15 +111,15 @@ fun KtSimpleNameExpression.getReceiverExpression(): KtExpression? {
|
||||
}
|
||||
}
|
||||
parent is KtBinaryExpression && parent.operationReference == this -> {
|
||||
return if (parent.getOperationToken() in OperatorConventions.IN_OPERATIONS) parent.right else parent.left
|
||||
return if (parent.operationToken in OperatorConventions.IN_OPERATIONS) parent.right else parent.left
|
||||
}
|
||||
parent is KtUnaryExpression && parent.operationReference == this -> {
|
||||
return parent.baseExpression
|
||||
}
|
||||
parent is KtUserType -> {
|
||||
val qualifier = parent.getQualifier()
|
||||
val qualifier = parent.qualifier
|
||||
if (qualifier != null) {
|
||||
return qualifier.getReferenceExpression()!!
|
||||
return qualifier.referenceExpression!!
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -204,11 +204,11 @@ fun StubBasedPsiElementBase<out KotlinClassOrObjectStub<out KtClassOrObject>>.ge
|
||||
fun addSuperName(result: MutableList<String>, referencedName: String): Unit {
|
||||
result.add(referencedName)
|
||||
|
||||
val file = getContainingFile()
|
||||
val file = containingFile
|
||||
if (file is KtFile) {
|
||||
val directive = file.findImportByAlias(referencedName)
|
||||
if (directive != null) {
|
||||
var reference = directive.getImportedReference()
|
||||
var reference = directive.importedReference
|
||||
while (reference is KtDotQualifiedExpression) {
|
||||
reference = reference.selectorExpression
|
||||
}
|
||||
@@ -221,7 +221,7 @@ fun StubBasedPsiElementBase<out KotlinClassOrObjectStub<out KtClassOrObject>>.ge
|
||||
|
||||
require(this is KtClassOrObject) { "it should be ${KtClassOrObject::class} but it is a ${this.javaClass.name}" }
|
||||
|
||||
val stub = getStub()
|
||||
val stub = stub
|
||||
if (stub != null) {
|
||||
return stub.getSuperNames()
|
||||
}
|
||||
@@ -231,9 +231,9 @@ fun StubBasedPsiElementBase<out KotlinClassOrObjectStub<out KtClassOrObject>>.ge
|
||||
|
||||
val result = ArrayList<String>()
|
||||
for (specifier in specifiers) {
|
||||
val superType = specifier.getTypeAsUserType()
|
||||
val superType = specifier.typeAsUserType
|
||||
if (superType != null) {
|
||||
val referencedName = superType.getReferencedName()
|
||||
val referencedName = superType.referencedName
|
||||
if (referencedName != null) {
|
||||
addSuperName(result, referencedName)
|
||||
}
|
||||
@@ -267,7 +267,7 @@ private fun StubElement<*>.collectAnnotationEntriesFromStubElement(): List<KtAnn
|
||||
child ->
|
||||
when (child.stubType) {
|
||||
KtNodeTypes.ANNOTATION_ENTRY -> listOf(child.psi as KtAnnotationEntry)
|
||||
KtNodeTypes.ANNOTATION -> (child.psi as KtAnnotation).getEntries()
|
||||
KtNodeTypes.ANNOTATION -> (child.psi as KtAnnotation).entries
|
||||
else -> emptyList<KtAnnotationEntry>()
|
||||
}
|
||||
}
|
||||
@@ -277,7 +277,7 @@ private fun KtAnnotationsContainer.collectAnnotationEntriesFromPsi(): List<KtAnn
|
||||
return children.flatMap { child ->
|
||||
when (child) {
|
||||
is KtAnnotationEntry -> listOf(child)
|
||||
is KtAnnotation -> child.getEntries()
|
||||
is KtAnnotation -> child.entries
|
||||
else -> emptyList<KtAnnotationEntry>()
|
||||
}
|
||||
}
|
||||
@@ -307,7 +307,7 @@ inline fun <reified T : KtElement, R> flatMapDescendantsOfTypeVisitor(accumulato
|
||||
fun KtClassOrObject.effectiveDeclarations(): List<KtDeclaration> {
|
||||
return when(this) {
|
||||
is KtClass -> getDeclarations() + getPrimaryConstructorParameters().filter { p -> p.hasValOrVar() }
|
||||
else -> getDeclarations()
|
||||
else -> declarations
|
||||
}
|
||||
}
|
||||
|
||||
@@ -327,7 +327,7 @@ fun KtClassOrObject.isObjectLiteral(): Boolean = this is KtObjectDeclaration &&
|
||||
fun PsiElement.parameterIndex(): Int {
|
||||
val parent = parent
|
||||
return when {
|
||||
this is KtParameter && parent is KtParameterList -> parent.getParameters().indexOf(this)
|
||||
this is KtParameter && parent is KtParameterList -> parent.parameters.indexOf(this)
|
||||
this is PsiParameter && parent is PsiParameterList -> parent.getParameterIndex(this)
|
||||
else -> -1
|
||||
}
|
||||
@@ -375,7 +375,7 @@ fun KtStringTemplateExpression.isSingleQuoted(): Boolean
|
||||
= node.firstChildNode.textLength == 1
|
||||
|
||||
fun KtNamedDeclaration.getValueParameters(): List<KtParameter> {
|
||||
return getValueParameterList()?.getParameters() ?: Collections.emptyList()
|
||||
return getValueParameterList()?.parameters ?: Collections.emptyList()
|
||||
}
|
||||
|
||||
fun KtNamedDeclaration.getValueParameterList(): KtParameterList? {
|
||||
@@ -461,7 +461,7 @@ fun KtElement.nonStaticOuterClasses(): Sequence<KtClass> {
|
||||
return generateSequence(containingClass()) { if (it.isInner()) it.containingClass() else null }
|
||||
}
|
||||
|
||||
fun KtElement.containingClass(): KtClass? = getStrictParentOfType<KtClass>()
|
||||
fun KtElement.containingClass(): KtClass? = getStrictParentOfType()
|
||||
|
||||
fun KtClassOrObject.findPropertyByName(name: String): KtNamedDeclaration? {
|
||||
return declarations.firstOrNull { it is KtProperty && it.name == name } as KtNamedDeclaration?
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -183,7 +183,7 @@ fun PsiChildRange.trimWhiteSpaces(): PsiChildRange {
|
||||
// -------------------- Recursive tree visiting --------------------------------------------------------------------------------------------
|
||||
|
||||
inline fun <reified T : PsiElement> PsiElement.forEachDescendantOfType(noinline action: (T) -> Unit) {
|
||||
forEachDescendantOfType<T>({ true }, action)
|
||||
forEachDescendantOfType({ true }, action)
|
||||
}
|
||||
|
||||
inline fun <reified T : PsiElement> PsiElement.forEachDescendantOfType(crossinline canGoInside: (PsiElement) -> Boolean, noinline action: (T) -> Unit) {
|
||||
@@ -201,15 +201,15 @@ inline fun <reified T : PsiElement> PsiElement.forEachDescendantOfType(crossinli
|
||||
}
|
||||
|
||||
inline fun <reified T : PsiElement> PsiElement.anyDescendantOfType(noinline predicate: (T) -> Boolean = { true }): Boolean {
|
||||
return findDescendantOfType<T>(predicate) != null
|
||||
return findDescendantOfType(predicate) != null
|
||||
}
|
||||
|
||||
inline fun <reified T : PsiElement> PsiElement.anyDescendantOfType(crossinline canGoInside: (PsiElement) -> Boolean, noinline predicate: (T) -> Boolean = { true }): Boolean {
|
||||
return findDescendantOfType<T>(canGoInside, predicate) != null
|
||||
return findDescendantOfType(canGoInside, predicate) != null
|
||||
}
|
||||
|
||||
inline fun <reified T : PsiElement> PsiElement.findDescendantOfType(noinline predicate: (T) -> Boolean = { true }): T? {
|
||||
return findDescendantOfType<T>({ true }, predicate)
|
||||
return findDescendantOfType({ true }, predicate)
|
||||
}
|
||||
|
||||
inline fun <reified T : PsiElement> PsiElement.findDescendantOfType(crossinline canGoInside: (PsiElement) -> Boolean, noinline predicate: (T) -> Boolean = { true }): T? {
|
||||
@@ -231,7 +231,7 @@ inline fun <reified T : PsiElement> PsiElement.findDescendantOfType(crossinline
|
||||
}
|
||||
|
||||
inline fun <reified T : PsiElement> PsiElement.collectDescendantsOfType(noinline predicate: (T) -> Boolean = { true }): List<T> {
|
||||
return collectDescendantsOfType<T>({ true }, predicate)
|
||||
return collectDescendantsOfType({ true }, predicate)
|
||||
}
|
||||
|
||||
inline fun <reified T : PsiElement> PsiElement.collectDescendantsOfType(crossinline canGoInside: (PsiElement) -> Boolean, noinline predicate: (T) -> Boolean = { true }): List<T> {
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ class KtTypeAliasElementType(debugName: String) :
|
||||
}
|
||||
|
||||
override fun serialize(stub: KotlinTypeAliasStub, dataStream: StubOutputStream) {
|
||||
dataStream.writeName(stub.getName())
|
||||
dataStream.writeName(stub.name)
|
||||
dataStream.writeName(stub.getFqName()?.asString())
|
||||
dataStream.writeBoolean(stub.isTopLevel())
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,15 +16,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.psi.stubs.impl
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import com.intellij.util.io.StringRef
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinClassStub
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtClassElementType
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
import java.util.ArrayList
|
||||
import com.intellij.psi.PsiElement
|
||||
import java.util.*
|
||||
|
||||
class KotlinClassStubImpl(
|
||||
type: KtClassElementType,
|
||||
@@ -39,10 +38,7 @@ class KotlinClassStubImpl(
|
||||
) : KotlinStubBaseImpl<KtClass>(parent, type), KotlinClassStub {
|
||||
|
||||
override fun getFqName(): FqName? {
|
||||
val stringRef = StringRef.toString(qualifiedName)
|
||||
if (stringRef == null) {
|
||||
return null
|
||||
}
|
||||
val stringRef = StringRef.toString(qualifiedName) ?: return null
|
||||
return FqName(stringRef)
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.psi.stubs.impl
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import com.intellij.util.io.StringRef
|
||||
import org.jetbrains.kotlin.psi.KtEnumEntrySuperclassReferenceExpression
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ class KotlinTypeAliasStubImpl(
|
||||
StringRef.toString(name)
|
||||
|
||||
override fun getFqName(): FqName? =
|
||||
StringRef.toString(qualifiedName)?.let { FqName(it) }
|
||||
StringRef.toString(qualifiedName)?.let(::FqName)
|
||||
|
||||
override fun isTopLevel(): Boolean = isTopLevel
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -20,6 +20,6 @@ import com.intellij.util.io.StringRef
|
||||
|
||||
object Utils {
|
||||
fun wrapStrings(names : List<String>) : Array<StringRef> {
|
||||
return Array(names.size) { i -> StringRef.fromString(names.get(i))!! }
|
||||
return Array(names.size) { i -> StringRef.fromString(names[i])!! }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user