Test fixes for 'New diagnostic error for ambiguous object expression type'
This commit is contained in:
@@ -1,9 +1,15 @@
|
|||||||
fun <T : Any> T?.iterator() = object {
|
|
||||||
|
trait MyIterator<T> {
|
||||||
|
fun hasNext() : Boolean
|
||||||
|
fun next() : T
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T : Any> T?.iterator() = object : MyIterator<T> {
|
||||||
var hasNext = this@iterator != null
|
var hasNext = this@iterator != null
|
||||||
private set
|
private set
|
||||||
fun hasNext() = hasNext
|
override fun hasNext() = hasNext
|
||||||
|
|
||||||
fun next() : T {
|
override fun next() : T {
|
||||||
if (hasNext) {
|
if (hasNext) {
|
||||||
hasNext = false
|
hasNext = false
|
||||||
return this@iterator!!
|
return this@iterator!!
|
||||||
|
|||||||
@@ -6,12 +6,19 @@ inline fun <T> java.util.Enumeration<T>.iterator() = object: Iterator<T> {
|
|||||||
override fun next() = nextElement()
|
override fun next() = nextElement()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : Any> T?.iterator() = object {
|
trait MyIterator<T> {
|
||||||
|
|
||||||
|
fun hasNext() : Boolean
|
||||||
|
|
||||||
|
fun next() : T
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T : Any> T?.iterator() = object : MyIterator<T> {
|
||||||
var hasNext = this@iterator != null
|
var hasNext = this@iterator != null
|
||||||
private set
|
private set
|
||||||
fun hasNext() = hasNext
|
override fun hasNext() = hasNext
|
||||||
|
|
||||||
fun next() : T {
|
override fun next() : T {
|
||||||
if (hasNext) {
|
if (hasNext) {
|
||||||
hasNext = false
|
hasNext = false
|
||||||
return this@iterator!!
|
return this@iterator!!
|
||||||
@@ -26,3 +33,4 @@ fun main(args : Array<String>) {
|
|||||||
System.out.println(x)
|
System.out.println(x)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,27 @@
|
|||||||
// JET-81 Assertion fails when processing self-referring anonymous objects
|
// JET-81 Assertion fails when processing self-referring anonymous objects
|
||||||
|
|
||||||
val y = object {
|
class Test {
|
||||||
val a = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM, UNINITIALIZED_VARIABLE!>y<!>;
|
private val y = object {
|
||||||
}
|
val a = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM, UNINITIALIZED_VARIABLE!>y<!>;
|
||||||
|
}
|
||||||
|
|
||||||
val z = y.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>a<!>;
|
val z = y.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>a<!>;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
object A {
|
object A {
|
||||||
val x = A
|
val x = A
|
||||||
}
|
}
|
||||||
|
|
||||||
val a = object {
|
class Test2 {
|
||||||
{
|
private val a = object {
|
||||||
<!UNINITIALIZED_VARIABLE, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> 1
|
{
|
||||||
|
<!UNINITIALIZED_VARIABLE, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> 1
|
||||||
|
}
|
||||||
|
val x = <!UNINITIALIZED_VARIABLE, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!>
|
||||||
|
val y = 1
|
||||||
}
|
}
|
||||||
val x = <!UNINITIALIZED_VARIABLE, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!>
|
|
||||||
val y = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
val b = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>a<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x<!>
|
val b = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>a<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x<!>
|
||||||
val c = a.y
|
val c = a.y
|
||||||
|
}
|
||||||
@@ -11,12 +11,14 @@ fun test1() {
|
|||||||
doSmth(MyObject.<!INVISIBLE_MEMBER!>message<!>)
|
doSmth(MyObject.<!INVISIBLE_MEMBER!>message<!>)
|
||||||
}
|
}
|
||||||
|
|
||||||
val MyObject1 = object {
|
class Test {
|
||||||
private var message: String = "'Static'"
|
private val MyObject1 = object {
|
||||||
}
|
private var message: String = "'Static'"
|
||||||
|
}
|
||||||
|
|
||||||
fun test2() {
|
fun test2() {
|
||||||
doSmth(MyObject1.<!INVISIBLE_MEMBER!>message<!>)
|
doSmth(MyObject1.<!INVISIBLE_MEMBER!>message<!>)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun doSmth(s: String) = s
|
fun doSmth(s: String) = s
|
||||||
@@ -1,20 +1,22 @@
|
|||||||
package toplevelObjectDeclarations {
|
package toplevelObjectDeclarations
|
||||||
class Foo(y : Int) {
|
|
||||||
~foo()~open fun foo() : Int = 1
|
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) {
|
object B : A {}
|
||||||
~x~val x : Int = 2
|
|
||||||
|
|
||||||
fun test() {
|
~ns.x~val x = `A`A.`foo()`foo()
|
||||||
return `x`x + `foo()`foo()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
object B : A {}
|
|
||||||
|
|
||||||
~ns.x~val x = `A`A.`foo()`foo()
|
|
||||||
|
|
||||||
|
fun f() {
|
||||||
~y~val y = object : Foo(`ns.x`x) {
|
~y~val y = object : Foo(`ns.x`x) {
|
||||||
{
|
{
|
||||||
`ns.x`x + 12
|
`ns.x`x + 12
|
||||||
@@ -25,4 +27,3 @@ package toplevelObjectDeclarations {
|
|||||||
|
|
||||||
val z = `y`y.`y.foo()`foo()
|
val z = `y`y.`y.foo()`foo()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,27 @@
|
|||||||
// JET-81 Assertion fails when processing self-referring anonymous objects
|
// JET-81 Assertion fails when processing self-referring anonymous objects
|
||||||
|
|
||||||
val y = object {
|
class Test {
|
||||||
val a = <error>y</error>
|
private val y = object {
|
||||||
}
|
val a = <error>y</error>
|
||||||
|
}
|
||||||
|
|
||||||
val z = y.<error>a</error>;
|
val z = y.<error>a</error>;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
object A {
|
object A {
|
||||||
val x = A
|
val x = A
|
||||||
}
|
}
|
||||||
|
|
||||||
val a = object {
|
class Test2 {
|
||||||
{
|
private val a = object {
|
||||||
<error>b</error> <error>+</error> 1
|
{
|
||||||
|
<error>b</error> <error>+</error> 1
|
||||||
|
}
|
||||||
|
val x = <error>b</error>
|
||||||
|
val y = 1
|
||||||
}
|
}
|
||||||
val x = <error>b</error>
|
|
||||||
val y = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
val b = <error>a</error>.<error>x</error>
|
val b = <error>a</error>.<error>x</error>
|
||||||
val c = a.y
|
val c = a.y
|
||||||
|
}
|
||||||
@@ -1,17 +1,22 @@
|
|||||||
package foo
|
package foo
|
||||||
|
|
||||||
val a = object {
|
class Test {
|
||||||
fun c() = 3
|
private val a = object {
|
||||||
fun b() = 2
|
fun c() = 3
|
||||||
}
|
fun b() = 2
|
||||||
|
}
|
||||||
|
|
||||||
fun box(): Boolean {
|
fun doTest(): Boolean {
|
||||||
if (a.c() != 3) {
|
if (a.c() != 3) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (a.b() != 2) {
|
if (a.b() != 2) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): Boolean {
|
||||||
|
return Test().doTest();
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user