From 029b2d9770cd003f4edf02324ba0c98aa0a2095b Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Tue, 19 Feb 2013 14:36:50 +0400 Subject: [PATCH] Test fixes for 'New diagnostic error for ambiguous object expression type' --- .../testData/codegen/box/functions/kt1199.kt | 12 ++++++-- .../tests/extensions/GenericIterator.kt | 14 +++++++-- .../diagnostics/tests/regressions/Jet81.kt | 29 +++++++++++-------- .../diagnostics/tests/scopes/kt1806.kt | 12 ++++---- compiler/testData/resolve/Objects.resolve | 29 ++++++++++--------- idea/testData/checker/regression/Jet81.kt | 29 +++++++++++-------- .../object/cases/objectWithMethods.kt | 19 +++++++----- 7 files changed, 88 insertions(+), 56 deletions(-) diff --git a/compiler/testData/codegen/box/functions/kt1199.kt b/compiler/testData/codegen/box/functions/kt1199.kt index 5ea600ddd75..0d1899c549e 100644 --- a/compiler/testData/codegen/box/functions/kt1199.kt +++ b/compiler/testData/codegen/box/functions/kt1199.kt @@ -1,9 +1,15 @@ -fun T?.iterator() = object { + +trait MyIterator { + fun hasNext() : Boolean + fun next() : T +} + +fun T?.iterator() = object : MyIterator { var hasNext = this@iterator != null private set - fun hasNext() = hasNext + override fun hasNext() = hasNext - fun next() : T { + override fun next() : T { if (hasNext) { hasNext = false return this@iterator!! diff --git a/compiler/testData/diagnostics/tests/extensions/GenericIterator.kt b/compiler/testData/diagnostics/tests/extensions/GenericIterator.kt index bf5d4297e18..f8a506a3500 100644 --- a/compiler/testData/diagnostics/tests/extensions/GenericIterator.kt +++ b/compiler/testData/diagnostics/tests/extensions/GenericIterator.kt @@ -6,12 +6,19 @@ inline fun java.util.Enumeration.iterator() = object: Iterator { override fun next() = nextElement() } -fun T?.iterator() = object { +trait MyIterator { + + fun hasNext() : Boolean + + fun next() : T +} + +fun T?.iterator() = object : MyIterator { var hasNext = this@iterator != null private set - fun hasNext() = hasNext + override fun hasNext() = hasNext - fun next() : T { + override fun next() : T { if (hasNext) { hasNext = false return this@iterator!! @@ -26,3 +33,4 @@ fun main(args : Array) { System.out.println(x) } } + diff --git a/compiler/testData/diagnostics/tests/regressions/Jet81.kt b/compiler/testData/diagnostics/tests/regressions/Jet81.kt index 9fbb58838c5..dfb6a09746b 100644 --- a/compiler/testData/diagnostics/tests/regressions/Jet81.kt +++ b/compiler/testData/diagnostics/tests/regressions/Jet81.kt @@ -1,22 +1,27 @@ // JET-81 Assertion fails when processing self-referring anonymous objects -val y = object { - val a = y; -} +class Test { + private val y = object { + val a = y; + } -val z = y.a; + val z = y.a; + +} object A { val x = A } -val a = object { - { - b + 1 +class Test2 { + private val a = object { + { + b + 1 + } + val x = b + val y = 1 } - val x = b - val y = 1 -} -val b = a.x -val c = a.y \ No newline at end of file + val b = a.x + val c = a.y +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/scopes/kt1806.kt b/compiler/testData/diagnostics/tests/scopes/kt1806.kt index 674d89f069d..a91c7a33a43 100644 --- a/compiler/testData/diagnostics/tests/scopes/kt1806.kt +++ b/compiler/testData/diagnostics/tests/scopes/kt1806.kt @@ -11,12 +11,14 @@ fun test1() { doSmth(MyObject.message) } -val MyObject1 = object { - private var message: String = "'Static'" -} +class Test { + private val MyObject1 = object { + private var message: String = "'Static'" + } -fun test2() { - doSmth(MyObject1.message) + fun test2() { + doSmth(MyObject1.message) + } } fun doSmth(s: String) = s \ No newline at end of file diff --git a/compiler/testData/resolve/Objects.resolve b/compiler/testData/resolve/Objects.resolve index 3a1c014836d..a9d0f43b73c 100644 --- a/compiler/testData/resolve/Objects.resolve +++ b/compiler/testData/resolve/Objects.resolve @@ -1,20 +1,22 @@ -package toplevelObjectDeclarations { - class Foo(y : Int) { - ~foo()~open fun foo() : Int = 1 +package toplevelObjectDeclarations + +class Foo(y : Int) { + ~foo()~open fun foo() : Int = 1 +} + +object ~A~A : Foo(0) { + ~x~val x : Int = 2 + + fun test() { + return `x`x + `foo()`foo() } +} - object ~A~A : Foo(0) { - ~x~val x : Int = 2 +object B : A {} - fun test() { - return `x`x + `foo()`foo() - } - } - - object B : A {} - - ~ns.x~val x = `A`A.`foo()`foo() +~ns.x~val x = `A`A.`foo()`foo() +fun f() { ~y~val y = object : Foo(`ns.x`x) { { `ns.x`x + 12 @@ -25,4 +27,3 @@ package toplevelObjectDeclarations { val z = `y`y.`y.foo()`foo() } - diff --git a/idea/testData/checker/regression/Jet81.kt b/idea/testData/checker/regression/Jet81.kt index a1b4f1a5fd8..ad1a5936c96 100644 --- a/idea/testData/checker/regression/Jet81.kt +++ b/idea/testData/checker/regression/Jet81.kt @@ -1,22 +1,27 @@ // JET-81 Assertion fails when processing self-referring anonymous objects -val y = object { - val a = y -} +class Test { + private val y = object { + val a = y + } -val z = y.a; + val z = y.a; + +} object A { val x = A } -val a = object { - { - b + 1 +class Test2 { + private val a = object { + { + b + 1 + } + val x = b + val y = 1 } - val x = b - val y = 1 -} -val b = a.x -val c = a.y + val b = a.x + val c = a.y +} \ No newline at end of file diff --git a/js/js.translator/testFiles/object/cases/objectWithMethods.kt b/js/js.translator/testFiles/object/cases/objectWithMethods.kt index 1f1faf3f220..a05fd859306 100644 --- a/js/js.translator/testFiles/object/cases/objectWithMethods.kt +++ b/js/js.translator/testFiles/object/cases/objectWithMethods.kt @@ -1,17 +1,22 @@ package foo -val a = object { - fun c() = 3 - fun b() = 2 -} +class Test { + private val a = object { + fun c() = 3 + fun b() = 2 + } -fun box(): Boolean { + fun doTest(): Boolean { if (a.c() != 3) { return false; } if (a.b() != 2) { return false; } - return true; -} \ No newline at end of file + } +} + +fun box(): Boolean { + return Test().doTest(); +}