From e30182c6285355c4d9125b7dfda062bac38a49a9 Mon Sep 17 00:00:00 2001 From: yuyi Date: Tue, 16 Jan 2024 13:53:50 +0800 Subject: [PATCH] checker: cleanup the generic tests (#20553) --- vlib/v/checker/tests/generic_fn_decl_err.out | 10 +++++----- vlib/v/checker/tests/generic_fn_decl_err.vv | 10 +++++----- .../generic_interface_method_decl_err.out | 4 ++-- .../generic_interface_method_decl_err.vv | 6 +++--- .../tests/generics_fn_arguments_count_err.out | 20 +++++++++---------- .../tests/generics_fn_arguments_count_err.vv | 12 +++++------ .../generics_inst_non_generic_struct_err.out | 2 +- .../generics_inst_non_generic_struct_err.vv | 2 +- .../generics_interface_declaration_err.out | 2 +- .../generics_interface_declaration_err.vv | 4 ++-- ...n_generic_fn_called_like_a_generic_one.out | 2 +- ...on_generic_fn_called_like_a_generic_one.vv | 2 +- .../generics_struct_field_fn_args_err.out | 2 +- .../generics_struct_field_fn_args_err.vv | 6 +++--- ...enerics_struct_init_type_parameter_err.out | 8 ++++---- ...generics_struct_init_type_parameter_err.vv | 10 +++++----- vlib/v/checker/tests/vweb_routing_checks.vv | 2 +- vlib/v/checker/tests/vweb_tmpl_used_var.vv | 2 +- 18 files changed, 53 insertions(+), 53 deletions(-) diff --git a/vlib/v/checker/tests/generic_fn_decl_err.out b/vlib/v/checker/tests/generic_fn_decl_err.out index 45f5fbbfb80d61..e11310b2dbbbd2 100644 --- a/vlib/v/checker/tests/generic_fn_decl_err.out +++ b/vlib/v/checker/tests/generic_fn_decl_err.out @@ -1,35 +1,35 @@ vlib/v/checker/tests/generic_fn_decl_err.vv:19:29: error: generic type name `P` is not mentioned in fn `create1[U]` 17 | } 18 | - 19 | fn (r Db) create1(u U, p P) { + 19 | fn (r Db) create1[U](u U, p P) { | ^ 20 | println('Yo') 21 | } vlib/v/checker/tests/generic_fn_decl_err.vv:23:29: error: generic type name `P` is not mentioned in fn `create2[U]` 21 | } 22 | - 23 | fn (r Db) create2(u U, p &P) { + 23 | fn (r Db) create2[U](u U, p &P) { | ~~ 24 | println('Yo') 25 | } vlib/v/checker/tests/generic_fn_decl_err.vv:27:29: error: generic type name `P` is not mentioned in fn `create3[U]` 25 | } 26 | - 27 | fn (r Db) create3(u U, p []P) { + 27 | fn (r Db) create3[U](u U, p []P) { | ~~~ 28 | println('Yo') 29 | } vlib/v/checker/tests/generic_fn_decl_err.vv:31:27: error: generic type name `P` is not mentioned in fn `create4[U]` 29 | } 30 | - 31 | fn (r Db) create4(u U) P { + 31 | fn (r Db) create4[U](u U) P { | ^ 32 | return P{} 33 | } vlib/v/checker/tests/generic_fn_decl_err.vv:35:27: error: generic type name `P` is not mentioned in fn `create5[U]` 33 | } 34 | - 35 | fn (r Db) create5(u U) []P { + 35 | fn (r Db) create5[U](u U) []P { | ~~~ 36 | return [P{}] 37 | } diff --git a/vlib/v/checker/tests/generic_fn_decl_err.vv b/vlib/v/checker/tests/generic_fn_decl_err.vv index 2d93cca686364d..e98d7f9649e186 100644 --- a/vlib/v/checker/tests/generic_fn_decl_err.vv +++ b/vlib/v/checker/tests/generic_fn_decl_err.vv @@ -16,22 +16,22 @@ fn main() { r.create5(u) } -fn (r Db) create1(u U, p P) { +fn (r Db) create1[U](u U, p P) { println('Yo') } -fn (r Db) create2(u U, p &P) { +fn (r Db) create2[U](u U, p &P) { println('Yo') } -fn (r Db) create3(u U, p []P) { +fn (r Db) create3[U](u U, p []P) { println('Yo') } -fn (r Db) create4(u U) P { +fn (r Db) create4[U](u U) P { return P{} } -fn (r Db) create5(u U) []P { +fn (r Db) create5[U](u U) []P { return [P{}] } diff --git a/vlib/v/checker/tests/generic_interface_method_decl_err.out b/vlib/v/checker/tests/generic_interface_method_decl_err.out index 4648e3b25a5051..40cfbc6e6c237c 100644 --- a/vlib/v/checker/tests/generic_interface_method_decl_err.out +++ b/vlib/v/checker/tests/generic_interface_method_decl_err.out @@ -1,6 +1,6 @@ vlib/v/checker/tests/generic_interface_method_decl_err.vv:2:8: error: no need to add generic type names in generic interface's method - 1 | interface Expr { - 2 | accept(v Visitor) R + 1 | interface Expr[R] { + 2 | accept[R](v Visitor[R]) R | ^ 3 | } 4 | diff --git a/vlib/v/checker/tests/generic_interface_method_decl_err.vv b/vlib/v/checker/tests/generic_interface_method_decl_err.vv index 3da9361b7f5bc1..fdb8793d925176 100644 --- a/vlib/v/checker/tests/generic_interface_method_decl_err.vv +++ b/vlib/v/checker/tests/generic_interface_method_decl_err.vv @@ -1,8 +1,8 @@ -interface Expr { - accept(v Visitor) R +interface Expr[R] { + accept[R](v Visitor[R]) R } -interface Visitor { +interface Visitor[R] { } fn main() { diff --git a/vlib/v/checker/tests/generics_fn_arguments_count_err.out b/vlib/v/checker/tests/generics_fn_arguments_count_err.out index 752bd5dbdb889a..944e1c9111fe6a 100644 --- a/vlib/v/checker/tests/generics_fn_arguments_count_err.out +++ b/vlib/v/checker/tests/generics_fn_arguments_count_err.out @@ -1,67 +1,67 @@ vlib/v/checker/tests/generics_fn_arguments_count_err.vv:12:18: error: expected 2 generic parameters, got 1 10 | 11 | fn main() { - 12 | ret1 := get_name(11, 22) + 12 | ret1 := get_name[int](11, 22) | ~~~~~ 13 | println(ret1) 14 | vlib/v/checker/tests/generics_fn_arguments_count_err.vv:15:18: error: expected 2 generic parameters, got 3 13 | println(ret1) 14 | - 15 | ret2 := get_name(11, 22, 'hello') + 15 | ret2 := get_name[int, int, string](11, 22, 'hello') | ~~~~~~~~~~~~~~~~~~ 16 | println(ret2) 17 | vlib/v/checker/tests/generics_fn_arguments_count_err.vv:15:45: error: expected 2 arguments, but got 3 13 | println(ret1) 14 | - 15 | ret2 := get_name(11, 22, 'hello') + 15 | ret2 := get_name[int, int, string](11, 22, 'hello') | ~~~~~~~ 16 | println(ret2) 17 | vlib/v/checker/tests/generics_fn_arguments_count_err.vv:19:22: error: expected 2 generic parameters, got 1 17 | 18 | foo := Foo{} - 19 | ret3 := foo.get_name(11, 22) + 19 | ret3 := foo.get_name[int](11, 22) | ~~~~~ 20 | println(ret3) 21 | vlib/v/checker/tests/generics_fn_arguments_count_err.vv:22:22: error: expected 2 generic parameters, got 3 20 | println(ret3) 21 | - 22 | ret4 := foo.get_name(11, 22, 'hello') + 22 | ret4 := foo.get_name[int, int, string](11, 22, 'hello') | ~~~~~~~~~~~~~~~~~~ 23 | println(ret4) 24 | } vlib/v/checker/tests/generics_fn_arguments_count_err.vv:22:49: error: expected 2 arguments, but got 3 20 | println(ret3) 21 | - 22 | ret4 := foo.get_name(11, 22, 'hello') + 22 | ret4 := foo.get_name[int, int, string](11, 22, 'hello') | ~~~~~~~ 23 | println(ret4) 24 | } vlib/v/checker/tests/generics_fn_arguments_count_err.vv:2:11: error: no known default format for type `A` - 1 | fn get_name(a A, b B) string { + 1 | fn get_name[A, B](a A, b B) string { 2 | return '$a, $b' | ^ 3 | } 4 | vlib/v/checker/tests/generics_fn_arguments_count_err.vv:2:15: error: no known default format for type `B` - 1 | fn get_name(a A, b B) string { + 1 | fn get_name[A, B](a A, b B) string { 2 | return '$a, $b' | ^ 3 | } 4 | vlib/v/checker/tests/generics_fn_arguments_count_err.vv:8:11: error: no known default format for type `A` 6 | - 7 | fn (f Foo) get_name(a A, b B) string { + 7 | fn (f Foo) get_name[A, B](a A, b B) string { 8 | return '$a, $b' | ^ 9 | } 10 | vlib/v/checker/tests/generics_fn_arguments_count_err.vv:8:15: error: no known default format for type `B` 6 | - 7 | fn (f Foo) get_name(a A, b B) string { + 7 | fn (f Foo) get_name[A, B](a A, b B) string { 8 | return '$a, $b' | ^ 9 | } diff --git a/vlib/v/checker/tests/generics_fn_arguments_count_err.vv b/vlib/v/checker/tests/generics_fn_arguments_count_err.vv index 2eeba8ebe5ffe4..b1a856c6245718 100644 --- a/vlib/v/checker/tests/generics_fn_arguments_count_err.vv +++ b/vlib/v/checker/tests/generics_fn_arguments_count_err.vv @@ -1,24 +1,24 @@ -fn get_name(a A, b B) string { +fn get_name[A, B](a A, b B) string { return '$a, $b' } struct Foo {} -fn (f Foo) get_name(a A, b B) string { +fn (f Foo) get_name[A, B](a A, b B) string { return '$a, $b' } fn main() { - ret1 := get_name(11, 22) + ret1 := get_name[int](11, 22) println(ret1) - ret2 := get_name(11, 22, 'hello') + ret2 := get_name[int, int, string](11, 22, 'hello') println(ret2) foo := Foo{} - ret3 := foo.get_name(11, 22) + ret3 := foo.get_name[int](11, 22) println(ret3) - ret4 := foo.get_name(11, 22, 'hello') + ret4 := foo.get_name[int, int, string](11, 22, 'hello') println(ret4) } diff --git a/vlib/v/checker/tests/generics_inst_non_generic_struct_err.out b/vlib/v/checker/tests/generics_inst_non_generic_struct_err.out index 51e73e1f989d59..10607265dd0b71 100644 --- a/vlib/v/checker/tests/generics_inst_non_generic_struct_err.out +++ b/vlib/v/checker/tests/generics_inst_non_generic_struct_err.out @@ -1,6 +1,6 @@ vlib/v/checker/tests/generics_inst_non_generic_struct_err.vv:5:14: error: struct `Test` is not a generic struct, cannot instantiate to the concrete types 3 | 4 | fn main() { - 5 | println(Test{}) + 5 | println(Test[string]{}) | ~~~~~~~~ 6 | } diff --git a/vlib/v/checker/tests/generics_inst_non_generic_struct_err.vv b/vlib/v/checker/tests/generics_inst_non_generic_struct_err.vv index 6647877d21017e..eecaef388978eb 100644 --- a/vlib/v/checker/tests/generics_inst_non_generic_struct_err.vv +++ b/vlib/v/checker/tests/generics_inst_non_generic_struct_err.vv @@ -2,5 +2,5 @@ struct Test { } fn main() { - println(Test{}) + println(Test[string]{}) } diff --git a/vlib/v/checker/tests/generics_interface_declaration_err.out b/vlib/v/checker/tests/generics_interface_declaration_err.out index b2a509fbcd5f36..e9c377b1b6023e 100644 --- a/vlib/v/checker/tests/generics_interface_declaration_err.out +++ b/vlib/v/checker/tests/generics_interface_declaration_err.out @@ -1,5 +1,5 @@ vlib/v/checker/tests/generics_interface_declaration_err.vv:1:1: error: generic interface `Expr` declaration must specify the generic type names, e.g. Expr[T] 1 | interface Expr { | ~~~~~~~~~~~~~~~~ - 2 | accept(v Visitor) R + 2 | accept(v Visitor[R]) R 3 | } diff --git a/vlib/v/checker/tests/generics_interface_declaration_err.vv b/vlib/v/checker/tests/generics_interface_declaration_err.vv index a73e949bd60cdc..457e7fd0b288e1 100644 --- a/vlib/v/checker/tests/generics_interface_declaration_err.vv +++ b/vlib/v/checker/tests/generics_interface_declaration_err.vv @@ -1,8 +1,8 @@ interface Expr { - accept(v Visitor) R + accept(v Visitor[R]) R } -interface Visitor { +interface Visitor[R] { } fn main() { diff --git a/vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.out b/vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.out index 0c2c68e5ebab8b..c0c75b371e1b21 100644 --- a/vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.out +++ b/vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.out @@ -1,7 +1,7 @@ vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.vv:4:15: error: a non generic function called like a generic one 2 | 3 | fn main() { - 4 | x := math.sin(1.0) + 4 | x := math.sin[f64](1.0) | ~~~~~ 5 | println(x) 6 | } diff --git a/vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.vv b/vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.vv index d25ddd1bc61045..f56070963c8135 100644 --- a/vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.vv +++ b/vlib/v/checker/tests/generics_non_generic_fn_called_like_a_generic_one.vv @@ -1,6 +1,6 @@ import math fn main() { - x := math.sin(1.0) + x := math.sin[f64](1.0) println(x) } diff --git a/vlib/v/checker/tests/generics_struct_field_fn_args_err.out b/vlib/v/checker/tests/generics_struct_field_fn_args_err.out index 73614ee61859d1..d5e31a54a7db37 100644 --- a/vlib/v/checker/tests/generics_struct_field_fn_args_err.out +++ b/vlib/v/checker/tests/generics_struct_field_fn_args_err.out @@ -11,7 +11,7 @@ vlib/v/checker/tests/generics_struct_field_fn_args_err.vv:22:20: error: expected 22 | println(fun0.call(1234, 5678)) | ~~~~~~~~~~ 23 | - 24 | fun1 := Fun{ + 24 | fun1 := Fun[fn (int) int]{ vlib/v/checker/tests/generics_struct_field_fn_args_err.vv:29:15: error: expected 1 arguments, but got 0 27 | 28 | println(fun1.call(42)) diff --git a/vlib/v/checker/tests/generics_struct_field_fn_args_err.vv b/vlib/v/checker/tests/generics_struct_field_fn_args_err.vv index b6a994370ed672..ee5ab4d2acdc8f 100644 --- a/vlib/v/checker/tests/generics_struct_field_fn_args_err.vv +++ b/vlib/v/checker/tests/generics_struct_field_fn_args_err.vv @@ -6,7 +6,7 @@ fn dub_int(i int) int { return i * 2 } -struct Fun { +struct Fun[F] { mut: call F } @@ -14,14 +14,14 @@ mut: type FunZero = fn () int fn main() { - fun0 := Fun{ + fun0 := Fun[FunZero]{ call: get_int } println(fun0.call()) println(fun0.call(1234)) println(fun0.call(1234, 5678)) - fun1 := Fun{ + fun1 := Fun[fn (int) int]{ call: dub_int } diff --git a/vlib/v/checker/tests/generics_struct_init_type_parameter_err.out b/vlib/v/checker/tests/generics_struct_init_type_parameter_err.out index 9076777f5129ef..8e565c69deb2cb 100644 --- a/vlib/v/checker/tests/generics_struct_init_type_parameter_err.out +++ b/vlib/v/checker/tests/generics_struct_init_type_parameter_err.out @@ -1,14 +1,14 @@ vlib/v/checker/tests/generics_struct_init_type_parameter_err.vv:6:9: error: generic struct init type parameter `U` must be within the parameters `(A,B)` of the current generic function 4 | - 5 | fn send_1(res A, b B) string { - 6 | msg := Response{ + 5 | fn send_1[A, B](res A, b B) string { + 6 | msg := Response[U]{ | ~~~~~~~~~~~~ 7 | result: res 8 | } vlib/v/checker/tests/generics_struct_init_type_parameter_err.vv:14:9: error: generic struct init expects 1 generic parameter, but got 2 12 | - 13 | fn send_2(res A, b B) string { - 14 | msg := Response{ + 13 | fn send_2[A, B](res A, b B) string { + 14 | msg := Response[A, B]{ | ~~~~~~~~~~~~~~~ 15 | result: res 16 | } diff --git a/vlib/v/checker/tests/generics_struct_init_type_parameter_err.vv b/vlib/v/checker/tests/generics_struct_init_type_parameter_err.vv index 61a36c893587ec..0ed4311ea6572a 100644 --- a/vlib/v/checker/tests/generics_struct_init_type_parameter_err.vv +++ b/vlib/v/checker/tests/generics_struct_init_type_parameter_err.vv @@ -1,17 +1,17 @@ -struct Response { +struct Response[U] { result U } -fn send_1(res A, b B) string { - msg := Response{ +fn send_1[A, B](res A, b B) string { + msg := Response[U]{ result: res } println(b) return '$msg' } -fn send_2(res A, b B) string { - msg := Response{ +fn send_2[A, B](res A, b B) string { + msg := Response[A, B]{ result: res } println(b) diff --git a/vlib/v/checker/tests/vweb_routing_checks.vv b/vlib/v/checker/tests/vweb_routing_checks.vv index df187592d26b5f..5989a7d50bb535 100644 --- a/vlib/v/checker/tests/vweb_routing_checks.vv +++ b/vlib/v/checker/tests/vweb_routing_checks.vv @@ -40,5 +40,5 @@ pub fn (mut app App) index() { fn main() { port := 8181 - vweb.run(&App{}, port) + vweb.run[App](&App{}, port) } diff --git a/vlib/v/checker/tests/vweb_tmpl_used_var.vv b/vlib/v/checker/tests/vweb_tmpl_used_var.vv index 13cdbec9f94ff4..e15ec4b536aae3 100644 --- a/vlib/v/checker/tests/vweb_tmpl_used_var.vv +++ b/vlib/v/checker/tests/vweb_tmpl_used_var.vv @@ -10,5 +10,5 @@ pub fn (mut app App) index() vweb.Result { } fn main() { - vweb.run(&App{}, 8181) + vweb.run[App](&App{}, 8181) }