[IR] Allow inline modifier for functions returning MFVC without warning

Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com>

#KT-1179
This commit is contained in:
Evgeniy.Zhelenskiy
2022-12-19 14:03:53 +01:00
committed by teamcity
parent 4928e284f6
commit ac28c0a286
7 changed files with 43 additions and 14 deletions
@@ -23,12 +23,9 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.AnalyzerExtensions
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.calls.components.hasDefaultValue
import org.jetbrains.kotlin.resolve.descriptorUtil.declaresOrInheritsDefaultValue
import org.jetbrains.kotlin.resolve.isEffectivelyFinal
class InlineAnalyzerExtension(
private val reasonableInlineRules: Iterable<ReasonableInlineRule>,
@@ -183,6 +180,7 @@ class InlineAnalyzerExtension(
) return
if (reasonableInlineRules.any { it.isInlineReasonable(functionDescriptor, function, trace.bindingContext) }) return
if (functionDescriptor.returnType?.needsMfvcFlattening() == true) return
val reportOn = function.modifierList?.getModifier(KtTokens.INLINE_KEYWORD) ?: function
trace.report(Errors.NOTHING_TO_INLINE.on(reportOn))