提交 6a7cd0c8 编写于 作者: D Dmitriy Novozhilov 提交者: TeamCityServer

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

上级 28cff22c
// FILE: Descriptor.java
// FULL_JDK
// FILE: Descriptor.java
public interface Descriptor
......
// FILE: Element.java
// FULL_JDK
// FILE: Element.java
public interface Element {}
......
// 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)
}
}
\ No newline at end of file
}
......@@ -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.*
......
// 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 {
}
......
// 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"
......
// 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
......
// 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()
......
// 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"
......
// 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
......
// 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"
......
// !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"
......
// MODULE: lib
// FILE: lib.kt
// WITH_RUNTIME
// FILE: lib.kt
import kotlin.test.assertEquals
......
// MODULE: lib
// FILE: lib.kt
// WITH_RUNTIME
// FILE: lib.kt
import kotlin.test.assertEquals
......
// 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"
\ No newline at end of file
fun box() = "OK"
// 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"
\ No newline at end of file
fun box(): String = "OK"
// 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)
}
......
// TARGET_BACKEND: JVM
// FILE: test.kt
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
......
// !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 {
......
// !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 {
......
// !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 {
......
// !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> {
......
// !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> {
......
// !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> {
......
// !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 {
......
// !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 {
......
// !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
......
// !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
......
// !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
......
// !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> {
......
// !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> {
......
// !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> {
......
// !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
......
// !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
......
// !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
......
// !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 {
......
// !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 {
......
// !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 {
......
// !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> {
......
// !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> {
......
// !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> {
......
// !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 {
......
// !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"
......
// !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 {
......
// 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()
}
\ No newline at end of file
}
// 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()
}
\ No newline at end of file
}
// 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"
}
......
// 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")
......
// 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 {
......
// 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 {}
......
// 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 {
......
// 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 {
......
// 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";
......
// 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 {
}
......
// !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"
......
// !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 {
......
// !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"
......
// !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
}
\ No newline at end of file
}
// 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
......
// 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" }
......
// !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; }
}
\ No newline at end of file
}
// !LANGUAGE: -NullabilityAssertionOnExtensionReceiver
// TARGET_BACKEND: JVM
// FILE: test.kt
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
......
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
......
// 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"
}
\ No newline at end of file
}
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: Signs.java
// ANDROID_ANNOTATIONS
public enum Signs {
HELLO,
......
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
......
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
......
// 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"
}
\ No newline at end of file
}
// 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"
}
\ No newline at end of file
}
// 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"
}
\ No newline at end of file
}
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
......
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
......
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
......
// TARGET_BACKEND: JVM
// ANDROID_ANNOTATIONS
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
......@@ -28,4 +28,4 @@ fun box(): String {
}
return "OK"
}
\ No newline at end of file
}
// 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()
......
// FILE: Bar.java
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// FILE: Bar.java
public class Bar<K, N> { }
......
// FILE: Bar.java
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// FILE: Bar.java
public class Bar<K, N> { }
......
// FILE: Signs.java
// ANDROID_ANNOTATIONS
// FILE: Signs.java
public enum Signs {
HELLO,
......@@ -64,4 +64,4 @@ fun test(){
a.<!INAPPLICABLE_CANDIDATE!>baz<!>()
a.bam()
}
\ No newline at end of file
}
// 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!>)<!>
}
\ No newline at end of file
}
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// 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)
}
\ No newline at end of file
}
// 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)
}
\ No newline at end of file
}
// FIR_IDENTICAL
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// 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")
}
\ No newline at end of file
}
// 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")
}
\ No newline at end of file
}
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// FILE: A.java
// ANDROID_ANNOTATIONS
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
......
// 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")
}
\ No newline at end of file
}
// 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")
}
\ No newline at end of file
}
// 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!>)<!>
}
\ No newline at end of file
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册