Test refactoring
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user