diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 0e2c7e78112..d16a49935a1 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -143,7 +143,7 @@ public interface Errors { DiagnosticFactory0 DEPRECATED_UNESCAPED_ANNOTATION = DiagnosticFactory0.create(WARNING); DiagnosticFactory0 DEPRECATED_ESCAPED_MODIFIER = DiagnosticFactory0.create(WARNING); DiagnosticFactory1 DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER = DiagnosticFactory1.create(WARNING); - + DiagnosticFactory0 DEPRECATED_ANNOTATION_USE = DiagnosticFactory0.create(WARNING); // Classes and traits diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index 6470453f508..81062d76eec 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -134,7 +134,8 @@ public class DefaultErrorMessages { 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(DEPRECATED_ANNOTATION_THAT_BECOMES_MODIFIER, "This annotation will become a modifier soon. Use ''{0}'' modifier instead", STRING); + MAP.put(DEPRECATED_ANNOTATION_USE, "This annotation use is deprecated"); 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"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationChecker.kt index ddfda380caa..4a2f879ded7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationChecker.kt @@ -71,7 +71,12 @@ public class AnnotationChecker(private val additionalCheckers: Iterable + val enumValue = (arg as? EnumValue) ?: return false + return enumValue.value.name.asString() == InlineOption.LOCAL_CONTINUE_AND_BREAK.name() + } + } + return false + } + private fun checkAnnotationEntry(entry: JetAnnotationEntry, actualTargets: TargetList, trace: BindingTrace) { val applicableTargets = applicableTargetSet(entry, trace) val useSiteTarget = entry.useSiteTarget?.getAnnotationUseSiteTarget() diff --git a/compiler/testData/diagnostics/tests/annotations/migration/escapedModifiers.kt b/compiler/testData/diagnostics/tests/annotations/migration/escapedModifiers.kt index d660113525d..066253c4b27 100644 --- a/compiler/testData/diagnostics/tests/annotations/migration/escapedModifiers.kt +++ b/compiler/testData/diagnostics/tests/annotations/migration/escapedModifiers.kt @@ -29,3 +29,4 @@ fun bar2(): Array = null!! @tailRecursive fun tailFun(): Int = tailFun() inline fun inlineFun(@inlineOptions(InlineOption.ONLY_LOCAL_RETURN) block: () -> Int) {} +inline fun inlineFun2(@inlineOptions(InlineOption.LOCAL_CONTINUE_AND_BREAK) block: () -> Int) {} diff --git a/compiler/testData/diagnostics/tests/annotations/migration/escapedModifiers.txt b/compiler/testData/diagnostics/tests/annotations/migration/escapedModifiers.txt index 6bcd3d2e985..ca5bf0efd2e 100644 --- a/compiler/testData/diagnostics/tests/annotations/migration/escapedModifiers.txt +++ b/compiler/testData/diagnostics/tests/annotations/migration/escapedModifiers.txt @@ -4,6 +4,7 @@ kotlin.inline() private fun bar(/*0*/ block: () -> kotlin.Int): kotlin.Int public fun bar2(): kotlin.Array kotlin.inline() public fun baz(): kotlin.Unit kotlin.inline() public fun inlineFun(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) block: () -> kotlin.Int): kotlin.Unit +kotlin.inline() public fun inlineFun2(/*0*/ kotlin.inlineOptions(value = {InlineOption.LOCAL_CONTINUE_AND_BREAK}) block: () -> kotlin.Int): kotlin.Unit kotlin.external() public fun nativeFun(): kotlin.Int kotlin.tailRecursive() public fun tailFun(): kotlin.Int