Skip to content

Commit 34d9790

Browse files
authored
parser: disallow generic function to be exported (fix #25794) (#25806)
1 parent 0c7de2e commit 34d9790

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

vlib/v/parser/fn.v

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,14 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
473473
}
474474
}
475475
}
476+
if generic_names.len > 0 {
477+
for fna in fn_attrs {
478+
if fna.name == 'export' {
479+
p.error_with_pos('generic functions cannot be exported', fna.pos)
480+
break
481+
}
482+
}
483+
}
476484
// Params
477485
params_t, are_params_type_only, mut is_variadic, mut is_c_variadic := p.fn_params()
478486
if is_c2v_variadic {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
vlib/v/parser/tests/generic_fn_export_err.vv:1:1: error: generic functions cannot be exported
2+
1 | @[export: "sort_array"]
3+
| ~~~~~~~~~~~~~~~~~~~~~~~
4+
2 | pub fn sort_array[T](mut arr []T) {
5+
3 | arr.sort(|a, b| a < b)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@[export: "sort_array"]
2+
pub fn sort_array[T](mut arr []T) {
3+
arr.sort(|a, b| a < b)
4+
}

0 commit comments

Comments
 (0)