[Test] Add ability to specify applicability of diagnostic to module or file

This commit is contained in:
Dmitriy Novozhilov
2021-01-15 14:54:05 +03:00
committed by TeamCityServer
parent 28cff22cd0
commit 6a7cd0c811
117 changed files with 266 additions and 189 deletions
@@ -1,5 +1,5 @@
// FILE: Descriptor.java
// FULL_JDK
// FILE: Descriptor.java
public interface Descriptor
@@ -1,5 +1,5 @@
// FILE: Element.java
// FULL_JDK
// FILE: Element.java
public interface Element {}
@@ -1,5 +1,5 @@
// FILE: StaticOwner.java
// FULL_JDK
// FILE: StaticOwner.java
import org.jetbrains.annotations.NotNull;
@@ -21,4 +21,4 @@ abstract class User<T : Freezable> {
fun foo() {
settings = StaticOwner.newInstance(settings.javaClass)
}
}
}
@@ -9,7 +9,18 @@ import org.jetbrains.kotlin.test.util.joinToArrayString
// --------------------------- Directive declaration ---------------------------
sealed class Directive(val name: String, val description: String) {
enum class DirectiveApplicability(
val forGlobal: Boolean = false,
val forModule: Boolean = false,
val forFile: Boolean = false
) {
Any(forGlobal = true, forModule = true, forFile = true),
Global(forGlobal = true, forModule = true),
Module(forModule = true),
File(forFile = true)
}
sealed class Directive(val name: String, val description: String, val applicability: DirectiveApplicability) {
override fun toString(): String {
return name
}
@@ -17,23 +28,26 @@ sealed class Directive(val name: String, val description: String) {
class SimpleDirective(
name: String,
description: String
) : Directive(name, description)
description: String,
applicability: DirectiveApplicability
) : Directive(name, description, applicability)
class StringDirective(
name: String,
description: String
) : Directive(name, description)
description: String,
applicability: DirectiveApplicability
) : Directive(name, description, applicability)
class ValueDirective<T : Any>(
name: String,
description: String,
applicability: DirectiveApplicability,
val parser: (String) -> T?
) : Directive(name, description)
) : Directive(name, description, applicability)
// --------------------------- Registered directive ---------------------------
abstract class RegisteredDirectives {
abstract class RegisteredDirectives : Iterable<Directive> {
companion object {
val Empty = RegisteredDirectivesImpl(emptyList(), emptyMap(), emptyMap())
}
@@ -78,6 +92,15 @@ class RegisteredDirectivesImpl(
valueDirectives.forEach { (d, v) -> appendLine(" $d: ${v.joinToArrayString()}")}
}
}
@OptIn(ExperimentalStdlibApi::class)
override fun iterator(): Iterator<Directive> {
return buildList {
addAll(simpleDirectives)
addAll(stringDirectives.keys)
addAll(valueDirectives.keys)
}.iterator()
}
}
class ComposedRegisteredDirectives(
@@ -109,6 +132,10 @@ class ComposedRegisteredDirectives(
override fun isEmpty(): Boolean {
return containers.all { it.isEmpty() }
}
override fun iterator(): Iterator<Directive> {
return containers.flatten().iterator()
}
}
// --------------------------- Utils ---------------------------
@@ -20,28 +20,36 @@ abstract class SimpleDirectivesContainer : DirectivesContainer() {
override operator fun get(name: String): Directive? = registeredDirectives[name]
protected fun directive(description: String): DirectiveDelegateProvider<SimpleDirective> {
return DirectiveDelegateProvider { SimpleDirective(it, description) }
protected fun directive(
description: String,
applicability: DirectiveApplicability = DirectiveApplicability.Global
): DirectiveDelegateProvider<SimpleDirective> {
return DirectiveDelegateProvider { SimpleDirective(it, description, applicability) }
}
protected fun stringDirective(description: String): DirectiveDelegateProvider<StringDirective> {
return DirectiveDelegateProvider { StringDirective(it, description) }
protected fun stringDirective(
description: String,
applicability: DirectiveApplicability = DirectiveApplicability.Global
): DirectiveDelegateProvider<StringDirective> {
return DirectiveDelegateProvider { StringDirective(it, description, applicability) }
}
protected inline fun <reified T : Enum<T>> enumDirective(
description: String,
applicability: DirectiveApplicability = DirectiveApplicability.Global,
noinline additionalParser: ((String) -> T?)? = null
): DirectiveDelegateProvider<ValueDirective<T>> {
val possibleValues = enumValues<T>()
val parser: (String) -> T? = { value -> possibleValues.firstOrNull { it.name == value } ?: additionalParser?.invoke(value) }
return DirectiveDelegateProvider { ValueDirective(it, description, parser) }
return DirectiveDelegateProvider { ValueDirective(it, description, applicability, parser) }
}
protected fun <T : Any> valueDirective(
description: String,
applicability: DirectiveApplicability = DirectiveApplicability.Global,
parser: (String) -> T?
): DirectiveDelegateProvider<ValueDirective<T>> {
return DirectiveDelegateProvider { ValueDirective(it, description, parser) }
return DirectiveDelegateProvider { ValueDirective(it, description, applicability, parser) }
}
protected fun registerDirective(directive: Directive) {
@@ -18,9 +18,9 @@ suspend fun <R> notInlined(
): R = block()
// MODULE: main(lib, support)
// FILE: main.kt
// WITH_COROUTINES
// WITH_RUNTIME
// FILE: main.kt
import helpers.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
@@ -8,9 +8,9 @@ inline fun foo(x: String = "OK"): String {
}
// MODULE: main(lib, support)
// FILE: main.kt
// WITH_RUNTIME
// WITH_COROUTINES
// FILE: main.kt
import helpers.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base {
@@ -10,7 +11,6 @@ public interface Base {
}
// FILE: main.kt
// JVM_TARGET: 1.8
public interface BaseKotlin : Base {
}
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base {
@@ -10,7 +11,6 @@ public interface Base {
}
// FILE: main.kt
// JVM_TARGET: 1.8
public interface BaseKotlin : Base {
override fun getValue() = "OK"
+1 -1
View File
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base {
@@ -18,7 +19,6 @@ public interface Base2 extends Base {
}
// FILE: main.kt
// JVM_TARGET: 1.8
interface KBase : Base
+1 -1
View File
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base {
@@ -17,7 +18,6 @@ public interface Base2 extends Base {
// FILE: main.kt
// JVM_TARGET: 1.8
interface KBase : Base {
override fun test() = "O" + getValue()
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base {
@@ -10,7 +11,6 @@ public interface Base {
}
// FILE: main.kt
// JVM_TARGET: 1.8
class Fail : Base {
override fun getValue() = "Fail"
+1 -1
View File
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base extends KBase {
@@ -10,7 +11,6 @@ public interface Base extends KBase {
}
// FILE: main.kt
// JVM_TARGET: 1.8
interface KBase {
fun getValue(): String
+1 -1
View File
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base {
@@ -10,7 +11,6 @@ public interface Base {
}
// FILE: main.kt
// JVM_TARGET: 1.8
class Fail : Base {
override fun getValue() = "Fail"
+1 -1
View File
@@ -1,6 +1,7 @@
// !LANGUAGE: -NoDelegationToJavaDefaultInterfaceMembers
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base {
@@ -12,7 +13,6 @@ public interface Base {
}
// FILE: main.kt
// JVM_TARGET: 1.8
class OK : Base {
override fun getValue() = "OK"
@@ -1,6 +1,6 @@
// MODULE: lib
// FILE: lib.kt
// WITH_RUNTIME
// FILE: lib.kt
import kotlin.test.assertEquals
@@ -1,6 +1,6 @@
// MODULE: lib
// FILE: lib.kt
// WITH_RUNTIME
// FILE: lib.kt
import kotlin.test.assertEquals
@@ -1,3 +1,6 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: JS_IR
// FILE: DiagnosticFactory0.java
import org.jetbrains.annotations.NotNull;
@@ -10,9 +13,6 @@ public class DiagnosticFactory0<E> {
}
// FILE: test.kt
// DONT_TARGET_EXACT_BACKEND: WASM
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: JS_IR
class SimpleDiagnostic<E>(val element: E)
interface KtAnnotationEntry
@@ -21,4 +21,4 @@ fun foo(error: DiagnosticFactory0<in KtAnnotationEntry>, entry: KtAnnotationEntr
error.on(entry) // used to be INAPPLICABLE_CANDIDATE
}
fun box() = "OK"
fun box() = "OK"
@@ -1,3 +1,6 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: JS_IR
// FILE: Processor.java
public interface Processor<T> {
@@ -5,9 +8,6 @@ public interface Processor<T> {
}
// FILE: test.kt
// DONT_TARGET_EXACT_BACKEND: WASM
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: JS_IR
interface PsiModifierListOwner
interface KtClassOrObject {
@@ -23,4 +23,4 @@ fun execute(declaration: Any, consumer: Processor<in PsiModifierListOwner>) {
}
}
fun box(): String = "OK"
fun box(): String = "OK"
@@ -1,5 +1,7 @@
// SKIP_JDK6
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FULL_JDK
// FILE: F.java
import java.util.function.Function;
@@ -10,8 +12,6 @@ public class F {
}
// FILE: test.kt
// WITH_RUNTIME
// FULL_JDK
fun test(f: (Int?) -> String): String {
return F.passNull(f)
}
@@ -1,6 +1,6 @@
// TARGET_BACKEND: JVM
// FILE: test.kt
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
@@ -1,6 +1,6 @@
// TARGET_BACKEND: JVM
// FILE: test.kt
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
fun test2(p: T): T {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
fun test2(p: T): T {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface3 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
fun test2(p: T): T {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface3 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -2,6 +2,7 @@
// TARGET_BACKEND: JVM
// FULL_JDK
// WITH_RUNTIME
// JVM_TARGET: 1.8
// FILE: Simple.java
public interface Simple extends KInterface {
@@ -16,8 +17,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface {
fun call(): List<String> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface {
fun test2(): String {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface {
fun test2(): String {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@JvmDefault
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@JvmDefault
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface3 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@JvmDefault
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface3 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface {
@JvmDefault
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface {
@JvmDefault
+2 -2
View File
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: enable
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: JBase.java
public interface JBase extends Base {
@@ -9,8 +11,6 @@ public interface JBase extends Base {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface Base {
@JvmDefault
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
fun test2(p: T): T {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
fun test2(p: T): T {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface3 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
fun test2(p: T): T {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -16,8 +18,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface3 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface<T> {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface2 {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface {
fun test2(): String {
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: JBase.java
public interface JBase extends Base {
@@ -9,8 +11,6 @@ public interface JBase extends Base {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface Base {
fun test(): String = "Base"
@@ -1,5 +1,7 @@
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: Simple.java
public interface Simple extends KInterface {
@@ -14,8 +16,6 @@ public class Foo implements Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface KInterface {
fun test2(): String {
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Simple.java
public interface Simple {
@@ -12,7 +13,6 @@ public interface Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
class TestClass : Simple {
override fun test(): String {
return super.test()
@@ -22,4 +22,4 @@ class TestClass : Simple {
fun box(): String {
return TestClass().test() + Simple.testStatic()
}
}
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Simple.java
public interface Simple {
@@ -12,7 +13,6 @@ public interface Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
interface KSimple : Simple {}
class TestClass : KSimple {
@@ -24,4 +24,4 @@ class TestClass : KSimple {
fun box(): String {
return TestClass().test() + Simple.testStatic()
}
}
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: IBase.java
interface IBase {
@@ -8,7 +9,6 @@ interface IBase {
}
// FILE: Kotlin.kt
// JVM_TARGET: 1.8
open class Base {
fun foo() = "OK"
}
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Simple.java
public interface Simple {
@@ -12,7 +13,6 @@ public interface Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
interface KInterface : Simple {
fun bar(): String {
return test("O") + Simple.testStatic("O")
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Simple.java
interface Simple {
@@ -12,7 +13,6 @@ interface Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
class Test : Simple {}
fun box(): String {
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Simple.java
public interface Simple {
@@ -12,7 +13,6 @@ public interface Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
interface TestInterface : Simple {}
class Test : TestInterface {}
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Simple.java
public interface Simple {
@@ -8,7 +9,6 @@ public interface Simple {
}
// FILE: main.kt
// JVM_TARGET: 1.8
interface KInterface: Simple {
override fun test(s: String): String {
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Test.java
interface Test<T> {
@@ -11,7 +12,6 @@ interface Test<T> {
}
// FILE: main.kt
// JVM_TARGET: 1.8
class Child : Test<String> {
override fun call() : String {
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Simple.java
interface Simple extends KInterface {
@@ -8,7 +9,6 @@ interface Simple extends KInterface {
}
// FILE: main.kt
// JVM_TARGET: 1.8
interface KInterface {
fun test(): String {
return "base";
@@ -1,5 +1,6 @@
// SKIP_JDK6
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Test.java
public interface Test {
@@ -9,7 +10,6 @@ public interface Test {
}
// FILE: test.kt
// JVM_TARGET: 1.8
interface KInterface : Test {
}
+1 -1
View File
@@ -1,6 +1,7 @@
// !JVM_DEFAULT_MODE: disable
// JVM_TARGET: 1.8
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: JBase.java
public interface JBase extends Base {
@@ -10,7 +11,6 @@ public interface JBase extends Base {
}
// FILE: main.kt
// WITH_RUNTIME
interface Base {
fun test(): String = "Base"
@@ -1,6 +1,7 @@
// !JVM_DEFAULT_MODE: disable
// JVM_TARGET: 1.8
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: Base.java
public interface Base {
@@ -11,7 +12,6 @@ public interface Base {
// FILE: main.kt
// WITH_RUNTIME
interface LeftBase : Base
interface Right : Base {
@@ -1,6 +1,7 @@
// !JVM_DEFAULT_MODE: disable
// JVM_TARGET: 1.8
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: Base.java
public interface Base {
@@ -15,7 +16,6 @@ public interface Left extends Base {
}
// FILE: main.kt
// WITH_RUNTIME
interface Right : Base {
override fun test(): String = "OK"
@@ -1,9 +1,9 @@
// !JVM_DEFAULT_MODE: disable
// JVM_TARGET: 1.8
// TARGET_BACKEND: JVM
// FILE: main.kt
// WITH_RUNTIME
// FULL_JDK
// FILE: main.kt
var result = ""
interface A<K, V> : MutableMap<K, V>
@@ -72,4 +72,4 @@ fun box(): String {
val value = map.getOrDefault("O", "OK")
if (result != "O=fail;O;O;") return "fail 3: $result"
return value
}
}
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: Base.java
public interface Base {
@@ -8,7 +9,6 @@ public interface Base {
}
// FILE: derived.kt
// JVM_TARGET: 1.8
interface K1 : Base
interface K2 : K1
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: JavaCall.java
class JavaCall {
@@ -23,7 +24,6 @@ interface Test {
}
// FILE: sam.kt
// JVM_TARGET: 1.8
fun box(): String {
val lambda = { "X" }
@@ -1,7 +1,7 @@
// !LANGUAGE: -NullabilityAssertionOnExtensionReceiver
// TARGET_BACKEND: JVM
// FILE: test.kt
// WITH_RUNTIME
// FILE: test.kt
private operator fun A.inc() = A()
fun box(): String {
@@ -14,4 +14,4 @@ fun box(): String {
// FILE: A.java
public class A {
public static A n() { return null; }
}
}
@@ -1,7 +1,7 @@
// !LANGUAGE: -NullabilityAssertionOnExtensionReceiver
// TARGET_BACKEND: JVM
// FILE: test.kt
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -79,4 +79,4 @@ fun box(): String {
}
return "OK"
}
}
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: Signs.java
// ANDROID_ANNOTATIONS
public enum Signs {
HELLO,
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -55,4 +55,4 @@ fun box(): String {
if (D().baz() != 42) return "FAIL 5"
return "OK"
}
}
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
import org.jetbrains.annotations.*;
@@ -80,4 +80,4 @@ fun box(): String {
}
return "OK"
}
}
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -37,4 +37,4 @@ fun box(): String {
}
return "OK"
}
}
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -1,9 +1,9 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -1,7 +1,7 @@
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
@@ -28,4 +28,4 @@ fun box(): String {
}
return "OK"
}
}
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// FILE: I.java
interface I {
default String ifun() { return "fail"; }
@@ -13,7 +14,6 @@ public class Z {
public class Zz extends Z implements I {}
// FILE: multipleImplFromJava.kt
// JVM_TARGET: 1.8
class Cc : Zz()
@@ -1,6 +1,6 @@
// FILE: Bar.java
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// FILE: Bar.java
public class Bar<K, N> { }
@@ -1,6 +1,6 @@
// FILE: Bar.java
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// FILE: Bar.java
public class Bar<K, N> { }
@@ -1,5 +1,5 @@
// FILE: Signs.java
// ANDROID_ANNOTATIONS
// FILE: Signs.java
public enum Signs {
HELLO,
@@ -64,4 +64,4 @@ fun test(){
a.<!INAPPLICABLE_CANDIDATE!>baz<!>()
a.bam()
}
}
@@ -1,5 +1,5 @@
// FILE: Signs.java
// ANDROID_ANNOTATIONS
// FILE: Signs.java
public enum Signs {
HELLO,
@@ -64,4 +64,4 @@ fun test(){
a.baz(<!NO_VALUE_FOR_PARAMETER!>)<!>
a.bam(<!NO_VALUE_FOR_PARAMETER!>)<!>
}
}
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -28,4 +28,4 @@ fun test(a: A, first: B<Int>, second: B<Int?>) {
second.foo()
second.foo(5)
}
}
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -28,4 +28,4 @@ fun test(a: A, first: B<Int>, second: B<Int?>) {
second.foo()
second.foo(5)
}
}
@@ -1,6 +1,6 @@
// FIR_IDENTICAL
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -24,4 +24,4 @@ fun main() {
test.missingName("arg")
test.numberName("first")
}
}
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -24,4 +24,4 @@ fun main() {
test.missingName("arg")
test.numberName("first")
}
}
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,5 +1,5 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
@@ -1,7 +1,7 @@
// FIR_IDENTICAL
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
public class A {
@@ -15,4 +15,4 @@ fun main() {
test.connect("127.0.0.1", 8080)
test.connect(host = "127.0.0.1", port = 8080)
test.connect(port = 8080, host = "127.0.0.1")
}
}
@@ -1,6 +1,6 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
public class A {
@@ -14,4 +14,4 @@ fun main() {
test.same("hello", "world")
test.<!INAPPLICABLE_CANDIDATE!>same<!>(ok = "hello", ok = <!UNRESOLVED_REFERENCE!>world<!>)
test.<!INAPPLICABLE_CANDIDATE!>same<!>("hello", ok = "world")
}
}
@@ -1,6 +1,6 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
public class A {
@@ -14,4 +14,4 @@ fun main() {
test.same("hello", "world")
test.same(ok = "hello", <!ARGUMENT_PASSED_TWICE!>ok<!> = <!UNRESOLVED_REFERENCE!>world<!><!NO_VALUE_FOR_PARAMETER!>)<!>
test.same("hello", <!ARGUMENT_PASSED_TWICE!>ok<!> = "world"<!NO_VALUE_FOR_PARAMETER!>)<!>
}
}

Some files were not shown because too many files have changed in this diff Show More