Вызов foo()
явно по this
заставит предупреждение исчезнуть:
1-й путь:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return this.foo()
}
2-й способ:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return foo(this)
}
Поскольку в этом контексте вы должны опустить this
, я думаю, что это ошибка в компиляторе.
Если вы просто хотитечтобы предупреждение исчезло, вы можете использовать аннотацию @Suppress
на уровне оператора:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
@Suppress("UNUSED_EXPRESSION")
return foo()
}
Вы можете сделать это для всего файла, всего класса или всей функции, но это лучшеиспользовать его непосредственно в операторе, потому что другие неиспользованные выражения могут действительно быть вашей ошибкой (а не преднамеренно), и компилятор не сообщит вам об этом.