Allow modifier 'inner' on a class nested in enum entry class

This commit is contained in:
Dmitry Petrov
2017-09-07 18:34:25 +03:00
parent 488a825349
commit ea91a0794d
8 changed files with 122 additions and 25 deletions
@@ -388,11 +388,7 @@ object KeywordCompletion {
else -> return true
}
val modifierParents = ModifierCheckerCore.possibleParentTargetMap[keywordTokenType]
if (modifierParents != null && parentTarget !in modifierParents) return false
val deprecatedParents = ModifierCheckerCore.deprecatedParentTargetMap[keywordTokenType]
if (deprecatedParents != null && parentTarget in deprecatedParents) return false
if (!ModifierCheckerCore.isPossibleParentTarget(keywordTokenType, parentTarget, languageVersionSettings)) return false
return true
}
@@ -451,6 +447,17 @@ object KeywordCompletion {
}
}
private fun isModifierParentSupportedAtLanguageLevel(
keyword: KtKeywordToken,
target: KotlinTarget,
languageVersionSettings: LanguageVersionSettings
): Boolean {
if (keyword == KtTokens.INNER_KEYWORD && target == ENUM_ENTRY) {
return languageVersionSettings.supportsFeature(LanguageFeature.InnerClassInEnumEntryClass)
}
return true
}
// builds text within scope (or from the start of the file) before position element excluding almost all declarations
private fun buildReducedContextBefore(builder: StringBuilder, position: PsiElement, scope: PsiElement?) {
if (position == scope) return