[FIR] Extract common helper for checking of (expect) default value
This commit is contained in:
committed by
Space Team
parent
1d3a127f52
commit
988dbfc5c8
+1
-2
@@ -701,8 +701,7 @@ class FirElementSerializer private constructor(
|
|||||||
): ProtoBuf.ValueParameter.Builder = whileAnalysing(session, parameter) {
|
): ProtoBuf.ValueParameter.Builder = whileAnalysing(session, parameter) {
|
||||||
val builder = ProtoBuf.ValueParameter.newBuilder()
|
val builder = ProtoBuf.ValueParameter.newBuilder()
|
||||||
|
|
||||||
val declaresDefaultValue = parameter.defaultValue != null ||
|
val declaresDefaultValue = function.itOrExpectHasDefaultParameterValue(index)
|
||||||
function.symbol.getSingleExpectForActualOrNull().containsDefaultValue(index)
|
|
||||||
|
|
||||||
val flags = Flags.getValueParameterFlags(
|
val flags = Flags.getValueParameterFlags(
|
||||||
additionalAnnotations.isNotEmpty()
|
additionalAnnotations.isNotEmpty()
|
||||||
|
|||||||
+4
-4
@@ -116,7 +116,7 @@ inline val FirBasedSymbol<*>.isJavaOrEnhancement: Boolean
|
|||||||
get() = origin.isJavaOrEnhancement ||
|
get() = origin.isJavaOrEnhancement ||
|
||||||
(fir as? FirCallableDeclaration)?.importedFromObjectOrStaticData?.original?.isJavaOrEnhancement == true
|
(fir as? FirCallableDeclaration)?.importedFromObjectOrStaticData?.original?.isJavaOrEnhancement == true
|
||||||
|
|
||||||
fun FirFunctionSymbol<*>?.containsDefaultValue(index: Int): Boolean {
|
private fun FirFunction.containsDefaultValue(index: Int): Boolean = valueParameters[index].defaultValue != null
|
||||||
if (this == null) return false
|
|
||||||
return this.fir.valueParameters[index].defaultValue != null
|
fun FirFunction.itOrExpectHasDefaultParameterValue(index: Int): Boolean =
|
||||||
}
|
containsDefaultValue(index) || symbol.getSingleExpectForActualOrNull()?.fir?.containsDefaultValue(index) == true
|
||||||
|
|||||||
+2
-7
@@ -16,14 +16,11 @@ class FirDefaultParametersResolver : FirSessionComponent {
|
|||||||
fun declaresDefaultValue(
|
fun declaresDefaultValue(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
valueParameter: FirValueParameter,
|
|
||||||
function: FirFunction,
|
function: FirFunction,
|
||||||
originScope: FirScope?,
|
originScope: FirScope?,
|
||||||
index: Int,
|
index: Int,
|
||||||
): Boolean {
|
): Boolean {
|
||||||
if (valueParameter.defaultValue != null || function.symbol.getSingleExpectForActualOrNull().containsDefaultValue(index)) {
|
if (function.itOrExpectHasDefaultParameterValue(index)) return true
|
||||||
return true
|
|
||||||
}
|
|
||||||
if (function !is FirSimpleFunction) return false
|
if (function !is FirSimpleFunction) return false
|
||||||
val symbol = function.symbol
|
val symbol = function.symbol
|
||||||
val typeScope = when (originScope) {
|
val typeScope = when (originScope) {
|
||||||
@@ -44,9 +41,7 @@ class FirDefaultParametersResolver : FirSessionComponent {
|
|||||||
var result = false
|
var result = false
|
||||||
|
|
||||||
typeScope.processOverriddenFunctions(symbol) { overridden ->
|
typeScope.processOverriddenFunctions(symbol) { overridden ->
|
||||||
if (overridden.containsDefaultValue(index) ||
|
if (overridden.fir.itOrExpectHasDefaultParameterValue(index)) {
|
||||||
overridden.getSingleExpectForActualOrNull().containsDefaultValue(index)
|
|
||||||
) {
|
|
||||||
result = true
|
result = true
|
||||||
return@processOverriddenFunctions ProcessorAction.STOP
|
return@processOverriddenFunctions ProcessorAction.STOP
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -304,7 +304,7 @@ private class FirCallArgumentsProcessor(
|
|||||||
if (!result.containsKey(parameter)) {
|
if (!result.containsKey(parameter)) {
|
||||||
when {
|
when {
|
||||||
bodyResolveComponents.session.defaultParameterResolver.declaresDefaultValue(
|
bodyResolveComponents.session.defaultParameterResolver.declaresDefaultValue(
|
||||||
useSiteSession, bodyResolveComponents.scopeSession, parameter, function, originScope, index
|
useSiteSession, bodyResolveComponents.scopeSession, function, originScope, index
|
||||||
) ->
|
) ->
|
||||||
result[parameter] = ResolvedCallArgument.DefaultArgument
|
result[parameter] = ResolvedCallArgument.DefaultArgument
|
||||||
parameter.isVararg ->
|
parameter.isVararg ->
|
||||||
|
|||||||
Reference in New Issue
Block a user