Deprecate escaped modifiers and unescaped annotations

This commit is contained in:
Denis Zharkov
2015-09-08 12:11:30 +03:00
parent 25cd9de71a
commit 676ca86ea4
184 changed files with 979 additions and 787 deletions
@@ -140,6 +140,11 @@ public interface Errors {
DiagnosticFactory0<PsiElement> INAPPLICABLE_PARAM_TARGET = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<PsiElement> INAPPLICABLE_PARAM_TARGET = DiagnosticFactory0.create(ERROR);
DiagnosticFactory1<PsiElement, String> REDUNDANT_ANNOTATION_TARGET = DiagnosticFactory1.create(WARNING); DiagnosticFactory1<PsiElement, String> REDUNDANT_ANNOTATION_TARGET = DiagnosticFactory1.create(WARNING);
DiagnosticFactory0<JetAnnotationEntry> DEPRECATED_UNESCAPED_ANNOTATION = DiagnosticFactory0.create(WARNING);
DiagnosticFactory0<PsiElement> DEPRECATED_ESCAPED_MODIFIER = DiagnosticFactory0.create(WARNING);
DiagnosticFactory1<JetAnnotationEntry, String> DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER = DiagnosticFactory1.create(WARNING);
// Classes and traits // Classes and traits
DiagnosticFactory0<JetTypeProjection> PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE = DiagnosticFactory0<JetTypeProjection> PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE =
@@ -132,6 +132,10 @@ public class DefaultErrorMessages {
MAP.put(INAPPLICABLE_PARAM_TARGET, "''@param:'' annotations could be applied only to primary constructor parameters"); MAP.put(INAPPLICABLE_PARAM_TARGET, "''@param:'' annotations could be applied only to primary constructor parameters");
MAP.put(REDUNDANT_ANNOTATION_TARGET, "Redundant annotation target ''{0}''", STRING); MAP.put(REDUNDANT_ANNOTATION_TARGET, "Redundant annotation target ''{0}''", STRING);
MAP.put(DEPRECATED_UNESCAPED_ANNOTATION, "Annotations without '@' are deprecated now");
MAP.put(DEPRECATED_ESCAPED_MODIFIER, "Modifiers with '@' are deprecated now");
MAP.put(DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER, "Annotation ''{0}'' will become a modifier soon. Do not use ''@'' before it", STRING);
MAP.put(REDUNDANT_MODIFIER, "Modifier ''{0}'' is redundant because ''{1}'' is present", TO_STRING, TO_STRING); MAP.put(REDUNDANT_MODIFIER, "Modifier ''{0}'' is redundant because ''{1}'' is present", TO_STRING, TO_STRING);
MAP.put(ABSTRACT_MODIFIER_IN_TRAIT, "Modifier ''abstract'' is redundant in interface"); MAP.put(ABSTRACT_MODIFIER_IN_TRAIT, "Modifier ''abstract'' is redundant in interface");
MAP.put(REDUNDANT_MODIFIER_IN_GETTER, "Visibility modifiers are redundant in getter"); MAP.put(REDUNDANT_MODIFIER_IN_GETTER, "Visibility modifiers are redundant in getter");
@@ -108,6 +108,12 @@ public class JetAnnotationEntry extends JetElementImplStub<KotlinAnnotationEntry
return findChildByType(JetTokens.AT); return findChildByType(JetTokens.AT);
} }
public boolean hasAtSymbolOrInList() {
if (getStub() != null) return true;
return getAtSymbol() != null || getParent() instanceof JetAnnotation;
}
@Nullable @Nullable
public JetAnnotationUseSiteTarget getUseSiteTarget() { public JetAnnotationUseSiteTarget getUseSiteTarget() {
JetAnnotationUseSiteTarget target = getStubOrPsiChild(JetStubElementTypes.ANNOTATION_TARGET); JetAnnotationUseSiteTarget target = getStubOrPsiChild(JetStubElementTypes.ANNOTATION_TARGET);
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.resolve
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.annotations.ANNOTATION_MODIFIERS_FQ_NAMES
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
@@ -30,6 +31,7 @@ import org.jetbrains.kotlin.types.TypeUtils
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
import org.jetbrains.kotlin.resolve.descriptorUtil.isRepeatableAnnotation import org.jetbrains.kotlin.resolve.descriptorUtil.isRepeatableAnnotation
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget.* import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget.*
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import kotlin.platform.platformStatic import kotlin.platform.platformStatic
public class AnnotationChecker(private val additionalCheckers: Iterable<AdditionalAnnotationChecker>) { public class AnnotationChecker(private val additionalCheckers: Iterable<AdditionalAnnotationChecker>) {
@@ -71,6 +73,15 @@ public class AnnotationChecker(private val additionalCheckers: Iterable<Addition
val descriptor = trace.get(BindingContext.ANNOTATION, entry) ?: continue val descriptor = trace.get(BindingContext.ANNOTATION, entry) ?: continue
val classDescriptor = TypeUtils.getClassDescriptor(descriptor.type) ?: continue val classDescriptor = TypeUtils.getClassDescriptor(descriptor.type) ?: continue
if (classDescriptor.fqNameSafe in ANNOTATION_MODIFIERS_FQ_NAMES) {
trace.report(Errors.DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER.on(entry, classDescriptor.name.toString()))
}
else {
if (!entry.hasAtSymbolOrInList()) {
trace.report(Errors.DEPRECATED_UNESCAPED_ANNOTATION.on(entry))
}
}
val useSiteTarget = entry.useSiteTarget?.getAnnotationUseSiteTarget() val useSiteTarget = entry.useSiteTarget?.getAnnotationUseSiteTarget()
val existingTargetsForAnnotation = entryTypesWithAnnotations.getOrPut(descriptor.type) { arrayListOf() } val existingTargetsForAnnotation = entryTypesWithAnnotations.getOrPut(descriptor.type) { arrayListOf() }
val duplicateAnnotation = useSiteTarget in existingTargetsForAnnotation val duplicateAnnotation = useSiteTarget in existingTargetsForAnnotation
@@ -203,6 +203,9 @@ public object ModifierCheckerCore {
else if (!checkParent(trace, second, parentDescriptor)) { else if (!checkParent(trace, second, parentDescriptor)) {
incorrectNodes += second incorrectNodes += second
} }
else if ((second.elementType is JetModifierKeywordToken) && second.psi.textContains('@')) {
trace.report(Errors.DEPRECATED_ESCAPED_MODIFIER.on(second.psi))
}
} }
} }
} }
@@ -1,5 +1,5 @@
fun test() { fun test() {
@tailrec fun g3(counter : Int) { tailrec fun g3(counter : Int) {
if (counter > 0) { g3(counter - 1) } if (counter > 0) { g3(counter - 1) }
} }
g3(1000000) g3(1000000)
+1 -1
View File
@@ -18,6 +18,6 @@ fun test() : Unit {
val <!UNUSED_VARIABLE!>s<!> = "" <!USELESS_CAST!>as Any<!> val <!UNUSED_VARIABLE!>s<!> = "" <!USELESS_CAST!>as Any<!>
("" as String?)?.length() ("" as String?)?.length()
(data@("" as String?))?.length() (data@("" as String?))?.length()
(<!WRONG_ANNOTATION_TARGET!>@data()<!>( "" as String?))?.length() (<!WRONG_ANNOTATION_TARGET!>@MustBeDocumented()<!>( "" as String?))?.length()
Unit Unit
} }
@@ -6,4 +6,4 @@ package foo
// FILE: b.kt // FILE: b.kt
<!UNRESOLVED_REFERENCE!>foo<!> fun bar(p: <!UNRESOLVED_REFERENCE!>foo<!>): <!UNRESOLVED_REFERENCE!>foo<!> = null!! <!UNRESOLVED_REFERENCE!>@foo<!> fun bar(p: <!UNRESOLVED_REFERENCE!>foo<!>): <!UNRESOLVED_REFERENCE!>foo<!> = null!!
@@ -1,5 +1,5 @@
import java.util.ArrayList import java.util.ArrayList
<!NONE_APPLICABLE!>ArrayList<!><Int>(1, 1) fun b() {} @<!NONE_APPLICABLE!>ArrayList<!><Int>(1, 1) fun b() {}
<!UNRESOLVED_REFERENCE!>Xoo<!>(<!UNRESOLVED_REFERENCE!>x<!>) fun c() {} <!UNRESOLVED_REFERENCE!>@Xoo<!>(<!UNRESOLVED_REFERENCE!>x<!>) fun c() {}
<!DEPRECATED_JAVA_ANNOTATION!>java.lang.Deprecated(<!UNRESOLVED_REFERENCE, TOO_MANY_ARGUMENTS!>x<!>)<!> fun a() {} <!DEPRECATED_JAVA_ANNOTATION!>@java.lang.Deprecated(<!UNRESOLVED_REFERENCE, TOO_MANY_ARGUMENTS!>x<!>)<!> fun a() {}
@@ -1,2 +1,2 @@
annotation class ann annotation class ann
class Annotated(ann val x: Int) class Annotated(@ann val x: Int)
@@ -4,12 +4,12 @@ import java.lang.Deprecated as deprecated
import java.lang.SuppressWarnings as suppresswarnings import java.lang.SuppressWarnings as suppresswarnings
<!DEPRECATED_JAVA_ANNOTATION!>deprecated<!> suppresswarnings val s: String = ""; <!DEPRECATED_JAVA_ANNOTATION!>@deprecated<!> @suppresswarnings val s: String = "";
<!DEPRECATED_JAVA_ANNOTATION!>deprecated<!> suppresswarnings fun main(args : Array<String>) { <!DEPRECATED_JAVA_ANNOTATION!>@deprecated<!> @suppresswarnings fun main(args : Array<String>) {
System.out.println("Hello, world!") System.out.println("Hello, world!")
} }
class Test(<!DEPRECATED_JAVA_ANNOTATION!>deprecated<!> val s: String, class Test(<!DEPRECATED_JAVA_ANNOTATION!>@deprecated<!> val s: String,
suppresswarnings val x : Int) {} @suppresswarnings val x : Int) {}
@@ -2,4 +2,4 @@ annotation class Base(val x: Int)
annotation class UseBase(val b: Base = Base(0)) annotation class UseBase(val b: Base = Base(0))
UseBase class My @UseBase class My
@@ -1,3 +1,3 @@
// Check that there won't be "Rewrite at slice ANNOTATION key" exception - EA-36935 // Check that there won't be "Rewrite at slice ANNOTATION key" exception - EA-36935
<!UNRESOLVED_REFERENCE!>someErrorAnnotation<!> object Test { <!UNRESOLVED_REFERENCE!>@someErrorAnnotation<!> object Test {
} }
@@ -6,11 +6,11 @@ annotation class annotation
package test package test
<!NOT_AN_ANNOTATION_CLASS!>test.annotation<!> class annotation <!NOT_AN_ANNOTATION_CLASS!>@test.annotation<!> class annotation
kotlin.annotation.annotation class realAnnotation <!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@kotlin.annotation.annotation<!> class realAnnotation
realAnnotation class My @realAnnotation class My
// FILE: other/c.kt // FILE: other/c.kt
@@ -18,8 +18,8 @@ package other
annotation class My annotation class My
<!NOT_AN_ANNOTATION_CLASS!>test.annotation<!> class Your <!NOT_AN_ANNOTATION_CLASS!>@test.annotation<!> class Your
kotlin.annotation.annotation class His <!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@kotlin.annotation.annotation<!> class His
My class Our @My class Our
@@ -2,5 +2,5 @@ package test
annotation class A(val a: Int = 12, val b: String = "Test", val c: String) annotation class A(val a: Int = 12, val b: String = "Test", val c: String)
A(a = 12, c = "Hello") @A(a = 12, c = "Hello")
object SomeObject object SomeObject
@@ -2,9 +2,9 @@ annotation class my
annotation class my1(val i : Int) annotation class my1(val i : Int)
annotation class my2(val i : Int = 0) annotation class my2(val i : Int = 0)
my fun foo() {} @my fun foo() {}
<!NO_VALUE_FOR_PARAMETER!>my1<!> fun foo2() {} @<!NO_VALUE_FOR_PARAMETER!>my1<!> fun foo2() {}
my1(2) fun foo3() {} @my1(2) fun foo3() {}
my2() fun foo4() {} @my2() fun foo4() {}
my2 fun foo41() {} @my2 fun foo41() {}
my2(2) fun foo42() {} @my2(2) fun foo42() {}
@@ -6,11 +6,11 @@ annotation class Ann3(val a: Ann1 = Ann1(1))
annotation class Ann4(val value: String) annotation class Ann4(val value: String)
Ann2(Ann1(1)) val a = 1 @Ann2(Ann1(1)) val a = 1
Ann2(a = Ann1(1)) val c = 2 @Ann2(a = Ann1(1)) val c = 2
Ann4("a") class MyClass @Ann4("a") class MyClass
fun foo() { fun foo() {
<!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann()<!> <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann()<!>
@@ -1,5 +1,5 @@
// FILE: script.kts // FILE: script.kts
@annotation class Ann annotation class Ann
@Ann<!SYNTAX!><!> @Ann<!SYNTAX!><!>
@@ -1,5 +1,5 @@
import java.lang.Deprecated as deprecated import java.lang.Deprecated as deprecated
<!DEPRECATED_JAVA_ANNOTATION!>java.lang.Deprecated<!> fun foo() {} <!DEPRECATED_JAVA_ANNOTATION!>@java.lang.Deprecated<!> fun foo() {}
<!DEPRECATED_JAVA_ANNOTATION!>deprecated<!> fun foo1() {} <!DEPRECATED_JAVA_ANNOTATION!>@deprecated<!> fun foo1() {}
@@ -3,6 +3,6 @@ import java.lang.annotation.*
<!DEPRECATED_JAVA_ANNOTATION!>@java.lang.annotation.Retention(RetentionPolicy.CLASS)<!> <!DEPRECATED_JAVA_ANNOTATION!>@java.lang.annotation.Retention(RetentionPolicy.CLASS)<!>
annotation class my annotation class my
<!DEPRECATED_JAVA_ANNOTATION!>Retention(RetentionPolicy.RUNTIME)<!> <!DEPRECATED_JAVA_ANNOTATION!>@Retention(RetentionPolicy.RUNTIME)<!>
<!DEPRECATED_JAVA_ANNOTATION!>Target(ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR)<!> <!DEPRECATED_JAVA_ANNOTATION!>@Target(ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR)<!>
annotation class my1 annotation class my1
@@ -1,4 +1,4 @@
// Functions can be recursively annotated // Functions can be recursively annotated
annotation class ann(val x: Int) annotation class ann(val x: Int)
ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>bar()<!>) fun foo() = 1 @ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>bar()<!>) fun foo() = 1
ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>foo()<!>) fun bar() = 2 @ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>foo()<!>) fun bar() = 2
@@ -1,3 +1,3 @@
class Foo class Foo
<!NOT_AN_ANNOTATION_CLASS!>Foo<!> class Bar <!NOT_AN_ANNOTATION_CLASS!>@Foo<!> class Bar
@@ -1,3 +1,3 @@
// Class CAN be recursively annotated // Class CAN be recursively annotated
RecursivelyAnnotated(1) @RecursivelyAnnotated(1)
annotation class RecursivelyAnnotated(val x: Int) annotation class RecursivelyAnnotated(val x: Int)
@@ -1,3 +1,3 @@
// Functions can be recursively annotated // Functions can be recursively annotated
annotation class ann(val x: Int) annotation class ann(val x: Int)
ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>foo()<!>) fun foo() = 1 @ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>foo()<!>) fun foo() = 1
@@ -1,3 +1,3 @@
// Properties can be recursively annotated // Properties can be recursively annotated
annotation class ann(val x: Int) annotation class ann(val x: Int)
ann(x) val x: Int = 1 @ann(x) val x: Int = 1
@@ -1,2 +1,2 @@
// Class constructor parameter CAN be recursively annotated // Class constructor parameter CAN be recursively annotated
annotation class RecursivelyAnnotated(RecursivelyAnnotated(1) val x: Int) annotation class RecursivelyAnnotated(@RecursivelyAnnotated(1) val x: Int)
@@ -1,5 +1,5 @@
// Properties can be recursively annotated // Properties can be recursively annotated
annotation class ann(val x: Int) annotation class ann(val x: Int)
class My { class My {
ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>x<!>) val x: Int = 1 @ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>x<!>) val x: Int = 1
} }
@@ -1,2 +1,2 @@
// Class constructor parameter CAN be recursively annotated // Class constructor parameter CAN be recursively annotated
class RecursivelyAnnotated(<!NOT_AN_ANNOTATION_CLASS!>RecursivelyAnnotated(1)<!> val x: Int) class RecursivelyAnnotated(<!NOT_AN_ANNOTATION_CLASS!>@RecursivelyAnnotated(1)<!> val x: Int)
@@ -3,7 +3,7 @@ package test
// Checks that there is no rewrite error at ANNOTATION slice because of resolving annotations for object in lazy resolve and resolving // Checks that there is no rewrite error at ANNOTATION slice because of resolving annotations for object in lazy resolve and resolving
// object as property (method tries to resolve annotations too). // object as property (method tries to resolve annotations too).
<!UNRESOLVED_REFERENCE!>BadAnnotation<!> <!UNRESOLVED_REFERENCE!>@BadAnnotation<!>
object SomeObject object SomeObject
val some = SomeObject val some = SomeObject
@@ -1,6 +1,6 @@
package test package test
BadAnnotation(<!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>) @BadAnnotation(<!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>)
object SomeObject object SomeObject
val some = SomeObject val some = SomeObject
@@ -1,6 +1,6 @@
annotation class AnnE(val i: MyEnum) annotation class AnnE(val i: MyEnum)
AnnE(<!ANNOTATION_PARAMETER_MUST_BE_ENUM_CONST!>e<!>) @AnnE(<!ANNOTATION_PARAMETER_MUST_BE_ENUM_CONST!>e<!>)
class Test class Test
val e: MyEnum = MyEnum.A val e: MyEnum = MyEnum.A
@@ -9,5 +9,5 @@ enum class MyEnum {
A A
} }
AnnE(<!TYPE_MISMATCH!>Test()<!>) @AnnE(<!TYPE_MISMATCH!>Test()<!>)
class Test2 class Test2
@@ -13,7 +13,7 @@ public class Test {
// FILE: a.kt // FILE: a.kt
annotation class Ann(vararg val i: Int) annotation class Ann(vararg val i: Int)
Ann( @Ann(
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i1<!>, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i1<!>,
Test.i2, Test.i2,
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i3<!>, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i3<!>,
@@ -1,6 +1,6 @@
annotation class Ann(vararg val i: Int) annotation class Ann(vararg val i: Int)
Ann( @Ann(
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i1<!>, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i1<!>,
i2, i2,
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>,
@@ -6,7 +6,7 @@
@Repeatable @Repeatable
annotation class Ann(val x: Int = 6) annotation class Ann(val x: Int = 6)
@Ann(1) @Ann(2) @Ann(3) @private class A @Ann constructor() { @Ann(1) @Ann(2) @Ann(3) private class A @Ann constructor() {
@Ann(x = 5) fun foo() { @Ann(x = 5) fun foo() {
1 + @Ann(1) 1 * @Ann(<!TYPE_MISMATCH!>""<!>) 6 1 + @Ann(1) 1 * @Ann(<!TYPE_MISMATCH!>""<!>) 6
@@ -1,9 +1,9 @@
fun foo(<!UNRESOLVED_REFERENCE!>varargs<!> <!UNUSED_PARAMETER!>f<!> : Int) {} fun foo(<!UNRESOLVED_REFERENCE, DEPRECATED_UNESCAPED_ANNOTATION!>varargs<!> <!UNUSED_PARAMETER!>f<!> : Int) {}
var bar : Int = 1 var bar : Int = 1
set(<!UNRESOLVED_REFERENCE!>varargs<!> v) {} set(<!UNRESOLVED_REFERENCE!>varargs<!> v) {}
val x : (Int) -> Int = {<!UNRESOLVED_REFERENCE!>@varargs<!> <!TYPE_MISMATCH!>x<!> <!DEPRECATED_STATIC_ASSERT!>: Int<!> <!SYNTAX!>-> x<!>} val x : (Int) -> Int = {<!UNRESOLVED_REFERENCE!>@varargs<!> <!TYPE_MISMATCH!>x<!> <!DEPRECATED_STATIC_ASSERT!>: Int<!> <!SYNTAX!>-> x<!>}
class Hello(<!UNRESOLVED_REFERENCE!>varargs<!> <!UNUSED_PARAMETER!>args<!>: Any) { class Hello(<!UNRESOLVED_REFERENCE, DEPRECATED_UNESCAPED_ANNOTATION!>varargs<!> <!UNUSED_PARAMETER!>args<!>: Any) {
} }
@@ -1,12 +1,12 @@
@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION) @Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
annotation class test annotation class test
fun foo(test <!UNUSED_PARAMETER!>f<!> : Int) {} fun foo(@test <!UNUSED_PARAMETER!>f<!> : Int) {}
var bar : Int = 1 var bar : Int = 1
set(test v) {} set(test v) {}
val x : (Int) -> Int = {@test <!TYPE_MISMATCH!>x<!> <!DEPRECATED_STATIC_ASSERT!>: Int<!> <!SYNTAX!>-> x<!>} // todo fix parser annotation on lambda parameter val x : (Int) -> Int = {@test <!TYPE_MISMATCH!>x<!> <!DEPRECATED_STATIC_ASSERT!>: Int<!> <!SYNTAX!>-> x<!>} // todo fix parser annotation on lambda parameter
class Hello(test <!UNUSED_PARAMETER!>args<!>: Any) { class Hello(@test <!UNUSED_PARAMETER!>args<!>: Any) {
} }
@@ -0,0 +1,27 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -NOT_YET_SUPPORTED_IN_INLINE
import kotlin.external as myNative
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@annotation<!> <!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@data<!> <!DEPRECATED_ESCAPED_MODIFIER!>@public<!> class Ann(val arg: Int = 1)
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@inline<!> <!DEPRECATED_ESCAPED_MODIFIER!>@private<!> fun bar(block: () -> Int) = block()
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@data<!> class Q(val x: Int, val y: Int)
fun bar2(): Array<Q> = null!!
<!DEPRECATED_ESCAPED_MODIFIER!>@open<!> class A <!DEPRECATED_ESCAPED_MODIFIER!>@private<!> constructor(<!DEPRECATED_ESCAPED_MODIFIER!>@private<!> val prop: Int) {
<!DEPRECATED_ESCAPED_MODIFIER!>@private<!> val x = 1
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@inline<!> fun foo(<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@noinline<!> x: Int) {
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@data<!> class Local
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>@inline<!> fun localFun() {}
}
<!DEPRECATED_ESCAPED_MODIFIER!>@private<!> object O1 {}
<!DEPRECATED_ESCAPED_MODIFIER!>@public<!> <!DEPRECATED_ESCAPED_MODIFIER!>@companion<!> object O2 {}
}
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>kotlin.inline<!> fun baz() { }
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>kotlin.data<!> class Data
<!DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER!>myNative<!> fun nativeFun(): Int
@@ -0,0 +1,60 @@
package
kotlin.inline() private fun bar(/*0*/ block: () -> kotlin.Int): kotlin.Int
public fun bar2(): kotlin.Array<Q>
kotlin.inline() public fun baz(): kotlin.Unit
kotlin.external() public fun nativeFun(): kotlin.Int
public open class A {
private constructor A(/*0*/ prop: kotlin.Int)
private final val prop: kotlin.Int
private final val x: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.inline() public final fun foo(/*0*/ kotlin.noinline() x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
private object O1 {
private constructor O1()
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 toString(): kotlin.String
}
public companion object O2 {
private constructor O2()
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 toString(): kotlin.String
}
}
kotlin.annotation.annotation() kotlin.data() public final class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ arg: kotlin.Int = ...)
public final val arg: kotlin.Int
public final /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun copy(/*0*/ arg: kotlin.Int = ...): Ann
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 toString(): kotlin.String
}
kotlin.data() public final class Data {
public constructor Data()
public final /*synthesized*/ fun copy(): Data
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 toString(): kotlin.String
}
kotlin.data() public final class Q {
public constructor Q(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int)
public final val x: kotlin.Int
public final val y: kotlin.Int
public final /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun component2(): kotlin.Int
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.Int = ...): Q
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 toString(): kotlin.String
}
@@ -0,0 +1,12 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
annotation class Ann(val arg: Int = 1)
<!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> class A <!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> constructor(<!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> val prop: Int) {
<!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> val x = 1
<!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> fun foo(<!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> x: Int) {}
<!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> object O1 {}
<!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> companion object O2 {}
}
<!DEPRECATED_UNESCAPED_ANNOTATION!>Ann<!> object O3 {}
@@ -0,0 +1,40 @@
package
Ann() public final class A {
Ann() public constructor A(/*0*/ Ann() prop: kotlin.Int)
public final val prop: kotlin.Int
Ann() public final val x: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
Ann() public final fun foo(/*0*/ Ann() x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
Ann() public object O1 {
private constructor O1()
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 toString(): kotlin.String
}
Ann() public companion object O2 {
private constructor O2()
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 toString(): kotlin.String
}
}
kotlin.annotation.annotation() public final class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ arg: kotlin.Int = ...)
public final val arg: kotlin.Int
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 toString(): kotlin.String
}
Ann() public object O3 {
private constructor O3()
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 toString(): kotlin.String
}
@@ -3,6 +3,6 @@ annotation class DocAnn
annotation class NotDocAnn annotation class NotDocAnn
DocAnn class My @DocAnn class My
NotDocAnn class Your @NotDocAnn class Your
@@ -13,8 +13,8 @@ public class DocumentedAnnotations {
// FILE: DocumentedAnnotations.kt // FILE: DocumentedAnnotations.kt
DocumentedAnnotations.DocAnn class My @DocumentedAnnotations.DocAnn class My
DocumentedAnnotations.NotDocAnn class Your @DocumentedAnnotations.NotDocAnn class Your
DocumentedAnnotations.RunDocAnn class His @DocumentedAnnotations.RunDocAnn class His
@@ -26,10 +26,10 @@ public class AnnotationRetentions {
// FILE: AnnotationRetentions.kt // FILE: AnnotationRetentions.kt
AnnotationRetentions.BaseAnnotation class BaseClass @AnnotationRetentions.BaseAnnotation class BaseClass
AnnotationRetentions.SourceAnnotation class SourceClass @AnnotationRetentions.SourceAnnotation class SourceClass
AnnotationRetentions.BinaryAnnotation class BinaryClass @AnnotationRetentions.BinaryAnnotation class BinaryClass
AnnotationRetentions.RuntimeAnnotation class RuntimeClass @AnnotationRetentions.RuntimeAnnotation class RuntimeClass
@@ -17,13 +17,13 @@ annotation class binrepann
@Repeatable @Repeatable
annotation class repexpr annotation class repexpr
repann <!NON_SOURCE_REPEATED_ANNOTATION!>repann<!> class DoubleAnnotated @repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> class DoubleAnnotated
repann1(1) repann1(2) repann1(3) class TripleAnnotated @repann1(1) @repann1(2) @repann1(3) class TripleAnnotated
repann2(true) repann2(false) repann2(false) repann2(true) class FourTimesAnnotated @repann2(true) @repann2(false) @repann2(false) @repann2(true) class FourTimesAnnotated
binrepann <!NON_SOURCE_REPEATED_ANNOTATION!>binrepann<!> class BinaryAnnotated @binrepann <!NON_SOURCE_REPEATED_ANNOTATION!>@binrepann<!> class BinaryAnnotated
@repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> fun foo(@repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> x: Int): Int { @repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> fun foo(@repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> x: Int): Int {
@repexpr <!NON_SOURCE_REPEATED_ANNOTATION!>@repexpr<!> return x @repexpr <!NON_SOURCE_REPEATED_ANNOTATION!>@repexpr<!> return x
@@ -1,4 +1,4 @@
@Retention(AnnotationRetention.SOURCE) @Retention(AnnotationRetention.SOURCE)
annotation class sourceann annotation class sourceann
sourceann class AnnotatedAtSource @sourceann class AnnotatedAtSource
@@ -1,5 +1,5 @@
@Target(AnnotationTarget.CLASSIFIER) @Target(AnnotationTarget.CLASSIFIER)
annotation class base annotation class base
base data class My @base data class My
@@ -8,9 +8,9 @@ annotation class smartset
annotation class base annotation class base
class My(x: Int) { class My(x: Int) {
smartget var y = x @smartget var y = x
<!WRONG_ANNOTATION_TARGET!>@base<!> @smartget <!WRONG_ANNOTATION_TARGET!>@smartset<!> get <!WRONG_ANNOTATION_TARGET!>@base<!> @smartget <!WRONG_ANNOTATION_TARGET!>@smartset<!> get
<!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@smartget<!> @smartset set <!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@smartget<!> @smartset set
base <!WRONG_ANNOTATION_TARGET!>smartget<!> <!WRONG_ANNOTATION_TARGET!>smartset<!> fun foo() = y @base <!WRONG_ANNOTATION_TARGET!>@smartget<!> <!WRONG_ANNOTATION_TARGET!>@smartset<!> fun foo() = y
} }
@@ -1,20 +1,20 @@
@Target(AnnotationTarget.ANNOTATION_CLASS) annotation class base @Target(AnnotationTarget.ANNOTATION_CLASS) annotation class base
base annotation class derived @base annotation class derived
<!WRONG_ANNOTATION_TARGET!>base<!> class correct(<!WRONG_ANNOTATION_TARGET!>base<!> val x: Int) { <!WRONG_ANNOTATION_TARGET!>@base<!> class correct(<!WRONG_ANNOTATION_TARGET!>@base<!> val x: Int) {
<!WRONG_ANNOTATION_TARGET!>base<!> constructor(): this(0) <!WRONG_ANNOTATION_TARGET!>@base<!> constructor(): this(0)
} }
<!WRONG_ANNOTATION_TARGET!>base<!> enum class My { <!WRONG_ANNOTATION_TARGET!>@base<!> enum class My {
<!WRONG_ANNOTATION_TARGET!>@base<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@base<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@base<!> SECOND <!WRONG_ANNOTATION_TARGET!>@base<!> SECOND
} }
<!WRONG_ANNOTATION_TARGET!>base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int { <!WRONG_ANNOTATION_TARGET!>@base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>@base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int {
<!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>@base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>base<!> val z = 0 <!WRONG_ANNOTATION_TARGET!>@base<!> val z = 0
@@ -1,21 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
@Target(AnnotationTarget.CLASSIFIER) annotation class base @Target(AnnotationTarget.CLASSIFIER) annotation class base
base annotation class derived @base annotation class derived
base class correct(<!WRONG_ANNOTATION_TARGET!>base<!> val x: Int, <!WRONG_ANNOTATION_TARGET!>base<!> w: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) { @base class correct(<!WRONG_ANNOTATION_TARGET!>@base<!> val x: Int, <!WRONG_ANNOTATION_TARGET!>@base<!> w: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) {
<!WRONG_ANNOTATION_TARGET!>base<!> constructor(): this(0, 0) <!WRONG_ANNOTATION_TARGET!>@base<!> constructor(): this(0, 0)
} }
base enum class My <!WRONG_ANNOTATION_TARGET!>@base<!> constructor() { @base enum class My <!WRONG_ANNOTATION_TARGET!>@base<!> constructor() {
<!WRONG_ANNOTATION_TARGET!>@base<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@base<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@base<!> SECOND <!WRONG_ANNOTATION_TARGET!>@base<!> SECOND
} }
<!WRONG_ANNOTATION_TARGET!>base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int { <!WRONG_ANNOTATION_TARGET!>@base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>@base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int {
<!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>@base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>base<!> val z = 0 <!WRONG_ANNOTATION_TARGET!>@base<!> val z = 0
@@ -1,20 +1,20 @@
@Target(AnnotationTarget.CONSTRUCTOR) annotation class base @Target(AnnotationTarget.CONSTRUCTOR) annotation class base
<!WRONG_ANNOTATION_TARGET!>base<!> annotation class derived <!WRONG_ANNOTATION_TARGET!>@base<!> annotation class derived
<!WRONG_ANNOTATION_TARGET!>base<!> class correct(<!WRONG_ANNOTATION_TARGET!>base<!> val x: Int) { <!WRONG_ANNOTATION_TARGET!>@base<!> class correct(<!WRONG_ANNOTATION_TARGET!>@base<!> val x: Int) {
base constructor(): this(0) @base constructor(): this(0)
} }
<!WRONG_ANNOTATION_TARGET!>base<!> enum class My @base constructor() { <!WRONG_ANNOTATION_TARGET!>@base<!> enum class My @base constructor() {
<!WRONG_ANNOTATION_TARGET!>@base<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@base<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@base<!> SECOND <!WRONG_ANNOTATION_TARGET!>@base<!> SECOND
} }
<!WRONG_ANNOTATION_TARGET!>base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int { <!WRONG_ANNOTATION_TARGET!>@base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>@base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int {
<!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>@base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>base<!> val z = 0 <!WRONG_ANNOTATION_TARGET!>@base<!> val z = 0
@@ -1,21 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
@Target() annotation class empty @Target() annotation class empty
<!WRONG_ANNOTATION_TARGET!>empty<!> annotation class derived <!WRONG_ANNOTATION_TARGET!>@empty<!> annotation class derived
<!WRONG_ANNOTATION_TARGET!>empty<!> class correct(<!WRONG_ANNOTATION_TARGET!>empty<!> val x: Int, <!WRONG_ANNOTATION_TARGET!>empty<!> w: <!WRONG_ANNOTATION_TARGET!>@empty<!> Int) { <!WRONG_ANNOTATION_TARGET!>@empty<!> class correct(<!WRONG_ANNOTATION_TARGET!>@empty<!> val x: Int, <!WRONG_ANNOTATION_TARGET!>@empty<!> w: <!WRONG_ANNOTATION_TARGET!>@empty<!> Int) {
<!WRONG_ANNOTATION_TARGET!>empty<!> constructor(): this(0, 0) <!WRONG_ANNOTATION_TARGET!>@empty<!> constructor(): this(0, 0)
} }
<!WRONG_ANNOTATION_TARGET!>empty<!> enum class My <!WRONG_ANNOTATION_TARGET!>@empty<!> constructor() { <!WRONG_ANNOTATION_TARGET!>@empty<!> enum class My <!WRONG_ANNOTATION_TARGET!>@empty<!> constructor() {
<!WRONG_ANNOTATION_TARGET!>@empty<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@empty<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@empty<!> SECOND <!WRONG_ANNOTATION_TARGET!>@empty<!> SECOND
} }
<!WRONG_ANNOTATION_TARGET!>empty<!> fun foo(<!WRONG_ANNOTATION_TARGET!>empty<!> y: <!WRONG_ANNOTATION_TARGET!>@empty<!> Int): Int { <!WRONG_ANNOTATION_TARGET!>@empty<!> fun foo(<!WRONG_ANNOTATION_TARGET!>@empty<!> y: <!WRONG_ANNOTATION_TARGET!>@empty<!> Int): Int {
<!WRONG_ANNOTATION_TARGET!>@empty<!> fun bar(<!WRONG_ANNOTATION_TARGET!>empty<!> z: <!WRONG_ANNOTATION_TARGET!>@empty<!> Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@empty<!> fun bar(<!WRONG_ANNOTATION_TARGET!>@empty<!> z: <!WRONG_ANNOTATION_TARGET!>@empty<!> Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@empty<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@empty<!> val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>empty<!> val z = <!WRONG_ANNOTATION_TARGET!>@empty<!> 0 <!WRONG_ANNOTATION_TARGET!>@empty<!> val z = <!WRONG_ANNOTATION_TARGET!>@empty<!> 0
@@ -4,7 +4,7 @@ annotation class base
fun transform(i: Int, tr: (Int) -> Int): Int = <!WRONG_ANNOTATION_TARGET!>@base<!> @special tr(@special i) fun transform(i: Int, tr: (Int) -> Int): Int = <!WRONG_ANNOTATION_TARGET!>@base<!> @special tr(@special i)
base <!WRONG_ANNOTATION_TARGET!>special<!> fun foo(i: Int): Int { @base <!WRONG_ANNOTATION_TARGET!>@special<!> fun foo(i: Int): Int {
val j = <!WRONG_ANNOTATION_TARGET!>@base<!> @special i + 1 val j = <!WRONG_ANNOTATION_TARGET!>@base<!> @special i + 1
if (j == 1) return foo(@special <!WRONG_ANNOTATION_TARGET!>@base<!> 42) if (j == 1) return foo(@special <!WRONG_ANNOTATION_TARGET!>@base<!> 42)
return transform(@special j, <!WRONG_ANNOTATION_TARGET!>@base<!> @special { @special it * 2 }) return transform(@special j, <!WRONG_ANNOTATION_TARGET!>@base<!> @special { @special it * 2 })
@@ -12,7 +12,7 @@ annotation class common
package test package test
<!WRONG_ANNOTATION_TARGET!>special<!> class Incorrect <!WRONG_ANNOTATION_TARGET!>@special<!> class Incorrect
// FILE: another.kt // FILE: another.kt
@@ -20,4 +20,4 @@ package test
package test package test
common class Correct @common class Correct
@@ -1,22 +1,22 @@
@Target(AnnotationTarget.FUNCTION) annotation class base @Target(AnnotationTarget.FUNCTION) annotation class base
<!WRONG_ANNOTATION_TARGET!>base<!> annotation class derived <!WRONG_ANNOTATION_TARGET!>@base<!> annotation class derived
<!WRONG_ANNOTATION_TARGET!>base<!> class correct(<!WRONG_ANNOTATION_TARGET!>base<!> val x: Int) { <!WRONG_ANNOTATION_TARGET!>@base<!> class correct(<!WRONG_ANNOTATION_TARGET!>@base<!> val x: Int) {
<!WRONG_ANNOTATION_TARGET!>base<!> constructor(): this(0) <!WRONG_ANNOTATION_TARGET!>@base<!> constructor(): this(0)
base public fun baz() {} @base public fun baz() {}
} }
<!WRONG_ANNOTATION_TARGET!>base<!> enum class My <!WRONG_ANNOTATION_TARGET!>@base<!> constructor() { <!WRONG_ANNOTATION_TARGET!>@base<!> enum class My <!WRONG_ANNOTATION_TARGET!>@base<!> constructor() {
<!WRONG_ANNOTATION_TARGET!>@base<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@base<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@base<!> SECOND <!WRONG_ANNOTATION_TARGET!>@base<!> SECOND
} }
base fun foo(<!WRONG_ANNOTATION_TARGET!>base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int { @base fun foo(<!WRONG_ANNOTATION_TARGET!>@base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int {
@base fun bar(<!WRONG_ANNOTATION_TARGET!>base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1 @base fun bar(<!WRONG_ANNOTATION_TARGET!>@base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>base<!> val z = 0 <!WRONG_ANNOTATION_TARGET!>@base<!> val z = 0
@@ -1,21 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
@Target(AnnotationTarget.<!UNRESOLVED_REFERENCE!>INIT<!>) annotation class incorrect @Target(AnnotationTarget.<!UNRESOLVED_REFERENCE!>INIT<!>) annotation class incorrect
<!WRONG_ANNOTATION_TARGET!>incorrect<!> annotation class derived <!WRONG_ANNOTATION_TARGET!>@incorrect<!> annotation class derived
<!WRONG_ANNOTATION_TARGET!>incorrect<!> class correct(<!WRONG_ANNOTATION_TARGET!>incorrect<!> val x: Int, <!WRONG_ANNOTATION_TARGET!>incorrect<!> w: <!WRONG_ANNOTATION_TARGET!>@incorrect<!> Int) { <!WRONG_ANNOTATION_TARGET!>@incorrect<!> class correct(<!WRONG_ANNOTATION_TARGET!>@incorrect<!> val x: Int, <!WRONG_ANNOTATION_TARGET!>@incorrect<!> w: <!WRONG_ANNOTATION_TARGET!>@incorrect<!> Int) {
<!WRONG_ANNOTATION_TARGET!>incorrect<!> constructor(): this(0, 0) <!WRONG_ANNOTATION_TARGET!>@incorrect<!> constructor(): this(0, 0)
} }
<!WRONG_ANNOTATION_TARGET!>incorrect<!> enum class My <!WRONG_ANNOTATION_TARGET!>@incorrect<!> constructor() { <!WRONG_ANNOTATION_TARGET!>@incorrect<!> enum class My <!WRONG_ANNOTATION_TARGET!>@incorrect<!> constructor() {
<!WRONG_ANNOTATION_TARGET!>@incorrect<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@incorrect<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@incorrect<!> SECOND <!WRONG_ANNOTATION_TARGET!>@incorrect<!> SECOND
} }
<!WRONG_ANNOTATION_TARGET!>incorrect<!> fun foo(<!WRONG_ANNOTATION_TARGET!>incorrect<!> y: <!WRONG_ANNOTATION_TARGET!>@incorrect<!> Int): Int { <!WRONG_ANNOTATION_TARGET!>@incorrect<!> fun foo(<!WRONG_ANNOTATION_TARGET!>@incorrect<!> y: <!WRONG_ANNOTATION_TARGET!>@incorrect<!> Int): Int {
<!WRONG_ANNOTATION_TARGET!>@incorrect<!> fun bar(<!WRONG_ANNOTATION_TARGET!>incorrect<!> z: <!WRONG_ANNOTATION_TARGET!>@incorrect<!> Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@incorrect<!> fun bar(<!WRONG_ANNOTATION_TARGET!>@incorrect<!> z: <!WRONG_ANNOTATION_TARGET!>@incorrect<!> Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@incorrect<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@incorrect<!> val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>incorrect<!> val z = <!WRONG_ANNOTATION_TARGET!>@incorrect<!> 0 <!WRONG_ANNOTATION_TARGET!>@incorrect<!> val z = <!WRONG_ANNOTATION_TARGET!>@incorrect<!> 0
@@ -1,6 +1,6 @@
annotation class base annotation class base
base class My { @base class My {
<!WRONG_ANNOTATION_TARGET!>@base<!> init { <!WRONG_ANNOTATION_TARGET!>@base<!> init {
} }
} }
@@ -60,16 +60,16 @@ package test
import test.AnnotationTargets.* import test.AnnotationTargets.*
base meta type <!WRONG_ANNOTATION_TARGET!>konstructor<!> annotation class KMeta @base @meta @type <!WRONG_ANNOTATION_TARGET!>@konstructor<!> annotation class KMeta
base <!WRONG_ANNOTATION_TARGET!>meta<!> type <!WRONG_ANNOTATION_TARGET!>method<!> <!WRONG_ANNOTATION_TARGET!>multiple<!> class KClass( @base <!WRONG_ANNOTATION_TARGET!>@meta<!> @type <!WRONG_ANNOTATION_TARGET!>@method<!> <!WRONG_ANNOTATION_TARGET!>@multiple<!> class KClass(
@base @fieldann @parameter val y: @base @fieldann @parameter val y:
<!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@type<!> Int) { <!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@type<!> Int) {
base multiple fieldann <!WRONG_ANNOTATION_TARGET!>local<!> val x = 0 @base @multiple @fieldann <!WRONG_ANNOTATION_TARGET!>@local<!> val x = 0
@method <!WRONG_ANNOTATION_TARGET!>@konstructor<!> <!WRONG_ANNOTATION_TARGET!>@type<!> get @method <!WRONG_ANNOTATION_TARGET!>@konstructor<!> <!WRONG_ANNOTATION_TARGET!>@type<!> get
base method multiple <!WRONG_ANNOTATION_TARGET!>konstructor<!> @base @method @multiple <!WRONG_ANNOTATION_TARGET!>@konstructor<!>
fun foo(@parameter <!WRONG_ANNOTATION_TARGET!>@type<!> i: fun foo(@parameter <!WRONG_ANNOTATION_TARGET!>@type<!> i:
<!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@multiple<!> Int <!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@multiple<!> Int
): <!WRONG_ANNOTATION_TARGET!>@fieldann<!> <!WRONG_ANNOTATION_TARGET!>@parameter<!> Int { ): <!WRONG_ANNOTATION_TARGET!>@fieldann<!> <!WRONG_ANNOTATION_TARGET!>@parameter<!> Int {
@@ -78,5 +78,5 @@ base <!WRONG_ANNOTATION_TARGET!>meta<!> type <!WRONG_ANNOTATION_TARGET!>method<!
<!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@multiple<!> return j <!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@multiple<!> return j
} }
base <!WRONG_ANNOTATION_TARGET!>method<!> konstructor constructor(): this(0) @base <!WRONG_ANNOTATION_TARGET!>@method<!> @konstructor constructor(): this(0)
} }
@@ -1,20 +1,20 @@
@Target(AnnotationTarget.LOCAL_VARIABLE) annotation class base @Target(AnnotationTarget.LOCAL_VARIABLE) annotation class base
<!WRONG_ANNOTATION_TARGET!>base<!> annotation class derived <!WRONG_ANNOTATION_TARGET!>@base<!> annotation class derived
<!WRONG_ANNOTATION_TARGET!>base<!> class correct(<!WRONG_ANNOTATION_TARGET!>base<!> val x: Int) { <!WRONG_ANNOTATION_TARGET!>@base<!> class correct(<!WRONG_ANNOTATION_TARGET!>@base<!> val x: Int) {
<!WRONG_ANNOTATION_TARGET!>base<!> constructor(): this(0) <!WRONG_ANNOTATION_TARGET!>@base<!> constructor(): this(0)
} }
<!WRONG_ANNOTATION_TARGET!>base<!> enum class My { <!WRONG_ANNOTATION_TARGET!>@base<!> enum class My {
<!WRONG_ANNOTATION_TARGET!>@base<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@base<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@base<!> SECOND <!WRONG_ANNOTATION_TARGET!>@base<!> SECOND
} }
<!WRONG_ANNOTATION_TARGET!>base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int { <!WRONG_ANNOTATION_TARGET!>@base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>@base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int {
<!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>@base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1
@base val local = bar(y) @base val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>base<!> val z = 0 <!WRONG_ANNOTATION_TARGET!>@base<!> val z = 0
@@ -4,10 +4,10 @@ annotation class base
@Target(AnnotationTarget.ANNOTATION_CLASS) @Target(AnnotationTarget.ANNOTATION_CLASS)
annotation class meta annotation class meta
base class Outer { @base class Outer {
base <!WRONG_ANNOTATION_TARGET!>meta<!> class Nested @base <!WRONG_ANNOTATION_TARGET!>@meta<!> class Nested
base meta annotation class Annotated @base @meta annotation class Annotated
fun foo() { fun foo() {
@base <!WRONG_ANNOTATION_TARGET!>@meta<!> class Local @base <!WRONG_ANNOTATION_TARGET!>@meta<!> class Local
@@ -1,21 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
@Target(AnnotationTarget.PROPERTY) annotation class base @Target(AnnotationTarget.PROPERTY) annotation class base
<!WRONG_ANNOTATION_TARGET!>base<!> annotation class derived <!WRONG_ANNOTATION_TARGET!>@base<!> annotation class derived
<!WRONG_ANNOTATION_TARGET!>base<!> class correct(base val x: Int, <!WRONG_ANNOTATION_TARGET!>base<!> w: Int) { <!WRONG_ANNOTATION_TARGET!>@base<!> class correct(@base val x: Int, <!WRONG_ANNOTATION_TARGET!>@base<!> w: Int) {
<!WRONG_ANNOTATION_TARGET!>base<!> constructor(): this(0, 0) <!WRONG_ANNOTATION_TARGET!>@base<!> constructor(): this(0, 0)
} }
<!WRONG_ANNOTATION_TARGET!>base<!> enum class My { <!WRONG_ANNOTATION_TARGET!>@base<!> enum class My {
@base FIRST, @base FIRST,
@base SECOND @base SECOND
} }
<!WRONG_ANNOTATION_TARGET!>base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int { <!WRONG_ANNOTATION_TARGET!>@base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>@base<!> y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int {
<!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>@base<!> z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y)
return local return local
} }
base val z = 0 @base val z = 0
@@ -3,7 +3,7 @@ annotation class base
@Target(AnnotationTarget.TYPE) @Target(AnnotationTarget.TYPE)
annotation class typed annotation class typed
base class My(val x: <!WRONG_ANNOTATION_TARGET!>@base<!> @typed Int, y: <!WRONG_ANNOTATION_TARGET!>@base<!> @typed Int) { @base class My(val x: <!WRONG_ANNOTATION_TARGET!>@base<!> @typed Int, y: <!WRONG_ANNOTATION_TARGET!>@base<!> @typed Int) {
val z: <!WRONG_ANNOTATION_TARGET!>@base<!> @typed Int = y val z: <!WRONG_ANNOTATION_TARGET!>@base<!> @typed Int = y
fun foo(): <!WRONG_ANNOTATION_TARGET!>@base<!> @typed Int = z fun foo(): <!WRONG_ANNOTATION_TARGET!>@base<!> @typed Int = z
} }
@@ -1,20 +1,20 @@
@Target(AnnotationTarget.TYPE) annotation class base @Target(AnnotationTarget.TYPE) annotation class base
<!WRONG_ANNOTATION_TARGET!>base<!> annotation class derived <!WRONG_ANNOTATION_TARGET!>@base<!> annotation class derived
<!WRONG_ANNOTATION_TARGET!>base<!> class correct(<!WRONG_ANNOTATION_TARGET!>base<!> val x: @base Int) { <!WRONG_ANNOTATION_TARGET!>@base<!> class correct(<!WRONG_ANNOTATION_TARGET!>@base<!> val x: @base Int) {
<!WRONG_ANNOTATION_TARGET!>base<!> constructor(): this(0) <!WRONG_ANNOTATION_TARGET!>@base<!> constructor(): this(0)
} }
<!WRONG_ANNOTATION_TARGET!>base<!> enum class My <!WRONG_ANNOTATION_TARGET!>@base<!> constructor() { <!WRONG_ANNOTATION_TARGET!>@base<!> enum class My <!WRONG_ANNOTATION_TARGET!>@base<!> constructor() {
<!WRONG_ANNOTATION_TARGET!>@base<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@base<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@base<!> SECOND <!WRONG_ANNOTATION_TARGET!>@base<!> SECOND
} }
<!WRONG_ANNOTATION_TARGET!>base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>base<!> y: @base Int): Int { <!WRONG_ANNOTATION_TARGET!>@base<!> fun foo(<!WRONG_ANNOTATION_TARGET!>@base<!> y: @base Int): Int {
<!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>base<!> z: @base Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(<!WRONG_ANNOTATION_TARGET!>@base<!> z: @base Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>base<!> val z = 0 <!WRONG_ANNOTATION_TARGET!>@base<!> val z = 0
@@ -1,21 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
@Target(AnnotationTarget.VALUE_PARAMETER) annotation class base @Target(AnnotationTarget.VALUE_PARAMETER) annotation class base
<!WRONG_ANNOTATION_TARGET!>base<!> annotation class derived <!WRONG_ANNOTATION_TARGET!>@base<!> annotation class derived
<!WRONG_ANNOTATION_TARGET!>base<!> class correct(base val x: Int, base w: Int) { <!WRONG_ANNOTATION_TARGET!>@base<!> class correct(@base val x: Int, @base w: Int) {
<!WRONG_ANNOTATION_TARGET!>base<!> constructor(): this(0, 0) <!WRONG_ANNOTATION_TARGET!>@base<!> constructor(): this(0, 0)
} }
<!WRONG_ANNOTATION_TARGET!>base<!> enum class My { <!WRONG_ANNOTATION_TARGET!>@base<!> enum class My {
<!WRONG_ANNOTATION_TARGET!>@base<!> FIRST, <!WRONG_ANNOTATION_TARGET!>@base<!> FIRST,
<!WRONG_ANNOTATION_TARGET!>@base<!> SECOND <!WRONG_ANNOTATION_TARGET!>@base<!> SECOND
} }
<!WRONG_ANNOTATION_TARGET!>base<!> fun foo(base y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int { <!WRONG_ANNOTATION_TARGET!>@base<!> fun foo(@base y: <!WRONG_ANNOTATION_TARGET!>@base<!> Int): Int {
<!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(base z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1 <!WRONG_ANNOTATION_TARGET!>@base<!> fun bar(@base z: <!WRONG_ANNOTATION_TARGET!>@base<!> Int) = z + 1
<!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y) <!WRONG_ANNOTATION_TARGET!>@base<!> val local = bar(y)
return local return local
} }
<!WRONG_ANNOTATION_TARGET!>base<!> val z = 0 <!WRONG_ANNOTATION_TARGET!>@base<!> val z = 0
@@ -2,12 +2,12 @@ annotation class unrepann(val x: Int)
annotation class ann(val y: Int) annotation class ann(val y: Int)
unrepann(1) <!REPEATED_ANNOTATION!>unrepann(2)<!> class DoubleAnnotated @unrepann(1) <!REPEATED_ANNOTATION!>@unrepann(2)<!> class DoubleAnnotated
ann(3) <!REPEATED_ANNOTATION!>ann(7)<!> <!REPEATED_ANNOTATION!>ann(42)<!> class TripleAnnotated @ann(3) <!REPEATED_ANNOTATION!>@ann(7)<!> <!REPEATED_ANNOTATION!>@ann(42)<!> class TripleAnnotated
@Target(AnnotationTarget.EXPRESSION) annotation class annexpr @Target(AnnotationTarget.EXPRESSION) annotation class annexpr
ann(0) <!REPEATED_ANNOTATION!>ann(1)<!> fun foo(@ann(7) <!REPEATED_ANNOTATION!>@ann(2)<!> x: Int): Int { @ann(0) <!REPEATED_ANNOTATION!>@ann(1)<!> fun foo(@ann(7) <!REPEATED_ANNOTATION!>@ann(2)<!> x: Int): Int {
@annexpr <!REPEATED_ANNOTATION!>@annexpr<!> return x @annexpr <!REPEATED_ANNOTATION!>@annexpr<!> return x
} }
@@ -1,3 +1,3 @@
<!UNRESOLVED_REFERENCE!>@Ann<!> class A <!UNRESOLVED_REFERENCE!>@Ann<!> class A
<!UNRESOLVED_REFERENCE!>Ann<!> class B <!UNRESOLVED_REFERENCE!>@Ann<!> class B
<!UNRESOLVED_REFERENCE!>@Ann<!>(1) class C <!UNRESOLVED_REFERENCE!>@Ann<!>(1) class C
@@ -6,14 +6,14 @@ interface B
<!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>fun ()<!> {} <!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>fun ()<!> {}
<!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>fun A.()<!> {} <!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>fun A.()<!> {}
<!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>a fun ()<!> {} <!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>@a fun ()<!> {}
<!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>fun @a A.()<!> {} <!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>fun @a A.()<!> {}
class Outer { class Outer {
<!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>fun ()<!> {} <!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>fun ()<!> {}
<!FUNCTION_DECLARATION_WITH_NO_NAME!>fun B.()<!> {} <!FUNCTION_DECLARATION_WITH_NO_NAME!>fun B.()<!> {}
<!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>a fun ()<!> {} <!FUNCTION_DECLARATION_WITH_NO_NAME, CONFLICTING_OVERLOADS!>@a fun ()<!> {}
<!FUNCTION_DECLARATION_WITH_NO_NAME!>fun @a A.()<!> {} <!FUNCTION_DECLARATION_WITH_NO_NAME!>fun @a A.()<!> {}
} }
@@ -1,9 +1,9 @@
Deprecated("text") @Deprecated("text")
annotation class obsolete() annotation class obsolete()
Deprecated("text") @Deprecated("text")
annotation class obsoleteWithParam(val text: String) annotation class obsoleteWithParam(val text: String)
<!DEPRECATED_SYMBOL_WITH_MESSAGE!>obsolete<!> class Obsolete @<!DEPRECATED_SYMBOL_WITH_MESSAGE!>obsolete<!> class Obsolete
<!DEPRECATED_SYMBOL_WITH_MESSAGE!>obsoleteWithParam<!>("text") class Obsolete2 @<!DEPRECATED_SYMBOL_WITH_MESSAGE!>obsoleteWithParam<!>("text") class Obsolete2
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
class Data { class Data {
Deprecated("text") @Deprecated("text")
fun component1(): String = throw Exception() fun component1(): String = throw Exception()
fun component2(): String = throw Exception() fun component2(): String = throw Exception()
} }
@@ -4,15 +4,15 @@ class UsefulClass(val param: Int = 2) {
fun get(instance: Any, property: PropertyMetadata) : Int = 1 fun get(instance: Any, property: PropertyMetadata) : Int = 1
fun set(instance: Any, property: PropertyMetadata, value: Int) {} fun set(instance: Any, property: PropertyMetadata, value: Int) {}
Deprecated("message") @Deprecated("message")
fun member() {} fun member() {}
} }
Deprecated("message") @Deprecated("message")
fun Obsolete(param: Int = 1): UsefulClass = UsefulClass(param) fun Obsolete(param: Int = 1): UsefulClass = UsefulClass(param)
class Invocable { class Invocable {
Deprecated("message") @Deprecated("message")
fun invoke() {} fun invoke() {}
} }
@@ -40,7 +40,7 @@ class Initializer {
val x = <!DEPRECATED_SYMBOL_WITH_MESSAGE!>Obsolete<!>() val x = <!DEPRECATED_SYMBOL_WITH_MESSAGE!>Obsolete<!>()
} }
Deprecated("does nothing good") @Deprecated("does nothing good")
fun Any.doNothing() = this.toString() // "this" should not be marked as deprecated despite it referes to deprecated function fun Any.doNothing() = this.toString() // "this" should not be marked as deprecated despite it referes to deprecated function
class Delegation { class Delegation {
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION, -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_EXPRESSION, -UNUSED_PARAMETER
open class C<T>() { open class C<T>() {
Deprecated("") @Deprecated("")
constructor(p: Int) : this(){} constructor(p: Int) : this(){}
} }
+1 -1
View File
@@ -1,6 +1,6 @@
import <!DEPRECATED_SYMBOL_WITH_MESSAGE!>C<!> as C2 import <!DEPRECATED_SYMBOL_WITH_MESSAGE!>C<!> as C2
Deprecated("obsolete") @Deprecated("obsolete")
class C { class C {
fun use() {} fun use() {}
} }
@@ -1,5 +1,5 @@
class Iter { class Iter {
Deprecated("text") @Deprecated("text")
fun iterator() : IterIterator = throw Exception() fun iterator() : IterIterator = throw Exception()
class IterIterator { class IterIterator {
@@ -11,9 +11,9 @@ class Iter {
class Iter2 { class Iter2 {
fun iterator() : Iter2Iterator = throw Exception() fun iterator() : Iter2Iterator = throw Exception()
class Iter2Iterator { class Iter2Iterator {
Deprecated("text") @Deprecated("text")
fun hasNext(): Boolean = throw UnsupportedOperationException() fun hasNext(): Boolean = throw UnsupportedOperationException()
Deprecated("text") @Deprecated("text")
fun next(): String = throw UnsupportedOperationException() fun next(): String = throw UnsupportedOperationException()
} }
} }
@@ -1,5 +1,5 @@
class TopLevel { class TopLevel {
Deprecated("Nested") @Deprecated("Nested")
class Nested { class Nested {
companion object { companion object {
fun use() {} fun use() {}
@@ -1,10 +1,10 @@
Deprecated("Object") @Deprecated("Object")
object Obsolete { object Obsolete {
fun use() {} fun use() {}
} }
class Another { class Another {
Deprecated("Object") @Deprecated("Object")
companion object { companion object {
fun use() {} fun use() {}
} }
@@ -1,18 +1,18 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION // !DIAGNOSTICS: -UNUSED_EXPRESSION
class Delegate() { class Delegate() {
Deprecated("text") @Deprecated("text")
fun get(instance: Any, property: PropertyMetadata) : Int = 1 fun get(instance: Any, property: PropertyMetadata) : Int = 1
Deprecated("text") @Deprecated("text")
fun set(instance: Any, property: PropertyMetadata, value: Int) {} fun set(instance: Any, property: PropertyMetadata, value: Int) {}
} }
class PropertyHolder { class PropertyHolder {
Deprecated("text") @Deprecated("text")
val x = 1 val x = 1
Deprecated("text") @Deprecated("text")
var name = "String" var name = "String"
val valDelegate <!DEPRECATED_SYMBOL_WITH_MESSAGE!>by<!> Delegate() val valDelegate <!DEPRECATED_SYMBOL_WITH_MESSAGE!>by<!> Delegate()
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION // !DIAGNOSTICS: -UNUSED_EXPRESSION
class PropertyHolder { class PropertyHolder {
Deprecated("") @Deprecated("")
val a1 = 1 val a1 = 1
@property:Deprecated("") @property:Deprecated("")
@@ -1,10 +1,10 @@
Deprecated("Class") @Deprecated("Class")
open class Obsolete { open class Obsolete {
fun use() {} fun use() {}
} }
Deprecated("Class") @Deprecated("Class")
open class Obsolete2 Deprecated("Constructor") constructor() { open class Obsolete2 @Deprecated("Constructor") constructor() {
fun use() {} fun use() {}
} }
@@ -14,7 +14,7 @@ enum class E {
<!WRONG_MODIFIER_TARGET!>final<!> FINAL, <!WRONG_MODIFIER_TARGET!>final<!> FINAL,
<!WRONG_MODIFIER_TARGET!>inner<!> INNER, <!WRONG_MODIFIER_TARGET!>inner<!> INNER,
<!WRONG_ANNOTATION_TARGET!>@annotation<!> ANNOTATION, <!WRONG_MODIFIER_TARGET!>annotation<!> ANNOTATION,
<!WRONG_MODIFIER_TARGET!>enum<!> ENUM, <!WRONG_MODIFIER_TARGET!>enum<!> ENUM,
<!WRONG_MODIFIER_TARGET!>out<!> OUT, <!WRONG_MODIFIER_TARGET!>out<!> OUT,
<!WRONG_MODIFIER_TARGET!>in<!> IN, <!WRONG_MODIFIER_TARGET!>in<!> IN,
@@ -12,6 +12,6 @@ val a8 = 1.div(a2)
val a9 = 2 * (<!DIVISION_BY_ZERO!>1.div(0)<!>) val a9 = 2 * (<!DIVISION_BY_ZERO!>1.div(0)<!>)
val b1: Byte = <!DIVISION_BY_ZERO, TYPE_MISMATCH!>1 / 0<!> val b1: Byte = <!DIVISION_BY_ZERO, TYPE_MISMATCH!>1 / 0<!>
Ann(<!DIVISION_BY_ZERO, ANNOTATION_PARAMETER_MUST_BE_CONST!>1 / 0<!>) val b2 = 1 @Ann(<!DIVISION_BY_ZERO, ANNOTATION_PARAMETER_MUST_BE_CONST!>1 / 0<!>) val b2 = 1
annotation class Ann(val i : Int) annotation class Ann(val i : Int)
+1 -1
View File
@@ -1,4 +1,4 @@
fun main(args: Array<String>) { fun main(args: Array<String>) {
<!NOT_YET_SUPPORTED_IN_INLINE!>@inline fun a(){ <!NOT_YET_SUPPORTED_IN_INLINE!>inline fun a(){
}<!> }<!>
} }
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE // !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
import kotlin.InlineOption.* import kotlin.InlineOption.*
inline fun <R> inlineFunOnlyLocal(inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) { inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
val s = object { val s = object {
val z = p() val z = p()
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE // !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
import kotlin.InlineOption.* import kotlin.InlineOption.*
inline fun <R> inlineFunOnlyLocal(inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) { inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
val s = object { val s = object {
val z = p(); val z = p();
@@ -1,6 +1,6 @@
import kotlin.InlineOption.* import kotlin.InlineOption.*
inline fun <R> onlyLocal(inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) { inline fun <R> onlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
inlineAll(p) inlineAll(p)
} }
@@ -1,6 +1,6 @@
import kotlin.InlineOption.* import kotlin.InlineOption.*
inline fun <R> inlineFunWithAnnotation(inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) { inline fun <R> inlineFunWithAnnotation(@inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) {
inlineFun { inlineFun {
p() p()
} }
@@ -5,6 +5,6 @@ inline fun testSameCaptured(lambdaWithResultCaptured: () -> Unit) : String {
return "OK" return "OK"
} }
inline fun <R> doWork(inlineOptions(ONLY_LOCAL_RETURN) job: ()-> R) : R { inline fun <R> doWork(@inlineOptions(ONLY_LOCAL_RETURN) job: ()-> R) : R {
return job() return job()
} }
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE // !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
import kotlin.InlineOption.* import kotlin.InlineOption.*
inline fun <R> inlineFunOnlyLocal(inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) { inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
<!NOT_YET_SUPPORTED_IN_INLINE!>fun a() { <!NOT_YET_SUPPORTED_IN_INLINE!>fun a() {
val z = p() val z = p()
}<!> }<!>
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE // !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
import kotlin.InlineOption.* import kotlin.InlineOption.*
inline fun <R> inlineFunOnlyLocal(inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) { inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
{ {
p() p()
}() }()
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE // !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
import kotlin.InlineOption.* import kotlin.InlineOption.*
inline fun <R> inlineFunOnlyLocal(inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) { inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
<!NOT_YET_SUPPORTED_IN_INLINE!>class A { <!NOT_YET_SUPPORTED_IN_INLINE!>class A {
val z = p() val z = p()
@@ -39,6 +39,6 @@ fun <R> fun4ValueArgument(p: () -> R) {
} }
inline fun <R> inlineFun(inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) { inline fun <R> inlineFun(@inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) {
p() p()
} }
@@ -2,7 +2,7 @@
import kotlin.InlineOption.* import kotlin.InlineOption.*
class Z { class Z {
inline fun <R> inlineFun(inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) { inline fun <R> inlineFun(@inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) {
p() p()
} }
} }
@@ -1,6 +1,6 @@
import kotlin.InlineOption.* import kotlin.InlineOption.*
inline fun <R> toOnlyLocal(inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) { inline fun <R> toOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) {
p() p()
} }
@@ -6,7 +6,7 @@ public fun test() {
} }
} }
<!NOT_YET_SUPPORTED_IN_INLINE!>@inline fun localFun2() { <!NOT_YET_SUPPORTED_IN_INLINE!>inline fun localFun2() {
Z().localFun() Z().localFun()
}<!> }<!>
@@ -4,7 +4,7 @@ public fun test() {
} }
<!NOT_YET_SUPPORTED_IN_INLINE!>@inline fun localFun2() { <!NOT_YET_SUPPORTED_IN_INLINE!>inline fun localFun2() {
localFun() localFun()
}<!> }<!>
@@ -27,7 +27,7 @@ class FinalClass() {
annotation class annotated(val text: String = "not given") annotation class annotated(val text: String = "not given")
//Check legal modifiers in constructor //Check legal modifiers in constructor
class LegalModifier(val a: Int, annotated private var b: String, annotated vararg <!UNUSED_PARAMETER!>v<!>: Int) class LegalModifier(val a: Int, @annotated private var b: String, @annotated vararg <!UNUSED_PARAMETER!>v<!>: Int)
//Check illegal modifier in constructor parameters //Check illegal modifier in constructor parameters
class IllegalModifiers1( class IllegalModifiers1(
@@ -43,10 +43,10 @@ class IllegalModifiers2(<!WRONG_MODIFIER_TARGET!>private<!> <!WRONG_MODIFIER_TAR
//Check annotations with illegal modifiers in constructor //Check annotations with illegal modifiers in constructor
class IllegalModifiers3(annotated <!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> <!UNUSED_PARAMETER!>b<!>: String) class IllegalModifiers3(@annotated <!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> <!UNUSED_PARAMETER!>b<!>: String)
//Check annotations and vararg with illegal modifiers in constructor //Check annotations and vararg with illegal modifiers in constructor
class IllegalModifiers4(val a: Int, annotated("a text") <!WRONG_MODIFIER_TARGET!>protected<!> vararg <!UNUSED_PARAMETER!>v<!>: Int) class IllegalModifiers4(val a: Int, @annotated("a text") <!WRONG_MODIFIER_TARGET!>protected<!> vararg <!UNUSED_PARAMETER!>v<!>: Int)
//Check illegal modifiers for functions and catch block //Check illegal modifiers for functions and catch block
abstract class IllegalModifiers5() { abstract class IllegalModifiers5() {
@@ -58,7 +58,7 @@ abstract class IllegalModifiers5() {
abstract fun bar(<!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> a: Int, vararg v: String) abstract fun bar(<!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> a: Int, vararg v: String)
//Check annotations with illegal modifiers //Check annotations with illegal modifiers
abstract fun baz(annotated("a text") <!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> a: Int) abstract fun baz(@annotated("a text") <!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> a: Int)
private fun qux() { private fun qux() {
@@ -69,7 +69,7 @@ abstract class IllegalModifiers5() {
try {} catch (<!WRONG_MODIFIER_TARGET!>in<!> <!INCOMPATIBLE_MODIFIERS!>out<!> <!WRONG_MODIFIER_TARGET!>reified<!> <!WRONG_MODIFIER_TARGET!>enum<!> <!WRONG_MODIFIER_TARGET!>abstract<!> <!WRONG_MODIFIER_TARGET!>public<!> e: Exception) {} try {} catch (<!WRONG_MODIFIER_TARGET!>in<!> <!INCOMPATIBLE_MODIFIERS!>out<!> <!WRONG_MODIFIER_TARGET!>reified<!> <!WRONG_MODIFIER_TARGET!>enum<!> <!WRONG_MODIFIER_TARGET!>abstract<!> <!WRONG_MODIFIER_TARGET!>public<!> e: Exception) {}
//Check annotations with illegal modifiers //Check annotations with illegal modifiers
try {} catch (annotated("a text") <!WRONG_MODIFIER_TARGET!>abstract<!> <!WRONG_MODIFIER_TARGET!>public<!> e: Exception) {} try {} catch (@annotated("a text") <!WRONG_MODIFIER_TARGET!>abstract<!> <!WRONG_MODIFIER_TARGET!>public<!> e: Exception) {}
} }
} }
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
annotation class Ann(val x: Int = 1) annotation class Ann(val x: Int = 1)
class A <!MISSING_CONSTRUCTOR_KEYWORD!>private<!> (val x: Int) { class A <!MISSING_CONSTRUCTOR_KEYWORD!>private<!> (val x: Int) {
inner class B <!MISSING_CONSTRUCTOR_KEYWORD!>Ann(2)<!> (val y: Int) inner class B <!MISSING_CONSTRUCTOR_KEYWORD!>@Ann(2)<!> (val y: Int)
fun foo() { fun foo() {
class C <!MISSING_CONSTRUCTOR_KEYWORD!>private @Ann(3)<!> (args: Int) class C <!MISSING_CONSTRUCTOR_KEYWORD!>private @Ann(3)<!> (args: Int)
@@ -8,5 +8,5 @@ public @interface A {
// FILE: 1.kt // FILE: 1.kt
A(x = 1, y = "2") @A(x = 1, y = "2")
fun test() {} fun test() {}
+1 -1
View File
@@ -1,5 +1,5 @@
// !DIAGNOSTICS: -FUNCTION_DECLARATION_WITH_NO_NAME // !DIAGNOSTICS: -FUNCTION_DECLARATION_WITH_NO_NAME
class ClassB() { class ClassB() {
private inner class ClassC: <!SYNTAX!>super<!><!SYNTAX!>.<!><!UNRESOLVED_REFERENCE!>ClassA<!>()<!SYNTAX!><!> { private inner class ClassC: <!SYNTAX!>super<!><!SYNTAX!>.<!><!UNRESOLVED_REFERENCE!>@ClassA<!>()<!SYNTAX!><!> {
} }
} }
+1 -1
View File
@@ -1,2 +1,2 @@
// !DIAGNOSTICS: -NO_VALUE_FOR_PARAMETER // !DIAGNOSTICS: -NO_VALUE_FOR_PARAMETER
class Tree<T>(<!NOT_A_CLASS!>T<!> element<!SYNTAX!><!>, <!NOT_AN_ANNOTATION_CLASS!>Tree<T><!> left<!SYNTAX!><!>, <!NOT_AN_ANNOTATION_CLASS!>Tree<T><!> right<!SYNTAX!><!>) {} class Tree<T>(<!NOT_A_CLASS, DEPRECATED_UNESCAPED_ANNOTATION!>T<!> element<!SYNTAX!><!>, <!NOT_AN_ANNOTATION_CLASS, DEPRECATED_UNESCAPED_ANNOTATION!>Tree<T><!> left<!SYNTAX!><!>, <!NOT_AN_ANNOTATION_CLASS, DEPRECATED_UNESCAPED_ANNOTATION!>Tree<T><!> right<!SYNTAX!><!>) {}
@@ -3,7 +3,10 @@ annotation class Ann1
annotation class Ann2(val x: Int) annotation class Ann2(val x: Int)
class A { class A {
Ann1 constructor() @Ann1
<!NO_VALUE_FOR_PARAMETER!>Ann2<!> constructor(x1: Int) constructor()
Ann2(2) constructor(x1: Int, x2: Int) @<!NO_VALUE_FOR_PARAMETER!>Ann2<!>
constructor(x1: Int)
@Ann2(2)
constructor(x1: Int, x2: Int)
} }
@@ -3,46 +3,46 @@
fun foo() { fun foo() {
@native @native
class A { class A {
nativeGetter @nativeGetter
fun get(a: String): Any? = null fun get(a: String): Any? = null
nativeGetter @nativeGetter
fun take(a: Number): String? = null fun take(a: Number): String? = null
nativeGetter @nativeGetter
fun foo(a: Double): String? = null fun foo(a: Double): String? = null
} }
@native @native
class B { class B {
<!WRONG_ANNOTATION_TARGET!>nativeGetter<!> <!WRONG_ANNOTATION_TARGET!>@nativeGetter<!>
val foo = 0 val foo = 0
} }
@native @native
class C { class C {
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter <!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>@nativeGetter
fun Int.get(a: String): Int?<!> = 1 fun Int.get(a: String): Int?<!> = 1
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter <!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>@nativeGetter
fun Int.get2(a: Number): String?<!> = "OK" fun Int.get2(a: Number): String?<!> = "OK"
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter <!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>@nativeGetter
fun Int.get3(a: Int): String?<!> = "OK" fun Int.get3(a: Int): String?<!> = "OK"
<!NATIVE_INDEXER_WRONG_PARAMETER_COUNT!>nativeGetter <!NATIVE_INDEXER_WRONG_PARAMETER_COUNT!>@nativeGetter
fun get(): Any?<!> = null fun get(): Any?<!> = null
nativeGetter @nativeGetter
fun get(<!NATIVE_INDEXER_KEY_SHOULD_BE_STRING_OR_NUMBER!>a: A<!>): Any? = null fun get(<!NATIVE_INDEXER_KEY_SHOULD_BE_STRING_OR_NUMBER!>a: A<!>): Any? = null
nativeGetter @nativeGetter
fun <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>foo<!>(a: Int) {} fun <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>foo<!>(a: Int) {}
nativeGetter @nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!> = 0 fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!> = 0
nativeGetter @nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int? = 0 fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int? = 0
} }
} }

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