Multi declaration is now a separate target in KotlinTarget

This commit is contained in:
Mikhail Glukhikh
2015-09-23 16:41:40 +03:00
parent 789f351f6f
commit 997e9a7dd7
6 changed files with 43 additions and 2 deletions
@@ -171,6 +171,7 @@ public class AnnotationChecker(private val additionalCheckers: Iterable<Addition
is JetTypeProjection ->
if (annotated.projectionKind == JetProjectionKind.STAR) TargetLists.T_STAR_PROJECTION else TargetLists.T_TYPE_PROJECTION
is JetClassInitializer -> TargetLists.T_INITIALIZER
is JetMultiDeclaration -> TargetLists.T_MULTI_DECLARATION
else -> TargetLists.EMPTY
}
}
@@ -182,6 +183,8 @@ public class AnnotationChecker(private val additionalCheckers: Iterable<Addition
onlyWithUseSiteTarget(PROPERTY, FIELD, PROPERTY_GETTER, PROPERTY_SETTER, VALUE_PARAMETER)
}
val T_MULTI_DECLARATION = targetList(MULTI_DECLARATION)
val T_MEMBER_PROPERTY = targetList(MEMBER_PROPERTY, PROPERTY) {
extraTargets(FIELD)
onlyWithUseSiteTarget(VALUE_PARAMETER, PROPERTY_GETTER, PROPERTY_SETTER)
@@ -0,0 +1,9 @@
annotation class Ann
data class Pair(val x: Int, val y: Int)
fun foo(): Int {
<!WRONG_ANNOTATION_TARGET!>@Ann<!> val (a, b) = Pair(12, 34)
<!UNRESOLVED_REFERENCE!>@Err<!> val (c, d) = Pair(56, 78)
return a + b + c + d
}
@@ -0,0 +1,22 @@
package
public fun foo(): kotlin.Int
@kotlin.annotation.annotation() public final class Ann : kotlin.Annotation {
public constructor 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 Pair {
public constructor Pair(/*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 = ...): Pair
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
}
@@ -10,5 +10,5 @@ fun foo() {
for (<!WRONG_ANNOTATION_TARGET!>@Ann(3)<!> (x, @Ann(4) y) in bar()) {}
for (<!UNRESOLVED_REFERENCE, WRONG_ANNOTATION_TARGET!>@Err<!> (x,y) in bar()) {}
for (<!UNRESOLVED_REFERENCE!>@Err<!> (x,y) in bar()) {}
}
@@ -813,6 +813,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("MultiDeclaration.kt")
public void testMultiDeclaration() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/MultiDeclaration.kt");
doTest(fileName);
}
@TestMetadata("MutuallyRecursivelyAnnotatedGlobalFunction.kt")
public void testMutuallyRecursivelyAnnotatedGlobalFunction() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/MutuallyRecursivelyAnnotatedGlobalFunction.kt");
@@ -59,7 +59,8 @@ public enum class KotlinTarget(val description: String, val isDefault: Boolean =
MEMBER_PROPERTY("member property", false), // includes PROPERTY_PARAMETER
TOP_LEVEL_PROPERTY("top level property", false),
INITIALIZER("initializer", false)
INITIALIZER("initializer", false),
MULTI_DECLARATION("multi declaration", false)
;
companion object {