Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
f3c25c72
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,发现更多精彩内容 >>
提交
f3c25c72
编写于
10月 27, 2016
作者:
M
Mikhail Glukhikh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
If then to elvis: no more allowed for if expressions with `Unit` result
上级
8edd33ee
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
27 addition
and
3 deletion
+27
-3
idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfThenToElvisIntention.kt
...nchedTransformations/intentions/IfThenToElvisIntention.kt
+5
-3
idea/testData/intentions/branched/ifThenToElvis/unitResult.kt
.../testData/intentions/branched/ifThenToElvis/unitResult.kt
+16
-0
idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
...brains/kotlin/idea/intentions/IntentionTestGenerated.java
+6
-0
未找到文件。
idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfThenToElvisIntention.kt
浏览文件 @
f3c25c72
...
...
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions
import
com.intellij.openapi.editor.Editor
import
org.jetbrains.kotlin.KtNodeTypes
import
org.jetbrains.kotlin.builtins.KotlinBuiltIns
import
org.jetbrains.kotlin.idea.caches.resolve.analyze
import
org.jetbrains.kotlin.idea.core.replaced
import
org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection
...
...
@@ -29,7 +30,6 @@ import org.jetbrains.kotlin.lexer.KtTokens
import
org.jetbrains.kotlin.psi.*
import
org.jetbrains.kotlin.resolve.BindingContext
import
org.jetbrains.kotlin.resolve.calls.callUtil.getType
import
org.jetbrains.kotlin.resolve.lazy.BodyResolveMode.Companion.PARTIAL
import
org.jetbrains.kotlin.types.KotlinType
import
org.jetbrains.kotlin.types.typeUtil.TypeNullability
import
org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
...
...
@@ -54,12 +54,14 @@ class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpre
}
override
fun
isApplicableTo
(
element
:
KtIfExpression
):
Boolean
{
val
context
=
element
.
analyze
()
val
type
=
element
.
getType
(
context
)
?:
return
false
if
(
KotlinBuiltIns
.
isUnit
(
type
))
return
false
val
condition
=
element
.
condition
as
?
KtOperationExpression
?:
return
false
val
thenClause
=
element
.
then
?:
return
false
val
elseClause
=
element
.
`else`
?:
return
false
val
context
=
condition
.
analyze
(
PARTIAL
)
val
checkedExpression
=
condition
.
checkedExpression
()
?:
return
false
if
(!
checkedExpression
.
isStableVariable
(
context
))
return
false
...
...
idea/testData/intentions/branched/ifThenToElvis/unitResult.kt
0 → 100644
浏览文件 @
f3c25c72
// IS_APPLICABLE: false
open
class
Some
{
fun
bar
()
{}
}
object
Obj
:
Some
()
fun
foo
(
arg
:
Any
?)
{
<
caret
>
if
(
arg
is
Some
)
{
arg
.
bar
()
}
else
{
Obj
.
bar
()
}
}
\ No newline at end of file
idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
浏览文件 @
f3c25c72
...
...
@@ -1452,6 +1452,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName);
}
@TestMetadata("unitResult.kt")
public void testUnitResult() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/branched/ifThenToElvis/unitResult.kt");
doTest(fileName);
}
@TestMetadata("willNotInlineClassProperty.kt")
public void testWillNotInlineClassProperty() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/branched/ifThenToElvis/willNotInlineClassProperty.kt");
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录