diff --git a/idea/testData/checker/infos/Autocasts.jet b/idea/testData/checker/infos/Autocasts.jet
index 7cf18aadd48..062b26b75a2 100644
--- a/idea/testData/checker/infos/Autocasts.jet
+++ b/idea/testData/checker/infos/Autocasts.jet
@@ -1,4 +1,4 @@
-open class A() {
+open class A() {
fun foo() {}
}
@@ -9,25 +9,25 @@ class B() : A() {
fun f9() {
val a : A?
a?.foo()
- a?.bar()
+ a?.bar()
if (a is B) {
a.bar()
- a.foo()
+ a.foo()
}
a?.foo()
- a?.bar()
+ a?.bar()
if (!(a is B)) {
- a?.bar()
+ a?.bar()
a?.foo()
}
if (!(a is B) || a.bar() == ()) {
- a?.bar()
+ a?.bar()
}
if (!(a is B)) {
return;
}
a.bar()
- a.foo()
+ a.foo()
}
fun f10() {
@@ -47,19 +47,17 @@ class C() : A() {
}
fun f10(a : A?) {
- if (a is B) {
if (a is C) {
a.bar();
}
- }
}
fun f11(a : A?) {
when (a) {
is B => a.bar()
- is A => a.foo()
- is Any => a.foo()
- is Any? => a.bar()
+ is A => a.foo()
+ is Any => a.foo()
+ is Any? => a.bar()
else => a?.foo()
}
}
@@ -67,21 +65,21 @@ fun f11(a : A?) {
fun f12(a : A?) {
when (a) {
is B => a.bar()
- is A => a.foo()
- is Any => a.foo();
- is Any? => a.bar()
- is val c : B => c.foo()
+ is A => a.foo()
+ is Any => a.foo();
+ is Any? => a.bar()
+ is val c : B => c.foo()
is val c is C => c.bar()
is val c is C => a.bar()
else => a?.foo()
}
if (a is val b) {
- a?.bar()
+ a?.bar()
b?.foo()
}
if (a is val b is B) {
- b.foo()
+ b.foo()
a.bar()
b.bar()
}
@@ -89,41 +87,41 @@ fun f12(a : A?) {
fun f13(a : A?) {
if (a is val c is B) {
- c.foo()
+ c.foo()
c.bar()
}
else {
a?.foo()
- c.bar()
+ c.bar()
}
a?.foo()
if (!(a is val c is B)) {
a?.foo()
- c.bar()
+ c.bar()
}
else {
- a.foo()
- c.bar()
+ a.foo()
+ c.bar()
}
a?.foo()
- if (a is val c is B && a.foo() == () && c.bar() == ()) {
- c.foo()
+ if (a is val c is B && a.foo() == () && c.bar() == ()) {
+ c.foo()
c.bar()
}
else {
a?.foo()
- c.bar()
+ c.bar()
}
if (!(a is val c is B) || !(a is val x is C)) {
- x
- c
+ x
+ c
}
else {
- x
- c
+ x
+ c
}
if (!(a is val c is B) || !(a is val c is C)) {
@@ -131,38 +129,38 @@ fun f13(a : A?) {
if (!(a is val c is B)) return
a.bar()
- c.foo()
- c.bar()
+ c.foo()
+ c.bar()
}
fun f14(a : A?) {
while (!(a is val c is B)) {
}
a.bar()
- c.bar()
+ c.bar()
}
fun f15(a : A?) {
do {
} while (!(a is val c is B))
a.bar()
- c.bar()
+ c.bar()
}
fun getStringLength(obj : Any) : Char? {
if (obj !is String)
return null
- return obj.get(0) // no cast to String is needed
+ return obj.get(0) // no cast to String is needed
}
fun toInt(i: Int?): Int = if (i != null) i else 0
fun illegalWhenBody(a: Any): Int = when(a) {
is Int => a
- is String => a
+ is String => a
}
fun illegalWhenBlock(a: Any): Int {
when(a) {
is Int => return a
- is String => return a
+ is String => return a
}
}
fun declarations(a: Any?) {
@@ -188,17 +186,17 @@ fun vars(a: Any?) {
}
fun tuples(a: Any?) {
if (a != null) {
- val s: (Any, String) = (a, a)
+ val s: (Any, String) = (a, a)
}
if (a is String) {
- val s: (Any, String) = (a, a)
+ val s: (Any, String) = (a, a)
}
- fun illegalTupleReturnType(): (Any, String) = (a, a)
+ fun illegalTupleReturnType(): (Any, String) = (a, a)
if (a is String) {
- fun legalTupleReturnType(): (Any, String) = (a, a)
+ fun legalTupleReturnType(): (Any, String) = (a, a)
}
- val illegalFunctionLiteral: Function0 = { a }
- val illegalReturnValueInFunctionLiteral: Function0 = { (): Int => a }
+ val illegalFunctionLiteral: Function0 = { a }
+ val illegalReturnValueInFunctionLiteral: Function0 = { (): Int => a }
if (a is Int) {
val legalFunctionLiteral: Function0 = { a }
@@ -213,43 +211,43 @@ fun returnFunctionLiteral(a: Any?): Function0 =
if (a is Int) { (): Int => a }
else { () => 1 }
-fun illegalTupleReturnType(a: Any): (Any, String) = (a, a)
+fun illegalTupleReturnType(a: Any): (Any, String) = (a, a)
fun declarationInsidePattern(x: (Any, Any)): String = when(x) { is (val a is String, *) => a; else => "something" }
fun mergeAutocasts(a: Any?) {
if (a is String || a is Int) {
- a.compareTo("")
+ a.compareTo("")
a.toString()
}
if (a is Int || a is String) {
- a.compareTo("")
+ a.compareTo("")
}
when (a) {
- is String, is Any => a.compareTo("")
+ is String, is Any => a.compareTo("")
}
if (a is String && a is Any) {
val i: Int = a.compareTo("")
}
if (a is String && a.compareTo("") == 0) {}
- if (a is String || a.compareTo("") == 0) {}
+ if (a is String || a.compareTo("") == 0) {}
}
//mutability
fun f(): String {
var a: Any = 11
if (a is String) {
- val i: String = a
- a.compareTo("f")
- val f: Function0 = { a }
- return a
+ val i: String = a
+ a.compareTo("f")
+ val f: Function0 = { a }
+ return a
}
return ""
}
fun foo(var a: Any): Int {
if (a is Int) {
- return a
+ return a
}
return 1
}
\ No newline at end of file
diff --git a/idea/testData/checkerWithErrorTypes/full/When.jet b/idea/testData/checkerWithErrorTypes/full/When.jet
index f8612546d1c..7f53fb38c9d 100644
--- a/idea/testData/checkerWithErrorTypes/full/When.jet
+++ b/idea/testData/checkerWithErrorTypes/full/When.jet
@@ -1,3 +1,5 @@
+fun Int.foo() : Boolean = true
+
fun foo() : Int {
val s = ""
val x = 1
@@ -17,7 +19,8 @@ fun foo() : Int {
else => 1
}
return when (x?:null) {
- .equals(1) => 1
+ .foo() => 1
+ .equals(1) => 1
?.equals(1).equals(2) => 1
}
}
diff --git a/idea/testData/checkerWithErrorTypes/full/infos/Autocasts.jet b/idea/testData/checkerWithErrorTypes/full/infos/Autocasts.jet
index ff7066a34f5..a3cf2976f1f 100644
--- a/idea/testData/checkerWithErrorTypes/full/infos/Autocasts.jet
+++ b/idea/testData/checkerWithErrorTypes/full/infos/Autocasts.jet
@@ -47,11 +47,9 @@ class C() : A() {
}
fun f10(a : A?) {
- if (a is B) {
if (a is C) {
a.bar();
}
- }
}
fun f11(a : A?) {