Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
56363754
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,体验更适合开发者的 AI 搜索 >>
提交
56363754
编写于
6月 06, 2018
作者:
S
Svyatoslav Kuzmich
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
KJS: Fix loop levels in ContinueReplacingVisitor (KT-24777)
上级
2ec8c4aa
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
42 addition
and
3 deletion
+42
-3
js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/LabeledBlockToDoWhileTransformation.kt
...in/js/inline/clean/LabeledBlockToDoWhileTransformation.kt
+3
-3
js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ContinueReplacingVisitor.kt
...tlin/js/inline/util/rewriters/ContinueReplacingVisitor.kt
+5
-0
js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java
...etbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java
+5
-0
js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java
...brains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java
+5
-0
js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt
...stData/box/inline/continueInLoopWithInlinableCondition.kt
+24
-0
未找到文件。
js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/LabeledBlockToDoWhileTransformation.kt
浏览文件 @
56363754
...
...
@@ -29,9 +29,9 @@ object LabeledBlockToDoWhileTransformation {
}
fun
JsStatement
.
isLoop
():
Boolean
=
when
(
this
)
{
is
JsWhile
->
true
is
JsDoWhile
->
true
is
JsFor
->
true
is
JsWhile
,
is
JsDoWhile
,
is
JsFor
,
is
JsForIn
->
true
else
->
false
}
...
...
js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ContinueReplacingVisitor.kt
浏览文件 @
56363754
...
...
@@ -26,6 +26,7 @@ class ContinueReplacingVisitor(val loopLabelName: JsName?, val guardLabelName: J
override
fun
visit
(
x
:
JsContinue
,
ctx
:
JsContext
<
JsNode
>):
Boolean
{
val
target
=
x
.
label
?.
name
val
shouldReplace
=
if
(
target
==
null
)
loopNestingLevel
==
0
else
target
==
loopLabelName
assert
(
loopNestingLevel
>=
0
)
if
(
shouldReplace
)
{
ctx
.
replaceMe
(
JsBreak
(
guardLabelName
.
makeRef
()))
}
...
...
@@ -42,6 +43,7 @@ class ContinueReplacingVisitor(val loopLabelName: JsName?, val guardLabelName: J
override
fun
endVisit
(
x
:
JsWhile
,
ctx
:
JsContext
<
JsNode
>)
{
super
.
endVisit
(
x
,
ctx
)
if
(
loopLabelName
==
null
)
return
loopNestingLevel--
}
...
...
@@ -54,6 +56,7 @@ class ContinueReplacingVisitor(val loopLabelName: JsName?, val guardLabelName: J
override
fun
endVisit
(
x
:
JsDoWhile
,
ctx
:
JsContext
<
JsNode
>)
{
super
.
endVisit
(
x
,
ctx
)
if
(
loopLabelName
==
null
)
return
loopNestingLevel--
}
...
...
@@ -66,6 +69,7 @@ class ContinueReplacingVisitor(val loopLabelName: JsName?, val guardLabelName: J
override
fun
endVisit
(
x
:
JsFor
,
ctx
:
JsContext
<
JsNode
>)
{
super
.
endVisit
(
x
,
ctx
)
if
(
loopLabelName
==
null
)
return
loopNestingLevel--
}
...
...
@@ -78,6 +82,7 @@ class ContinueReplacingVisitor(val loopLabelName: JsName?, val guardLabelName: J
override
fun
endVisit
(
x
:
JsForIn
,
ctx
:
JsContext
<
JsNode
>)
{
super
.
endVisit
(
x
,
ctx
)
if
(
loopLabelName
==
null
)
return
loopNestingLevel--
}
}
js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java
浏览文件 @
56363754
...
...
@@ -3724,6 +3724,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
runTest
(
"js/js.translator/testData/box/inline/classObject.kt"
);
}
@TestMetadata
(
"continueInLoopWithInlinableCondition.kt"
)
public
void
testContinueInLoopWithInlinableCondition
()
throws
Exception
{
runTest
(
"js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt"
);
}
@TestMetadata
(
"dontInlineFunctionCall.kt"
)
public
void
testDontInlineFunctionCall
()
throws
Exception
{
runTest
(
"js/js.translator/testData/box/inline/dontInlineFunctionCall.kt"
);
...
...
js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java
浏览文件 @
56363754
...
...
@@ -3724,6 +3724,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
runTest
(
"js/js.translator/testData/box/inline/classObject.kt"
);
}
@TestMetadata
(
"continueInLoopWithInlinableCondition.kt"
)
public
void
testContinueInLoopWithInlinableCondition
()
throws
Exception
{
runTest
(
"js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt"
);
}
@TestMetadata
(
"dontInlineFunctionCall.kt"
)
public
void
testDontInlineFunctionCall
()
throws
Exception
{
runTest
(
"js/js.translator/testData/box/inline/dontInlineFunctionCall.kt"
);
...
...
js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt
0 → 100644
浏览文件 @
56363754
// EXPECTED_REACHABLE_NODES: 1122
/*
Modified test case from KT-24777
*/
package
foo
inline
fun
condition
()
=
false
fun
run
(
x
:
Boolean
):
String
{
var
y
=
0
do
{
if
(
y
>
0
)
return
"NOT OK"
y
+=
1
do
{
}
while
(
false
)
if
(
x
)
continue
}
while
(
condition
())
return
"OK"
}
fun
box
():
String
{
return
run
(
true
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录