From 71de2e3265c1acb94d40349f4c7f25ce8d405913 Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Sun, 6 May 2018 02:59:29 +0300 Subject: [PATCH] Report diagnostics for inline classes even if the feature is unsupported This would help for those who use inline classes by suppressing error about unsupported feature --- .../resolve/checkers/InlineClassDeclarationChecker.kt | 3 --- .../inlineClasses/basicInlineClassDeclarationDisabled.kt | 3 +++ .../inlineClasses/basicInlineClassDeclarationDisabled.txt | 7 +++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/InlineClassDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/InlineClassDeclarationChecker.kt index a216bc04e46..c37596a1592 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/InlineClassDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/InlineClassDeclarationChecker.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.resolve.checkers -import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -20,8 +19,6 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils object InlineClassDeclarationChecker : DeclarationChecker { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { - if (!context.languageVersionSettings.supportsFeature(LanguageFeature.InlineClasses)) return - if (declaration !is KtClass) return if (descriptor !is ClassDescriptor || !descriptor.isInline) return if (descriptor.kind != ClassKind.CLASS) return diff --git a/compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.kt b/compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.kt index 05858b6c8ff..e2708abccc4 100644 --- a/compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.kt +++ b/compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.kt @@ -1,7 +1,10 @@ // !LANGUAGE: -InlineClasses +// !DIAGNOSTICS: -UNUSED_PARAMETER inline class Foo(val x: Int) inline annotation class InlineAnn inline object InlineObject inline enum class InlineEnum + +inline class NotVal(x: Int) \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.txt b/compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.txt index 932bd635c32..e73ea0dc28b 100644 --- a/compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.txt +++ b/compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.txt @@ -38,3 +38,10 @@ public inline object InlineObject { public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } + +public final inline class NotVal { + public constructor NotVal(/*0*/ x: 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 +}