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
This commit is contained in:
Mikhail Zarechenskiy
2018-05-06 02:59:29 +03:00
parent 8834ea74f2
commit 71de2e3265
3 changed files with 10 additions and 3 deletions
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.resolve.checkers package org.jetbrains.kotlin.resolve.checkers
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
@@ -20,8 +19,6 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
object InlineClassDeclarationChecker : DeclarationChecker { object InlineClassDeclarationChecker : DeclarationChecker {
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.InlineClasses)) return
if (declaration !is KtClass) return if (declaration !is KtClass) return
if (descriptor !is ClassDescriptor || !descriptor.isInline) return if (descriptor !is ClassDescriptor || !descriptor.isInline) return
if (descriptor.kind != ClassKind.CLASS) return if (descriptor.kind != ClassKind.CLASS) return
@@ -1,7 +1,10 @@
// !LANGUAGE: -InlineClasses // !LANGUAGE: -InlineClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!UNSUPPORTED_FEATURE!>inline<!> class Foo(val x: Int) <!UNSUPPORTED_FEATURE!>inline<!> class Foo(val x: Int)
<!WRONG_MODIFIER_TARGET!>inline<!> annotation class InlineAnn <!WRONG_MODIFIER_TARGET!>inline<!> annotation class InlineAnn
<!WRONG_MODIFIER_TARGET!>inline<!> object InlineObject <!WRONG_MODIFIER_TARGET!>inline<!> object InlineObject
<!WRONG_MODIFIER_TARGET!>inline<!> enum class InlineEnum <!WRONG_MODIFIER_TARGET!>inline<!> enum class InlineEnum
<!UNSUPPORTED_FEATURE!>inline<!> class NotVal(<!INLINE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER!>x: Int<!>)
@@ -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 hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String 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
}