Diagnostics test data fixed

This commit is contained in:
Andrey Breslav
2011-12-26 19:55:29 +04:00
parent 3b0ca42e0b
commit fa5be15852
26 changed files with 173 additions and 159 deletions
+6 -8
View File
@@ -1,14 +1,12 @@
package jet package jet
//package typeinfo { class TypeInfo<out T> {
class TypeInfo<out T> { fun isSubtypeOf(other : TypeInfo<*>) : Boolean
fun isSubtypeOf(other : TypeInfo<*>) : Boolean fun isInstance(obj : Any?) : Boolean
fun isInstance(obj : Any?) : Boolean }
}
fun typeinfo<T>() : TypeInfo<T> fun typeinfo<T>() : TypeInfo<T>
fun typeinfo<T>(expression : T) : TypeInfo<T> fun typeinfo<T>(expression : T) : TypeInfo<T>
//}
fun <R> Any.synchronized(block : () -> R) : R fun <R> Any.synchronized(block : () -> R) : R
@@ -235,10 +235,11 @@ public class JetParsing extends AbstractJetParsing {
IElementType keywordToken = tt(); IElementType keywordToken = tt();
JetNodeType declType = null; JetNodeType declType = null;
if (keywordToken == NAMESPACE_KEYWORD) { // if (keywordToken == NAMESPACE_KEYWORD) {
declType = parseNamespaceBlock(); // declType = parseNamespaceBlock();
} // }
else if (keywordToken == CLASS_KEYWORD || keywordToken == TRAIT_KEYWORD) { // else
if (keywordToken == CLASS_KEYWORD || keywordToken == TRAIT_KEYWORD) {
declType = parseClass(detector.isDetected()); declType = parseClass(detector.isDetected());
} }
else if (keywordToken == FUN_KEYWORD) { else if (keywordToken == FUN_KEYWORD) {
@@ -1,3 +1,4 @@
// FILE: a.kt
// +JDK // +JDK
package abstract package abstract
@@ -180,7 +181,8 @@ enum class MyEnum() {
abstract enum class MyAbstractEnum() {} abstract enum class MyAbstractEnum() {}
package MyNamespace { // FILE: b.kt
package MyNamespace
//properties //properties
val <!MUST_BE_INITIALIZED!>a<!>: Int val <!MUST_BE_INITIALIZED!>a<!>: Int
val a1: Int = 1 val a1: Int = 1
@@ -222,8 +224,8 @@ package MyNamespace {
var l1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; <!ILLEGAL_MODIFIER!>abstract<!> get <!ILLEGAL_MODIFIER!>abstract<!> set var l1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; <!ILLEGAL_MODIFIER!>abstract<!> get <!ILLEGAL_MODIFIER!>abstract<!> set
var n: Int <!ILLEGAL_MODIFIER!>abstract<!> get <!ILLEGAL_MODIFIER!>abstract<!> set(v: Int) {} var n: Int <!ILLEGAL_MODIFIER!>abstract<!> get <!ILLEGAL_MODIFIER!>abstract<!> set(v: Int) {}
}
// FILE: c.kt
//creating an instance //creating an instance
abstract class B1( abstract class B1(
val i: Int, val i: Int,
@@ -1,8 +1,9 @@
package example; // FILE: a.kt
package example.ns
package ns {
val y : Any? = 2 val y : Any? = 2
}
// FILE: b.kt
package example
object Obj { object Obj {
val y : Any? = 2 val y : Any? = 2
@@ -1,4 +1,5 @@
package boundsWithSubstitutors { // FILE: a.kt
package boundsWithSubstitutors
open class A<T> open class A<T>
class B<X : A<X>>() class B<X : A<X>>()
@@ -13,8 +14,7 @@ package boundsWithSubstitutors {
val b0 = X<Any, <!UPPER_BOUND_VIOLATED!>Any?<!>> val b0 = X<Any, <!UPPER_BOUND_VIOLATED!>Any?<!>>
val b1 = X<Any, X<A<C>, <!UPPER_BOUND_VIOLATED!>String<!>>> val b1 = X<Any, X<A<C>, <!UPPER_BOUND_VIOLATED!>String<!>>>
} // FILE: b.kt
open class A {} open class A {}
open class B<T : A>() open class B<T : A>()
@@ -1,9 +1,9 @@
// FILE: a.kt
// +JDK // +JDK
package html
import java.util.* import java.util.*
package html {
abstract class Factory<T> { abstract class Factory<T> {
abstract fun create() : T abstract fun create() : T
} }
@@ -85,9 +85,9 @@ package html {
return html return html
} }
} // FILE: b.kt
package foo { package foo
import html.* import html.*
@@ -120,4 +120,3 @@ fun result(args : Array<String>) =
} }
} }
} }
}
@@ -1,3 +1,4 @@
// FILE: b.kt
// http://youtrack.jetbrains.net/issue/KT-424 // http://youtrack.jetbrains.net/issue/KT-424
class A { class A {
@@ -13,7 +14,8 @@ class A {
} }
} }
package deepSpace { // FILE: b.kt
package deepSpace
<!CONFLICTING_OVERLOADS!>fun c(<!UNUSED_PARAMETER!>s<!>: String)<!> { <!CONFLICTING_OVERLOADS!>fun c(<!UNUSED_PARAMETER!>s<!>: String)<!> {
} }
@@ -27,28 +29,25 @@ package deepSpace {
<!CONFLICTING_OVERLOADS!>fun d(<!UNUSED_PARAMETER!>s<!>: String)<!> { <!CONFLICTING_OVERLOADS!>fun d(<!UNUSED_PARAMETER!>s<!>: String)<!> {
} }
} }
}
// FILE: b.kt
// check no error in overload in different namespaces // check no error in overload in different namespaces
package ns1 { package ns1
fun e() = 1 fun e() = 1
}
package ns2 { // FILE: b.kt
package ns2
fun e() = 1 fun e() = 1
}
package ns3 { // FILE: b.kt
package ns1 { package ns3.ns1
fun e() = 1 fun e() = 1
}
}
// FILE: b.kt
// check same rules apply for ext functions // check same rules apply for ext functions
package extensionFunctions { package extensionFunctions
<!CONFLICTING_OVERLOADS!>fun Int.qwe(<!UNUSED_PARAMETER!>a<!>: Float)<!> = 1 <!CONFLICTING_OVERLOADS!>fun Int.qwe(<!UNUSED_PARAMETER!>a<!>: Float)<!> = 1
<!CONFLICTING_OVERLOADS!>fun Int.qwe(<!UNUSED_PARAMETER!>a<!>: Float)<!> = 2 <!CONFLICTING_OVERLOADS!>fun Int.qwe(<!UNUSED_PARAMETER!>a<!>: Float)<!> = 2
@@ -56,19 +55,19 @@ package extensionFunctions {
fun Int.rty() = 3 fun Int.rty() = 3
fun String.rty() = 4 fun String.rty() = 4
}
// FILE: b.kt
// check no error when regular function and extension function have same name // check no error when regular function and extension function have same name
package extensionAndRegular { package extensionAndRegular
fun who() = 1 fun who() = 1
fun Int.who() = 1 fun Int.who() = 1
}
// FILE: b.kt
// constructor vs. fun overload // constructor vs. fun overload
package constructorVsFun { package constructorVsFun
class <!CONFLICTING_OVERLOADS!>a()<!> { } class <!CONFLICTING_OVERLOADS!>a()<!> { }
<!CONFLICTING_OVERLOADS!>fun a()<!> = 1 <!CONFLICTING_OVERLOADS!>fun a()<!> = 1
@@ -93,5 +92,4 @@ package constructorVsFun {
class object { class object {
class ololo() { } class ololo() { }
} }
} }
}
@@ -1,4 +1,6 @@
// FILE: b.kt
// +JDK // +JDK
package outer
fun Int?.optint() : Unit {} fun Int?.optint() : Unit {}
val Int?.optval : Unit = #() val Int?.optval : Unit = #()
@@ -39,7 +41,10 @@ val <T> T.<!MUST_BE_INITIALIZED!>foo<!> : T
fun Int.foo() = this fun Int.foo() = this
package null_safety { // FILE: b.kt
package null_safety
import outer.*
fun parse(<!UNUSED_PARAMETER!>cmd<!>: String): Command? { return null } fun parse(<!UNUSED_PARAMETER!>cmd<!>: String): Command? { return null }
class Command() { class Command() {
@@ -69,5 +74,3 @@ package null_safety {
if (command == null) 1 if (command == null) 1
} }
}
@@ -1,3 +1,4 @@
// FILE: b.kt
trait A<in T> {} trait A<in T> {}
trait B<T> : A<Int> {} trait B<T> : A<Int> {}
trait C<T> : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>B<T>, A<T><!> {} trait C<T> : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>B<T>, A<T><!> {}
@@ -13,30 +14,30 @@ trait BB1 : BA1<Int> {}
trait BB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>BA1<Any>, BB1<!> {} trait BB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>BA1<Any>, BB1<!> {}
package x { // FILE: b.kt
package x
trait AA1<out T> {} trait AA1<out T> {}
trait AB1 : AA1<Int> {} trait AB1 : AA1<Int> {}
trait AB3 : AA1<Comparable<Int>> {} trait AB3 : AA1<Comparable<Int>> {}
trait AB2 : AA1<Number>, AB1, AB3 {} trait AB2 : AA1<Number>, AB1, AB3 {}
}
package x2 { // FILE: b.kt
package x2
trait AA1<out T> {} trait AA1<out T> {}
trait AB1 : AA1<Any> {} trait AB1 : AA1<Any> {}
trait AB3 : AA1<Comparable<Int>> {} trait AB3 : AA1<Comparable<Int>> {}
trait AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {} trait AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
}
package x3 { // FILE: b.kt
package x3
trait AA1<in T> {} trait AA1<in T> {}
trait AB1 : AA1<Any> {} trait AB1 : AA1<Any> {}
trait AB3 : AA1<Comparable<Int>> {} trait AB3 : AA1<Comparable<Int>> {}
trait AB2 : AA1<Number>, AB1, AB3 {} trait AB2 : AA1<Number>, AB1, AB3 {}
}
package sx2 { // FILE: b.kt
package sx2
trait AA1<in T> {} trait AA1<in T> {}
trait AB1 : AA1<Int> {} trait AB1 : AA1<Int> {}
trait AB3 : AA1<Comparable<Int>> {} trait AB3 : AA1<Comparable<Int>> {}
trait AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {} trait AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
}
@@ -1,23 +1,23 @@
// FILE: b.kt
// KT-355 Resolve imports after all symbols are built // KT-355 Resolve imports after all symbols are built
package a { package a
import b.* import b.*
val x : X = X() val x : X = X()
}
package b { // FILE: b.kt
package b
class X() { class X() {
} }
}
package c { // FILE: b.kt
package c
import d.X import d.X
val x : X = X() val x : X = X()
}
package d { // FILE: b.kt
package d
class X() { class X() {
} }
}
@@ -1,8 +1,8 @@
// FILE: b.kt
package root.a
// FILE: b.kt
package root package root
package a {
}
val x = <!EXPRESSION_EXPECTED_NAMESPACE_FOUND!>a<!> val x = <!EXPRESSION_EXPECTED_NAMESPACE_FOUND!>a<!>
val y2 = <!NAMESPACE_IS_NOT_AN_EXPRESSION!>package<!> val y2 = <!NAMESPACE_IS_NOT_AN_EXPRESSION!>package<!>
@@ -1,26 +1,29 @@
// FILE: b.kt
// +JDK // +JDK
package foobar
package a { package foobar.a
import java.* import java.*
val a : util.List<Int>? = null val a : util.List<Int>? = null
val a1 : <!UNRESOLVED_REFERENCE!>List<!><Int>? = null val a1 : <!UNRESOLVED_REFERENCE!>List<!><Int>? = null
} // FILE: b.kt
package foobar
abstract class Foo<T>() { abstract class Foo<T>() {
abstract val x : T<Int> abstract val x : T<Int>
} }
package a { // FILE: b.kt
package foobar.a
import java.util.* import java.util.*
val b : List<Int>? = a val b : List<Int>? = a
val b1 : <!UNRESOLVED_REFERENCE!>util<!>.List<Int>? = a val b1 : <!UNRESOLVED_REFERENCE!>util<!>.List<Int>? = a
}
// FILE: b.kt
package foobar
val x1 = a.a val x1 = a.a
val y1 = a.b val y1 = a.b
@@ -1,4 +1,5 @@
package toplevelObjectDeclarations { // FILE: f.kt
package toplevelObjectDeclarations
open class Foo(y : Int) { open class Foo(y : Int) {
open fun foo() : Int = 1 open fun foo() : Int = 1
} }
@@ -26,9 +27,9 @@ package toplevelObjectDeclarations {
} }
val z = y.foo() val z = y.foo()
}
package nestedObejcts { // FILE: f.kt
package nestedObejcts
object A { object A {
val b = B val b = B
val d = A.B.A val d = A.B.A
@@ -56,9 +57,10 @@ package nestedObejcts {
val c = A.B val c = A.B
val d = A.B.A val d = A.B.A
val e = B.<!UNRESOLVED_REFERENCE!>A<!>.B val e = B.<!UNRESOLVED_REFERENCE!>A<!>.B
}
package localObjects { // FILE: f.kt
package localObjects
object A { object A {
val x : Int = 0 val x : Int = 0
} }
@@ -80,4 +82,3 @@ package localObjects {
} }
val bb = <!UNRESOLVED_REFERENCE!>B<!>.foo() val bb = <!UNRESOLVED_REFERENCE!>B<!>.foo()
}
@@ -1,6 +1,5 @@
package override // FILE: f.kt
package override.normal
package normal {
trait MyTrait { trait MyTrait {
fun foo() fun foo()
val pr : Unit val pr : Unit
@@ -49,9 +48,10 @@ package normal {
override fun bar() {} override fun bar() {}
override val prr : Unit = #() override val prr : Unit = #()
} }
}
package generics { // FILE: f.kt
package override.generics
trait MyTrait<T> { trait MyTrait<T> {
fun foo(t: T) : T fun foo(t: T) : T
} }
@@ -109,5 +109,4 @@ package generics {
fun foo(t: T) = t fun foo(t: T) = t
fun bar(t: T) = t fun bar(t: T) = t
val <R> pr : T = t val <R> pr : T = t
} }
}
@@ -1,3 +1,4 @@
// FILE: f.kt
class Dup { class Dup {
fun Dup() : Unit { fun Dup() : Unit {
this<!AMBIGUOUS_LABEL!>@Dup<!> this<!AMBIGUOUS_LABEL!>@Dup<!>
@@ -21,7 +22,8 @@ fun foo1() : Unit {
this<!UNRESOLVED_REFERENCE!>@a<!> this<!UNRESOLVED_REFERENCE!>@a<!>
} }
package closures { // FILE: f.kt
package closures
class A(val a:Int) { class A(val a:Int) {
class B() { class B() {
@@ -37,5 +39,4 @@ package closures {
return (@a{Double.() -> this@a : Double + this@xx : Char}) return (@a{Double.() -> this@a : Double + this@xx : Char})
} }
} }
} }
}
@@ -1,42 +1,40 @@
package a { // FILE: f.kt
package a
val foo = bar() val foo = bar()
fun bar() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>foo<!> fun bar() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>foo<!>
}
package b { // FILE: f.kt
package b
fun foo() = bar() fun foo() = bar()
fun bar() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>foo()<!> fun bar() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>foo()<!>
}
package c { // FILE: f.kt
package c
fun bazz() = bar() fun bazz() = bar()
fun foo() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>bazz()<!> fun foo() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>bazz()<!>
fun bar() = foo() fun bar() = foo()
}
package ok { // FILE: f.kt
package a { package ok.a
val foo = bar() val foo = bar()
fun bar() : Int = foo fun bar() : Int = foo
}
package b { // FILE: f.kt
package ok.b
fun foo() : Int = bar() fun foo() : Int = bar()
fun bar() = foo() fun bar() = foo()
}
package c { // FILE: f.kt
package ok.c
fun bazz() = bar() fun bazz() = bar()
fun foo() : Int = bazz() fun foo() : Int = bazz()
fun bar() = foo() fun bar() = foo()
}
}
@@ -1,16 +1,15 @@
package redeclarations { // FILE: f.kt
package redeclarations
object <!REDECLARATION, REDECLARATION!>A<!> { object <!REDECLARATION, REDECLARATION!>A<!> {
val x : Int = 0 val x : Int = 0
val A = 1 val A = 1
} }
package <!REDECLARATION!>A<!> { class <!REDECLARATION!>A<!> {}
class A {}
}
class <!REDECLARATION, REDECLARATION!>A<!> {}
val <!REDECLARATION!>A<!> = 1 val <!REDECLARATION!>A<!> = 1
} // FILE: f.kt
package redeclarations.<!REDECLARATION, REDECLARATION!>A<!>
class A {}
@@ -1,3 +1,4 @@
// FILE: f.kt
// +JDK // +JDK
import java.* import java.*
@@ -49,6 +50,6 @@ fun test(<!UNUSED_PARAMETER!>l<!> : java.util.List<Int>) {
} }
package xxx { // FILE: f.kt
import java.lang.Class; package xxx
} import java.lang.Class;
@@ -1,9 +1,11 @@
// FILE: f.kt
class A { class A {
} }
package n { // FILE: f.kt
package n
class B class B
} // FILE: f.kt
abstract class XXX() { abstract class XXX() {
abstract val a : Int abstract val a : Int
abstract val a1 : package.<!UNRESOLVED_REFERENCE!>Int<!> abstract val a1 : package.<!UNRESOLVED_REFERENCE!>Int<!>
@@ -1,5 +1,3 @@
package customGetValGlobal { package customGetValGlobal
val zz = 1 val zz = 1
get() = $zz * 2 get() = $zz * 2
}
@@ -1,21 +1,8 @@
// FILE: this.kt
// KT-362 Don't allow autocasts on vals that are not internal // KT-362 Don't allow autocasts on vals that are not internal
package example; package example;
package test {
public class Public() {
public val public : Int? = 1;
protected val protected : Int? = 1;
internal protected val i_protected : Int? = 1;
val internal : Int? = 1
}
internal class Internal() {
public val public : Int? = 1;
protected val protected : Int? = 1;
internal protected val i_protected : Int? = 1;
val internal : Int? = 1
}
}
fun test() { fun test() {
val p = test.Public() val p = test.Public()
if (p.public is Int) <!AUTOCAST_IMPOSSIBLE!>p.public<!> + 1 if (p.public is Int) <!AUTOCAST_IMPOSSIBLE!>p.public<!> + 1
@@ -27,4 +14,21 @@ fun test() {
if (i.protected is Int) <!AUTOCAST_IMPOSSIBLE!>i.protected<!> + 1 if (i.protected is Int) <!AUTOCAST_IMPOSSIBLE!>i.protected<!> + 1
if (i.i_protected is Int) i.i_protected + 1 if (i.i_protected is Int) i.i_protected + 1
if (i.internal is Int) i.internal + 1 if (i.internal is Int) i.internal + 1
} }
// FILE: other.kt
package test
public class Public() {
public val public : Int? = 1;
protected val protected : Int? = 1;
internal protected val i_protected : Int? = 1;
val internal : Int? = 1
}
internal class Internal() {
public val public : Int? = 1;
protected val protected : Int? = 1;
internal protected val i_protected : Int? = 1;
val internal : Int? = 1
}
@@ -1,14 +1,14 @@
package jet121 { package jet121
fun box() : String {
val answer = apply("OK") { String.() : Int ->
get(0)
length
}
return if (answer == 2) "OK" else "FAIL" fun box() : String {
} val answer = apply("OK") { String.() : Int ->
get(0)
length
}
fun apply(arg:String, f : String.() -> Int) : Int { return if (answer == 2) "OK" else "FAIL"
return arg.f() }
}
fun apply(arg:String, f : String.() -> Int) : Int {
return arg.f()
} }
@@ -1,7 +1,9 @@
// FILE: this.kt
// KT-26 Import namespaces defined in this file // KT-26 Import namespaces defined in this file
package foo
package foo { import bar.* // Must not be an error
import bar.* // Must not be an error
}
package bar {} // FILE: other.kt
package bar
@@ -1,10 +1,12 @@
// FILE: a.kt
// KT-26 Import namespaces defined in this file // KT-26 Import namespaces defined in this file
import html.* // Must not be an error import html.* // Must not be an error
package html { // FILE: b.kt
abstract class Factory<T> { package html
fun create() : T? = null
} abstract class Factory<T> {
fun create() : T? = null
} }
@@ -1,4 +1,4 @@
//FILE:a.kt // FILE:a.kt
package a package a
import b.B //class import b.B //class
@@ -13,7 +13,7 @@ fun test(arg: B) {
arg.ext() arg.ext()
} }
//FILE:b.kt // FILE:b.kt
package b package b
class B() {} class B() {}
+4 -3
View File
@@ -1,3 +1,5 @@
// FILE: b.kt
fun Int?.optint() : Unit {} fun Int?.optint() : Unit {}
val Int?.optval : Unit = #() val Int?.optval : Unit = #()
@@ -37,7 +39,8 @@ val <T> T.<error>foo</error> : T
fun Int.foo() = this fun Int.foo() = this
package null_safety { // FILE: b.kt
package null_safety
fun parse(<warning>cmd</warning>: String): Command? { return null } fun parse(<warning>cmd</warning>: String): Command? { return null }
class Command() { class Command() {
@@ -67,5 +70,3 @@ package null_safety {
if (command == null) 1 if (command == null) 1
} }
}