Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
6d6a16f3
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6d6a16f3
编写于
12月 07, 2016
作者:
S
shiraji
提交者:
Mikhail Glukhikh
12月 22, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
KT-5045: intention to convert between two comparisons and range check and vice versa
上级
1040c971
变更
70
隐藏空白更改
内联
并排
Showing
70 changed file
with
627 addition
and
0 deletion
+627
-0
idea/resources/intentionDescriptions/ConvertRangeCheckToTwoComparisonsIntention/after.kt.template
...vertRangeCheckToTwoComparisonsIntention/after.kt.template
+1
-0
idea/resources/intentionDescriptions/ConvertRangeCheckToTwoComparisonsIntention/before.kt.template
...ertRangeCheckToTwoComparisonsIntention/before.kt.template
+1
-0
idea/resources/intentionDescriptions/ConvertRangeCheckToTwoComparisonsIntention/description.html
...nvertRangeCheckToTwoComparisonsIntention/description.html
+5
-0
idea/resources/intentionDescriptions/ConvertTwoComparisonsToRangeCheckIntention/after.kt.template
...vertTwoComparisonsToRangeCheckIntention/after.kt.template
+1
-0
idea/resources/intentionDescriptions/ConvertTwoComparisonsToRangeCheckIntention/before.kt.template
...ertTwoComparisonsToRangeCheckIntention/before.kt.template
+1
-0
idea/resources/intentionDescriptions/ConvertTwoComparisonsToRangeCheckIntention/description.html
...nvertTwoComparisonsToRangeCheckIntention/description.html
+5
-0
idea/src/META-INF/plugin.xml
idea/src/META-INF/plugin.xml
+10
-0
idea/src/org/jetbrains/kotlin/idea/intentions/ConvertRangeCheckToTwoComparisonsIntention.kt
.../intentions/ConvertRangeCheckToTwoComparisonsIntention.kt
+51
-0
idea/src/org/jetbrains/kotlin/idea/intentions/ConvertTwoComparisonsToRangeCheckIntention.kt
.../intentions/ConvertTwoComparisonsToRangeCheckIntention.kt
+139
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/.intention
...a/intentions/convertRangeCheckToTwoComparisons/.intention
+1
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/double.kt
...ta/intentions/convertRangeCheckToTwoComparisons/double.kt
+4
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/double.kt.after
...entions/convertRangeCheckToTwoComparisons/double.kt.after
+4
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/forLoop.kt
...a/intentions/convertRangeCheckToTwoComparisons/forLoop.kt
+5
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop.kt
...ntions/convertRangeCheckToTwoComparisons/insideForLoop.kt
+5
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop.kt.after
.../convertRangeCheckToTwoComparisons/insideForLoop.kt.after
+5
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop2.kt
...tions/convertRangeCheckToTwoComparisons/insideForLoop2.kt
+7
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop2.kt.after
...convertRangeCheckToTwoComparisons/insideForLoop2.kt.after
+7
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/int.kt
...tData/intentions/convertRangeCheckToTwoComparisons/int.kt
+3
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/int.kt.after
...intentions/convertRangeCheckToTwoComparisons/int.kt.after
+3
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/nonConstants.kt
...entions/convertRangeCheckToTwoComparisons/nonConstants.kt
+3
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/nonConstants.kt.after
...s/convertRangeCheckToTwoComparisons/nonConstants.kt.after
+3
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/otherOp.kt
...a/intentions/convertRangeCheckToTwoComparisons/otherOp.kt
+6
-0
idea/testData/intentions/convertRangeCheckToTwoComparisons/withSideEffects.kt
...ions/convertRangeCheckToTwoComparisons/withSideEffects.kt
+6
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/.intention
...a/intentions/convertTwoComparisonsToRangeCheck/.intention
+1
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/char.kt
...Data/intentions/convertTwoComparisonsToRangeCheck/char.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/char.kt.after
...ntentions/convertTwoComparisonsToRangeCheck/char.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/charInclusive.kt
...ntions/convertTwoComparisonsToRangeCheck/charInclusive.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/charInclusive.kt.after
.../convertTwoComparisonsToRangeCheck/charInclusive.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/double.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/double.kt
+4
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/double.kt.after
...entions/convertTwoComparisonsToRangeCheck/double.kt.after
+4
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/flipped.kt
...a/intentions/convertTwoComparisonsToRangeCheck/flipped.kt
+1
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/flipped.kt.after
...ntions/convertTwoComparisonsToRangeCheck/flipped.kt.after
+1
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/flippedSideEffect.kt
...ns/convertTwoComparisonsToRangeCheck/flippedSideEffect.kt
+6
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtDouble.kt
.../intentions/convertTwoComparisonsToRangeCheck/gtDouble.kt
+5
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtDouble2.kt
...intentions/convertTwoComparisonsToRangeCheck/gtDouble2.kt
+5
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgt.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/gteqgt.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgt.kt.after
...entions/convertTwoComparisonsToRangeCheck/gteqgt.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgteq.kt
.../intentions/convertTwoComparisonsToRangeCheck/gteqgteq.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgteq.kt.after
...tions/convertTwoComparisonsToRangeCheck/gteqgteq.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlt.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/gteqlt.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlt.kt.after
...entions/convertTwoComparisonsToRangeCheck/gteqlt.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlteq.kt
.../intentions/convertTwoComparisonsToRangeCheck/gteqlteq.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlteq.kt.after
...tions/convertTwoComparisonsToRangeCheck/gteqlteq.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgt.kt
...Data/intentions/convertTwoComparisonsToRangeCheck/gtgt.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgt.kt.after
...ntentions/convertTwoComparisonsToRangeCheck/gtgt.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgteq.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/gtgteq.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgteq.kt.after
...entions/convertTwoComparisonsToRangeCheck/gtgteq.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlt.kt
...Data/intentions/convertTwoComparisonsToRangeCheck/gtlt.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlt.kt.after
...ntentions/convertTwoComparisonsToRangeCheck/gtlt.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlteq.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/gtlteq.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlteq.kt.after
...entions/convertTwoComparisonsToRangeCheck/gtlteq.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgt.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/lteqgt.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgt.kt.after
...entions/convertTwoComparisonsToRangeCheck/lteqgt.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgteq.kt
.../intentions/convertTwoComparisonsToRangeCheck/lteqgteq.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgteq.kt.after
...tions/convertTwoComparisonsToRangeCheck/lteqgteq.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlt.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/lteqlt.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlt.kt.after
...entions/convertTwoComparisonsToRangeCheck/lteqlt.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlteq.kt
.../intentions/convertTwoComparisonsToRangeCheck/lteqlteq.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlteq.kt.after
...tions/convertTwoComparisonsToRangeCheck/lteqlteq.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgt.kt
...Data/intentions/convertTwoComparisonsToRangeCheck/ltgt.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgt.kt.after
...ntentions/convertTwoComparisonsToRangeCheck/ltgt.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgteq.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/ltgteq.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgteq.kt.after
...entions/convertTwoComparisonsToRangeCheck/ltgteq.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlt.kt
...Data/intentions/convertTwoComparisonsToRangeCheck/ltlt.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlt.kt.after
...ntentions/convertTwoComparisonsToRangeCheck/ltlt.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlteq.kt
...ta/intentions/convertTwoComparisonsToRangeCheck/ltlteq.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlteq.kt.after
...entions/convertTwoComparisonsToRangeCheck/ltlteq.kt.after
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/nonConstants.kt
...entions/convertTwoComparisonsToRangeCheck/nonConstants.kt
+3
-0
idea/testData/intentions/convertTwoComparisonsToRangeCheck/nonConstants.kt.after
...s/convertTwoComparisonsToRangeCheck/nonConstants.kt.after
+3
-0
idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
...brains/kotlin/idea/intentions/IntentionTestGenerated.java
+210
-0
未找到文件。
idea/resources/intentionDescriptions/ConvertRangeCheckToTwoComparisonsIntention/after.kt.template
0 → 100644
浏览文件 @
6d6a16f3
fun foo(arg: Int) = 1 <= arg && arg <= 4
\ No newline at end of file
idea/resources/intentionDescriptions/ConvertRangeCheckToTwoComparisonsIntention/before.kt.template
0 → 100644
浏览文件 @
6d6a16f3
fun foo(arg: Int) = arg in 1..4
\ No newline at end of file
idea/resources/intentionDescriptions/ConvertRangeCheckToTwoComparisonsIntention/description.html
0 → 100644
浏览文件 @
6d6a16f3
<html>
<body>
This intention converts range check (in) to two consecutive comparisons
</body>
</html>
\ No newline at end of file
idea/resources/intentionDescriptions/ConvertTwoComparisonsToRangeCheckIntention/after.kt.template
0 → 100644
浏览文件 @
6d6a16f3
fun foo(arg: Int) = arg in 1..4
\ No newline at end of file
idea/resources/intentionDescriptions/ConvertTwoComparisonsToRangeCheckIntention/before.kt.template
0 → 100644
浏览文件 @
6d6a16f3
fun foo(arg: Int) = 1 <= arg && arg <= 4
\ No newline at end of file
idea/resources/intentionDescriptions/ConvertTwoComparisonsToRangeCheckIntention/description.html
0 → 100644
浏览文件 @
6d6a16f3
<html>
<body>
This intention converts two consecutive comparisons to range check (in)
</body>
</html>
\ No newline at end of file
idea/src/META-INF/plugin.xml
浏览文件 @
6d6a16f3
...
...
@@ -1469,6 +1469,16 @@
<category>
Kotlin
</category>
</intentionAction>
<intentionAction>
<className>
org.jetbrains.kotlin.idea.intentions.ConvertTwoComparisonsToRangeCheckIntention
</className>
<category>
Kotlin
</category>
</intentionAction>
<intentionAction>
<className>
org.jetbrains.kotlin.idea.intentions.ConvertRangeCheckToTwoComparisonsIntention
</className>
<category>
Kotlin
</category>
</intentionAction>
<localInspection
implementationClass=
"org.jetbrains.kotlin.idea.intentions.ObjectLiteralToLambdaInspection"
displayName=
"Object literal can be converted to lambda"
groupName=
"Kotlin"
...
...
idea/src/org/jetbrains/kotlin/idea/intentions/ConvertRangeCheckToTwoComparisonsIntention.kt
0 → 100644
浏览文件 @
6d6a16f3
/*
* 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jetbrains.kotlin.idea.intentions
import
com.intellij.openapi.editor.Editor
import
org.jetbrains.kotlin.lexer.KtTokens
import
org.jetbrains.kotlin.psi.*
import
org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
class
ConvertRangeCheckToTwoComparisonsIntention
:
SelfTargetingOffsetIndependentIntention
<
KtBinaryExpression
>(
KtBinaryExpression
::
class
.
java
,
"Convert to comparisons"
)
{
private
fun
KtExpression
?.
isSimple
()
=
this
is
KtConstantExpression
||
this
is
KtNameReferenceExpression
override
fun
applyTo
(
element
:
KtBinaryExpression
,
editor
:
Editor
?)
{
if
(
element
.
operationToken
!=
KtTokens
.
IN_KEYWORD
)
return
val
rangeExpression
=
element
.
right
as
?
KtBinaryExpression
?:
return
val
min
=
rangeExpression
.
left
?:
return
val
arg
=
element
.
left
?:
return
val
max
=
rangeExpression
.
right
?:
return
val
comparisonsExpression
=
KtPsiFactory
(
element
).
createExpressionByPattern
(
"$0 <= $1 && $1 <= $2"
,
min
,
arg
,
max
)
element
.
replace
(
comparisonsExpression
)
}
override
fun
isApplicableTo
(
element
:
KtBinaryExpression
):
Boolean
{
if
(
element
.
operationToken
!=
KtTokens
.
IN_KEYWORD
)
return
false
// ignore for-loop. for(x in 1..2) should not be convert to for(1<=x && x<=2)
if
(
element
.
parent
is
KtForExpression
)
return
false
val
rangeExpression
=
element
.
right
as
?
KtBinaryExpression
?:
return
false
if
(
rangeExpression
.
operationToken
!=
KtTokens
.
RANGE
)
return
false
return
element
.
left
.
isSimple
()
&&
rangeExpression
.
left
.
isSimple
()
&&
rangeExpression
.
right
.
isSimple
()
}
}
\ No newline at end of file
idea/src/org/jetbrains/kotlin/idea/intentions/ConvertTwoComparisonsToRangeCheckIntention.kt
0 → 100644
浏览文件 @
6d6a16f3
/*
* 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jetbrains.kotlin.idea.intentions
import
com.intellij.openapi.editor.Editor
import
com.intellij.psi.tree.IElementType
import
org.jetbrains.kotlin.builtins.KotlinBuiltIns
import
org.jetbrains.kotlin.idea.caches.resolve.analyze
import
org.jetbrains.kotlin.idea.intentions.branchedTransformations.evaluatesTo
import
org.jetbrains.kotlin.lexer.KtTokens
import
org.jetbrains.kotlin.psi.*
import
org.jetbrains.kotlin.resolve.calls.callUtil.getType
import
org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
import
org.jetbrains.kotlin.types.KotlinType
class
ConvertTwoComparisonsToRangeCheckIntention
:
SelfTargetingOffsetIndependentIntention
<
KtBinaryExpression
>(
KtBinaryExpression
::
class
.
java
,
"Convert to range check"
)
{
private
data class
RangeExpressionData
(
val
value
:
KtExpression
,
val
min
:
String
,
val
max
:
String
)
override
fun
isApplicableTo
(
element
:
KtBinaryExpression
)
=
generateRangeExpressionData
(
element
)
!=
null
override
fun
applyTo
(
element
:
KtBinaryExpression
,
editor
:
Editor
?)
{
val
rangeData
=
generateRangeExpressionData
(
element
)
?:
return
val
factory
=
KtPsiFactory
(
element
)
element
.
replace
(
factory
.
createExpressionByPattern
(
"$0 in $1..$2"
,
rangeData
.
value
,
factory
.
createExpression
(
rangeData
.
min
),
factory
.
createExpression
(
rangeData
.
max
)))
}
private
fun
generateRangeExpressionData
(
condition
:
KtBinaryExpression
):
RangeExpressionData
?
{
if
(
condition
.
operationToken
!=
KtTokens
.
ANDAND
)
return
null
val
firstCondition
=
condition
.
left
as
?
KtBinaryExpression
?:
return
null
val
secondCondition
=
condition
.
right
as
?
KtBinaryExpression
?:
return
null
val
firstOpToken
=
firstCondition
.
operationToken
val
secondOpToken
=
secondCondition
.
operationToken
val
firstLeft
=
firstCondition
.
left
?:
return
null
val
firstRight
=
firstCondition
.
right
?:
return
null
val
secondLeft
=
secondCondition
.
left
?:
return
null
val
secondRight
=
secondCondition
.
right
?:
return
null
fun
IElementType
.
isStrictComparison
()
=
this
==
KtTokens
.
GT
||
this
==
KtTokens
.
LT
val
firstStrict
=
firstOpToken
.
isStrictComparison
()
val
secondStrict
=
secondOpToken
.
isStrictComparison
()
fun
IElementType
.
orderLessAndGreater
(
left
:
KtExpression
,
right
:
KtExpression
):
Pair
<
KtExpression
,
KtExpression
>?
=
when
(
this
)
{
KtTokens
.
GTEQ
,
KtTokens
.
GT
->
right
to
left
KtTokens
.
LTEQ
,
KtTokens
.
LT
->
left
to
right
else
->
null
}
val
(
firstLess
,
firstGreater
)
=
firstOpToken
.
orderLessAndGreater
(
firstLeft
,
firstRight
)
?:
return
null
val
(
secondLess
,
secondGreater
)
=
secondOpToken
.
orderLessAndGreater
(
secondLeft
,
secondRight
)
?:
return
null
return
generateRangeExpressionData
(
firstLess
,
firstGreater
,
firstStrict
,
secondLess
,
secondGreater
,
secondStrict
)
}
private
fun
KtExpression
.
isSimple
()
=
this
is
KtConstantExpression
||
this
is
KtNameReferenceExpression
private
fun
generateRangeExpressionData
(
firstLess
:
KtExpression
,
firstGreater
:
KtExpression
,
firstStrict
:
Boolean
,
secondLess
:
KtExpression
,
secondGreater
:
KtExpression
,
secondStrict
:
Boolean
)
=
when
{
firstGreater
!
is
KtConstantExpression
&&
firstGreater
.
evaluatesTo
(
secondLess
)
->
generateRangeExpressionData
(
firstGreater
,
min
=
firstLess
,
max
=
secondGreater
,
incrementMinByOne
=
firstStrict
,
decrementMaxByOne
=
secondStrict
)
firstLess
!
is
KtConstantExpression
&&
firstLess
.
evaluatesTo
(
secondGreater
)
->
generateRangeExpressionData
(
firstLess
,
min
=
secondLess
,
max
=
firstGreater
,
incrementMinByOne
=
secondStrict
,
decrementMaxByOne
=
firstStrict
)
else
->
null
}
private
fun
generateRangeExpressionData
(
value
:
KtExpression
,
min
:
KtExpression
,
max
:
KtExpression
,
incrementMinByOne
:
Boolean
,
decrementMaxByOne
:
Boolean
):
RangeExpressionData
?
{
fun
KtExpression
.
getChangeBy
(
number
:
Int
):
String
?
{
val
context
=
analyze
()
val
type
=
getType
(
context
)
?:
return
null
if
(!
type
.
isValidTypeForIncrementDecrementByOne
())
return
null
when
(
this
)
{
is
KtConstantExpression
->
{
val
constantValue
=
ConstantExpressionEvaluator
.
getConstant
(
this
,
context
)
?.
getValue
(
type
)
?:
return
null
return
when
{
KotlinBuiltIns
.
isInt
(
type
)
->
(
constantValue
as
Int
+
number
).
toString
()
KotlinBuiltIns
.
isLong
(
type
)
->
(
constantValue
as
Long
+
number
).
toString
()
KotlinBuiltIns
.
isChar
(
type
)
->
"'${constantValue as Char + number}'"
else
->
return
null
}
}
else
->
return
if
(
number
>=
0
)
"($text + $number)"
else
"($text - ${-number})"
}
}
// To avoid possible side effects
if
(!
min
.
isSimple
()
||
!
max
.
isSimple
())
return
null
if
(
incrementMinByOne
||
decrementMaxByOne
)
{
if
(!
value
.
getType
(
value
.
analyze
()).
isValidTypeForIncrementDecrementByOne
())
return
null
}
val
minText
=
if
(
incrementMinByOne
)
min
.
getChangeBy
(
1
)
else
min
.
text
val
maxText
=
if
(
decrementMaxByOne
)
max
.
getChangeBy
(-
1
)
else
max
.
text
return
RangeExpressionData
(
value
,
minText
?:
return
null
,
maxText
?:
return
null
)
}
private
fun
KotlinType
?.
isValidTypeForIncrementDecrementByOne
():
Boolean
{
this
?:
return
false
return
KotlinBuiltIns
.
isInt
(
this
)
||
KotlinBuiltIns
.
isLong
(
this
)
||
KotlinBuiltIns
.
isShort
(
this
)
||
KotlinBuiltIns
.
isByte
(
this
)
||
KotlinBuiltIns
.
isChar
(
this
)
}
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/.intention
0 → 100644
浏览文件 @
6d6a16f3
org.jetbrains.kotlin.idea.intentions.ConvertRangeCheckToTwoComparisonsIntention
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/double.kt
0 → 100644
浏览文件 @
6d6a16f3
// WITH_RUNTIME
fun
foo
(
bar
:
Double
)
{
bar
in
1.0
..
10.0
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/double.kt.after
0 → 100644
浏览文件 @
6d6a16f3
// WITH_RUNTIME
fun foo(bar: Double) {
1.0 <= bar && bar <= 10.0
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/forLoop.kt
0 → 100644
浏览文件 @
6d6a16f3
// IS_APPLICABLE: false
fun
foo
(
bar
:
Int
)
{
for
(
bar
in
1
..
2
<
caret
>)
{
}
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
for
(
bar
in
1
..
10
)
{
bar
in
1
..
10
<
caret
>
}
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
for (bar in 1..10) {
1 <= bar && bar <= 10
}
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop2.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
for
(
bar
in
1
..
10
)
{
if
(
bar
in
1
..
10
<
caret
>)
{
}
}
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop2.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
for (bar in 1..10) {
if (1 <= bar && bar <= 10) {
}
}
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/int.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
in
1
..
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/int.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
1 <= bar && bar <= 10<caret>
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/nonConstants.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
,
min
:
Int
,
max
:
Int
)
{
bar
in
min
..
max
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/nonConstants.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int, min: Int, max: Int) {
min <= bar && bar <= max<caret>
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/otherOp.kt
0 → 100644
浏览文件 @
6d6a16f3
// IS_APPLICABLE: false
// WITH_RUNTIME
fun
foo
(
bar
:
Int
)
{
if
(
bar
in
arrayOf
(
1
,
2
,
3
)<
caret
>)
{
}
}
\ No newline at end of file
idea/testData/intentions/convertRangeCheckToTwoComparisons/withSideEffects.kt
0 → 100644
浏览文件 @
6d6a16f3
// IS_APPLICABLE: false
var
x
=
5
var
y
=
10
fun
foo
()
=
<
caret
>++
x
in
--
x
..
y
++
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/.intention
0 → 100644
浏览文件 @
6d6a16f3
org.jetbrains.kotlin.idea.intentions.ConvertTwoComparisonsToRangeCheckIntention
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/char.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Char
)
{
bar
>=
'a'
&&
'z'
>=
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/char.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Char) {
bar in 'a'..'z'
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/charInclusive.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Char
)
{
bar
>
'a'
&&
'z'
>
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/charInclusive.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Char) {
bar in 'b'..'y'
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/double.kt
0 → 100644
浏览文件 @
6d6a16f3
// WITH_RUNTIME
fun
foo
(
bar
:
Int
)
{
bar
>=
0.0
&&
10.0
>=
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/double.kt.after
0 → 100644
浏览文件 @
6d6a16f3
// WITH_RUNTIME
fun foo(bar: Int) {
bar in 0.0..10.0
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/flipped.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
arg
:
Int
)
=
6
>
arg
&&
arg
>=
1
<
caret
>
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/flipped.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(arg: Int) = arg in 1..5
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/flippedSideEffect.kt
0 → 100644
浏览文件 @
6d6a16f3
// IS_APPLICABLE: false
var
x
=
42
// Should be converted into arg in --x..++x (41..42) but initial check is arg <= ++x (43) && --x (42) <= arg
fun
foo
(
arg
:
Int
)
=
<
caret
>
arg
<=
++
x
&&
--
x
<=
arg
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtDouble.kt
0 → 100644
浏览文件 @
6d6a16f3
// IS_APPLICABLE: false
// WITH_RUNTIME
fun
foo
(
bar
:
Int
)
{
bar
>
0.0
&&
10.0
>=
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtDouble2.kt
0 → 100644
浏览文件 @
6d6a16f3
// IS_APPLICABLE: false
// WITH_RUNTIME
fun
foo
(
bar
:
Double
)
{
bar
>
0
&&
10
>=
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgt.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
>=
0
&&
10
>
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgt.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 0..9
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgteq.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
>=
0
&&
10
>=
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgteq.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 0..10
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlt.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
>=
0
&&
bar
<
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlt.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 0..9
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlteq.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
>=
0
&&
bar
<=
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlteq.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 0..10
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgt.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
>
0
&&
10
>
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgt.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 1..9
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgteq.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
>
0
&&
10
>=
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgteq.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 1..10
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlt.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
>
0
&&
bar
<
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlt.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 1..9
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlteq.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
bar
>
0
&&
bar
<=
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlteq.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 1..10
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgt.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
0
<=
bar
&&
10
>
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgt.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 0..9
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgteq.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
0
<=
bar
&&
10
>=
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgteq.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 0..10
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlt.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
0
<=
bar
&&
bar
<
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlt.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 0..9
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlteq.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
0
<=
bar
&&
bar
<=
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlteq.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 0..10
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgt.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
0
<
bar
&&
10
>
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgt.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 1..9
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgteq.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
0
<
bar
&&
10
>=
bar
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgteq.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 1..10
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlt.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
0
<
bar
&&
bar
<
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlt.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 1..9
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlteq.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
)
{
0
<
bar
&&
bar
<=
10
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlteq.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int) {
bar in 1..10
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/nonConstants.kt
0 → 100644
浏览文件 @
6d6a16f3
fun
foo
(
bar
:
Int
,
min
:
Int
,
max
:
Int
)
{
min
<
bar
&&
bar
<
max
<
caret
>
}
\ No newline at end of file
idea/testData/intentions/convertTwoComparisonsToRangeCheck/nonConstants.kt.after
0 → 100644
浏览文件 @
6d6a16f3
fun foo(bar: Int, min: Int, max: Int) {
bar in (min + 1)..(max - 1)
}
\ No newline at end of file
idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
浏览文件 @
6d6a16f3
...
...
@@ -5052,6 +5052,63 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
}
}
@TestMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class ConvertRangeCheckToTwoComparisons extends AbstractIntentionTest {
public void testAllFilesPresentInConvertRangeCheckToTwoComparisons() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/convertRangeCheckToTwoComparisons"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true);
}
@TestMetadata("double.kt")
public void testDouble() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons/double.kt");
doTest(fileName);
}
@TestMetadata("forLoop.kt")
public void testForLoop() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons/forLoop.kt");
doTest(fileName);
}
@TestMetadata("insideForLoop.kt")
public void testInsideForLoop() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop.kt");
doTest(fileName);
}
@TestMetadata("insideForLoop2.kt")
public void testInsideForLoop2() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons/insideForLoop2.kt");
doTest(fileName);
}
@TestMetadata("int.kt")
public void testInt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons/int.kt");
doTest(fileName);
}
@TestMetadata("nonConstants.kt")
public void testNonConstants() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons/nonConstants.kt");
doTest(fileName);
}
@TestMetadata("otherOp.kt")
public void testOtherOp() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons/otherOp.kt");
doTest(fileName);
}
@TestMetadata("withSideEffects.kt")
public void testWithSideEffects() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertRangeCheckToTwoComparisons/withSideEffects.kt");
doTest(fileName);
}
}
@TestMetadata("idea/testData/intentions/convertReceiverToParameter")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
...
...
@@ -6442,6 +6499,159 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
}
}
@TestMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class ConvertTwoComparisonsToRangeCheck extends AbstractIntentionTest {
public void testAllFilesPresentInConvertTwoComparisonsToRangeCheck() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/convertTwoComparisonsToRangeCheck"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true);
}
@TestMetadata("char.kt")
public void testChar() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/char.kt");
doTest(fileName);
}
@TestMetadata("charInclusive.kt")
public void testCharInclusive() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/charInclusive.kt");
doTest(fileName);
}
@TestMetadata("double.kt")
public void testDouble() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/double.kt");
doTest(fileName);
}
@TestMetadata("flipped.kt")
public void testFlipped() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/flipped.kt");
doTest(fileName);
}
@TestMetadata("flippedSideEffect.kt")
public void testFlippedSideEffect() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/flippedSideEffect.kt");
doTest(fileName);
}
@TestMetadata("gtDouble.kt")
public void testGtDouble() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtDouble.kt");
doTest(fileName);
}
@TestMetadata("gtDouble2.kt")
public void testGtDouble2() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtDouble2.kt");
doTest(fileName);
}
@TestMetadata("gteqgt.kt")
public void testGteqgt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgt.kt");
doTest(fileName);
}
@TestMetadata("gteqgteq.kt")
public void testGteqgteq() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqgteq.kt");
doTest(fileName);
}
@TestMetadata("gteqlt.kt")
public void testGteqlt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlt.kt");
doTest(fileName);
}
@TestMetadata("gteqlteq.kt")
public void testGteqlteq() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gteqlteq.kt");
doTest(fileName);
}
@TestMetadata("gtgt.kt")
public void testGtgt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgt.kt");
doTest(fileName);
}
@TestMetadata("gtgteq.kt")
public void testGtgteq() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtgteq.kt");
doTest(fileName);
}
@TestMetadata("gtlt.kt")
public void testGtlt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlt.kt");
doTest(fileName);
}
@TestMetadata("gtlteq.kt")
public void testGtlteq() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/gtlteq.kt");
doTest(fileName);
}
@TestMetadata("lteqgt.kt")
public void testLteqgt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgt.kt");
doTest(fileName);
}
@TestMetadata("lteqgteq.kt")
public void testLteqgteq() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqgteq.kt");
doTest(fileName);
}
@TestMetadata("lteqlt.kt")
public void testLteqlt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlt.kt");
doTest(fileName);
}
@TestMetadata("lteqlteq.kt")
public void testLteqlteq() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/lteqlteq.kt");
doTest(fileName);
}
@TestMetadata("ltgt.kt")
public void testLtgt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgt.kt");
doTest(fileName);
}
@TestMetadata("ltgteq.kt")
public void testLtgteq() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltgteq.kt");
doTest(fileName);
}
@TestMetadata("ltlt.kt")
public void testLtlt() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlt.kt");
doTest(fileName);
}
@TestMetadata("ltlteq.kt")
public void testLtlteq() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/ltlteq.kt");
doTest(fileName);
}
@TestMetadata("nonConstants.kt")
public void testNonConstants() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertTwoComparisonsToRangeCheck/nonConstants.kt");
doTest(fileName);
}
}
@TestMetadata("idea/testData/intentions/copyConcatenatedStringToClipboard")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录