Forbid default inline/crossinline suspend parameters

This commit is contained in:
Ilmir Usmanov
2018-02-20 14:05:03 +03:00
parent 7224b99928
commit 6b7173ba13
4 changed files with 36 additions and 0 deletions
@@ -18,6 +18,8 @@ package org.jetbrains.kotlin.resolve.inline
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.coroutines.hasSuspendFunctionType
import org.jetbrains.kotlin.coroutines.isSuspendLambda
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.isInlineOnlyOrReifiable
import org.jetbrains.kotlin.diagnostics.Errors
@@ -109,6 +111,18 @@ class InlineAnalyzerExtension(
checkDefaultValue(trace, parameter, ktParameter)
}
}
// Report unsupported error on inline/crossinline suspend lambdas with default values.
if (functionDescriptor.isSuspend &&
InlineUtil.isInlineParameterExceptNullability(parameter) &&
parameter.hasSuspendFunctionType
) {
trace.report(
Errors.NOT_YET_SUPPORTED_IN_INLINE.on(
ktParameter,
"Suspend functional parameters with default values"
)
)
}
}
}
}