[FIR JS] KT-51740: Alter positioning of NO_VALUE_FOR_PARAMETER
This commit is contained in:
+24
-5
@@ -17,6 +17,8 @@ import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.*
|
||||
import org.jetbrains.kotlin.psi.KtParameter.VAL_VAR_TOKEN_SET
|
||||
import org.jetbrains.kotlin.psi.KtValueArgument
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtClassElementType
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtConstantExpressionElementType
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtStringTemplateExpressionElementType
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes
|
||||
@@ -542,14 +544,31 @@ object LightTreePositioningStrategies {
|
||||
}
|
||||
}
|
||||
val nodeToStart = when (node.tokenType) {
|
||||
in KtTokens.QUALIFIED_ACCESS -> tree.findLastChildByType(node, KtNodeTypes.CALL_EXPRESSION) ?: node
|
||||
in QUALIFIED_ACCESS -> tree.findLastChildByType(node, KtNodeTypes.CALL_EXPRESSION) ?: node
|
||||
KtNodeTypes.CLASS -> tree.findLastChildByType(node, KtNodeTypes.SUPER_TYPE_LIST) ?: node
|
||||
else -> node
|
||||
}
|
||||
return tree.findDescendantByType(nodeToStart, KtNodeTypes.VALUE_ARGUMENT_LIST)?.let { valueArgumentList ->
|
||||
tree.findLastChildByType(valueArgumentList, KtTokens.RPAR)?.let { rpar ->
|
||||
markElement(rpar, startOffset, endOffset, tree, node)
|
||||
val argumentList = nodeToStart.takeIf { nodeToStart.tokenType == KtNodeTypes.VALUE_ARGUMENT_LIST }
|
||||
?: tree.findChildByType(nodeToStart, KtNodeTypes.VALUE_ARGUMENT_LIST)
|
||||
return when {
|
||||
argumentList != null -> {
|
||||
val rightParenthesis = tree.findLastChildByType(argumentList, RPAR)
|
||||
?: return markElement(nodeToStart, startOffset, endOffset, tree, node)
|
||||
val lastArgument = tree.findLastChildByType(argumentList, KtNodeTypes.VALUE_ARGUMENT)
|
||||
if (lastArgument != null) {
|
||||
markRange(lastArgument, rightParenthesis, startOffset, endOffset, tree, node)
|
||||
} else {
|
||||
markRange(nodeToStart, rightParenthesis, startOffset, endOffset, tree, node)
|
||||
}
|
||||
}
|
||||
} ?: markElement(nodeToStart, startOffset, endOffset, tree, node)
|
||||
|
||||
nodeToStart.tokenType == KtNodeTypes.CALL_EXPRESSION -> markElement(
|
||||
tree.findChildByType(nodeToStart, KtNodeTypes.REFERENCE_EXPRESSION) ?: nodeToStart,
|
||||
startOffset, endOffset, tree, node,
|
||||
)
|
||||
|
||||
else -> markElement(nodeToStart, startOffset, endOffset, tree, node)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+20
-1
@@ -644,9 +644,28 @@ object PositioningStrategies {
|
||||
}
|
||||
val qualifiedAccess = when (element) {
|
||||
is KtQualifiedExpression -> element.selectorExpression ?: element
|
||||
is KtClassOrObject -> element.getSuperTypeList() ?: element
|
||||
else -> element
|
||||
}
|
||||
return markElement(qualifiedAccess.findDescendantOfType<KtValueArgumentList>()?.rightParenthesis ?: qualifiedAccess)
|
||||
val argumentList = qualifiedAccess as? KtValueArgumentList
|
||||
?: qualifiedAccess.getChildOfType()
|
||||
return when {
|
||||
argumentList != null -> {
|
||||
val rightParenthesis = argumentList.rightParenthesis ?: return markElement(qualifiedAccess)
|
||||
val lastArgument = argumentList.children.findLast { it is KtValueArgument }
|
||||
if (lastArgument != null) {
|
||||
markRange(lastArgument, rightParenthesis)
|
||||
} else {
|
||||
markRange(qualifiedAccess, rightParenthesis)
|
||||
}
|
||||
}
|
||||
|
||||
qualifiedAccess is KtCallExpression -> markElement(
|
||||
qualifiedAccess.getChildOfType<KtNameReferenceExpression>() ?: qualifiedAccess
|
||||
)
|
||||
|
||||
else -> markElement(qualifiedAccess)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user