Prohibit platformName on secondary constructor

#KT-6999 Fixed
This commit is contained in:
Denis Zharkov
2015-03-17 13:37:14 +03:00
parent 8aa4e9bd94
commit 66023e6f31
3 changed files with 7 additions and 4 deletions
@@ -295,7 +295,8 @@ public class ModifiersChecker {
JetAnnotationEntry annotationEntry = trace.get(BindingContext.ANNOTATION_DESCRIPTOR_TO_PSI_ELEMENT, annotation);
if (annotationEntry == null) return;
if (!DescriptorUtils.isTopLevelDeclaration(descriptor) || !(descriptor instanceof FunctionDescriptor)) {
if (!DescriptorUtils.isTopLevelDeclaration(descriptor) || !(descriptor instanceof FunctionDescriptor) ||
descriptor instanceof ConstructorDescriptor) {
trace.report(INAPPLICABLE_ANNOTATION.on(annotationEntry));
}
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
import kotlin.platform.*
@@ -32,7 +32,8 @@ var vardef: Int = 1
set
[<!INAPPLICABLE_ANNOTATION!>platformName("C")<!>]
class C {
class C [platformName("primary")]() { // TODO: modifiers check on primary constructor KT-7057
<!INAPPLICABLE_ANNOTATION!>platformName("ctr")<!> constructor(x: Int): this() {}
[<!INAPPLICABLE_ANNOTATION!>platformName("a")<!>]
fun foo() {}
@@ -10,7 +10,8 @@ internal fun foo1(): kotlin.Unit
kotlin.platform.platformName(name = "b": kotlin.String) internal fun kotlin.Any.foo(): kotlin.Unit
kotlin.platform.platformName(name = "C": kotlin.String) internal final class C {
public constructor C()
kotlin.platform.platformName(name = "primary": kotlin.String) public constructor C()
kotlin.platform.platformName(name = "ctr": kotlin.String) public constructor C(/*0*/ x: kotlin.Int)
kotlin.platform.platformName(name = "c": kotlin.String) internal final val px: kotlin.Int = 1
internal final val valx: kotlin.Int
internal final var varx: kotlin.Int