Make KotlinFacetSettingsProvider.getInstance() nullable

A module may not have a KotlinFacet.
It isn't correct to throw an exception in that case.
This commit is contained in:
Yan Zhulanow
2019-09-27 19:29:57 +09:00
parent f408c249f1
commit 44b7a5cc36
10 changed files with 77 additions and 44 deletions
@@ -340,11 +340,13 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro
return
}
val facetSettings = KotlinFacetSettingsProvider.getInstance(module.project).getInitializedSettings(module)
ModuleRootModificationUtil.updateModel(module) {
facetSettings.coroutineSupport = state
facetSettings.apiLevel = LanguageVersion.KOTLIN_1_1
facetSettings.languageLevel = LanguageVersion.KOTLIN_1_1
val facetSettings = KotlinFacetSettingsProvider.getInstance(module.project)?.getInitializedSettings(module)
if (facetSettings != null) {
ModuleRootModificationUtil.updateModel(module) {
facetSettings.coroutineSupport = state
facetSettings.apiLevel = LanguageVersion.KOTLIN_1_1
facetSettings.languageLevel = LanguageVersion.KOTLIN_1_1
}
}
}
@@ -363,12 +365,14 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro
return
}
val facetSettings = KotlinFacetSettingsProvider.getInstance(module.project).getInitializedSettings(module)
ModuleRootModificationUtil.updateModel(module) {
facetSettings.apiLevel = feature.sinceVersion
facetSettings.languageLevel = feature.sinceVersion
facetSettings.compilerSettings?.apply {
additionalArguments = additionalArguments.replaceLanguageFeature(feature, state, separator = " ", quoted = false)
val facetSettings = KotlinFacetSettingsProvider.getInstance(module.project)?.getInitializedSettings(module)
if (facetSettings != null) {
ModuleRootModificationUtil.updateModel(module) {
facetSettings.apiLevel = feature.sinceVersion
facetSettings.languageLevel = feature.sinceVersion
facetSettings.compilerSettings?.apply {
additionalArguments = additionalArguments.replaceLanguageFeature(feature, state, separator = " ", quoted = false)
}
}
}
}
@@ -382,14 +386,16 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro
return
}
val facetSettings = KotlinFacetSettingsProvider.getInstance(module.project).getInitializedSettings(module)
ModuleRootModificationUtil.updateModel(module) {
with(facetSettings) {
if (languageVersion != null) {
languageLevel = LanguageVersion.fromVersionString(languageVersion)
}
if (apiVersion != null) {
apiLevel = LanguageVersion.fromVersionString(apiVersion)
val facetSettings = KotlinFacetSettingsProvider.getInstance(module.project)?.getInitializedSettings(module)
if (facetSettings != null) {
ModuleRootModificationUtil.updateModel(module) {
with(facetSettings) {
if (languageVersion != null) {
languageLevel = LanguageVersion.fromVersionString(languageVersion)
}
if (apiVersion != null) {
apiLevel = LanguageVersion.fromVersionString(apiVersion)
}
}
}
}
@@ -48,8 +48,8 @@ sealed class EnableUnsupportedFeatureFix(
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
val module = ModuleUtilCore.findModuleForPsiElement(file) ?: return
val facetSettings = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(module)
val targetApiLevel = facetSettings.apiLevel?.let { apiLevel ->
val facetSettings = KotlinFacetSettingsProvider.getInstance(project)?.getInitializedSettings(module)
val targetApiLevel = facetSettings?.apiLevel?.let { apiLevel ->
if (ApiVersion.createByLanguageVersion(apiLevel) < feature.sinceApiVersion)
feature.sinceApiVersion.versionString
else