Update diagnostic tests
This commit is contained in:
+6
-3
@@ -1,11 +1,14 @@
|
|||||||
// !LANGUAGE: -ClassTypeParameterAnnotations
|
// !LANGUAGE: -ClassTypeParameterAnnotations
|
||||||
|
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||||
annotation class A1
|
annotation class A1
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||||
annotation class A2(val some: Int = 12)
|
annotation class A2(val some: Int = 12)
|
||||||
|
|
||||||
class TopLevelClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
class TopLevelClass<@A1 @A2(3) @A2 @A1(<!TOO_MANY_ARGUMENTS!>12<!>) @A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||||
class InnerClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
class InnerClass<@A1 @A2(3) @A2 @A1(<!TOO_MANY_ARGUMENTS!>12<!>) @A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||||
fun test() {
|
fun test() {
|
||||||
class InFun<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
class InFun<@A1 @A2(3) @A2 @A1(<!TOO_MANY_ARGUMENTS!>12<!>) @A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+6
-3
@@ -1,11 +1,14 @@
|
|||||||
// !LANGUAGE: -ClassTypeParameterAnnotations
|
// !LANGUAGE: -ClassTypeParameterAnnotations
|
||||||
|
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||||
annotation class A1
|
annotation class A1
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||||
annotation class A2(val some: Int = 12)
|
annotation class A2(val some: Int = 12)
|
||||||
|
|
||||||
class TopLevelClass<<!UNSUPPORTED!>@A1<!> <!UNSUPPORTED!>@A2(3)<!> <!UNSUPPORTED!>@A2<!> <!UNSUPPORTED!>@A1(12)<!> <!UNSUPPORTED!>@A2("Test")<!> T> {
|
class TopLevelClass<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2("Test")<!> T> {
|
||||||
class InnerClass<<!UNSUPPORTED!>@A1<!> <!UNSUPPORTED!>@A2(3)<!> <!UNSUPPORTED!>@A2<!> <!UNSUPPORTED!>@A1(12)<!> <!UNSUPPORTED!>@A2("Test")<!> T> {
|
class InnerClass<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2("Test")<!> T> {
|
||||||
fun test() {
|
fun test() {
|
||||||
class InFun<<!UNSUPPORTED!>@A1<!> <!UNSUPPORTED!>@A2(3)<!> <!UNSUPPORTED!>@A2<!> <!UNSUPPORTED!>@A1(12)<!> <!UNSUPPORTED!>@A2("Test")<!> T>
|
class InFun<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2("Test")<!> T>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,13 +1,13 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
public final annotation class A1 : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE_PARAMETER}) public final annotation class A1 : kotlin.Annotation {
|
||||||
public constructor A1()
|
public constructor A1()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): 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 hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final annotation class A2 : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE_PARAMETER}) public final annotation class A2 : kotlin.Annotation {
|
||||||
public constructor A2(/*0*/ some: kotlin.Int = ...)
|
public constructor A2(/*0*/ some: kotlin.Int = ...)
|
||||||
public final val some: kotlin.Int
|
public final val some: kotlin.Int
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions
|
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
|
||||||
|
|
||||||
annotation class A1
|
annotation class A1
|
||||||
annotation class A2(val some: Int = 12)
|
annotation class A2(val some: Int = 12)
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions
|
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
|
||||||
|
|
||||||
annotation class A1
|
annotation class A1
|
||||||
annotation class A2(val some: Int = 12)
|
annotation class A2(val some: Int = 12)
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ fun inParamNested(fn1: (fn2: (<!UNSUPPORTED!>@Ann<!> n: Int)->Unit)->Unit) {}
|
|||||||
|
|
||||||
fun inReturn(): (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit = {}
|
fun inReturn(): (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit = {}
|
||||||
|
|
||||||
class A : (@Ann Int)->Unit {
|
class A : (<!WRONG_ANNOTATION_TARGET!>@Ann<!> Int)->Unit {
|
||||||
override fun invoke(p1: Int) {
|
override fun invoke(p1: Int) {
|
||||||
var lambda: (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit = {}
|
var lambda: (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit = {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ public fun process(/*0*/ x: Predicate<kotlin.String>): kotlin.Unit
|
|||||||
public interface Predicate</*0*/ T : kotlin.CharSequence!> {
|
public interface Predicate</*0*/ T : kotlin.CharSequence!> {
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): 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 hashCode(): kotlin.Int
|
||||||
public abstract operator fun invoke(/*0*/ @org.jetbrains.annotations.NotNull t: T): kotlin.Boolean
|
public abstract operator fun invoke(/*0*/ @org.jetbrains.annotations.NotNull t: T!!): kotlin.Boolean
|
||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|||||||
compiler/testData/diagnostics/testsWithStdLib/builderInference/incorrectCallsWithRestrictions.fir.kt
Vendored
-35
@@ -1,35 +0,0 @@
|
|||||||
// !USE_EXPERIMENTAL: kotlin.RequiresOptIn
|
|
||||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE
|
|
||||||
|
|
||||||
@file:OptIn(ExperimentalTypeInference::class)
|
|
||||||
|
|
||||||
import kotlin.experimental.ExperimentalTypeInference
|
|
||||||
|
|
||||||
class GenericController<T> {
|
|
||||||
suspend fun yield(t: T) {}
|
|
||||||
fun notYield(t: T) {}
|
|
||||||
|
|
||||||
suspend fun yieldBarReturnType(t: T) = t
|
|
||||||
fun barReturnType(): T = TODO()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <S> generate(@BuilderInference g: suspend GenericController<S>.() -> Unit): List<S> = TODO()
|
|
||||||
|
|
||||||
val test1 = generate {
|
|
||||||
yield(3)
|
|
||||||
}
|
|
||||||
|
|
||||||
val test2 = generate {
|
|
||||||
yield(3)
|
|
||||||
notYield(3)
|
|
||||||
}
|
|
||||||
|
|
||||||
val test3 = generate {
|
|
||||||
yield(3)
|
|
||||||
yieldBarReturnType(3)
|
|
||||||
}
|
|
||||||
|
|
||||||
val test4 = generate {
|
|
||||||
yield(3)
|
|
||||||
barReturnType()
|
|
||||||
}
|
|
||||||
Vendored
+3
-2
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// !USE_EXPERIMENTAL: kotlin.RequiresOptIn
|
// !USE_EXPERIMENTAL: kotlin.RequiresOptIn
|
||||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||||
|
|
||||||
@@ -24,12 +25,12 @@ val test2 = generate {
|
|||||||
notYield(3)
|
notYield(3)
|
||||||
}
|
}
|
||||||
|
|
||||||
val test3 = <!COULD_BE_INFERRED_ONLY_WITH_UNRESTRICTED_BUILDER_INFERENCE!>generate<!> {
|
val test3 = generate {
|
||||||
yield(3)
|
yield(3)
|
||||||
yieldBarReturnType(3)
|
yieldBarReturnType(3)
|
||||||
}
|
}
|
||||||
|
|
||||||
val test4 = <!COULD_BE_INFERRED_ONLY_WITH_UNRESTRICTED_BUILDER_INFERENCE!>generate<!> {
|
val test4 = generate {
|
||||||
yield(3)
|
yield(3)
|
||||||
barReturnType()
|
barReturnType()
|
||||||
}
|
}
|
||||||
|
|||||||
-38
@@ -1,38 +0,0 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
|
||||||
// ALLOW_KOTLIN_PACKAGE
|
|
||||||
// !WITH_NEW_INFERENCE
|
|
||||||
// FILE: annotation.kt
|
|
||||||
|
|
||||||
package kotlin
|
|
||||||
|
|
||||||
annotation class BuilderInference
|
|
||||||
|
|
||||||
// FILE: test.kt
|
|
||||||
|
|
||||||
class Builder<T> {
|
|
||||||
fun add(t: T) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <S> build(@BuilderInference g: Builder<S>.() -> Unit): List<S> = TODO()
|
|
||||||
fun <S> wrongBuild(g: Builder<S>.() -> Unit): List<S> = TODO()
|
|
||||||
|
|
||||||
fun <S> Builder<S>.extensionAdd(s: S) {}
|
|
||||||
|
|
||||||
@BuilderInference
|
|
||||||
fun <S> Builder<S>.safeExtensionAdd(s: S) {}
|
|
||||||
|
|
||||||
val member = build {
|
|
||||||
add(42)
|
|
||||||
}
|
|
||||||
|
|
||||||
val memberWithoutAnn = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>wrongBuild<!> {
|
|
||||||
add(42)
|
|
||||||
}
|
|
||||||
|
|
||||||
val extension = build {
|
|
||||||
extensionAdd("foo")
|
|
||||||
}
|
|
||||||
|
|
||||||
val safeExtension = build {
|
|
||||||
safeExtensionAdd("foo")
|
|
||||||
}
|
|
||||||
+3
-2
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||||
// ALLOW_KOTLIN_PACKAGE
|
// ALLOW_KOTLIN_PACKAGE
|
||||||
// !WITH_NEW_INFERENCE
|
// !WITH_NEW_INFERENCE
|
||||||
@@ -25,11 +26,11 @@ val member = build {
|
|||||||
add(42)
|
add(42)
|
||||||
}
|
}
|
||||||
|
|
||||||
val memberWithoutAnn = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>wrongBuild<!> {
|
val memberWithoutAnn = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>wrongBuild<!> {
|
||||||
add(42)
|
add(42)
|
||||||
}
|
}
|
||||||
|
|
||||||
val extension = <!COULD_BE_INFERRED_ONLY_WITH_UNRESTRICTED_BUILDER_INFERENCE, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>build<!> {
|
val extension = build {
|
||||||
extensionAdd("foo")
|
extensionAdd("foo")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -1,8 +1,6 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
public val extension: [ERROR : Type for build {
|
public val extension: kotlin.collections.List<kotlin.String>
|
||||||
extensionAdd("foo")
|
|
||||||
}]
|
|
||||||
public val member: kotlin.collections.List<kotlin.Int>
|
public val member: kotlin.collections.List<kotlin.Int>
|
||||||
public val memberWithoutAnn: [ERROR : Type for wrongBuild {
|
public val memberWithoutAnn: [ERROR : Type for wrongBuild {
|
||||||
add(42)
|
add(42)
|
||||||
|
|||||||
-33
@@ -1,33 +0,0 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
|
||||||
// ALLOW_KOTLIN_PACKAGE
|
|
||||||
|
|
||||||
// FILE: annotation.kt
|
|
||||||
|
|
||||||
package kotlin
|
|
||||||
|
|
||||||
annotation class BuilderInference
|
|
||||||
|
|
||||||
// FILE: test.kt
|
|
||||||
|
|
||||||
class GenericController<T> {
|
|
||||||
suspend fun yield(t: T) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
suspend fun <S> GenericController<S>.extensionYield(s: S) {}
|
|
||||||
|
|
||||||
@BuilderInference
|
|
||||||
suspend fun <S> GenericController<S>.safeExtensionYield(s: S) {}
|
|
||||||
|
|
||||||
fun <S> generate(@BuilderInference g: suspend GenericController<S>.() -> Unit): List<S> = TODO()
|
|
||||||
|
|
||||||
val normal = generate {
|
|
||||||
yield(42)
|
|
||||||
}
|
|
||||||
|
|
||||||
val extension = generate {
|
|
||||||
extensionYield("foo")
|
|
||||||
}
|
|
||||||
|
|
||||||
val safeExtension = generate {
|
|
||||||
safeExtensionYield("foo")
|
|
||||||
}
|
|
||||||
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||||
// ALLOW_KOTLIN_PACKAGE
|
// ALLOW_KOTLIN_PACKAGE
|
||||||
|
|
||||||
@@ -24,7 +25,7 @@ val normal = generate {
|
|||||||
yield(42)
|
yield(42)
|
||||||
}
|
}
|
||||||
|
|
||||||
val extension = <!COULD_BE_INFERRED_ONLY_WITH_UNRESTRICTED_BUILDER_INFERENCE!>generate<!> {
|
val extension = generate {
|
||||||
extensionYield("foo")
|
extensionYield("foo")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// !LANGUAGE: -SuspendFunctionAsSupertype
|
||||||
// SKIP_TXT
|
// SKIP_TXT
|
||||||
|
|
||||||
import kotlin.reflect.*
|
import kotlin.reflect.*
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// !LANGUAGE: -SuspendFunctionAsSupertype
|
||||||
// SKIP_TXT
|
// SKIP_TXT
|
||||||
|
|
||||||
import kotlin.reflect.*
|
import kotlin.reflect.*
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// !LANGUAGE: -SuspendFunctionAsSupertype
|
||||||
typealias Action = () -> Unit
|
typealias Action = () -> Unit
|
||||||
|
|
||||||
interface SAM {
|
interface SAM {
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// !LANGUAGE: -SuspendFunctionAsSupertype
|
||||||
typealias Action = () -> Unit
|
typealias Action = () -> Unit
|
||||||
|
|
||||||
interface SAM {
|
interface SAM {
|
||||||
|
|||||||
Reference in New Issue
Block a user