Support lateinit modifier on top-level properties

Allow lateinit modifier on top-level properties.
Modifiers 'lateinit' and 'header' are incompatible.
This commit is contained in:
Dmitry Petrov
2017-06-01 14:42:13 +03:00
parent 78b69cad77
commit d951e957ea
6 changed files with 42 additions and 4 deletions
@@ -74,7 +74,7 @@ object ModifierCheckerCore {
REIFIED_KEYWORD to EnumSet.of(TYPE_PARAMETER),
VARARG_KEYWORD to EnumSet.of(VALUE_PARAMETER, PROPERTY_PARAMETER),
COMPANION_KEYWORD to EnumSet.of(OBJECT),
LATEINIT_KEYWORD to EnumSet.of(MEMBER_PROPERTY, LOCAL_VARIABLE),
LATEINIT_KEYWORD to EnumSet.of(MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, LOCAL_VARIABLE),
DATA_KEYWORD to EnumSet.of(CLASS_ONLY, LOCAL_CLASS),
INLINE_KEYWORD to EnumSet.of(FUNCTION, PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER),
NOINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER),
@@ -166,6 +166,9 @@ object ModifierCheckerCore {
// (see the KEEP https://github.com/Kotlin/KEEP/blob/master/proposals/sealed-class-inheritance.md)
result += incompatibilityRegister(SEALED_KEYWORD, INNER_KEYWORD)
// lateinit is incompatible with header
result += incompatibilityRegister(LATEINIT_KEYWORD, HEADER_KEYWORD)
return result
}