[Tests] Pass sample test without annotation with flag ValueClasses
This commit is contained in:
+6
-3
@@ -5,12 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirRegularClassChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getModifier
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
||||
@@ -23,7 +24,9 @@ object FirJvmInlineApplicabilityChecker : FirRegularClassChecker() {
|
||||
val annotation = declaration.getAnnotationByClassId(JVM_INLINE_ANNOTATION_CLASS_ID)
|
||||
if (annotation != null && !declaration.isInline) {
|
||||
reporter.reportOn(annotation.source, FirJvmErrors.JVM_INLINE_WITHOUT_VALUE_CLASS, context)
|
||||
} else if (annotation == null && declaration.isInline && !declaration.isExpect) {
|
||||
} else if (annotation == null && declaration.isInline && !declaration.isExpect &&
|
||||
!context.languageVersionSettings.supportsFeature(LanguageFeature.ValueClasses)
|
||||
) {
|
||||
reporter.reportOn(
|
||||
declaration.getModifier(KtTokens.VALUE_KEYWORD)?.source,
|
||||
FirJvmErrors.VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION,
|
||||
|
||||
+4
-1
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm.checkers
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
@@ -35,7 +36,9 @@ class JvmInlineApplicabilityChecker : DeclarationChecker {
|
||||
context.trace.report(ErrorsJvm.JVM_INLINE_WITHOUT_VALUE_CLASS.on(annotationEntry))
|
||||
}
|
||||
|
||||
if (descriptor.isValue && annotation == null && !descriptor.isExpect) {
|
||||
if (descriptor.isValue && annotation == null && !descriptor.isExpect &&
|
||||
!context.languageVersionSettings.supportsFeature(LanguageFeature.ValueClasses)
|
||||
) {
|
||||
val valueKeyword = declaration.modifierList?.getModifier(KtTokens.VALUE_KEYWORD) ?: return
|
||||
context.trace.report(ErrorsJvm.VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION.on(valueKeyword))
|
||||
}
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
// WITH_STDLIB
|
||||
// WORKS_WITHOUT_JVM_INLINE
|
||||
// !LANGUAGE: +ValueClasses
|
||||
|
||||
@Suppress("OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE")
|
||||
@kotlin.jvm.JvmInline
|
||||
|
||||
@@ -278,7 +278,7 @@ enum class LanguageFeature(
|
||||
JsAllowValueClassesInExternals(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE),
|
||||
ContextReceivers(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE),
|
||||
KotlinFunInterfaceConstructorReference(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE),
|
||||
|
||||
ValueClasses(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE),
|
||||
;
|
||||
|
||||
val presentableName: String
|
||||
|
||||
Reference in New Issue
Block a user