I have the following method in some scala 2 code which I’m trying to convert to scala 3
override def test(testName: String, testTags: Tag*)(testFun: => Any /* Assertion */)(implicit pos: source.Position):Unit = {
super.test(testName,testTags : _*)(locally{
val start = System.nanoTime()
println("[ starting " + testName)
var finished = false
try{
testFun
finished = true
}
finally{
val end = System.nanoTime()
if (finished)
println("] finished " + testName + ": " + printTime(end-start))
else
println("] aborted " + testName + ": " + printTime(end - start))
}
})(pos)
}
The test
method in the superclass in Scala 3 has 2 argument lists rather than 3, the third being the implicit parameter pos. But more problematic at the moment is that in scala 3 the test
method in the superclass is decorated with inline
inline def test(testName: String, testTags: Tag*)(testFun: => Any /* Assertion */): Unit = {
${ source.Position.withPosition[Unit]('{(pos: source.Position) => testImpl(testName, testTags: _*)(testFun, pos) }) }
}
How can I convert the callsite for Scala 3?
super.test(testName,testTags : _*)(locally{... testFun ...})(pos)