Merge remote-tracking branch 'origin/master' into incremental
This commit is contained in:
@@ -190,4 +190,8 @@ public final class MiscTest extends AbstractExpressionTest {
|
||||
public void testStringInterpolationEvaluationOrder() throws Exception {
|
||||
fooBoxTest();
|
||||
}
|
||||
|
||||
public void testKt5058() throws Exception {
|
||||
checkFooBoxIsTrue("KT-5058.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,4 +89,20 @@ public final class PatternMatchingTest extends SingleFileTranslationTest {
|
||||
public void testIfInWhen() throws Exception {
|
||||
checkFooBoxIsOk();
|
||||
}
|
||||
|
||||
public void testForWithOneStmWhen() throws Exception {
|
||||
fooBoxTest();
|
||||
}
|
||||
|
||||
public void testWhileWithOneStmWhen() throws Exception {
|
||||
fooBoxTest();
|
||||
}
|
||||
|
||||
public void testDoWhileWithOneStmWhen() throws Exception {
|
||||
fooBoxTest();
|
||||
}
|
||||
|
||||
public void testIfWithOneStmWhen() throws Exception {
|
||||
fooBoxTest();
|
||||
}
|
||||
}
|
||||
@@ -49,10 +49,10 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ImportsResolver;
|
||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverloadResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@@ -93,10 +93,10 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
private final DeclarationResolver declarationResolver;
|
||||
private final ImportsResolver importsResolver;
|
||||
private final JetImportsFactory jetImportsFactory;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
private final OverloadResolver overloadResolver;
|
||||
private final OverrideResolver overrideResolver;
|
||||
private final TypeHierarchyResolver typeHierarchyResolver;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
|
||||
public InjectorForTopDownAnalyzerForJs(
|
||||
@NotNull Project project,
|
||||
@@ -137,10 +137,10 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
this.declarationResolver = new DeclarationResolver();
|
||||
this.importsResolver = new ImportsResolver();
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
this.overloadResolver = new OverloadResolver();
|
||||
this.overrideResolver = new OverrideResolver();
|
||||
this.typeHierarchyResolver = new TypeHierarchyResolver();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
|
||||
this.topDownAnalyzer.setBodyResolver(bodyResolver);
|
||||
this.topDownAnalyzer.setDeclarationResolver(declarationResolver);
|
||||
@@ -232,7 +232,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
declarationResolver.setAnnotationResolver(annotationResolver);
|
||||
declarationResolver.setDescriptorResolver(descriptorResolver);
|
||||
declarationResolver.setImportsResolver(importsResolver);
|
||||
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
|
||||
declarationResolver.setTrace(bindingTrace);
|
||||
|
||||
importsResolver.setImportsFactory(jetImportsFactory);
|
||||
@@ -242,9 +241,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
|
||||
jetImportsFactory.setProject(project);
|
||||
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
overloadResolver.setTrace(bindingTrace);
|
||||
|
||||
overrideResolver.setTrace(bindingTrace);
|
||||
@@ -255,6 +251,9 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
|
||||
typeHierarchyResolver.setTrace(bindingTrace);
|
||||
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
|
||||
@@ -40,8 +40,9 @@ public final class WhenTranslator extends AbstractTranslator {
|
||||
WhenTranslator translator = new WhenTranslator(expression, context);
|
||||
|
||||
if (BindingUtils.isStatement(context.bindingContext(), expression)) {
|
||||
translator.translateAsStatement(context.dynamicContext().jsBlock().getStatements());
|
||||
return null;
|
||||
JsBlock jsBlock = new JsBlock();
|
||||
translator.translateAsStatement(jsBlock.getStatements());
|
||||
return jsBlock;
|
||||
}
|
||||
|
||||
return translator.translateAsExpression();
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package foo
|
||||
|
||||
fun test():Any {
|
||||
val a: Any = "OK"
|
||||
val f: Any =
|
||||
if (true) {
|
||||
when {
|
||||
false -> "1"
|
||||
((a as? String)?.size ?: 0 > 0) -> a
|
||||
else -> "2"
|
||||
}
|
||||
}
|
||||
else {
|
||||
"3"
|
||||
|
||||
}
|
||||
|
||||
return f
|
||||
}
|
||||
|
||||
fun box(): Boolean {
|
||||
var result = test()
|
||||
return result == "OK";
|
||||
}
|
||||
|
||||
@@ -543,6 +543,9 @@
|
||||
},
|
||||
iterator: function () {
|
||||
return new Kotlin.RangeIterator(this.start, this.end, this.increment);
|
||||
},
|
||||
isEmpty: function () {
|
||||
return this.start > this.end;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -554,6 +557,9 @@
|
||||
}, {
|
||||
iterator: function () {
|
||||
return new Kotlin.RangeIterator(this.start, this.end, this.increment);
|
||||
},
|
||||
isEmpty: function() {
|
||||
return this.increment > 0 ? this.start > this.end : this.start < this.end;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package foo
|
||||
|
||||
|
||||
fun box(): Boolean {
|
||||
var result = false
|
||||
var i = 1
|
||||
do
|
||||
when (i) {
|
||||
1 -> result = true
|
||||
else -> result = false
|
||||
}
|
||||
while (i==0)
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package foo
|
||||
|
||||
|
||||
fun box(): Boolean {
|
||||
var result = false
|
||||
for (i in array(1))
|
||||
when (i) {
|
||||
1 -> result = true
|
||||
else -> result = false
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package foo
|
||||
|
||||
|
||||
fun box(): Boolean {
|
||||
var result = false
|
||||
var i = 1
|
||||
if (i==1)
|
||||
when (i) {
|
||||
1 -> result = true
|
||||
else -> result = false
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package foo
|
||||
|
||||
|
||||
fun box(): Boolean {
|
||||
var result = false
|
||||
var i = 1
|
||||
while(i==1)
|
||||
when (i) {
|
||||
1 -> { result = true; break }
|
||||
else -> result = false
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user