diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt index 14500d36aef..73b87217a13 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt @@ -319,7 +319,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() { @Argument( value = "-Xexplicit-api", valueDescription = "{strict|warning|disable}", - description = "Force compiler to report errors an all public API declarations without explicit visibility.\n" + + description = "Force compiler to report errors on all public API declarations without explicit visibility or return type.\n" + "Use 'warning' level to issue warnings instead of errors." ) var explicitApi: String by FreezableVar(ExplicitApiMode.DISABLED.state) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 32bd2fb8e20..43af2f78c41 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -207,10 +207,10 @@ public interface Errors { DiagnosticFactory2 DEPRECATED_MODIFIER_FOR_TARGET = DiagnosticFactory2.create(WARNING); DiagnosticFactory2 DEPRECATED_MODIFIER = DiagnosticFactory2.create(WARNING); DiagnosticFactory2 REDUNDANT_MODIFIER_FOR_TARGET = DiagnosticFactory2.create(WARNING); - DiagnosticFactory1 NO_EXPLICIT_VISIBILITY_IN_API_MODE = DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE); - DiagnosticFactory0 NO_EXPLICIT_RETURN_TYPE_IN_API_MODE = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); - DiagnosticFactory1 NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING = DiagnosticFactory1.create(WARNING, DECLARATION_SIGNATURE); - DiagnosticFactory0 NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING = DiagnosticFactory0.create(WARNING, DECLARATION_SIGNATURE); + DiagnosticFactory0 NO_EXPLICIT_VISIBILITY_IN_API_MODE = DiagnosticFactory0.create(ERROR, DECLARATION_MODIFIERS_AND_NAME); + DiagnosticFactory0 NO_EXPLICIT_RETURN_TYPE_IN_API_MODE = DiagnosticFactory0.create(ERROR, DECLARATION_NAME); + DiagnosticFactory0 NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING = DiagnosticFactory0.create(WARNING, DECLARATION_MODIFIERS_AND_NAME); + DiagnosticFactory0 NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING = DiagnosticFactory0.create(WARNING, DECLARATION_NAME); DiagnosticFactory2 WRONG_MODIFIER_CONTAINING_DECLARATION = DiagnosticFactory2.create(ERROR); DiagnosticFactory2 DEPRECATED_MODIFIER_CONTAINING_DECLARATION = DiagnosticFactory2.create(WARNING); DiagnosticFactory1 ILLEGAL_INLINE_PARAMETER_MODIFIER = DiagnosticFactory1.create(ERROR); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt index 82ad23a2c47..708a434cd74 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt @@ -187,6 +187,26 @@ object PositioningStrategies { } } + @JvmField + val DECLARATION_MODIFIERS_AND_NAME: PositioningStrategy = object : DeclarationHeader() { + override fun mark(element: KtDeclaration): List { + val startElement = element.firstChild + val nameIdentifier = (element as? KtNamedDeclaration)?.nameIdentifier + return if (nameIdentifier != null) { + markRange(startElement, nameIdentifier) + } else when (element) { + // companion object/constructors without name + is KtConstructor<*> -> { + markRange(startElement, element.getConstructorKeyword() ?: element) + } + is KtObjectDeclaration -> { + markRange(startElement, element.getObjectKeyword() ?: element) + } + else -> DEFAULT.mark(element) + } + } + } + @JvmField val DECLARATION_NAME: PositioningStrategy = object : DeclarationHeader() { override fun mark(element: KtNamedDeclaration): List { @@ -195,7 +215,7 @@ object PositioningStrategies { if (element is KtClassOrObject) { val startElement = element.getModifierList()?.getModifier(KtTokens.ENUM_KEYWORD) - ?: element.node.findChildByType(TokenSet.create(KtTokens.CLASS_KEYWORD, KtTokens.OBJECT_KEYWORD))?.psi + ?: element.node.findChildByType(TokenSet.create(KtTokens.CLASS_KEYWORD, KtTokens.OBJECT_KEYWORD))?.psi ?: element return markRange(startElement, nameIdentifier) 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 580b8f63c3d..d2c6c046d23 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -119,10 +119,10 @@ public class DefaultErrorMessages { MAP.put(DEPRECATED_MODIFIER_FOR_TARGET, "Modifier ''{0}'' is deprecated for ''{1}''", TO_STRING, TO_STRING); MAP.put(DEPRECATED_MODIFIER, "Modifier ''{0}'' is deprecated, use ''{1}'' instead", TO_STRING, TO_STRING); MAP.put(REDUNDANT_MODIFIER_FOR_TARGET, "Modifier ''{0}'' is redundant for ''{1}''", TO_STRING, TO_STRING); - MAP.put(NO_EXPLICIT_VISIBILITY_IN_API_MODE, "Declaration ''{0}'' is effectively public API and API mode is on, but no visibility is specified", NAME); - MAP.put(NO_EXPLICIT_RETURN_TYPE_IN_API_MODE, "This declaration is effectively public API and API mode is on, but no explicit return type is specified"); - MAP.put(NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING, "Declaration ''{0}'' is effectively public API and API mode is on, but no visibility is specified", NAME); - MAP.put(NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING, "This declaration is effectively public API and API mode is on, but no explicit return type is specified"); + MAP.put(NO_EXPLICIT_VISIBILITY_IN_API_MODE, "Visibility must be specified in explicit API mode"); + MAP.put(NO_EXPLICIT_RETURN_TYPE_IN_API_MODE, "Return type must be specified in explicit API mode"); + MAP.put(NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING, "Visibility must be specified in explicit API mode"); + MAP.put(NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING, "Return type must be specified in explicit API mode"); MAP.put(WRONG_MODIFIER_CONTAINING_DECLARATION, "Modifier ''{0}'' is not applicable inside ''{1}''", TO_STRING, TO_STRING); MAP.put(DEPRECATED_MODIFIER_CONTAINING_DECLARATION, "Modifier ''{0}'' is deprecated inside ''{1}''", TO_STRING, TO_STRING); MAP.put(ILLEGAL_INLINE_PARAMETER_MODIFIER, "Modifier ''{0}'' is allowed only for function parameters of an inline function", TO_STRING); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExplicitApiDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExplicitApiDeclarationChecker.kt index 3bfbb4b76bd..468d9bc99bd 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExplicitApiDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExplicitApiDeclarationChecker.kt @@ -7,11 +7,9 @@ package org.jetbrains.kotlin.resolve.checkers import org.jetbrains.kotlin.config.AnalysisFlags import org.jetbrains.kotlin.config.ExplicitApiMode -import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.reportDiagnosticOnce -import org.jetbrains.kotlin.lexer.KtModifierKeywordToken import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier @@ -19,11 +17,11 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPublicApi class ExplicitApiDeclarationChecker : DeclarationChecker { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { - val state = isEnabled(context.languageVersionSettings) + val state = context.languageVersionSettings.getFlag(AnalysisFlags.explicitApiMode) if (state == ExplicitApiMode.DISABLED) return - val isApi = (descriptor as? DeclarationDescriptorWithVisibility)?.isEffectivelyPublicApi ?: return - if (!isApi) return + if (descriptor !is DeclarationDescriptorWithVisibility) return + if (!descriptor.isEffectivelyPublicApi) return checkVisibilityModifier(state, declaration, descriptor, context) checkExplicitReturnType(state, declaration, descriptor, context) @@ -35,16 +33,16 @@ class ExplicitApiDeclarationChecker : DeclarationChecker { descriptor: DeclarationDescriptorWithVisibility, context: DeclarationCheckerContext ) { - val modifier = declaration.visibilityModifier()?.node?.elementType as? KtModifierKeywordToken + val modifier = declaration.visibilityModifier() if (modifier != null) return if (excludeForDiagnostic(descriptor)) return val diagnostic = if (state == ExplicitApiMode.STRICT) - Errors.NO_EXPLICIT_VISIBILITY_IN_API_MODE.on(declaration, descriptor) + Errors.NO_EXPLICIT_VISIBILITY_IN_API_MODE else - Errors.NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING.on(declaration, descriptor) - context.trace.reportDiagnosticOnce(diagnostic) + Errors.NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING + context.trace.reportDiagnosticOnce(diagnostic.on(declaration)) } private fun checkExplicitReturnType( @@ -65,11 +63,10 @@ class ExplicitApiDeclarationChecker : DeclarationChecker { if (shouldReport) { val diagnostic = if (state == ExplicitApiMode.STRICT) - Errors.NO_EXPLICIT_RETURN_TYPE_IN_API_MODE.on(declaration) + Errors.NO_EXPLICIT_RETURN_TYPE_IN_API_MODE else Errors.NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING - .on(declaration) - context.trace.reportDiagnosticOnce(diagnostic) + context.trace.reportDiagnosticOnce(diagnostic.on(declaration)) } } @@ -91,29 +88,23 @@ class ExplicitApiDeclarationChecker : DeclarationChecker { } companion object { - fun isEnabled(settings: LanguageVersionSettings): ExplicitApiMode { - return settings.getFlag(AnalysisFlags.explicitApiMode) - } - fun returnTypeRequired( element: KtCallableDeclaration, descriptor: DeclarationDescriptor?, checkForPublicApi: Boolean, checkForInternal: Boolean, checkForPrivate: Boolean - ): Boolean = - element.containingClassOrObject?.isLocal != true && - when (element) { - is KtFunction -> !element.isLocal - is KtProperty -> !element.isLocal - else -> false - } && run { - val callableMemberDescriptor = descriptor as? CallableMemberDescriptor + ): Boolean { + if (element.containingClassOrObject?.isLocal == true) return false + if (element is KtFunction && element.isLocal) return false + if (element is KtProperty && element.isLocal) return false - val visibility = callableMemberDescriptor?.effectiveVisibility()?.toVisibility() - (checkForPublicApi && visibility?.isPublicAPI == true) || (checkForInternal && visibility == Visibilities.INTERNAL) || - (checkForPrivate && visibility == Visibilities.PRIVATE) - } + val callableMemberDescriptor = descriptor as? CallableMemberDescriptor + + val visibility = callableMemberDescriptor?.effectiveVisibility()?.toVisibility() + return (checkForPublicApi && visibility?.isPublicAPI == true) || (checkForInternal && visibility == Visibilities.INTERNAL) || + (checkForPrivate && visibility == Visibilities.PRIVATE) + } fun returnTypeCheckIsApplicable(element: KtCallableDeclaration): Boolean { if (element.containingFile is KtCodeFragment) return false diff --git a/compiler/testData/cli/js/jsExtraHelp.out b/compiler/testData/cli/js/jsExtraHelp.out index 31a6fc67ff5..80ff4ecd968 100644 --- a/compiler/testData/cli/js/jsExtraHelp.out +++ b/compiler/testData/cli/js/jsExtraHelp.out @@ -27,7 +27,7 @@ where advanced options include: -Xeffect-system Enable experimental language feature: effect system -Xexperimental= Enable and propagate usages of experimental API for marker annotation with the given fully qualified name -Xexplicit-api={strict|warning|disable} - Force compiler to report errors an all public API declarations without explicit visibility. + Force compiler to report errors on all public API declarations without explicit visibility or return type. Use 'warning' level to issue warnings instead of errors. -Xinline-classes Enable experimental inline classes -Xintellij-plugin-root= Path to the kotlin-compiler.jar or directory where IntelliJ configuration files can be found diff --git a/compiler/testData/cli/jvm/extraHelp.out b/compiler/testData/cli/jvm/extraHelp.out index 68a88650979..f52ea5f6e5e 100644 --- a/compiler/testData/cli/jvm/extraHelp.out +++ b/compiler/testData/cli/jvm/extraHelp.out @@ -86,7 +86,7 @@ where advanced options include: -Xeffect-system Enable experimental language feature: effect system -Xexperimental= Enable and propagate usages of experimental API for marker annotation with the given fully qualified name -Xexplicit-api={strict|warning|disable} - Force compiler to report errors an all public API declarations without explicit visibility. + Force compiler to report errors on all public API declarations without explicit visibility or return type. Use 'warning' level to issue warnings instead of errors. -Xinline-classes Enable experimental inline classes -Xintellij-plugin-root= Path to the kotlin-compiler.jar or directory where IntelliJ configuration files can be found diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/classes.kt b/compiler/testData/diagnostics/testsWithExplicitApi/classes.kt index 230b914da73..49699871fcd 100644 --- a/compiler/testData/diagnostics/testsWithExplicitApi/classes.kt +++ b/compiler/testData/diagnostics/testsWithExplicitApi/classes.kt @@ -1,15 +1,22 @@ -class Foo1() {} +// SKIP_TXT + +class Foo1() {} public class Foo2() { - fun method() {} + fun method() {} public fun method2() {} private fun method3() {} - fun implicit() = 10 - public fun implicit2() = 10 + fun implicit() = 10 + public fun implicit2() = 10 public fun implicit3(): Int = 10 } public data class FooData(val i: Int, val s: String) -data class FooData2(val i: Int, val s: String) \ No newline at end of file +data class FooData2(val i: Int, val s: String) + +public class WithNested { + class Nested {} + inner class Inner {} +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/classes.txt b/compiler/testData/diagnostics/testsWithExplicitApi/classes.txt deleted file mode 100644 index ad52805938f..00000000000 --- a/compiler/testData/diagnostics/testsWithExplicitApi/classes.txt +++ /dev/null @@ -1,45 +0,0 @@ -package - -public final class Foo1 { - public constructor 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 -} - -public final class Foo2 { - public constructor 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 final fun implicit(): kotlin.Int - public final fun implicit2(): kotlin.Int - public final fun implicit3(): kotlin.Int - public final fun method(): kotlin.Unit - public final fun method2(): kotlin.Unit - private final fun method3(): kotlin.Unit - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public final data class FooData { - public constructor FooData(/*0*/ i: kotlin.Int, /*1*/ s: kotlin.String) - public final val i: kotlin.Int - public final val s: kotlin.String - public final operator /*synthesized*/ fun component1(): kotlin.Int - public final operator /*synthesized*/ fun component2(): kotlin.String - public final /*synthesized*/ fun copy(/*0*/ i: kotlin.Int = ..., /*1*/ s: kotlin.String = ...): FooData - public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String -} - -public final data class FooData2 { - public constructor FooData2(/*0*/ i: kotlin.Int, /*1*/ s: kotlin.String) - public final val i: kotlin.Int - public final val s: kotlin.String - public final operator /*synthesized*/ fun component1(): kotlin.Int - public final operator /*synthesized*/ fun component2(): kotlin.String - public final /*synthesized*/ fun copy(/*0*/ i: kotlin.Int = ..., /*1*/ s: kotlin.String = ...): FooData2 - public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String -} diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/companionObject.kt b/compiler/testData/diagnostics/testsWithExplicitApi/companionObject.kt index 51a415c9c61..0ac35aad619 100644 --- a/compiler/testData/diagnostics/testsWithExplicitApi/companionObject.kt +++ b/compiler/testData/diagnostics/testsWithExplicitApi/companionObject.kt @@ -1,3 +1,13 @@ +// SKIP_TXT + public class Bar { - companion object {} + companion object {} +} + +public class Bar2 { + companion object MyCompanion {} +} + +public class Bar3 { + object NestedObject {} } \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/companionObject.txt b/compiler/testData/diagnostics/testsWithExplicitApi/companionObject.txt deleted file mode 100644 index cba12da82ca..00000000000 --- a/compiler/testData/diagnostics/testsWithExplicitApi/companionObject.txt +++ /dev/null @@ -1,15 +0,0 @@ -package - -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 - - public companion object Companion { - private constructor Companion() - 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/testsWithExplicitApi/constructors.kt b/compiler/testData/diagnostics/testsWithExplicitApi/constructors.kt index eaf408ff998..0aa5e90d962 100644 --- a/compiler/testData/diagnostics/testsWithExplicitApi/constructors.kt +++ b/compiler/testData/diagnostics/testsWithExplicitApi/constructors.kt @@ -1,10 +1,12 @@ +// SKIP_TXT + public class Foo1 () {} public class Foo2 constructor() {} public class Foo3 public constructor() {} public class Foo4 private constructor() {} public class Foo5 { - constructor() {} + constructor() {} } public class Foo6 { diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/constructors.txt b/compiler/testData/diagnostics/testsWithExplicitApi/constructors.txt deleted file mode 100644 index 41cb9562332..00000000000 --- a/compiler/testData/diagnostics/testsWithExplicitApi/constructors.txt +++ /dev/null @@ -1,43 +0,0 @@ -package - -public final class Foo1 { - public constructor 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 -} - -public final class Foo2 { - public constructor 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 -} - -public final class Foo3 { - public constructor Foo3() - 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 Foo4 { - private constructor Foo4() - 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 Foo5 { - public constructor Foo5() - 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 Foo6 { - public constructor Foo6() - 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/testsWithExplicitApi/inlineClasses.kt b/compiler/testData/diagnostics/testsWithExplicitApi/inlineClasses.kt index 03b84f05fb8..bc0db7443e6 100644 --- a/compiler/testData/diagnostics/testsWithExplicitApi/inlineClasses.kt +++ b/compiler/testData/diagnostics/testsWithExplicitApi/inlineClasses.kt @@ -1,6 +1,7 @@ // !DIAGNOSTICS: -EXPERIMENTAL_FEATURE_WARNING +// SKIP_TXT -inline class Value1(val inner: Int) -public inline class Value2(val inner: Int) -inline class Value3(public val inner: Int) +inline class Value1(val inner: Int) +public inline class Value2(val inner: Int) +inline class Value3(public val inner: Int) public inline class Value4(public val inner: Int) \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/inlineClasses.txt b/compiler/testData/diagnostics/testsWithExplicitApi/inlineClasses.txt deleted file mode 100644 index 0d9eedbb57c..00000000000 --- a/compiler/testData/diagnostics/testsWithExplicitApi/inlineClasses.txt +++ /dev/null @@ -1,33 +0,0 @@ -package - -public final inline class Value1 { - public constructor Value1(/*0*/ inner: kotlin.Int) - public final val inner: kotlin.Int - public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String -} - -public final inline class Value2 { - public constructor Value2(/*0*/ inner: kotlin.Int) - public final val inner: kotlin.Int - public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String -} - -public final inline class Value3 { - public constructor Value3(/*0*/ inner: kotlin.Int) - public final val inner: kotlin.Int - public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String -} - -public final inline class Value4 { - public constructor Value4(/*0*/ inner: kotlin.Int) - public final val inner: kotlin.Int - public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String -} diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/interfaces.kt b/compiler/testData/diagnostics/testsWithExplicitApi/interfaces.kt index 582557684ee..4ca83833ec4 100644 --- a/compiler/testData/diagnostics/testsWithExplicitApi/interfaces.kt +++ b/compiler/testData/diagnostics/testsWithExplicitApi/interfaces.kt @@ -1,9 +1,11 @@ -interface I1 { - fun i() +// SKIP_TXT + +interface I1 { + fun i() } public interface I2 { - fun i() + fun i() } public interface I3 { @@ -23,8 +25,8 @@ public class Impl: I3 { } public class Impl2: I4 { - override fun i() = 10 - override val v = 10 + override fun i() = 10 + override val v = 10 } private class PrivateImpl: I4 { diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/interfaces.txt b/compiler/testData/diagnostics/testsWithExplicitApi/interfaces.txt deleted file mode 100644 index e9cb14fcdf9..00000000000 --- a/compiler/testData/diagnostics/testsWithExplicitApi/interfaces.txt +++ /dev/null @@ -1,58 +0,0 @@ -package - -public interface I1 { - 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 abstract fun i(): kotlin.Unit - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public interface I2 { - 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 abstract fun i(): kotlin.Unit - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public interface I3 { - public abstract val v: 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 abstract fun i(): kotlin.Unit - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public interface I4 { - public abstract val v: 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 abstract fun i(): kotlin.Int - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public final class Impl : I3 { - public constructor Impl() - public open override /*1*/ val v: 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*/ fun i(): kotlin.Unit - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public final class Impl2 : I4 { - public constructor Impl2() - public open override /*1*/ val v: kotlin.Int = 10 - 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*/ fun i(): kotlin.Int - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -private final class PrivateImpl : I4 { - public constructor PrivateImpl() - public open override /*1*/ val v: kotlin.Int = 10 - 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*/ fun i(): kotlin.Int - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/mustBeEffectivelyPublic.kt b/compiler/testData/diagnostics/testsWithExplicitApi/mustBeEffectivelyPublic.kt index 35c2538ed56..4bb56d65530 100644 --- a/compiler/testData/diagnostics/testsWithExplicitApi/mustBeEffectivelyPublic.kt +++ b/compiler/testData/diagnostics/testsWithExplicitApi/mustBeEffectivelyPublic.kt @@ -1,3 +1,5 @@ +// SKIP_TXT + private class Foo { fun method() {} } diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/mustBeEffectivelyPublic.txt b/compiler/testData/diagnostics/testsWithExplicitApi/mustBeEffectivelyPublic.txt deleted file mode 100644 index 9c5aa2265e0..00000000000 --- a/compiler/testData/diagnostics/testsWithExplicitApi/mustBeEffectivelyPublic.txt +++ /dev/null @@ -1,18 +0,0 @@ -package - -public fun f(): kotlin.Unit - -private final 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 final fun method(): kotlin.Unit - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public interface I { - public abstract 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 -} diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/properties.kt b/compiler/testData/diagnostics/testsWithExplicitApi/properties.kt index 18de84ff17e..1335aa10ddb 100644 --- a/compiler/testData/diagnostics/testsWithExplicitApi/properties.kt +++ b/compiler/testData/diagnostics/testsWithExplicitApi/properties.kt @@ -1,14 +1,16 @@ -public class Foo(val bar: Int, private var bar2: String, internal var bar3: Long, public var bar4: Int) { - var simple: Int = 10 +// SKIP_TXT + +public class Foo(val bar: Int, private var bar2: String, internal var bar3: Long, public var bar4: Int) { + var simple: Int = 10 public var simple2: Int = 10 - val withGetter: Int + val withGetter: Int get() = 10 public val withGetter2: Int get() = 10 - var getterAndSetter: Int = 10 + var getterAndSetter: Int = 10 get() = field set(v) { field = v } diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/properties.txt b/compiler/testData/diagnostics/testsWithExplicitApi/properties.txt deleted file mode 100644 index 6c89e0f596a..00000000000 --- a/compiler/testData/diagnostics/testsWithExplicitApi/properties.txt +++ /dev/null @@ -1,18 +0,0 @@ -package - -public final class Foo { - public constructor Foo(/*0*/ bar: kotlin.Int, /*1*/ bar2: kotlin.String, /*2*/ bar3: kotlin.Long, /*3*/ bar4: kotlin.Int) - public final val bar: kotlin.Int - private final var bar2: kotlin.String - internal final var bar3: kotlin.Long - public final var bar4: kotlin.Int - public final var getterAndSetter: kotlin.Int - public final var getterAndSetter2: kotlin.Int - public final var simple: kotlin.Int - public final var simple2: kotlin.Int - public final val withGetter: kotlin.Int - public final val withGetter2: 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 -} diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/toplevel.kt b/compiler/testData/diagnostics/testsWithExplicitApi/toplevel.kt index d48da0a52eb..3813b990605 100644 --- a/compiler/testData/diagnostics/testsWithExplicitApi/toplevel.kt +++ b/compiler/testData/diagnostics/testsWithExplicitApi/toplevel.kt @@ -1,7 +1,9 @@ -fun foo() {} +// SKIP_TXT + +fun foo() {} public fun foo2() {} -fun bar() = 10 -public fun bar2() = 10 +fun bar() = 10 +public fun bar2() = 10 public fun bar3(): Int = 10 diff --git a/compiler/testData/diagnostics/testsWithExplicitApi/toplevel.txt b/compiler/testData/diagnostics/testsWithExplicitApi/toplevel.txt deleted file mode 100644 index f9b2c5ff815..00000000000 --- a/compiler/testData/diagnostics/testsWithExplicitApi/toplevel.txt +++ /dev/null @@ -1,7 +0,0 @@ -package - -public fun bar(): kotlin.Int -public fun bar2(): kotlin.Int -public fun bar3(): kotlin.Int -public fun foo(): kotlin.Unit -public fun foo2(): kotlin.Unit diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithExplicitApi.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithExplicitApi.kt index 9a2e29e740e..99e9b14a208 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithExplicitApi.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithExplicitApi.kt @@ -16,8 +16,8 @@ abstract class AbstractDiagnosticsWithExplicitApi : AbstractDiagnosticsTest() { override fun defaultLanguageVersionSettings(): LanguageVersionSettings = CompilerTestLanguageVersionSettings( DEFAULT_DIAGNOSTIC_TESTS_FEATURES, - ApiVersion.KOTLIN_1_3, - LanguageVersion.KOTLIN_1_3, + LanguageVersionSettingsImpl.DEFAULT.apiVersion, + LanguageVersionSettingsImpl.DEFAULT.languageVersion, mapOf(AnalysisFlags.explicitApiMode to ExplicitApiMode.STRICT) ) } \ No newline at end of file