Experimental fixes: additional tests, handle local declarations

This commit is contained in:
Mikhail Glukhikh
2018-05-23 18:21:18 +03:00
parent 51fba03253
commit a76bb80e4d
7 changed files with 125 additions and 17 deletions
@@ -0,0 +1,20 @@
// "Add '@MyExperimentalAPI' annotation to 'outer'" "true"
// COMPILER_ARGUMENTS: -Xuse-experimental=kotlin.Experimental
// WITH_RUNTIME
@Experimental
@Target(AnnotationTarget.FUNCTION)
annotation class MyExperimentalAPI
open class Base {
@MyExperimentalAPI
open fun foo() {}
}
class Outer {
fun outer() {
class Derived : Base() {
override fun foo<caret>() {}
}
}
}
@@ -0,0 +1,21 @@
// "Add '@MyExperimentalAPI' annotation to 'outer'" "true"
// COMPILER_ARGUMENTS: -Xuse-experimental=kotlin.Experimental
// WITH_RUNTIME
@Experimental
@Target(AnnotationTarget.FUNCTION)
annotation class MyExperimentalAPI
open class Base {
@MyExperimentalAPI
open fun foo() {}
}
class Outer {
@MyExperimentalAPI
fun outer() {
class Derived : Base() {
override fun foo<caret>() {}
}
}
}
+15
View File
@@ -0,0 +1,15 @@
// "Add '@MyExperimentalAPI' annotation to 'outer'" "true"
// COMPILER_ARGUMENTS: -Xuse-experimental=kotlin.Experimental
// WITH_RUNTIME
@Experimental
annotation class MyExperimentalAPI
@MyExperimentalAPI
fun foo() {}
fun outer() {
fun bar() {
foo<caret>()
}
}
@@ -0,0 +1,16 @@
// "Add '@MyExperimentalAPI' annotation to 'outer'" "true"
// COMPILER_ARGUMENTS: -Xuse-experimental=kotlin.Experimental
// WITH_RUNTIME
@Experimental
annotation class MyExperimentalAPI
@MyExperimentalAPI
fun foo() {}
@MyExperimentalAPI
fun outer() {
fun bar() {
foo()
}
}
+23
View File
@@ -0,0 +1,23 @@
// "Add '@MyExperimentalAPI' annotation to containing class 'Outer'" "false"
// COMPILER_ARGUMENTS: -Xuse-experimental=kotlin.Experimental
// WITH_RUNTIME
// ACTION: Add '@MyExperimentalAPI' annotation to 'bar'
// ACTION: Add '@MyExperimentalAPI' annotation to containing class 'Inner'
// ACTION: Add '@UseExperimental(MyExperimentalAPI::class)' annotation to 'bar'
// ERROR: This declaration is experimental and its usage must be marked with '@MyExperimentalAPI' or '@UseExperimental(MyExperimentalAPI::class)'
@Experimental
annotation class MyExperimentalAPI
@MyExperimentalAPI
fun foo() {}
class Outer {
class Bar {
class Inner {
fun bar() {
foo<caret>()
}
}
}
}