Можете ли вы просто написать метод, которому вы передаете условие и, возможно, флаг поведения.
object warnAssert {
def apply(condition: Bool, message: String = "", isFatal: Boolean = false) {
(isFatal, message.isEmpty) {
case (true, true) => assert(condition)
case (true, false) => assert(condition, message)
case (false, _) => when(bool) { printf("Warning: %s\n", message) // line number should get included here
}
}
}