Merge remote-tracking branch 'origin/master' into incremental

This commit is contained in:
Evgeny Gerashchenko
2014-06-19 11:43:11 +04:00
89 changed files with 1305 additions and 808 deletions
@@ -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";
}
+6
View File
@@ -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;
}