1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

v: simplify handling of function generic parameters (#9673)

This commit is contained in:
yuyi
2021-04-11 14:02:57 +08:00
committed by GitHub
parent 78c6e35bde
commit a2a18ef92c
7 changed files with 26 additions and 38 deletions

View File

@@ -274,7 +274,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
}
}
// <T>
generic_params := p.parse_generic_params()
generic_names := p.parse_generic_names()
// Args
args2, are_args_type_only, is_variadic := p.fn_args()
params << args2
@@ -338,7 +338,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
params: params
return_type: return_type
is_variadic: is_variadic
generic_names: generic_params.map(it.name)
generic_names: generic_names
is_pub: is_pub
is_deprecated: is_deprecated
is_unsafe: is_unsafe
@@ -367,7 +367,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
params: params
return_type: return_type
is_variadic: is_variadic
generic_names: generic_params.map(it.name)
generic_names: generic_names
is_pub: is_pub
is_deprecated: is_deprecated
is_unsafe: is_unsafe
@@ -422,7 +422,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
name: rec.name
typ: rec.typ
}
generic_params: generic_params
generic_names: generic_names
receiver_pos: rec.pos
is_method: is_method
method_type_pos: rec.type_pos
@@ -517,10 +517,10 @@ fn (mut p Parser) fn_receiver(mut params []ast.Param, mut rec ReceiverParsingInf
return
}
fn (mut p Parser) parse_generic_params() []ast.GenericParam {
fn (mut p Parser) parse_generic_names() []string {
mut param_names := []string{}
if p.tok.kind != .lt {
return []ast.GenericParam{}
return param_names
}
p.check(.lt)
mut first_done := false
@@ -551,7 +551,7 @@ fn (mut p Parser) parse_generic_params() []ast.GenericParam {
count++
}
p.check(.gt)
return param_names.map(ast.GenericParam{it})
return param_names
}
// is_generic_name returns true if the current token is a generic name.