Improve 1.0-compatibility mode for JDK dependent members

Just reporting error by call checker may be too restrictive
in case there are some extensions that can be used successfully

Solution is to annotate additional members with
@Deprecated(level=Error) + @kotlin.internal.LowPriorityInOverloadResolution
This commit is contained in:
Denis Zharkov
2016-09-21 16:31:04 +03:00
parent a7dedfab70
commit 5381c06936
10 changed files with 86 additions and 33 deletions
@@ -1,18 +1,27 @@
// !CHECK_TYPE
// !LANGUAGE: -AdditionalBuiltInsMembers
// SKIP_TXT
class A : java.util.ArrayList<String>() {
<!UNSUPPORTED_FEATURE!>override<!> fun stream(): java.util.stream.Stream<String> = super.<!UNSUPPORTED_FEATURE!>stream<!>()
<!UNSUPPORTED_FEATURE!>override<!> fun stream(): java.util.stream.Stream<String> = super.<!DEPRECATION_ERROR!>stream<!>()
}
class A1 : java.util.ArrayList<String>() {
// TODO: should be allowed
<!VIRTUAL_MEMBER_HIDDEN!>fun stream(): java.util.stream.Stream<String><!> = super.<!UNSUPPORTED_FEATURE!>stream<!>()
<!VIRTUAL_MEMBER_HIDDEN!>fun stream(): java.util.stream.Stream<String><!> = super.<!DEPRECATION_ERROR!>stream<!>()
}
class B : <!UNSUPPORTED_FEATURE!>Throwable<!>("", null, false, false)
class B : <!DEPRECATION_ERROR!>Throwable<!>("", null, false, false)
fun foo(x: List<String>) {
x.<!UNSUPPORTED_FEATURE!>stream<!>()
java.util.ArrayList<String>().<!UNSUPPORTED_FEATURE!>stream<!>()
fun Throwable.fillInStackTrace() = 1
fun foo(x: List<String>, y: Throwable) {
x.<!DEPRECATION_ERROR!>stream<!>()
java.util.ArrayList<String>().<!DEPRECATION_ERROR!>stream<!>()
y.fillInStackTrace() checkType { _<Int>() }
// TODO: Relevant extensions has been removed from stdlib
// We should consider reverting their removal
y.<!DEPRECATION_ERROR!>printStackTrace<!>()
}