Merge remote branch 'origin/master'

Conflicts:
	idea/tests/org/jetbrains/jet/resolve/JetResolveTest.java
This commit is contained in:
Andrey Breslav
2011-10-17 20:04:32 +04:00
31 changed files with 986 additions and 95 deletions
@@ -1,6 +1,6 @@
fun box() : String {
val cl = 39
return if (sum(200, { cl }) == 239) "OK" else "FAIL"
return if (sum(200, { val m = { val r = { cl }; r() }; m() }) == 239) "OK" else "FAIL"
}
fun sum(arg:Int, f : fun () : Int) : Int {
@@ -0,0 +1,10 @@
import java.util.*
fun concat(l: List<String>): String? {
val sb = StringBuilder()
for(s in l) {
val x = if(l.size() > 1) { "T" } else { "F" };
sb.append(x)
}
return sb.toString()
}
@@ -1,10 +1,17 @@
class C() {
val child = object {
fun toString(): String = "child"
class C(x: Int, val y : Int) {
fun initChild(x: Int) : java.lang.Object {
return object : java.lang.Object() {
override fun toString(): String? {
x = x + y
return "child" + x
}
}
}
val child = initChild(x)
}
fun box(): String {
val c = C()
return if (c.child.toString() == "child") "OK" else "fail"
val c = C(10,3)
return if (c.child.toString() == "child13" && c.child.toString() == "child16" && c.child.toString() == "child19") "OK" else "fail"
}
+196
View File
@@ -0,0 +1,196 @@
/*
fun s0() : Boolean {
val y = "222"
val foo = {
val bar = { y }
bar ()
}
return foo() == "222"
}
fun s1() : Boolean {
var x = "222"
val foo = {
val bar = {
x = "aaa"
}
bar ()
}
foo()
return x == "aaa"
}
fun t1() : Boolean {
var x = "111"
val y = x + "22"
val foo = {
x = x + "45" + y
x = x.substring(3)
x += "aaa"
()
}
foo()
x += "bbb"
System.out?.println(x)
return x == "4511122aaabbb"
}
fun t2() : Boolean {
var x = 111
val y = x + 22
val foo = {
x = x + 5 + y
x += 5
x++
()
}
foo()
x -= 55
System.out?.println(x)
return x == 200
}
fun t3() : Boolean {
var x = true
val foo = {
x = false
()
}
foo()
return !x
}
fun t4() : Boolean {
var x = 100.flt
val y = x + 22
val foo = {
x = x + 200.flt + y
x += 18
()
}
foo()
System.out?.println(x)
return x == 440.flt
}
fun t5() : Boolean {
var x = 100.dbl
val y = x + 22
val foo = {
x = x + 200.dbl + y
x -= 22
()
}
foo()
System.out?.println(x)
return x == 400.dbl
}
fun t6() : Boolean {
var x = 20.byt
val y = x + 22
val foo = {
x = (x + 20.byt + y).byt
x += 2
x--
()
}
foo()
System.out?.println(x)
return x == 83.byt
}
fun t7() : Boolean {
var x : Char = 'a'
val foo = {
x = 'b'
()
}
foo()
System.out?.println(x)
return x == 'b'
}
fun t8() : Boolean {
var x = 20.sht
val foo = {
val bar = {
x = 30.sht
()
}
bar()
()
}
foo()
return x == 30.sht
}
fun t9(x: Int) : Boolean {
while(x < 100) {
x++
}
return x == 100
}
fun t10() : Boolean {
var y = 1
val foo = {
val bar = {
y = y + 1
}
bar()
}
foo()
return y == 2
}
fun t11(x: Int) : Int {
val foo = {
x = x + 1
val bar = {
x = x + 1
x += 3
}
bar()
}
while(x < 100) {
foo()
}
return x
}
*/
fun t12(x: Int) : Int {
var y = x
val runnable = object : Runnable {
override fun run () {
y = y + 1
}
}
while(y < 100) {
runnable.run()
}
return y
}
fun box(): String {
/*
if (!s0()) return "fail"
if (!s1()) return "fail"
if (!t1()) return "fail"
if (!t2()) return "fail"
if (!t3()) return "fail"
if (!t4()) return "fail"
if (!t5()) return "fail"
if (!t6()) return "fail"
if (!t7()) return "fail"
if (!t8()) return "fail"
if (!t9(0)) return "fail"
if (!t10()) return "fail"
if (t11(1) != 104) return "fail"
*/
if (t12(0) != 100) return "fail"
return "OK"
}
@@ -190,4 +190,10 @@ public class ClassGenTest extends CodegenTestCase {
blackBoxFile("regressions/kt343.jet");
System.out.println(generateToText());
}
public void testKt344 () throws Exception {
loadFile("regressions/kt344.jet");
System.out.println(generateToText());
blackBox();
}
}
@@ -27,6 +27,7 @@ public class ClosuresGenTest extends CodegenTestCase {
public void testEnclosingLocalVariable() throws Exception {
blackBoxFile("classes/enclosingLocalVariable.jet");
System.out.println(generateToText());
}
public void testDoubleEnclosedLocalVariable() throws Exception {
@@ -86,6 +86,16 @@ public class ControlStructuresTest extends CodegenTestCase {
assertEquals("IntelliJ IDEA", main.invoke(null, args));
}
public void testIfBlock() throws Exception {
loadFile();
System.out.println(generateToText());
final Method main = generateFunction();
List<String> args = Arrays.asList("IntelliJ", " ", "IDEA");
assertEquals("TTT", main.invoke(null, args));
args = Arrays.asList("JetBrains");
assertEquals("F", main.invoke(null, args));
}
public void testForInArray() throws Exception {
loadFile();
System.out.println(generateToText());
@@ -10,6 +10,7 @@ public class ObjectGenTest extends CodegenTestCase {
public void testObjectLiteral() throws Exception {
blackBoxFile("objects/objectLiteral.jet");
System.out.println(generateToText());
}
public void testMethodOnObject() throws Exception {
@@ -19,7 +19,7 @@ public class PropertyGenTest extends CodegenTestCase {
final Class aClass = loadImplementationClass(generateClassesInFile(), "PrivateVal");
final Field[] fields = aClass.getDeclaredFields();
assertEquals(2, fields.length); // $typeInfo, prop
final Field field = fields[1];
final Field field = fields[0];
assertEquals("prop", field.getName());
}
@@ -21,9 +21,7 @@ import org.jetbrains.jet.lang.resolve.calls.DataFlowInfo;
import org.jetbrains.jet.lang.resolve.calls.OverloadResolutionResults;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeProjection;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.parsing.JetParsingTest;
import java.io.File;
@@ -111,7 +109,7 @@ public class JetResolveTest extends ExtensibleResolveTestCase {
@NotNull
private FunctionDescriptor standardFunction(ClassDescriptor classDescriptor, List<TypeProjection> typeArguments, String name, JetType... parameterType) {
List<JetType> parameterTypeList = Arrays.asList(parameterType);
// ExpressionTypingServices typeInferrerServices = JetSemanticServices.createSemanticServices(getProject()).getTypeInferrerServices(new BindingTraceContext());
// JetTypeInferrer.Services typeInferrerServices = JetSemanticServices.createSemanticServices(getProject()).getTypeInferrerServices(new BindingTraceContext());
CallResolver callResolver = new CallResolver(JetSemanticServices.createSemanticServices(getProject()), DataFlowInfo.getEmpty());
OverloadResolutionResults<FunctionDescriptor> functions = callResolver.resolveExactSignature(