interface Something { i int } struct Some { i int } struct App { mut: count u8 } fn (mut self App) next[T](input T) string { $if T is Something { return 'Something' } $else $if T is f64 { return 'f64' } $else { panic('${typeof(T.typ).name} is not supported') } panic('Unreachable') } fn test_comptime_if_is_interface() { mut app := App{} assert app.next(Something(Some{1})) == 'Something' assert app.next(1.0) == 'f64' }