Reformat intentions/Utils
This commit is contained in:
committed by
Mikhail Glukhikh
parent
dd4ceb8c0f
commit
a87f652591
@@ -72,7 +72,7 @@ fun resolveToAutoCreatedItDescriptor(expression: KtNameReferenceExpression): Val
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getLambdaByImplicitItReference(expression: KtNameReferenceExpression) =
|
fun getLambdaByImplicitItReference(expression: KtNameReferenceExpression) =
|
||||||
resolveToAutoCreatedItDescriptor(expression)?.containingDeclaration?.source?.getPsi() as? KtFunctionLiteral
|
resolveToAutoCreatedItDescriptor(expression)?.containingDeclaration?.source?.getPsi() as? KtFunctionLiteral
|
||||||
|
|
||||||
// returns assignment which replaces initializer
|
// returns assignment which replaces initializer
|
||||||
fun splitPropertyDeclaration(property: KtProperty): KtBinaryExpression {
|
fun splitPropertyDeclaration(property: KtProperty): KtBinaryExpression {
|
||||||
@@ -166,17 +166,19 @@ private fun KtExpression.specialNegation(reformat: Boolean): KtExpression? {
|
|||||||
val left = left ?: return null
|
val left = left ?: return null
|
||||||
val right = right ?: return null
|
val right = right ?: return null
|
||||||
return factory.createExpressionByPattern(
|
return factory.createExpressionByPattern(
|
||||||
"$0 $1 $2", left, getNegatedOperatorText(operator), right,
|
"$0 $1 $2", left, getNegatedOperatorText(operator), right,
|
||||||
reformat = reformat
|
reformat = reformat
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
is KtIsExpression -> {
|
is KtIsExpression -> {
|
||||||
return factory.createExpressionByPattern("$0 $1 $2",
|
return factory.createExpressionByPattern(
|
||||||
leftHandSide,
|
"$0 $1 $2",
|
||||||
if (isNegated) "is" else "!is",
|
leftHandSide,
|
||||||
typeReference ?: return null,
|
if (isNegated) "is" else "!is",
|
||||||
reformat = reformat)
|
typeReference ?: return null,
|
||||||
|
reformat = reformat
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
is KtConstantExpression -> {
|
is KtConstantExpression -> {
|
||||||
@@ -190,12 +192,14 @@ private fun KtExpression.specialNegation(reformat: Boolean): KtExpression? {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
private val NEGATABLE_OPERATORS = setOf(KtTokens.EQEQ, KtTokens.EXCLEQ, KtTokens.EQEQEQ,
|
private val NEGATABLE_OPERATORS = setOf(
|
||||||
KtTokens.EXCLEQEQEQ, KtTokens.IS_KEYWORD, KtTokens.NOT_IS, KtTokens.IN_KEYWORD,
|
KtTokens.EQEQ, KtTokens.EXCLEQ, KtTokens.EQEQEQ,
|
||||||
KtTokens.NOT_IN, KtTokens.LT, KtTokens.LTEQ, KtTokens.GT, KtTokens.GTEQ)
|
KtTokens.EXCLEQEQEQ, KtTokens.IS_KEYWORD, KtTokens.NOT_IS, KtTokens.IN_KEYWORD,
|
||||||
|
KtTokens.NOT_IN, KtTokens.LT, KtTokens.LTEQ, KtTokens.GT, KtTokens.GTEQ
|
||||||
|
)
|
||||||
|
|
||||||
private fun getNegatedOperatorText(token: IElementType): String {
|
private fun getNegatedOperatorText(token: IElementType): String {
|
||||||
return when(token) {
|
return when (token) {
|
||||||
KtTokens.EQEQ -> KtTokens.EXCLEQ.value
|
KtTokens.EQEQ -> KtTokens.EXCLEQ.value
|
||||||
KtTokens.EXCLEQ -> KtTokens.EQEQ.value
|
KtTokens.EXCLEQ -> KtTokens.EQEQ.value
|
||||||
KtTokens.EQEQEQ -> KtTokens.EXCLEQEQEQ.value
|
KtTokens.EQEQEQ -> KtTokens.EXCLEQEQEQ.value
|
||||||
@@ -225,9 +229,9 @@ private fun KtExpression.ifBranchesOrThis(): List<KtExpression?> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun ResolvedCall<out CallableDescriptor>.resolvedToArrayType(): Boolean =
|
fun ResolvedCall<out CallableDescriptor>.resolvedToArrayType(): Boolean =
|
||||||
resultingDescriptor.returnType.let { type ->
|
resultingDescriptor.returnType.let { type ->
|
||||||
type != null && (KotlinBuiltIns.isArray(type) || KotlinBuiltIns.isPrimitiveArray(type))
|
type != null && (KotlinBuiltIns.isArray(type) || KotlinBuiltIns.isPrimitiveArray(type))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KtElement?.isZero() = this?.text == "0"
|
fun KtElement?.isZero() = this?.text == "0"
|
||||||
|
|
||||||
@@ -244,9 +248,9 @@ fun KtElement?.isSizeOrLength(): Boolean {
|
|||||||
return when (selectorExpression?.text) {
|
return when (selectorExpression?.text) {
|
||||||
"size" -> receiverExpression.isExpressionOfTypeOrSubtype { type ->
|
"size" -> receiverExpression.isExpressionOfTypeOrSubtype { type ->
|
||||||
KotlinBuiltIns.isArray(type) ||
|
KotlinBuiltIns.isArray(type) ||
|
||||||
KotlinBuiltIns.isPrimitiveArray(type) ||
|
KotlinBuiltIns.isPrimitiveArray(type) ||
|
||||||
KotlinBuiltIns.isCollectionOrNullableCollection(type) ||
|
KotlinBuiltIns.isCollectionOrNullableCollection(type) ||
|
||||||
KotlinBuiltIns.isMapOrNullableMap(type)
|
KotlinBuiltIns.isMapOrNullableMap(type)
|
||||||
}
|
}
|
||||||
"length" -> receiverExpression.isExpressionOfTypeOrSubtype(KotlinBuiltIns::isCharSequenceOrNullableCharSequence)
|
"length" -> receiverExpression.isExpressionOfTypeOrSubtype(KotlinBuiltIns::isCharSequenceOrNullableCharSequence)
|
||||||
else -> false
|
else -> false
|
||||||
@@ -255,12 +259,12 @@ fun KtElement?.isSizeOrLength(): Boolean {
|
|||||||
|
|
||||||
|
|
||||||
fun KtDotQualifiedExpression.getLeftMostReceiverExpression(): KtExpression =
|
fun KtDotQualifiedExpression.getLeftMostReceiverExpression(): KtExpression =
|
||||||
(receiverExpression as? KtDotQualifiedExpression)?.getLeftMostReceiverExpression() ?: receiverExpression
|
(receiverExpression as? KtDotQualifiedExpression)?.getLeftMostReceiverExpression() ?: receiverExpression
|
||||||
|
|
||||||
fun KtDotQualifiedExpression.replaceFirstReceiver(
|
fun KtDotQualifiedExpression.replaceFirstReceiver(
|
||||||
factory: KtPsiFactory,
|
factory: KtPsiFactory,
|
||||||
newReceiver: KtExpression,
|
newReceiver: KtExpression,
|
||||||
safeAccess: Boolean = false
|
safeAccess: Boolean = false
|
||||||
): KtExpression {
|
): KtExpression {
|
||||||
val replaced = (if (safeAccess) {
|
val replaced = (if (safeAccess) {
|
||||||
this.replaced(factory.createExpressionByPattern("$0?.$1", receiverExpression, selectorExpression!!))
|
this.replaced(factory.createExpressionByPattern("$0?.$1", receiverExpression, selectorExpression!!))
|
||||||
@@ -287,14 +291,14 @@ fun KtDotQualifiedExpression.deleteFirstReceiver(): KtExpression {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val ARRAY_OF_METHODS = setOf(CollectionLiteralResolver.ARRAY_OF_FUNCTION) +
|
private val ARRAY_OF_METHODS = setOf(CollectionLiteralResolver.ARRAY_OF_FUNCTION) +
|
||||||
CollectionLiteralResolver.PRIMITIVE_TYPE_TO_ARRAY.values.toSet() +
|
CollectionLiteralResolver.PRIMITIVE_TYPE_TO_ARRAY.values.toSet() +
|
||||||
Name.identifier("emptyArray")
|
Name.identifier("emptyArray")
|
||||||
|
|
||||||
fun KtCallExpression.isArrayOfMethod(): Boolean {
|
fun KtCallExpression.isArrayOfMethod(): Boolean {
|
||||||
val resolvedCall = resolveToCall() ?: return false
|
val resolvedCall = resolveToCall() ?: return false
|
||||||
val descriptor = resolvedCall.candidateDescriptor
|
val descriptor = resolvedCall.candidateDescriptor
|
||||||
return (descriptor.containingDeclaration as? PackageFragmentDescriptor)?.fqName == KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME &&
|
return (descriptor.containingDeclaration as? PackageFragmentDescriptor)?.fqName == KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME &&
|
||||||
ARRAY_OF_METHODS.contains(descriptor.name)
|
ARRAY_OF_METHODS.contains(descriptor.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KtBlockExpression.getParentLambdaLabelName(): String? {
|
fun KtBlockExpression.getParentLambdaLabelName(): String? {
|
||||||
|
|||||||
Reference in New Issue
Block a user