unit-tests: Report error on test functions with incorrect signature
This commit is contained in:
+15
@@ -230,6 +230,20 @@ internal class TestProcessor (val context: KonanBackendContext) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun IrFunction.checkFunctionSignature() {
|
||||||
|
// Test runner requires test functions to have the following signature: () -> Unit.
|
||||||
|
if (descriptor.returnType != context.builtIns.unitType) {
|
||||||
|
context.reportCompilationError(
|
||||||
|
"Test function must return Unit: ${descriptor.fqNameSafe}", irFile, this
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (descriptor.valueParameters.isNotEmpty()) {
|
||||||
|
context.reportCompilationError(
|
||||||
|
"Test function must have no arguments: ${descriptor.fqNameSafe}", irFile, this
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Use symbols instead of containingDeclaration when such information is available.
|
// TODO: Use symbols instead of containingDeclaration when such information is available.
|
||||||
override fun visitFunction(declaration: IrFunction) {
|
override fun visitFunction(declaration: IrFunction) {
|
||||||
val symbol = declaration.symbol
|
val symbol = declaration.symbol
|
||||||
@@ -239,6 +253,7 @@ internal class TestProcessor (val context: KonanBackendContext) {
|
|||||||
if (kinds.isEmpty()) {
|
if (kinds.isEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
declaration.checkFunctionSignature()
|
||||||
|
|
||||||
when (owner) {
|
when (owner) {
|
||||||
is PackageFragmentDescriptor -> topLevelFunctions.registerFunction(symbol, kinds)
|
is PackageFragmentDescriptor -> topLevelFunctions.registerFunction(symbol, kinds)
|
||||||
|
|||||||
Reference in New Issue
Block a user