Forbid lateinit variables of inline class types

Proper support of lateinit inline class values will be added later,
 see #KT-23814

 #KT-25603 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2018-07-20 01:29:14 +03:00
parent 045058c29a
commit 17243c08c1
8 changed files with 59 additions and 0 deletions
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.resolve
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.UnsignedTypes
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.VariableDescriptor
@@ -45,6 +46,14 @@ object LateinitModifierApplicabilityChecker {
trace.report(Errors.INAPPLICABLE_LATEINIT_MODIFIER.on(modifier, "is allowed only on mutable $variables"))
}
if (type.isInlineClassType()) {
if (UnsignedTypes.isUnsignedType(type)) {
trace.report(Errors.INAPPLICABLE_LATEINIT_MODIFIER.on(modifier, "is not allowed on $variables of unsigned types"))
} else {
trace.report(Errors.INAPPLICABLE_LATEINIT_MODIFIER.on(modifier, "is not allowed on $variables of inline class types"))
}
}
if (type.isMarkedNullable) {
trace.report(Errors.INAPPLICABLE_LATEINIT_MODIFIER.on(modifier, "is not allowed on $variables of nullable types"))
} else if (TypeUtils.isNullableType(type)) {