Test refactoring

This commit is contained in:
Mikhail Glukhikh
2015-04-13 14:58:28 +03:00
parent 8184bccda1
commit 1544755838
35 changed files with 111 additions and 111 deletions
@@ -1,11 +0,0 @@
fun <K, V> MutableMap<K, V>.set(k: K, v: V) {}
fun foo(a: MutableMap<String, String>, x: String?) {
a[x!!] = <!DEBUG_INFO_SMARTCAST!>x<!>
a[<!DEBUG_INFO_SMARTCAST!>x<!>] = x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
}
fun foo1(a: MutableMap<String, String>, x: String?) {
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>a[x]<!> = x!!
a[x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>] = <!DEBUG_INFO_SMARTCAST!>x<!>
}
@@ -1,5 +0,0 @@
package
internal fun foo(/*0*/ a: kotlin.MutableMap<kotlin.String, kotlin.String>, /*1*/ x: kotlin.String?): kotlin.Unit
internal fun foo1(/*0*/ a: kotlin.MutableMap<kotlin.String, kotlin.String>, /*1*/ x: kotlin.String?): kotlin.Unit
internal fun </*0*/ K, /*1*/ V> kotlin.MutableMap<K, V>.set(/*0*/ k: K, /*1*/ v: V): kotlin.Unit
@@ -1,8 +0,0 @@
// Works already in M11
fun test(c : Class<*>) {
val sc = <!UNCHECKED_CAST!>c as Class<String><!>
// No ambiguous overload
c.getAnnotations();
sc.getAnnotations();
}
@@ -1,3 +0,0 @@
package
internal fun test(/*0*/ c: java.lang.Class<*>): kotlin.Unit
@@ -1,12 +0,0 @@
// Should work already in M11
open class A(val s : String)
class B(s : String) : A(s)
fun test(a : A): String? {
if (a is B) {
// Earlier (14.01.2013) reported overload ambiguity over s
return a.s
}
return null
}
@@ -1,19 +0,0 @@
package
internal fun test(/*0*/ a: A): kotlin.String?
internal open class A {
public constructor A(/*0*/ s: kotlin.String)
internal final val s: kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class B : A {
public constructor B(/*0*/ s: kotlin.String)
internal final override /*1*/ /*fake_override*/ val s: kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,9 +0,0 @@
data class StringPair(val first: String, val second: String)
fun String.to(second: String) = StringPair(this, second)
fun f(a: String?) {
if (a != null) {
val <!UNUSED_VARIABLE!>b<!>: StringPair = <!DEBUG_INFO_SMARTCAST!>a<!> to <!DEBUG_INFO_SMARTCAST!>a<!>
}
}
@@ -1,16 +0,0 @@
package
internal fun f(/*0*/ a: kotlin.String?): kotlin.Unit
internal fun kotlin.String.to(/*0*/ second: kotlin.String): StringPair
kotlin.data() internal final class StringPair {
public constructor StringPair(/*0*/ first: kotlin.String, /*1*/ second: kotlin.String)
internal final val first: kotlin.String
internal final val second: kotlin.String
internal final /*synthesized*/ fun component1(): kotlin.String
internal final /*synthesized*/ fun component2(): kotlin.String
public final /*synthesized*/ fun copy(/*0*/ first: kotlin.String = ..., /*1*/ second: kotlin.String = ...): StringPair
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,13 +0,0 @@
data class StringPair(val first: String, val second: String)
fun String.to(second: String) = StringPair(this, second)
fun hashMapOf(<!UNUSED_PARAMETER!>pair<!>: StringPair): MutableMap<String, String> {
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
fun F() : MutableMap<String, String> {
val value: String? = "xyz"
if (value == null) throw Error()
// Smart cast should be here
return hashMapOf("sss" to <!DEBUG_INFO_SMARTCAST!>value<!>)
}
@@ -1,17 +0,0 @@
package
internal fun F(): kotlin.MutableMap<kotlin.String, kotlin.String>
internal fun hashMapOf(/*0*/ pair: StringPair): kotlin.MutableMap<kotlin.String, kotlin.String>
internal fun kotlin.String.to(/*0*/ second: kotlin.String): StringPair
kotlin.data() internal final class StringPair {
public constructor StringPair(/*0*/ first: kotlin.String, /*1*/ second: kotlin.String)
internal final val first: kotlin.String
internal final val second: kotlin.String
internal final /*synthesized*/ fun component1(): kotlin.String
internal final /*synthesized*/ fun component2(): kotlin.String
public final /*synthesized*/ fun copy(/*0*/ first: kotlin.String = ..., /*1*/ second: kotlin.String = ...): StringPair
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,10 +0,0 @@
class User(val login : Boolean) {}
fun currentAccess(user: User?): Int {
return when {
user == null -> 0
// We should get smartcast here
<!DEBUG_INFO_SMARTCAST!>user<!>.login -> 1
else -> -1
}
}
@@ -1,11 +0,0 @@
package
internal fun currentAccess(/*0*/ user: User?): kotlin.Int
internal final class User {
public constructor User(/*0*/ login: kotlin.Boolean)
internal final val login: kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,13 +0,0 @@
public trait A {
public val x: Any
}
public class B(override public val x: Any) : A {
fun foo(): Int {
if (x is String) {
return <!DEBUG_INFO_SMARTCAST!>x<!>.length()
} else {
return 0
}
}
}
@@ -1,17 +0,0 @@
package
public trait A {
public abstract val x: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B : A {
public constructor B(/*0*/ x: kotlin.Any)
public open override /*1*/ val x: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,5 +0,0 @@
fun foo(p: String?): Int {
// We should get smart cast here
val x = if (p != null) { <!DEBUG_INFO_SMARTCAST!>p<!> } else "a"
return x.length()
}
@@ -1,3 +0,0 @@
package
internal fun foo(/*0*/ p: kotlin.String?): kotlin.Int
@@ -1,16 +0,0 @@
// NB: should work after KT-5907 / KT-4450 fix
val currentTimeMillis = 1234L
public class Foo(protected val maxParsingTimeInMillis: Long?) {
var parsingStartTimeStamp = 0L
protected fun checkForParsingTimeout(): Boolean {
if (maxParsingTimeInMillis == null)
return true
if (currentTimeMillis - parsingStartTimeStamp > <!DEBUG_INFO_SMARTCAST!>maxParsingTimeInMillis<!>)
return false
return true
}
}
@@ -1,13 +0,0 @@
package
internal val currentTimeMillis: kotlin.Long = 1234.toLong()
public final class Foo {
public constructor Foo(/*0*/ maxParsingTimeInMillis: kotlin.Long?)
protected final val maxParsingTimeInMillis: kotlin.Long?
internal final var parsingStartTimeStamp: kotlin.Long
protected final fun checkForParsingTimeout(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,12 +0,0 @@
public class X {
public val x : String? = null
public fun fn(): Int {
if (x != null)
// Smartcast is possible because it's value property with default getter
// used in the same module
return <!DEBUG_INFO_SMARTCAST!>x<!>.length()
else
return 0
}
}
@@ -1,10 +0,0 @@
package
public final class X {
public constructor X()
public final val x: kotlin.String? = null
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun fn(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,13 +0,0 @@
public class X {
private val x : String? = null
public val y: CharSequence?
get() = x?.subSequence(0, 1)
public fun fn(): Int {
if (y != null)
// With non-default getter smartcast is not possible
return y<!UNSAFE_CALL!>.<!>length()
else
return 0
}
}
@@ -1,11 +0,0 @@
package
public final class X {
public constructor X()
private final val x: kotlin.String? = null
public final val y: kotlin.CharSequence?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun fn(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,22 +0,0 @@
class Delegate {
fun get(thisRef: Any?, prop: PropertyMetadata): String? {
return null
}
}
class Example {
private val p: String? by Delegate()
public val r: String? = "xyz"
public fun foo(): String {
// Smart cast is not possible if property is delegated
return if (p != null) <!TYPE_MISMATCH!>p<!> else ""
}
public fun bar(): String {
// But is possible for non-delegated value property even if it's public
return if (r != null) <!DEBUG_INFO_SMARTCAST!>r<!> else ""
}
}
@@ -1,20 +0,0 @@
package
internal final class Delegate {
public constructor Delegate()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final fun get(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.PropertyMetadata): kotlin.String?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class Example {
public constructor Example()
private final val p: kotlin.String?
public final val r: kotlin.String? = "xyz"
public final fun bar(): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,35 +0,0 @@
// MODULE: m1
// FILE: a.kt
package a
public class X {
public val x : String? = null
}
// MODULE: m2(m1)
// FILE: b.kt
package b
import a.X
public fun X.gav(): Int {
if (x != null)
// Smart cast is not possible if definition is in another module
return x<!UNSAFE_CALL!>.<!>length()
else
return 0
}
// FILE: c.kt
package a
public fun X.gav(): Int {
if (x != null)
// Even if it's in the same package
return x<!UNSAFE_CALL!>.<!>length()
else
return 0
}
@@ -1,29 +0,0 @@
// -- Module: <m1> --
package
package a {
public final class X {
public constructor X()
public final val x: kotlin.String? = null
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <m2> --
package
package a {
public fun a.X.gav(): kotlin.Int
public final class X {
// -- Module: <m1> --
}
}
package b {
public fun a.X.gav(): kotlin.Int
}
@@ -1,17 +0,0 @@
public open class X {
protected val x : String? = null
public fun fn(): Int {
if (x != null)
// Smartcast is possible for protected value property in the same class
return <!DEBUG_INFO_SMARTCAST!>x<!>.length()
else
return 0
}
}
public class Y: X() {
public fun bar(): Int {
// Smartcast is possible even in derived class
return if (x != null) <!DEBUG_INFO_SMARTCAST!>x<!>.length() else 0
}
}
@@ -1,20 +0,0 @@
package
public open class X {
public constructor X()
protected final val x: kotlin.String? = null
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun fn(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Y : X {
public constructor Y()
protected final override /*1*/ /*fake_override*/ val x: kotlin.String?
public final fun bar(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun fn(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,15 +0,0 @@
public class X {
public var x : String? = null
private var y: String? = "abc"
public fun fn(): Int {
if (x != null)
// Smartcast is not possible for variable properties
return x<!UNSAFE_CALL!>.<!>length()
else if (y != null)
// Even if they are private
return y<!UNSAFE_CALL!>.<!>length()
else
return 0
}
}
@@ -1,11 +0,0 @@
package
public final class X {
public constructor X()
public final var x: kotlin.String?
private final var y: kotlin.String?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun fn(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,7 +0,0 @@
public fun test(o: String?): Boolean {
return when {
// Data flow info should propagate from o == null to o.length()
o == null, <!DEBUG_INFO_SMARTCAST!>o<!>.length() == 0 -> false
else -> true
}
}
@@ -1,3 +0,0 @@
package
public fun test(/*0*/ o: kotlin.String?): kotlin.Boolean