Introduced shortcut properties + getArrowNode -> getArrow
This commit is contained in:
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.JetNodeTypes
|
||||
import org.jetbrains.kotlin.lexer.JetKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getCalleeHighlightingRange
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.utils.sure
|
||||
@@ -387,7 +388,7 @@ public object PositioningStrategies {
|
||||
override fun mark(element: JetElement): List<TextRange> {
|
||||
if (element is JetConstantExpression) {
|
||||
if (element.getNode().getElementType() == JetNodeTypes.INTEGER_CONSTANT) {
|
||||
val endOffset = element.getTextRange().getEndOffset()
|
||||
val endOffset = element.endOffset
|
||||
return listOf(TextRange.create(endOffset - 1, endOffset))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ import com.intellij.psi.PsiComment
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiErrorElement
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public open class PositioningStrategy<E : PsiElement> {
|
||||
public open fun markDiagnostic(diagnostic: ParametrizedDiagnostic<out E>): List<TextRange> {
|
||||
@@ -57,26 +59,26 @@ private fun getStartOffset(element: PsiElement): Int {
|
||||
var child = element.getFirstChild()
|
||||
if (child != null) {
|
||||
while (child is PsiComment || child is PsiWhiteSpace) {
|
||||
child = child!!.getNextSibling()
|
||||
child = child.getNextSibling()
|
||||
}
|
||||
if (child != null) {
|
||||
return getStartOffset(child!!)
|
||||
return getStartOffset(child)
|
||||
}
|
||||
}
|
||||
return element.getTextRange().getStartOffset()
|
||||
return element.startOffset
|
||||
}
|
||||
|
||||
private fun getEndOffset(element: PsiElement): Int {
|
||||
var child = element.getLastChild()
|
||||
if (child != null) {
|
||||
while (child is PsiComment || child is PsiWhiteSpace) {
|
||||
child = child!!.getPrevSibling()
|
||||
child = child.getPrevSibling()
|
||||
}
|
||||
if (child != null) {
|
||||
return getEndOffset(child!!)
|
||||
return getEndOffset(child)
|
||||
}
|
||||
}
|
||||
return element.getTextRange().getEndOffset()
|
||||
return element.endOffset
|
||||
}
|
||||
|
||||
fun hasSyntaxErrors(psiElement: PsiElement): Boolean {
|
||||
|
||||
@@ -70,8 +70,8 @@ public class JetFunctionLiteral extends JetFunctionNotStubbed {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ASTNode getArrowNode() {
|
||||
return getNode().findChildByType(JetTokens.ARROW);
|
||||
public PsiElement getArrow() {
|
||||
return findChildByType(JetTokens.ARROW);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -22,7 +22,9 @@ import com.intellij.psi.SmartPointerManager
|
||||
import com.intellij.psi.SmartPsiElementPointer
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
||||
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
import java.util.ArrayList
|
||||
import java.util.HashMap
|
||||
@@ -34,7 +36,7 @@ public fun JetPsiFactory.createExpressionByPattern(pattern: String, vararg args:
|
||||
var expression = createExpression(processedText)
|
||||
val project = expression.getProject()
|
||||
|
||||
val start = expression.getTextRange().getStartOffset()
|
||||
val start = expression.startOffset
|
||||
|
||||
val pointerManager = SmartPointerManager.getInstance(project)
|
||||
|
||||
@@ -80,7 +82,7 @@ public fun JetPsiFactory.createExpressionByPattern(pattern: String, vararg args:
|
||||
expression = codeStyleManager.reformat(expression, true) as JetExpression
|
||||
}
|
||||
else {
|
||||
var bound = expression.getTextRange().getEndOffset() - 1
|
||||
var bound = expression.endOffset - 1
|
||||
for (range in stringPlaceholderRanges) {
|
||||
// we extend reformatting range by 1 to the right because otherwise some of spaces are not reformatted
|
||||
expression = codeStyleManager.reformatRange(expression, range.getEndOffset() + start, bound + 1, true) as JetExpression
|
||||
|
||||
@@ -473,7 +473,7 @@ public fun PsiFile.elementsInRange(range: TextRange): List<PsiElement> {
|
||||
}
|
||||
result.add(element)
|
||||
|
||||
offset = element.getTextRange().getEndOffset()
|
||||
offset = element.endOffset
|
||||
}
|
||||
return result
|
||||
}
|
||||
@@ -510,7 +510,7 @@ public fun PsiElement.getElementTextWithContext(): String {
|
||||
val topLevelElement = PsiTreeUtil.findFirstParent(this, { it.getParent() is PsiFile }) ?:
|
||||
throw AssertionError("For non-file element we should always be able to find parent in file children")
|
||||
|
||||
val startContextOffset = topLevelElement.getTextRange().getStartOffset()
|
||||
val startContextOffset = topLevelElement.startOffset
|
||||
val elementContextOffset = getTextRange().getStartOffset()
|
||||
|
||||
val inFileParentOffset = elementContextOffset - startContextOffset
|
||||
@@ -583,7 +583,13 @@ public fun JetElement.getCalleeHighlightingRange(): TextRange {
|
||||
) ?: return getTextRange()
|
||||
|
||||
val startOffset = annotationEntry.getAtSymbol()?.getTextRange()?.getStartOffset()
|
||||
?: annotationEntry.getCalleeExpression().getTextRange().getStartOffset()
|
||||
?: annotationEntry.getCalleeExpression().startOffset
|
||||
|
||||
return TextRange(startOffset, annotationEntry.getCalleeExpression().getTextRange().getEndOffset())
|
||||
return TextRange(startOffset, annotationEntry.getCalleeExpression().endOffset)
|
||||
}
|
||||
|
||||
public val PsiElement.startOffset: Int
|
||||
get() = getTextRange().getStartOffset()
|
||||
|
||||
public val PsiElement.endOffset: Int
|
||||
get() = getTextRange().getEndOffset()
|
||||
|
||||
+3
-4
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.highlighter;
|
||||
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.lang.annotation.AnnotationHolder;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.colors.TextAttributesKey;
|
||||
@@ -59,9 +58,9 @@ class SoftKeywordsHighlightingVisitor extends HighlightingVisitor {
|
||||
if (closingBrace != null) {
|
||||
holder.createInfoAnnotation(closingBrace, null).setTextAttributes(JetHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW);
|
||||
}
|
||||
ASTNode arrowNode = functionLiteral.getArrowNode();
|
||||
if (arrowNode != null) {
|
||||
holder.createInfoAnnotation(arrowNode, null).setTextAttributes(JetHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW);
|
||||
PsiElement arrow = functionLiteral.getArrow();
|
||||
if (arrow != null) {
|
||||
holder.createInfoAnnotation(arrow, null).setTextAttributes(JetHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@ public class JetSimpleNameReference(
|
||||
|
||||
override fun getRangeInElement(): TextRange {
|
||||
val element = getElement().getReferencedNameElement()
|
||||
val startOffset = getElement().getTextRange().getStartOffset()
|
||||
val startOffset = getElement().startOffset
|
||||
return element.getTextRange().shiftRight(-startOffset)
|
||||
}
|
||||
|
||||
|
||||
+5
-8
@@ -37,10 +37,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.completion.smart.SmartCompletion
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||
import org.jetbrains.kotlin.psi.psiUtil.prevLeaf
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
@@ -108,12 +105,12 @@ public class KotlinCompletionContributor : CompletionContributor() {
|
||||
context.setReplacementOffset(suggestedReplacementOffset)
|
||||
}
|
||||
|
||||
context.getOffsetMap().addOffset(SmartCompletion.OLD_ARGUMENTS_REPLACEMENT_OFFSET, expression.getTextRange().getEndOffset())
|
||||
context.getOffsetMap().addOffset(SmartCompletion.OLD_ARGUMENTS_REPLACEMENT_OFFSET, expression.endOffset)
|
||||
|
||||
val argumentList = (expression.getParent() as? JetValueArgument)?.getParent() as? JetValueArgumentList
|
||||
if (argumentList != null) {
|
||||
context.getOffsetMap().addOffset(SmartCompletion.MULTIPLE_ARGUMENTS_REPLACEMENT_OFFSET,
|
||||
argumentList.getRightParenthesis()?.getTextRange()?.getStartOffset() ?: argumentList.getTextRange().getEndOffset())
|
||||
argumentList.getRightParenthesis()?.getTextRange()?.getStartOffset() ?: argumentList.endOffset)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -149,8 +146,8 @@ public class KotlinCompletionContributor : CompletionContributor() {
|
||||
val classOrObject = tokenBefore?.parents(false)?.firstIsInstanceOrNull<JetClassOrObject>() ?: return false
|
||||
val name = classOrObject.getNameIdentifier() ?: return false
|
||||
val body = classOrObject.getBody() ?: return false
|
||||
val offset = tokenBefore!!.getTextRange().getStartOffset()
|
||||
return name.getTextRange().getEndOffset() <= offset && offset <= body.getTextRange().getStartOffset()
|
||||
val offset = tokenBefore!!.startOffset
|
||||
return name.endOffset <= offset && offset <= body.startOffset
|
||||
}
|
||||
|
||||
private val declarationKeywords = TokenSet.create(JetTokens.FUN_KEYWORD, JetTokens.VAL_KEYWORD, JetTokens.VAR_KEYWORD)
|
||||
|
||||
+3
-2
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.completion
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.psi.JetDeclaration
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
class ToFromOriginalFileMapper(
|
||||
val originalFile: JetFile,
|
||||
@@ -64,13 +65,13 @@ class ToFromOriginalFileMapper(
|
||||
|
||||
public fun toOriginalFile(declaration: JetDeclaration): JetDeclaration? {
|
||||
if (declaration.getContainingFile() != syntheticFile) return declaration
|
||||
val offset = toOriginalFile(declaration.getTextRange().getStartOffset()) ?: return null
|
||||
val offset = toOriginalFile(declaration.startOffset) ?: return null
|
||||
return PsiTreeUtil.findElementOfClassAtOffset(originalFile, offset, javaClass<JetDeclaration>(), true)
|
||||
}
|
||||
|
||||
public fun toSyntheticFile(declaration: JetDeclaration): JetDeclaration? {
|
||||
if (declaration.getContainingFile() != originalFile) return declaration
|
||||
val offset = toSyntheticFile(declaration.getTextRange().getStartOffset()) ?: return null
|
||||
val offset = toSyntheticFile(declaration.startOffset) ?: return null
|
||||
return PsiTreeUtil.findElementOfClassAtOffset(syntheticFile, offset, javaClass<JetDeclaration>(), true)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.idea.util.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.types.JetType
|
||||
@@ -150,7 +151,7 @@ public class KotlinFunctionInsertHandler(val caretPosition : CaretPosition, val
|
||||
if (token.getNode().getElementType() == JetTokens.LT) {
|
||||
val parent = token.getParent()
|
||||
if (parent is JetTypeArgumentList && parent.getText().indexOf('\n') < 0/* if type argument list is on multiple lines this is more likely wrong parsing*/) {
|
||||
offset = parent.getTextRange().getEndOffset()
|
||||
offset = parent.endOffset
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.psi.JetFunctionLiteral
|
||||
import org.jetbrains.kotlin.psi.JetImportList
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware {
|
||||
override fun buildLanguageFoldRegions(descriptors: MutableList<FoldingDescriptor>,
|
||||
@@ -42,11 +44,11 @@ public class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware {
|
||||
val imports = root.getImportDirectives()
|
||||
if (imports.size() > 1) {
|
||||
val importKeyword = imports.get(0).getFirstChild()
|
||||
val startOffset = importKeyword.getTextRange().getEndOffset() + 1
|
||||
val startOffset = importKeyword.endOffset + 1
|
||||
|
||||
val importList = root.getImportList()
|
||||
if (importList != null) {
|
||||
val endOffset = importList.getTextRange().getEndOffset()
|
||||
val endOffset = importList.endOffset
|
||||
|
||||
val range = TextRange(startOffset, endOffset)
|
||||
descriptors.add(FoldingDescriptor(importList, range))
|
||||
@@ -85,7 +87,7 @@ public class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware {
|
||||
val lbrace = psi?.getLBrace()
|
||||
val rbrace = psi?.getRBrace()
|
||||
if (lbrace != null && rbrace != null) {
|
||||
return TextRange(lbrace.getTextRange().getStartOffset(), rbrace.getTextRange().getEndOffset())
|
||||
return TextRange(lbrace.startOffset, rbrace.endOffset)
|
||||
}
|
||||
}
|
||||
return node.getTextRange()
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.codeInsight.upDownMover;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.intellij.codeInsight.editorActions.moveUpDown.LineRange;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
@@ -259,9 +258,9 @@ public class JetExpressionMover extends AbstractJetUpDownMover {
|
||||
newBlock = findClosestBlock(((JetFunctionLiteral) parent).getBodyExpression(), down, false);
|
||||
|
||||
if (!down) {
|
||||
ASTNode arrow = ((JetFunctionLiteral) parent).getArrowNode();
|
||||
PsiElement arrow = ((JetFunctionLiteral) parent).getArrow();
|
||||
if (arrow != null) {
|
||||
end = arrow.getPsi();
|
||||
end = arrow;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -306,9 +305,9 @@ public class JetExpressionMover extends AbstractJetUpDownMover {
|
||||
if (down) {
|
||||
end = JetPsiUtil.findChildByType(blockLikeElement, JetTokens.LBRACE);
|
||||
if (blockLikeElement instanceof JetFunctionLiteral) {
|
||||
ASTNode arrow = ((JetFunctionLiteral) blockLikeElement).getArrowNode();
|
||||
PsiElement arrow = ((JetFunctionLiteral) blockLikeElement).getArrow();
|
||||
if (arrow != null) {
|
||||
end = arrow.getPsi();
|
||||
end = arrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,9 +33,7 @@ import com.intellij.util.IncorrectOperationException
|
||||
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isSingleQuoted
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
|
||||
public class KotlinEnterHandler: EnterHandlerDelegateAdapter() {
|
||||
companion object {
|
||||
@@ -110,8 +108,8 @@ public class KotlinEnterHandler: EnterHandlerDelegateAdapter() {
|
||||
val doc = editor.getDocument()
|
||||
var caretAdvance = 1
|
||||
if (stringTemplate.getParent() is JetDotQualifiedExpression) {
|
||||
doc.insertString(stringTemplate.getTextRange().getEndOffset(), ")")
|
||||
doc.insertString(stringTemplate.getTextRange().getStartOffset(), "(")
|
||||
doc.insertString(stringTemplate.endOffset, ")")
|
||||
doc.insertString(stringTemplate.startOffset, "(")
|
||||
caretOffset++
|
||||
caretAdvance++
|
||||
}
|
||||
|
||||
+4
-2
@@ -25,6 +25,8 @@ import java.util.ArrayList
|
||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||
import com.intellij.psi.PsiComment
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class KotlinDeclarationSelectioner : ExtendWordSelectionHandlerBase() {
|
||||
override fun canSelect(e: PsiElement)
|
||||
@@ -44,8 +46,8 @@ public class KotlinDeclarationSelectioner : ExtendWordSelectionHandlerBase() {
|
||||
.first { it !is PsiComment && it !is PsiWhiteSpace }
|
||||
|
||||
if (firstNonComment != firstChild || lastNonComment != lastChild) {
|
||||
val start = firstNonComment.getTextRange().getStartOffset()
|
||||
val end = lastNonComment.getTextRange().getEndOffset()
|
||||
val start = firstNonComment.startOffset
|
||||
val end = lastNonComment.endOffset
|
||||
result.addAll(ExtendWordSelectionHandlerBase.expandToWholeLine(editorText, TextRange(start, end)))
|
||||
}
|
||||
|
||||
|
||||
+4
-2
@@ -21,6 +21,8 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.psi.JetStringTemplateExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class KotlinStringLiteralSelectioner : ExtendWordSelectionHandlerBase() {
|
||||
override fun canSelect(e: PsiElement) = e is JetStringTemplateExpression
|
||||
@@ -28,8 +30,8 @@ public class KotlinStringLiteralSelectioner : ExtendWordSelectionHandlerBase() {
|
||||
override fun select(e: PsiElement, editorText: CharSequence, cursorOffset: Int, editor: Editor): List<TextRange>? {
|
||||
val entries = (e as JetStringTemplateExpression).getEntries()
|
||||
if (entries.isEmpty()) return null
|
||||
val start = entries.first().getTextRange().getStartOffset()
|
||||
val end = entries.last().getTextRange().getEndOffset()
|
||||
val start = entries.first().startOffset
|
||||
val end = entries.last().endOffset
|
||||
return listOf(TextRange(start, end))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.intentions
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class AddBracesIntention : JetSelfTargetingIntention<JetExpression>(javaClass(), "Add braces") {
|
||||
override fun isApplicableTo(element: JetExpression, caretOffset: Int): Boolean {
|
||||
@@ -50,7 +51,7 @@ public class AddBracesIntention : JetSelfTargetingIntention<JetExpression>(javaC
|
||||
is JetIfExpression -> {
|
||||
val thenExpr = getThen() ?: return null
|
||||
val elseExpr = getElse()
|
||||
if (elseExpr != null && caretLocation >= getElseKeyword()!!.getTextRange().getStartOffset()) {
|
||||
if (elseExpr != null && caretLocation >= getElseKeyword()!!.startOffset) {
|
||||
return elseExpr
|
||||
}
|
||||
return thenExpr
|
||||
|
||||
@@ -27,6 +27,8 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsStatement
|
||||
import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
|
||||
@@ -70,7 +72,7 @@ public class ConvertToExpressionBodyIntention : JetSelfTargetingOffsetIndependen
|
||||
val typeRef = declaration.getTypeReference()!!
|
||||
val colon = declaration.getColon()!!
|
||||
if (editor != null) {
|
||||
val range = TextRange(colon.getTextRange().getStartOffset(), typeRef.getTextRange().getEndOffset())
|
||||
val range = TextRange(colon.startOffset, typeRef.endOffset)
|
||||
editor.getSelectionModel().setSelection(range.getStartOffset(), range.getEndOffset())
|
||||
editor.getCaretModel().moveToOffset(range.getEndOffset())
|
||||
}
|
||||
|
||||
+2
-1
@@ -21,11 +21,12 @@ import org.jetbrains.kotlin.psi.JetBlockExpression
|
||||
import org.jetbrains.kotlin.psi.JetForExpression
|
||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import org.jetbrains.kotlin.psi.createExpressionByPattern
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
|
||||
public class ConvertToForEachFunctionCallIntention : JetSelfTargetingIntention<JetForExpression>(javaClass(), "Replace with a forEach function call") {
|
||||
override fun isApplicableTo(element: JetForExpression, caretOffset: Int): Boolean {
|
||||
val rParen = element.getRightParenthesis() ?: return false
|
||||
if (caretOffset > rParen.getTextRange().getEndOffset()) return false // available only on the loop header, not in the body
|
||||
if (caretOffset > rParen.endOffset) return false // available only on the loop header, not in the body
|
||||
return element.getLoopRange() != null && element.getLoopParameter() != null && element.getBody() != null
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,10 @@ import org.jetbrains.kotlin.idea.intentions.branchedTransformations.expressionCo
|
||||
import org.jetbrains.kotlin.idea.util.isNothing
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.replaced
|
||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
import java.util.ArrayList
|
||||
|
||||
@@ -39,7 +41,7 @@ public class IfNullToElvisIntention : JetSelfTargetingRangeIntention<JetIfExpres
|
||||
if (!type.isNothing()) return null
|
||||
|
||||
val rParen = element.getRightParenthesis() ?: return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), rParen.getTextRange().getEndOffset())
|
||||
return TextRange(element.startOffset, rParen.endOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetIfExpression, editor: Editor) {
|
||||
|
||||
+2
-1
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.intentions
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import org.jetbrains.kotlin.idea.util.psiModificationUtil.moveLambdaOutsideParentheses
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getValueArgumentsInParentheses
|
||||
|
||||
public class MoveLambdaOutsideParenthesesIntention : JetSelfTargetingIntention<JetCallExpression>(javaClass(), "Move lambda argument out of parentheses") {
|
||||
@@ -26,7 +27,7 @@ public class MoveLambdaOutsideParenthesesIntention : JetSelfTargetingIntention<J
|
||||
val argument = element.getValueArgumentsInParentheses().lastOrNull() ?: return false
|
||||
val expression = argument.getArgumentExpression() ?: return false
|
||||
val functionLiteral = getFunctionLiteral(expression) ?: return false
|
||||
if (caretOffset < argument.asElement().getTextRange().getStartOffset()) return false
|
||||
if (caretOffset < argument.asElement().startOffset) return false
|
||||
val bodyRange = functionLiteral.getBodyExpression()?.getTextRange() ?: return true
|
||||
return !bodyRange.containsInside(caretOffset)
|
||||
}
|
||||
|
||||
+3
-2
@@ -20,12 +20,13 @@ import com.intellij.openapi.editor.Editor
|
||||
import org.jetbrains.kotlin.psi.JetFunctionLiteralExpression
|
||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
|
||||
public class RemoveExplicitLambdaParameterTypesIntention : JetSelfTargetingIntention<JetFunctionLiteralExpression>(javaClass(), "Remove explicit lambda parameter types (may break code)") {
|
||||
override fun isApplicableTo(element: JetFunctionLiteralExpression, caretOffset: Int): Boolean {
|
||||
if (element.getValueParameters().none { it.getTypeReference() != null }) return false
|
||||
val arrow = element.getFunctionLiteral().getArrowNode() ?: return false
|
||||
return caretOffset <= arrow.getTextRange().getEndOffset()
|
||||
val arrow = element.getFunctionLiteral().getArrow() ?: return false
|
||||
return caretOffset <= arrow.endOffset
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetFunctionLiteralExpression, editor: Editor) {
|
||||
|
||||
+4
-3
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.references.JetReference
|
||||
import org.jetbrains.kotlin.psi.JetFunctionLiteral
|
||||
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
|
||||
@@ -63,8 +64,8 @@ public class ReplaceExplicitFunctionLiteralParamWithItIntention() : PsiElementBa
|
||||
}
|
||||
|
||||
val functionLiteral = element.getParentOfType<JetFunctionLiteral>(true) ?: return null
|
||||
val arrow = functionLiteral.getArrowNode() ?: return null
|
||||
if (caretOffset > arrow.getTextRange().getEndOffset()) return null
|
||||
val arrow = functionLiteral.getArrow() ?: return null
|
||||
if (caretOffset > arrow.endOffset) return null
|
||||
return functionLiteral
|
||||
}
|
||||
|
||||
@@ -81,7 +82,7 @@ public class ReplaceExplicitFunctionLiteralParamWithItIntention() : PsiElementBa
|
||||
public override fun performRefactoring(usages: Array<out UsageInfo>) {
|
||||
super.performRefactoring(usages)
|
||||
|
||||
functionLiteral.deleteChildRange(functionLiteral.getValueParameterList(), functionLiteral.getArrowNode()!!.getPsi())
|
||||
functionLiteral.deleteChildRange(functionLiteral.getValueParameterList(), functionLiteral.getArrow()!!)
|
||||
|
||||
if (cursorWasInParameterList) {
|
||||
editor.getCaretModel().moveToOffset(functionLiteral.getBodyExpression()!!.getTextOffset())
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ public class ReplaceItWithExplicitFunctionLiteralParamIntention() : JetSelfTarge
|
||||
val newExpr = JetPsiFactory(element).createExpression("{ it -> }") as JetFunctionLiteralExpression
|
||||
functionLiteral.addRangeAfter(
|
||||
newExpr.getFunctionLiteral().getValueParameterList(),
|
||||
newExpr.getFunctionLiteral().getArrowNode()!!.getPsi(),
|
||||
newExpr.getFunctionLiteral().getArrow()!!,
|
||||
functionLiteral.getLBrace())
|
||||
PsiDocumentManager.getInstance(element.getProject()).doPostponedOperationsAndUnblockDocument(editor.getDocument())
|
||||
|
||||
|
||||
+3
-2
@@ -25,13 +25,14 @@ import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.idea.util.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
|
||||
public class SpecifyExplicitLambdaSignatureIntention : JetSelfTargetingIntention<JetFunctionLiteralExpression>(javaClass(), "Specify explicit lambda signature") {
|
||||
|
||||
override fun isApplicableTo(element: JetFunctionLiteralExpression, caretOffset: Int): Boolean {
|
||||
val arrow = element.getFunctionLiteral().getArrowNode()
|
||||
val arrow = element.getFunctionLiteral().getArrow()
|
||||
if (arrow != null) {
|
||||
if (caretOffset > arrow.getTextRange().getEndOffset()) return false
|
||||
if (caretOffset > arrow.endOffset) return false
|
||||
if (element.getValueParameters().all { it.getTypeReference() != null }) return false
|
||||
}
|
||||
else {
|
||||
|
||||
+2
-1
@@ -23,12 +23,13 @@ import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
|
||||
import org.jetbrains.kotlin.psi.JetWhenExpression
|
||||
import org.jetbrains.kotlin.psi.buildExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class EliminateWhenSubjectIntention : JetSelfTargetingIntention<JetWhenExpression>(javaClass(), "Eliminate argument of 'when'") {
|
||||
override fun isApplicableTo(element: JetWhenExpression, caretOffset: Int): Boolean {
|
||||
if (element.getSubjectExpression() !is JetSimpleNameExpression) return false
|
||||
val lBrace = element.getOpenBrace() ?: return false
|
||||
return caretOffset <= lBrace.getTextRange().getStartOffset()
|
||||
return caretOffset <= lBrace.startOffset
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetWhenExpression, editor: Editor) {
|
||||
|
||||
+3
-1
@@ -21,7 +21,9 @@ import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingIntention
|
||||
import org.jetbrains.kotlin.idea.quickfix.moveCaret
|
||||
import org.jetbrains.kotlin.idea.util.psi.patternMatching.matches
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.replaced
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class FlattenWhenIntention : JetSelfTargetingIntention<JetWhenExpression>(javaClass(), "Flatten 'when' expression") {
|
||||
override fun isApplicableTo(element: JetWhenExpression, caretOffset: Int): Boolean {
|
||||
@@ -37,7 +39,7 @@ public class FlattenWhenIntention : JetSelfTargetingIntention<JetWhenExpression>
|
||||
if (!subject.matches(innerWhen.getSubjectExpression())) return false
|
||||
if (!JetPsiUtil.checkWhenExpressionHasSingleElse(innerWhen)) return false
|
||||
|
||||
return elseEntry.getTextRange().getStartOffset() <= caretOffset && caretOffset <= innerWhen.getWhenKeywordElement().getTextRange().getEndOffset()
|
||||
return elseEntry.startOffset <= caretOffset && caretOffset <= innerWhen.getWhenKeywordElement().endOffset
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetWhenExpression, editor: Editor) {
|
||||
|
||||
+3
-1
@@ -23,6 +23,8 @@ import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.*
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsStatement
|
||||
|
||||
public class IfThenToDoubleBangIntention : JetSelfTargetingRangeIntention<JetIfExpression>(javaClass(), "Replace 'if' expression with '!!' expression") {
|
||||
@@ -61,7 +63,7 @@ public class IfThenToDoubleBangIntention : JetSelfTargetingRangeIntention<JetIfE
|
||||
|
||||
setText(text)
|
||||
val rParen = element.getRightParenthesis() ?: return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), rParen.getTextRange().getEndOffset())
|
||||
return TextRange(element.startOffset, rParen.endOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetIfExpression, editor: Editor) {
|
||||
|
||||
+3
-1
@@ -23,13 +23,15 @@ import org.jetbrains.kotlin.idea.intentions.branchedTransformations.BranchedUnfo
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.JetBinaryExpression
|
||||
import org.jetbrains.kotlin.psi.JetIfExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class UnfoldAssignmentToIfIntention : JetSelfTargetingRangeIntention<JetBinaryExpression>(javaClass(), "Replace assignment with 'if' expression") {
|
||||
override fun applicabilityRange(element: JetBinaryExpression): TextRange? {
|
||||
if (element.getOperationToken() !in JetTokens.ALL_ASSIGNMENTS) return null
|
||||
if (element.getLeft() == null) return null
|
||||
val right = element.getRight() as? JetIfExpression ?: return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), right.getIfKeyword().getTextRange().getEndOffset())
|
||||
return TextRange(element.startOffset, right.getIfKeyword().endOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetBinaryExpression, editor: Editor) {
|
||||
|
||||
+3
-1
@@ -24,6 +24,8 @@ import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.JetBinaryExpression
|
||||
import org.jetbrains.kotlin.psi.JetPsiUtil
|
||||
import org.jetbrains.kotlin.psi.JetWhenExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class UnfoldAssignmentToWhenIntention : JetSelfTargetingRangeIntention<JetBinaryExpression>(javaClass(), "Replace assignment with 'when' expression" ) {
|
||||
override fun applicabilityRange(element: JetBinaryExpression): TextRange? {
|
||||
@@ -31,7 +33,7 @@ public class UnfoldAssignmentToWhenIntention : JetSelfTargetingRangeIntention<Je
|
||||
if (element.getLeft() == null) return null
|
||||
val right = element.getRight() as? JetWhenExpression ?: return null
|
||||
if (!JetPsiUtil.checkWhenExpressionHasSingleElse(right)) return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), right.getWhenKeywordElement().getTextRange().getEndOffset())
|
||||
return TextRange(element.startOffset, right.getWhenKeywordElement().endOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetBinaryExpression, editor: Editor) {
|
||||
|
||||
+3
-1
@@ -23,12 +23,14 @@ import org.jetbrains.kotlin.idea.intentions.branchedTransformations.BranchedUnfo
|
||||
import org.jetbrains.kotlin.idea.intentions.splitPropertyDeclaration
|
||||
import org.jetbrains.kotlin.psi.JetIfExpression
|
||||
import org.jetbrains.kotlin.psi.JetProperty
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class UnfoldPropertyToIfIntention : JetSelfTargetingRangeIntention<JetProperty>(javaClass(), "Replace property initializer with 'if' expression") {
|
||||
override fun applicabilityRange(element: JetProperty): TextRange? {
|
||||
if (!element.isLocal()) return null
|
||||
val initializer = element.getInitializer() as? JetIfExpression ?: return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), initializer.getIfKeyword().getTextRange().getEndOffset())
|
||||
return TextRange(element.startOffset, initializer.getIfKeyword().endOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetProperty, editor: Editor) {
|
||||
|
||||
+3
-1
@@ -24,13 +24,15 @@ import org.jetbrains.kotlin.idea.intentions.splitPropertyDeclaration
|
||||
import org.jetbrains.kotlin.psi.JetProperty
|
||||
import org.jetbrains.kotlin.psi.JetPsiUtil
|
||||
import org.jetbrains.kotlin.psi.JetWhenExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class UnfoldPropertyToWhenIntention : JetSelfTargetingRangeIntention<JetProperty>(javaClass(), "Replace property initializer with 'when' expression") {
|
||||
override fun applicabilityRange(element: JetProperty): TextRange? {
|
||||
if (!element.isLocal()) return null
|
||||
val initializer = element.getInitializer() as? JetWhenExpression ?: return null
|
||||
if (!JetPsiUtil.checkWhenExpressionHasSingleElse(initializer)) return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), initializer.getWhenKeywordElement().getTextRange().getEndOffset())
|
||||
return TextRange(element.startOffset, initializer.getWhenKeywordElement().endOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetProperty, editor: Editor) {
|
||||
|
||||
+3
-1
@@ -25,11 +25,13 @@ import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import org.jetbrains.kotlin.psi.JetReturnExpression
|
||||
import org.jetbrains.kotlin.psi.createExpressionByPattern
|
||||
import org.jetbrains.kotlin.psi.psiUtil.copied
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class UnfoldReturnToIfIntention : JetSelfTargetingRangeIntention<JetReturnExpression>(javaClass(), "Replace return with 'if' expression") {
|
||||
override fun applicabilityRange(element: JetReturnExpression): TextRange? {
|
||||
val ifExpression = element.getReturnedExpression() as? JetIfExpression ?: return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), ifExpression.getIfKeyword().getTextRange().getEndOffset())
|
||||
return TextRange(element.startOffset, ifExpression.getIfKeyword().endOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetReturnExpression, editor: Editor) {
|
||||
|
||||
+3
-1
@@ -22,12 +22,14 @@ import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.BranchedUnfoldingUtils
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.copied
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class UnfoldReturnToWhenIntention : JetSelfTargetingRangeIntention<JetReturnExpression>(javaClass(), "Replace return with 'when' expression") {
|
||||
override fun applicabilityRange(element: JetReturnExpression): TextRange? {
|
||||
val whenExpr = element.getReturnedExpression() as? JetWhenExpression ?: return null
|
||||
if (!JetPsiUtil.checkWhenExpressionHasSingleElse(whenExpr)) return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), whenExpr.getWhenKeywordElement().getTextRange().getEndOffset())
|
||||
return TextRange(element.startOffset, whenExpr.getWhenKeywordElement().endOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetReturnExpression, editor: Editor) {
|
||||
|
||||
+2
-1
@@ -21,12 +21,13 @@ import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.intentions.splitPropertyDeclaration
|
||||
import org.jetbrains.kotlin.psi.JetProperty
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
public class SplitPropertyDeclarationIntention : JetSelfTargetingRangeIntention<JetProperty>(javaClass(), "Split property declaration") {
|
||||
override fun applicabilityRange(element: JetProperty): TextRange? {
|
||||
if (!element.isLocal()) return null
|
||||
val initializer = element.getInitializer() ?: return null
|
||||
return TextRange(element.getTextRange().getStartOffset(), initializer.getTextRange().getStartOffset())
|
||||
return TextRange(element.startOffset, initializer.startOffset)
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetProperty, editor: Editor) {
|
||||
|
||||
@@ -196,7 +196,7 @@ private class LambdaToFunctionExpression(
|
||||
// many statements
|
||||
if (returnType != null) statements.filterIsInstance<JetExpression>().lastOrNull()?.replaceWithReturn(psiFactory)
|
||||
|
||||
val fromElement = functionLiteral.getArrowNode()?.getPsi() ?: functionLiteral.getLBrace()
|
||||
val fromElement = functionLiteral.getArrow() ?: functionLiteral.getLBrace()
|
||||
val toElement = functionLiteral.getRBrace()
|
||||
// to include comments in the start/end of the body
|
||||
val bodyText = fromElement.siblings(withItself = false)
|
||||
|
||||
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.idea.core.isVisible
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.idea.util.ShortenReferences
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.replaced
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
@@ -89,7 +90,7 @@ public object SuperClassNotInitialized : JetIntentionActionsFactory() {
|
||||
|
||||
if (putCaretIntoParenthesis) {
|
||||
if (editor != null) {
|
||||
val offset = newSpecifier.getValueArgumentList()!!.getLeftParenthesis()!!.getTextRange().getEndOffset()
|
||||
val offset = newSpecifier.getValueArgumentList()!!.getLeftParenthesis()!!.endOffset
|
||||
editor.moveCaret(offset)
|
||||
if (!ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
ShowParameterInfoHandler.invoke(project, editor, file, offset - 1, null)
|
||||
|
||||
+9
-9
@@ -892,17 +892,17 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
|
||||
|
||||
when (newJavaMember) {
|
||||
is PsiMethod -> CreateFromUsageUtils.setupEditor(newJavaMember, targetEditor)
|
||||
is PsiField -> targetEditor.getCaretModel().moveToOffset(newJavaMember.getTextRange().getEndOffset() - 1)
|
||||
is PsiField -> targetEditor.getCaretModel().moveToOffset(newJavaMember.endOffset - 1)
|
||||
is PsiClass -> {
|
||||
val constructor = newJavaMember.getConstructors().firstOrNull()
|
||||
val superStatement = constructor?.getBody()?.getStatements()?.firstOrNull() as? PsiExpressionStatement
|
||||
val superCall = superStatement?.getExpression() as? PsiMethodCallExpression
|
||||
if (superCall != null) {
|
||||
val lParen = superCall.getArgumentList().getFirstChild()
|
||||
targetEditor.getCaretModel().moveToOffset(lParen.getTextRange().getEndOffset())
|
||||
targetEditor.getCaretModel().moveToOffset(lParen.endOffset)
|
||||
}
|
||||
else {
|
||||
targetEditor.getCaretModel().moveToOffset(newJavaMember.getTextRange().getStartOffset())
|
||||
targetEditor.getCaretModel().moveToOffset(newJavaMember.startOffset)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -916,17 +916,17 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
|
||||
val selectionModel = containingFileEditor.getSelectionModel()
|
||||
|
||||
if (declaration is JetSecondaryConstructor) {
|
||||
caretModel.moveToOffset(declaration.getConstructorKeyword().getTextRange().getEndOffset())
|
||||
caretModel.moveToOffset(declaration.getConstructorKeyword().endOffset)
|
||||
}
|
||||
else {
|
||||
caretModel.moveToOffset(declaration.getNameIdentifier()!!.getTextRange().getEndOffset())
|
||||
caretModel.moveToOffset(declaration.getNameIdentifier()!!.endOffset)
|
||||
}
|
||||
|
||||
fun positionBetween(left: PsiElement, right: PsiElement) {
|
||||
val from = left.siblings(withItself = false, forward = true).firstOrNull { it !is PsiWhiteSpace } ?: return
|
||||
val to = right.siblings(withItself = false, forward = false).firstOrNull { it !is PsiWhiteSpace } ?: return
|
||||
val startOffset = from.getTextRange().getStartOffset()
|
||||
val endOffset = to.getTextRange().getEndOffset()
|
||||
val startOffset = from.startOffset
|
||||
val endOffset = to.endOffset
|
||||
caretModel.moveToOffset(endOffset)
|
||||
selectionModel.setSelection(startOffset, endOffset)
|
||||
}
|
||||
@@ -938,7 +938,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
|
||||
}
|
||||
}
|
||||
is JetClassOrObject -> {
|
||||
caretModel.moveToOffset(declaration.getTextRange().getStartOffset())
|
||||
caretModel.moveToOffset(declaration.startOffset)
|
||||
}
|
||||
is JetProperty -> {
|
||||
if (!declaration.hasInitializer() && containingElement is JetBlockExpression) {
|
||||
@@ -949,7 +949,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
|
||||
val range = initializer.getTextRange()
|
||||
selectionModel.setSelection(range.getStartOffset(), range.getEndOffset())
|
||||
}
|
||||
caretModel.moveToOffset(declaration.getTextRange().getEndOffset())
|
||||
caretModel.moveToOffset(declaration.endOffset)
|
||||
}
|
||||
}
|
||||
containingFileEditor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE)
|
||||
|
||||
+4
-4
@@ -248,9 +248,9 @@ public class JetFunctionDefinitionUsage<T extends PsiElement> extends JetUsageIn
|
||||
if (parametersCount == 0 && ((JetFunctionLiteral) element).getTypeReference() == null) {
|
||||
if (parameterList != null) {
|
||||
parameterList.delete();
|
||||
ASTNode arrowNode = ((JetFunctionLiteral)element).getArrowNode();
|
||||
if (arrowNode != null) {
|
||||
arrowNode.getPsi().delete();
|
||||
PsiElement arrow = ((JetFunctionLiteral)element).getArrow();
|
||||
if (arrow != null) {
|
||||
arrow.delete();
|
||||
}
|
||||
parameterList = null;
|
||||
}
|
||||
@@ -298,7 +298,7 @@ public class JetFunctionDefinitionUsage<T extends PsiElement> extends JetUsageIn
|
||||
JetFunctionLiteral functionLiteral = (JetFunctionLiteral) element;
|
||||
PsiElement anchor = functionLiteral.getLBrace();
|
||||
newParameterList = (JetParameterList) element.addAfter(newParameterList, anchor);
|
||||
if (functionLiteral.getArrowNode() == null) {
|
||||
if (functionLiteral.getArrow() == null) {
|
||||
Pair<PsiElement, PsiElement> whitespaceAndArrow = psiFactory.createWhitespaceAndArrow();
|
||||
element.addRangeAfter(whitespaceAndArrow.getFirst(), whitespaceAndArrow.getSecond(), newParameterList);
|
||||
}
|
||||
|
||||
+2
-2
@@ -574,10 +574,10 @@ fun ExtractionGeneratorConfiguration.generateDeclaration(
|
||||
anchorCandidates.add(targetSibling)
|
||||
|
||||
val marginalCandidate = if (insertBefore) {
|
||||
anchorCandidates.minBy { it.getTextRange().getStartOffset() }!!
|
||||
anchorCandidates.minBy { it.startOffset }!!
|
||||
}
|
||||
else {
|
||||
anchorCandidates.maxBy { it.getTextRange().getStartOffset() }!!
|
||||
anchorCandidates.maxBy { it.startOffset }!!
|
||||
}
|
||||
|
||||
// Ascend to the level of targetSibling
|
||||
|
||||
Reference in New Issue
Block a user