From 7b09e85717f983e95953f89f22fdd587cecf5cde Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Fri, 19 Dec 2014 17:37:22 +0300 Subject: [PATCH] Added check for incompatible variance modifiers and repeated modifiers --- .../kotlin/JavaDeclarationCheckerProvider.kt | 34 ++---- .../jet/lang/diagnostics/Errors.java | 1 + .../rendering/DefaultErrorMessages.java | 1 + .../jet/lang/resolve/DeclarationsChecker.java | 13 +++ .../jet/lang/resolve/ModifiersChecker.java | 101 ++++++++++++------ .../jet/lang/resolve/TypeResolver.kt | 2 + .../lang/resolve/calls/CandidateResolver.java | 1 + ...propertyInPackageHasNoInheritVisibility.kt | 5 +- ...ropertyInPackageHasNoInheritVisibility.txt | 1 + .../tests/{ => modifiers}/IllegalModifiers.kt | 0 .../{ => modifiers}/IllegalModifiers.txt | 0 .../incompatibleVarianceModifiers.kt | 23 ++++ .../incompatibleVarianceModifiers.txt | 32 ++++++ .../tests/modifiers/repeatedModifiers.kt | 41 +++++++ .../tests/modifiers/repeatedModifiers.txt | 66 ++++++++++++ .../parameter/InheritProjectionKind.java | 1 + .../fromLoadJava/ArrayTypeVariance.kt | 1 + .../kotlinSignature/CustomProjectionKind.kt | 1 + .../MethodWithMappedClasses.kt | 1 + .../MethodWithTypeParameters.kt | 1 + .../error/WrongProjectionKind.kt | 1 + .../parameter/ChangeProjectionKind1.kt | 1 + .../propagation/parameter/InheritNotVararg.kt | 1 + .../parameter/InheritNotVarargInteger.kt | 1 + .../parameter/InheritNotVarargNotNull.kt | 1 + .../parameter/InheritProjectionKind.kt | 1 + .../parameter/InheritVarargNotNull.kt | 1 + .../return/InheritProjectionKind.kt | 1 + .../propagation/return/SameProjectionKind.kt | 1 + ...oSuperclassesConflictingProjectionKinds.kt | 1 + .../prop/defaultAccessors/ExtVarLong.kt | 6 -- .../prop/defaultAccessors/ExtVarLong.txt | 6 -- .../compiledKotlin/type/ArrayOfInNumber.kt | 1 + .../compiledKotlin/type/ArrayOfOutNumber.kt | 1 + .../compiledKotlin/type/ArrayOfOutT.kt | 1 + .../checkers/JetDiagnosticsTestGenerated.java | 35 ++++-- .../plugin/quickfix/QuickFixRegistrar.java | 1 + js/js.libraries/src/jquery/common.kt | 2 +- 38 files changed, 310 insertions(+), 79 deletions(-) rename compiler/testData/diagnostics/tests/{ => modifiers}/IllegalModifiers.kt (100%) rename compiler/testData/diagnostics/tests/{ => modifiers}/IllegalModifiers.txt (100%) create mode 100644 compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.kt create mode 100644 compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.txt create mode 100644 compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.kt create mode 100644 compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.txt diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/JavaDeclarationCheckerProvider.kt b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/JavaDeclarationCheckerProvider.kt index f8354af6d28..e583ab8393c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/JavaDeclarationCheckerProvider.kt +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/JavaDeclarationCheckerProvider.kt @@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.descriptors.ClassKind import org.jetbrains.jet.lang.resolve.java.diagnostics.ErrorsJvm import org.jetbrains.jet.lexer.JetTokens import org.jetbrains.jet.lang.psi.JetProperty -import org.jetbrains.jet.lang.descriptors.PropertyDescriptor import org.jetbrains.jet.lang.diagnostics.DiagnosticSink import org.jetbrains.jet.lang.descriptors.Visibilities import org.jetbrains.jet.lang.resolve.annotations.hasInlineAnnotation @@ -40,6 +39,8 @@ import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils import org.jetbrains.jet.lang.psi.JetTypeParameter import org.jetbrains.jet.lang.resolve.annotations.hasIntrinsicAnnotation import org.jetbrains.jet.lang.resolve.kotlin.nativeDeclarations.NativeFunChecker +import org.jetbrains.jet.lang.psi.JetPropertyAccessor +import org.jetbrains.jet.lang.descriptors.MemberDescriptor public object JavaDeclarationCheckerProvider : AdditionalCheckerProvider { @@ -64,49 +65,30 @@ public class PlatformStaticAnnotationChecker : AnnotationChecker { override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) { if (descriptor.hasPlatformStaticAnnotation()) { - if (declaration is JetNamedFunction || declaration is JetProperty) { - checkDeclaration(declaration, descriptor, diagnosticHolder, declaration) + if (declaration is JetNamedFunction || declaration is JetProperty || declaration is JetPropertyAccessor) { + checkDeclaration(declaration, descriptor, diagnosticHolder) } else { //TODO: there should be general mechanism diagnosticHolder.report(ErrorsJvm.PLATFORM_STATIC_ILLEGAL_USAGE.on(declaration, descriptor)); } } - - if (declaration is JetProperty) { - val getter = declaration.getGetter() - if (getter != null) { - val propertyGetterDescriptor = (descriptor as PropertyDescriptor).getGetter()!! - if (propertyGetterDescriptor.hasPlatformStaticAnnotation()) { - checkDeclaration(declaration, descriptor, diagnosticHolder, getter) - } - } - - val setter = declaration.getSetter() - if (setter != null) { - val propertySetterDescriptor = (descriptor as PropertyDescriptor).getSetter()!! - if (propertySetterDescriptor.hasPlatformStaticAnnotation()) { - checkDeclaration(declaration, descriptor, diagnosticHolder, setter) - } - } - } } private fun checkDeclaration( declaration: JetDeclaration, descriptor: DeclarationDescriptor, - diagnosticHolder: DiagnosticSink, - reportDiagnosticOn: JetDeclaration + diagnosticHolder: DiagnosticSink ) { val insideObject = containerKindIs(descriptor, ClassKind.OBJECT) val insideClassObject = containerKindIs(descriptor, ClassKind.CLASS_OBJECT) if (!insideObject && !(insideClassObject && containerKindIs(descriptor.getContainingDeclaration()!!, ClassKind.CLASS))) { - diagnosticHolder.report(ErrorsJvm.PLATFORM_STATIC_NOT_IN_OBJECT.on(reportDiagnosticOn)); + diagnosticHolder.report(ErrorsJvm.PLATFORM_STATIC_NOT_IN_OBJECT.on(declaration)); } - if (insideObject && declaration.hasModifier(JetTokens.OVERRIDE_KEYWORD)) { - diagnosticHolder.report(ErrorsJvm.OVERRIDE_CANNOT_BE_STATIC.on(reportDiagnosticOn)); + if (insideObject && descriptor is MemberDescriptor && descriptor.getModality().isOverridable()) { + diagnosticHolder.report(ErrorsJvm.OVERRIDE_CANNOT_BE_STATIC.on(declaration)); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index 868afb9407b..09b1bf4ce79 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -111,6 +111,7 @@ public interface Errors { DiagnosticFactory1> INCOMPATIBLE_MODIFIERS = DiagnosticFactory1.create(ERROR); DiagnosticFactory1 ILLEGAL_MODIFIER = DiagnosticFactory1.create(ERROR); + DiagnosticFactory1 REPEATED_MODIFIER = DiagnosticFactory1.create(ERROR); DiagnosticFactory2 REDUNDANT_MODIFIER = DiagnosticFactory2.create(WARNING); DiagnosticFactory0 INAPPLICABLE_ANNOTATION = DiagnosticFactory0.create(ERROR); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java index 67178a4a873..ad55045a5ba 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java @@ -146,6 +146,7 @@ public class DefaultErrorMessages { } }); MAP.put(ILLEGAL_MODIFIER, "Illegal modifier ''{0}''", TO_STRING); + MAP.put(REPEATED_MODIFIER, "Repeated ''{0}''", TO_STRING); MAP.put(INAPPLICABLE_ANNOTATION, "This annotation is not applicable to class members"); MAP.put(REDUNDANT_MODIFIER, "Modifier ''{0}'' is redundant because ''{1}'' is present", TO_STRING, TO_STRING); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java index 6fbfadb28ac..0dc5d18d2db 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java @@ -267,6 +267,7 @@ public class DeclarationsChecker { private void checkClass(BodiesResolveContext c, JetClass aClass, ClassDescriptorWithResolutionScopes classDescriptor) { checkOpenMembers(classDescriptor); + checkConstructorParameters(aClass); if (c.getTopDownAnalysisParameters().isLazy()) { checkTypeParameters(aClass); } @@ -289,6 +290,15 @@ public class DeclarationsChecker { } } + private void checkConstructorParameters(JetClass aClass) { + for (JetParameter parameter : aClass.getPrimaryConstructorParameters()) { + PropertyDescriptor propertyDescriptor = trace.get(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, parameter); + if (propertyDescriptor != null) { + modifiersChecker.checkModifiersForDeclaration(parameter, propertyDescriptor); + } + } + } + private void checkTypeParameters(JetTypeParameterListOwner typeParameterListOwner) { // TODO: Support annotation for type parameters for (JetTypeParameter jetTypeParameter : typeParameterListOwner.getTypeParameters()) { @@ -514,6 +524,9 @@ public class DeclarationsChecker { private void checkAccessors(@NotNull JetProperty property, @NotNull PropertyDescriptor propertyDescriptor) { for (JetPropertyAccessor accessor : property.getAccessors()) { + PropertyAccessorDescriptor propertyAccessorDescriptor = accessor.isGetter() ? propertyDescriptor.getGetter() : propertyDescriptor.getSetter(); + assert propertyAccessorDescriptor != null : "No property accessor descriptor for " + property.getText(); + modifiersChecker.checkModifiersForDeclaration(accessor, propertyAccessorDescriptor); modifiersChecker.checkIllegalModalityModifiers(accessor); } JetPropertyAccessor getter = property.getGetter(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java index 004e40e5ce6..1bb8add7a4e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java @@ -33,11 +33,9 @@ import org.jetbrains.jet.lang.resolve.constants.StringValue; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lexer.JetModifierKeywordToken; +import org.jetbrains.jet.lexer.JetTokens; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Map; +import java.util.*; import static org.jetbrains.jet.lang.diagnostics.Errors.*; import static org.jetbrains.jet.lexer.JetTokens.*; @@ -65,6 +63,62 @@ public class ModifiersChecker { } } + public static void checkIncompatibleModifiers( + @Nullable JetModifierList modifierList, + @NotNull BindingTrace trace, + @NotNull Collection availableModifiers, + @NotNull Collection... availableCombinations + ) { + if (modifierList == null) return; + Collection presentModifiers = Sets.newLinkedHashSet(); + for (JetModifierKeywordToken modifier : availableModifiers) { + if (modifierList.hasModifier(modifier)) { + presentModifiers.add(modifier); + } + } + checkRepeatedModifiers(modifierList, trace, availableModifiers); + + if (presentModifiers.size() == 1) { + return; + } + for (Collection combination : availableCombinations) { + if (presentModifiers.containsAll(combination) && combination.containsAll(presentModifiers)) { + return; + } + } + for (JetModifierKeywordToken token : presentModifiers) { + trace.report(Errors.INCOMPATIBLE_MODIFIERS.on(modifierList.getModifierNode(token).getPsi(), presentModifiers)); + } + } + + private static void checkRepeatedModifiers( + @NotNull JetModifierList modifierList, + @NotNull BindingTrace trace, + @NotNull Collection availableModifiers + ) { + for (JetModifierKeywordToken token : availableModifiers) { + if (!modifierList.hasModifier(token)) continue; + + List nodesOfRepeatedTokens = Lists.newArrayList(); + ASTNode node = modifierList.getNode().getFirstChildNode(); + while (node != null) { + if (node.getElementType() == token) { + nodesOfRepeatedTokens.add(node); + } + node = node.getTreeNext(); + } + if (nodesOfRepeatedTokens.size() > 1) { + for (ASTNode repeatedToken : nodesOfRepeatedTokens) { + trace.report(REPEATED_MODIFIER.on(repeatedToken.getPsi(), token)); + } + } + } + } + + public static void checkIncompatibleVarianceModifiers(@Nullable JetModifierList modifierList, @NotNull BindingTrace trace) { + checkIncompatibleModifiers(modifierList, trace, Arrays.asList(JetTokens.IN_KEYWORD, JetTokens.OUT_KEYWORD)); + } + @NotNull private final BindingTrace trace; @NotNull @@ -87,6 +141,7 @@ public class ModifiersChecker { checkInnerModifier(modifierListOwner, descriptor); checkModalityModifiers(modifierListOwner); checkVisibilityModifiers(modifierListOwner, descriptor); + checkVarianceModifiersOfTypeParameters(modifierListOwner); } checkPlatformNameApplicability(descriptor); runAnnotationCheckers(modifierListOwner, descriptor); @@ -172,16 +227,6 @@ public class ModifiersChecker { } private void checkPlatformNameApplicability(@NotNull DeclarationDescriptor descriptor) { - if (descriptor instanceof PropertyDescriptor) { - PropertyDescriptor propertyDescriptor = (PropertyDescriptor) descriptor; - if (propertyDescriptor.getGetter() != null) { - checkPlatformNameApplicability(propertyDescriptor.getGetter()); - } - if (propertyDescriptor.getSetter() != null) { - checkPlatformNameApplicability(propertyDescriptor.getSetter()); - } - } - AnnotationDescriptor annotation = descriptor.getAnnotations().findAnnotation(new FqName("kotlin.platform.platformName")); if (annotation == null) return; @@ -205,24 +250,7 @@ public class ModifiersChecker { } private void checkCompatibility(@Nullable JetModifierList modifierList, Collection availableModifiers, Collection... availableCombinations) { - if (modifierList == null) return; - Collection presentModifiers = Sets.newLinkedHashSet(); - for (JetModifierKeywordToken modifier : availableModifiers) { - if (modifierList.hasModifier(modifier)) { - presentModifiers.add(modifier); - } - } - if (presentModifiers.size() == 1) { - return; - } - for (Collection combination : availableCombinations) { - if (presentModifiers.containsAll(combination) && combination.containsAll(presentModifiers)) { - return; - } - } - for (JetModifierKeywordToken token : presentModifiers) { - trace.report(Errors.INCOMPATIBLE_MODIFIERS.on(modifierList.getModifierNode(token).getPsi(), presentModifiers)); - } + checkIncompatibleModifiers(modifierList, trace, availableModifiers, availableCombinations); } private void checkRedundantModifier(@NotNull JetModifierList modifierList, Pair... redundantBundles) { @@ -317,4 +345,13 @@ public class ModifiersChecker { checker.check(declaration, descriptor, trace); } } + + public void checkVarianceModifiersOfTypeParameters(@NotNull JetModifierListOwner modifierListOwner) { + if (!(modifierListOwner instanceof JetTypeParameterListOwner)) return; + List typeParameters = ((JetTypeParameterListOwner) modifierListOwner).getTypeParameters(); + for (JetTypeParameter typeParameter : typeParameters) { + JetModifierList modifierList = typeParameter.getModifierList(); + checkIncompatibleVarianceModifiers(modifierList, trace); + } + } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.kt index 2d4bcd507d4..7d62388500d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.kt @@ -35,6 +35,7 @@ import org.jetbrains.jet.context.LazinessToken import org.jetbrains.jet.lang.resolve.lazy.LazyEntity import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil import org.jetbrains.jet.utils.addToStdlib.firstIsInstanceOrNull +import org.jetbrains.jet.lexer.JetTokens public class TypeResolver( private val annotationResolver: AnnotationResolver, @@ -256,6 +257,7 @@ public class TypeResolver( val (i, argumentElement) = it val projectionKind = argumentElement.getProjectionKind() + ModifiersChecker.checkIncompatibleVarianceModifiers(argumentElement.getModifierList(), c.trace) if (projectionKind == JetProjectionKind.STAR) { val parameters = constructor.getParameters() if (parameters.size() > i) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java index 568e4a8c94d..6caabb63ccc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java @@ -125,6 +125,7 @@ public class CandidateResolver { for (JetTypeProjection projection : jetTypeArguments) { if (projection.getProjectionKind() != JetProjectionKind.NONE) { context.trace.report(PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT.on(projection)); + ModifiersChecker.checkIncompatibleVarianceModifiers(projection.getModifierList(), context.trace); } JetType type = argumentTypeResolver.resolveTypeRefWithDefault( projection.getTypeReference(), context.scope, context.trace, diff --git a/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.kt b/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.kt index 442c90edb71..0dd832f8738 100644 --- a/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.kt +++ b/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.kt @@ -4,4 +4,7 @@ package d fun test() { f() -} \ No newline at end of file +} + +var g: Int = 1 + protected set(i: Int) {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.txt b/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.txt index 5cff3cf4566..5dc57bdc4c7 100644 --- a/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.txt +++ b/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.txt @@ -2,5 +2,6 @@ package package d { internal val f: () -> kotlin.Int + internal var g: kotlin.Int internal fun test(): kotlin.Unit } diff --git a/compiler/testData/diagnostics/tests/IllegalModifiers.kt b/compiler/testData/diagnostics/tests/modifiers/IllegalModifiers.kt similarity index 100% rename from compiler/testData/diagnostics/tests/IllegalModifiers.kt rename to compiler/testData/diagnostics/tests/modifiers/IllegalModifiers.kt diff --git a/compiler/testData/diagnostics/tests/IllegalModifiers.txt b/compiler/testData/diagnostics/tests/modifiers/IllegalModifiers.txt similarity index 100% rename from compiler/testData/diagnostics/tests/IllegalModifiers.txt rename to compiler/testData/diagnostics/tests/modifiers/IllegalModifiers.txt diff --git a/compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.kt b/compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.kt new file mode 100644 index 00000000000..65a6b0a5938 --- /dev/null +++ b/compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.kt @@ -0,0 +1,23 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE + +trait Foo +trait Foo1<in out T> +trait Foo2<in in T> + +fun test1(foo: Foo<in out Int>) = foo +fun test2(): Foo<in in Int> = throw Exception() + +fun test3() { + val f: Foo<out out out out Int> + + class Bzz<in in T> +} + +class A { + fun <out out T> bar() { + } +} + +fun test4(a: A) { + a.bar<out out Int>() +} diff --git a/compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.txt b/compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.txt new file mode 100644 index 00000000000..d09fb260fa8 --- /dev/null +++ b/compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.txt @@ -0,0 +1,32 @@ +package + +internal fun test1(/*0*/ foo: Foo): Foo +internal fun test2(): Foo +internal fun test3(): kotlin.Unit +internal fun test4(/*0*/ a: A): kotlin.Unit + +internal final class A { + public constructor A() + internal final fun bar(): kotlin.Unit + 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 +} + +internal trait Foo { + 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 +} + +internal trait Foo1 { + 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 +} + +internal trait Foo2 { + 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 +} diff --git a/compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.kt b/compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.kt new file mode 100644 index 00000000000..2571fbee5cf --- /dev/null +++ b/compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.kt @@ -0,0 +1,41 @@ +abstract abstract class Foo +public public class Bar +open open final class Baz { + private private fun foo() {} +} + +class Bzz(public public val q: Int = 1) { + public public val x: Int = 2 + + public val y: Int + public public get() = 3 + + val z: Int + open final get() = 4 + + public public class B(public public val z: Int = 1) { + public public val y: Int = 2 + + public val x: Int + public public get() = 3 + } + + public public object C { + public public val y: Int = 1 + public public fun z(): Int = 1 + } +} + +public public val bar: Int = 1 + +public public fun foo(): Int = 1 + +fun test() { + public public class B(public public val z: Int = 1) { + public public val y: Int = 2 + + public val x: Int + public public get() = 3 + } +} + diff --git a/compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.txt b/compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.txt new file mode 100644 index 00000000000..eea6ab43602 --- /dev/null +++ b/compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.txt @@ -0,0 +1,66 @@ +package + +public val bar: kotlin.Int = 1 +public fun foo(): kotlin.Int +internal fun test(): kotlin.Unit + +public final class Bar { + public constructor Bar() + 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 +} + +internal open class Baz { + public constructor Baz() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + private final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +internal final class Bzz { + public constructor Bzz(/*0*/ q: kotlin.Int = ...) + public final val q: kotlin.Int + public final val x: kotlin.Int = 2 + public final val y: kotlin.Int + internal final val z: 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 + + public final class B { + public constructor B(/*0*/ z: kotlin.Int = ...) + public final val x: kotlin.Int + public final val y: kotlin.Int = 2 + public final val z: 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 + } + + public object C { + private constructor C() + public final val y: kotlin.Int = 1 + 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 final fun z(): kotlin.Int + + public class object : Bzz.C { + private constructor () + public final override /*1*/ /*fake_override*/ val y: 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 + public final override /*1*/ /*fake_override*/ fun z(): kotlin.Int + } + } +} + +internal abstract class Foo { + public constructor Foo() + 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 +} diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritProjectionKind.java b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritProjectionKind.java index b7b32cead89..c31d47c90cc 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritProjectionKind.java +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritProjectionKind.java @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test; import org.jetbrains.annotations.NotNull; diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/ArrayTypeVariance.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/ArrayTypeVariance.kt index c0b70fe9606..009cdafbe93 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/ArrayTypeVariance.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/ArrayTypeVariance.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public class ArrayTypeVariance { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/CustomProjectionKind.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/CustomProjectionKind.kt index 89fbd544e8e..d3b52d597aa 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/CustomProjectionKind.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/CustomProjectionKind.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test import java.util.* diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/MethodWithMappedClasses.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/MethodWithMappedClasses.kt index 4aec1323211..37e4fe7518a 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/MethodWithMappedClasses.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/MethodWithMappedClasses.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test import java.util.* diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/MethodWithTypeParameters.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/MethodWithTypeParameters.kt index 8aac7621a36..8aab9f955d7 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/MethodWithTypeParameters.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/MethodWithTypeParameters.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test import java.util.* diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/error/WrongProjectionKind.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/error/WrongProjectionKind.kt index 0c48a6016cd..0cd7bb4ecfa 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/error/WrongProjectionKind.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/error/WrongProjectionKind.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test import java.util.* diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/ChangeProjectionKind1.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/ChangeProjectionKind1.kt index 0d1ef5be476..ee8a934352e 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/ChangeProjectionKind1.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/ChangeProjectionKind1.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait ChangeProjectionKind1 { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVararg.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVararg.kt index 2c3c40ace47..d4f6fd41c22 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVararg.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVararg.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait InheritNotVararg { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.kt index 3d7d2cbb416..aa7c450a6c4 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait InheritNotVarargInteger { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.kt index 078e223c328..8a35ed77855 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait InheritNotVarargNotNull { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritProjectionKind.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritProjectionKind.kt index 667969b67ce..d5ecfe05d02 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritProjectionKind.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritProjectionKind.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait InheritProjectionKind { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.kt index 0fdd3bfaa59..0e364802675 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait InheritVarargNotNull { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/InheritProjectionKind.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/InheritProjectionKind.kt index 4c6278fd0ad..cc1cce6d917 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/InheritProjectionKind.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/InheritProjectionKind.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait InheritProjectionKind { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/SameProjectionKind.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/SameProjectionKind.kt index 193cd1e9bee..ab2adb2f3e3 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/SameProjectionKind.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/SameProjectionKind.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait SameProjectionKind { diff --git a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/TwoSuperclassesConflictingProjectionKinds.kt b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/TwoSuperclassesConflictingProjectionKinds.kt index 48769f2a937..b13eec046aa 100644 --- a/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/TwoSuperclassesConflictingProjectionKinds.kt +++ b/compiler/testData/loadJava/compiledKotlin/fromLoadJava/kotlinSignature/propagation/return/TwoSuperclassesConflictingProjectionKinds.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test public trait TwoSuperclassesConflictingProjectionKinds { diff --git a/compiler/testData/loadJava/compiledKotlin/prop/defaultAccessors/ExtVarLong.kt b/compiler/testData/loadJava/compiledKotlin/prop/defaultAccessors/ExtVarLong.kt index bd664877ae8..1fec3fb8334 100644 --- a/compiler/testData/loadJava/compiledKotlin/prop/defaultAccessors/ExtVarLong.kt +++ b/compiler/testData/loadJava/compiledKotlin/prop/defaultAccessors/ExtVarLong.kt @@ -3,9 +3,6 @@ package test var Long.date1: Any get() = java.util.Date() set(value) {} -var Long.date2: Any get() = java.util.Date() - protected set(value) {} - var Long.date3: Any get() = java.util.Date() private set(value) {} @@ -21,8 +18,5 @@ public var Long.date8: java.util.Date get() = java.util.Date() public var Long.date9: java.util.Date get() = java.util.Date() private set(value) {} -public var Long.date10: java.util.Date get() = java.util.Date() - protected set(value) {} - public var Long.date11: java.util.Date get() = java.util.Date() public set(value) {} diff --git a/compiler/testData/loadJava/compiledKotlin/prop/defaultAccessors/ExtVarLong.txt b/compiler/testData/loadJava/compiledKotlin/prop/defaultAccessors/ExtVarLong.txt index 5e20252b6c2..954dcaeab39 100644 --- a/compiler/testData/loadJava/compiledKotlin/prop/defaultAccessors/ExtVarLong.txt +++ b/compiler/testData/loadJava/compiledKotlin/prop/defaultAccessors/ExtVarLong.txt @@ -3,15 +3,9 @@ package test internal var kotlin.Long.date1: kotlin.Any internal fun kotlin.Long.(): kotlin.Any internal fun kotlin.Long.(/*0*/ value: kotlin.Any): kotlin.Unit -public var kotlin.Long.date10: java.util.Date - public fun kotlin.Long.(): java.util.Date - protected fun kotlin.Long.(/*0*/ value: java.util.Date): kotlin.Unit public var kotlin.Long.date11: java.util.Date public fun kotlin.Long.(): java.util.Date public fun kotlin.Long.(/*0*/ value: java.util.Date): kotlin.Unit -internal var kotlin.Long.date2: kotlin.Any - internal fun kotlin.Long.(): kotlin.Any - protected fun kotlin.Long.(/*0*/ value: kotlin.Any): kotlin.Unit internal var kotlin.Long.date3: kotlin.Any internal fun kotlin.Long.(): kotlin.Any private fun kotlin.Long.(/*0*/ value: kotlin.Any): kotlin.Unit diff --git a/compiler/testData/loadJava/compiledKotlin/type/ArrayOfInNumber.kt b/compiler/testData/loadJava/compiledKotlin/type/ArrayOfInNumber.kt index fed727282ea..9ce0d38b585 100644 --- a/compiler/testData/loadJava/compiledKotlin/type/ArrayOfInNumber.kt +++ b/compiler/testData/loadJava/compiledKotlin/type/ArrayOfInNumber.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test fun nothing(): Array = throw Exception() diff --git a/compiler/testData/loadJava/compiledKotlin/type/ArrayOfOutNumber.kt b/compiler/testData/loadJava/compiledKotlin/type/ArrayOfOutNumber.kt index 0e7de6b2b9d..95ce2ac509e 100644 --- a/compiler/testData/loadJava/compiledKotlin/type/ArrayOfOutNumber.kt +++ b/compiler/testData/loadJava/compiledKotlin/type/ArrayOfOutNumber.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test fun nothing(): Array = throw Exception() diff --git a/compiler/testData/loadJava/compiledKotlin/type/ArrayOfOutT.kt b/compiler/testData/loadJava/compiledKotlin/type/ArrayOfOutT.kt index 5d14493e6db..f1d27f9d09d 100644 --- a/compiler/testData/loadJava/compiledKotlin/type/ArrayOfOutT.kt +++ b/compiler/testData/loadJava/compiledKotlin/type/ArrayOfOutT.kt @@ -1,3 +1,4 @@ +//ALLOW_AST_ACCESS package test fun nothing(): Array = throw Exception() diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 285105d7d5e..f28aeb73ea6 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -33,7 +33,7 @@ import java.util.regex.Pattern; public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { @TestMetadata("compiler/testData/diagnostics/tests") @TestDataPath("$PROJECT_ROOT") - @InnerTestClasses({Tests.Annotations.class, Tests.BackingField.class, Tests.Cast.class, Tests.CheckArguments.class, Tests.ClassObjects.class, Tests.ControlFlowAnalysis.class, Tests.ControlStructures.class, Tests.CyclicHierarchy.class, Tests.DataClasses.class, Tests.DataFlow.class, Tests.DataFlowInfoTraversal.class, Tests.DeclarationChecks.class, Tests.DelegatedProperty.class, Tests.Delegation.class, Tests.Deparenthesize.class, Tests.DuplicateJvmSignature.class, Tests.DynamicTypes.class, Tests.Enum.class, Tests.Evaluate.class, Tests.Extensions.class, Tests.FunctionLiterals.class, Tests.Generics.class, Tests.Imports.class, Tests.IncompleteCode.class, Tests.Inference.class, Tests.Infos.class, Tests.Inline.class, Tests.Inner.class, Tests.J_k.class, Tests.Jdk_annotations.class, Tests.Labels.class, Tests.Library.class, Tests.Multimodule.class, Tests.NamedArguments.class, Tests.NullabilityAndSmartCasts.class, Tests.NullableTypes.class, Tests.Numbers.class, Tests.Objects.class, Tests.OperatorsOverloading.class, Tests.Overload.class, Tests.Override.class, Tests.PlatformTypes.class, Tests.Recovery.class, Tests.Redeclarations.class, Tests.Regressions.class, Tests.Resolve.class, Tests.Scopes.class, Tests.SenselessComparison.class, Tests.Shadowing.class, Tests.SmartCasts.class, Tests.Substitutions.class, Tests.Subtyping.class, Tests.Suppress.class, Tests.ThisAndSuper.class, Tests.TraitWithRequired.class, Tests.Typedefs.class, Tests.Unit.class, Tests.Varargs.class, Tests.Variance.class, Tests.When.class}) + @InnerTestClasses({Tests.Annotations.class, Tests.BackingField.class, Tests.Cast.class, Tests.CheckArguments.class, Tests.ClassObjects.class, Tests.ControlFlowAnalysis.class, Tests.ControlStructures.class, Tests.CyclicHierarchy.class, Tests.DataClasses.class, Tests.DataFlow.class, Tests.DataFlowInfoTraversal.class, Tests.DeclarationChecks.class, Tests.DelegatedProperty.class, Tests.Delegation.class, Tests.Deparenthesize.class, Tests.DuplicateJvmSignature.class, Tests.DynamicTypes.class, Tests.Enum.class, Tests.Evaluate.class, Tests.Extensions.class, Tests.FunctionLiterals.class, Tests.Generics.class, Tests.Imports.class, Tests.IncompleteCode.class, Tests.Inference.class, Tests.Infos.class, Tests.Inline.class, Tests.Inner.class, Tests.J_k.class, Tests.Jdk_annotations.class, Tests.Labels.class, Tests.Library.class, Tests.Modifiers.class, Tests.Multimodule.class, Tests.NamedArguments.class, Tests.NullabilityAndSmartCasts.class, Tests.NullableTypes.class, Tests.Numbers.class, Tests.Objects.class, Tests.OperatorsOverloading.class, Tests.Overload.class, Tests.Override.class, Tests.PlatformTypes.class, Tests.Recovery.class, Tests.Redeclarations.class, Tests.Regressions.class, Tests.Resolve.class, Tests.Scopes.class, Tests.SenselessComparison.class, Tests.Shadowing.class, Tests.SmartCasts.class, Tests.Substitutions.class, Tests.Subtyping.class, Tests.Suppress.class, Tests.ThisAndSuper.class, Tests.TraitWithRequired.class, Tests.Typedefs.class, Tests.Unit.class, Tests.Varargs.class, Tests.Variance.class, Tests.When.class}) @RunWith(JUnit3RunnerWithInners.class) public static class Tests extends AbstractJetDiagnosticsTest { @TestMetadata("Abstract.kt") @@ -238,12 +238,6 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } - @TestMetadata("IllegalModifiers.kt") - public void testIllegalModifiers() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/IllegalModifiers.kt"); - doTest(fileName); - } - @TestMetadata("IncDec.kt") public void testIncDec() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/IncDec.kt"); @@ -6797,6 +6791,33 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { } } + @TestMetadata("compiler/testData/diagnostics/tests/modifiers") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Modifiers extends AbstractJetDiagnosticsTest { + public void testAllFilesPresentInModifiers() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/modifiers"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("IllegalModifiers.kt") + public void testIllegalModifiers() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/IllegalModifiers.kt"); + doTest(fileName); + } + + @TestMetadata("incompatibleVarianceModifiers.kt") + public void testIncompatibleVarianceModifiers() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/incompatibleVarianceModifiers.kt"); + doTest(fileName); + } + + @TestMetadata("repeatedModifiers.kt") + public void testRepeatedModifiers() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.kt"); + doTest(fileName); + } + } + @TestMetadata("compiler/testData/diagnostics/tests/multimodule") @TestDataPath("$PROJECT_ROOT") @InnerTestClasses({Multimodule.DuplicateClass.class, Multimodule.DuplicateMethod.class, Multimodule.DuplicateSuper.class}) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixRegistrar.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixRegistrar.java index b682c6be237..15e480f1ecb 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixRegistrar.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixRegistrar.java @@ -104,6 +104,7 @@ public class QuickFixRegistrar { QuickFixes.factories.put(GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY, removeModifierFactory); QuickFixes.factories.put(REDUNDANT_MODIFIER_IN_GETTER, removeRedundantModifierFactory); QuickFixes.factories.put(ILLEGAL_MODIFIER, removeModifierFactory); + QuickFixes.factories.put(REPEATED_MODIFIER, removeModifierFactory); JetSingleIntentionActionFactory changeToBackingFieldFactory = ChangeToBackingFieldFix.createFactory(); QuickFixes.factories.put(INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER, changeToBackingFieldFactory); diff --git a/js/js.libraries/src/jquery/common.kt b/js/js.libraries/src/jquery/common.kt index 33e86d4d759..8bce5e1f14e 100644 --- a/js/js.libraries/src/jquery/common.kt +++ b/js/js.libraries/src/jquery/common.kt @@ -3,7 +3,7 @@ package jquery import org.w3c.dom.Element native -public public class JQuery() { +public class JQuery() { public fun addClass(className: String): JQuery = noImpl; public fun addClass(f: Element.(Int, String) -> String): JQuery = noImpl;