@abstract class A: @abstract func get_text_1() -> String @abstract func get_text_2() -> String # No `UNUSED_PARAMETER` warning. @abstract func func_with_param(param: int) -> int @abstract func func_with_rest_param(...args: Array) -> int @abstract func func_with_semicolon() -> int; @abstract func func_1() -> int; @abstract func func_2() -> int @abstract func func_without_return_type() func print_text_1() -> void: print(get_text_1()) @abstract class B extends A: func get_text_1() -> String: return "text_1b" func print_text_2() -> void: print(get_text_2()) class C extends B: func get_text_2() -> String: return "text_2c" func func_with_param(param: int) -> int: return param func func_with_rest_param(...args: Array) -> int: return args.size() func func_with_semicolon() -> int: return 0 func func_1() -> int: return 0 func func_2() -> int: return 0 func func_without_return_type(): pass @abstract class D extends C: @abstract func get_text_1() -> String func get_text_2() -> String: return super() + " text_2d" class E extends D: func get_text_1() -> String: return "text_1e" func test(): var c := C.new() c.print_text_1() c.print_text_2() var e := E.new() e.print_text_1() e.print_text_2()