Allow Result return type and nullability operators on Result type

by default
This commit is contained in:
Ilmir Usmanov
2021-03-18 17:18:10 +01:00
committed by Space
parent 6473d2a7c8
commit 9c97f1ce35
15 changed files with 89 additions and 90 deletions
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils
class ResultTypeWithNullableOperatorsChecker : CallChecker {
override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
if (context.languageVersionSettings.supportsFeature(LanguageFeature.AllowNullOperatorsForResult)) return
if (context.languageVersionSettings.supportsFeature(LanguageFeature.AllowNullOperatorsForResultAndResultReturnTypeByDefault)) return
val name = resolvedCall.resultingDescriptor.name
val operationNode = resolvedCall.call.callOperationNode
@@ -19,13 +19,16 @@ import org.jetbrains.kotlin.types.KotlinType
class ResultClassInReturnTypeChecker : DeclarationChecker {
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
val languageVersionSettings = context.languageVersionSettings
if (
languageVersionSettings.getFlag(AnalysisFlags.allowResultReturnType) ||
(languageVersionSettings.getFeatureSupport(LanguageFeature.InlineClasses) == LanguageFeature.State.ENABLED ||
if (languageVersionSettings.getFlag(AnalysisFlags.allowResultReturnType)) return
if ((languageVersionSettings.getFeatureSupport(LanguageFeature.InlineClasses) == LanguageFeature.State.ENABLED ||
languageVersionSettings.supportsFeature(LanguageFeature.JvmInlineValueClasses)) &&
languageVersionSettings.supportsFeature(LanguageFeature.AllowResultInReturnType)
) return
if (languageVersionSettings.supportsFeature(LanguageFeature.AllowNullOperatorsForResultAndResultReturnTypeByDefault)) return
if (declaration !is KtCallableDeclaration || descriptor !is CallableMemberDescriptor) return
val returnType = descriptor.returnType ?: return