mirror of
https://github.com/vlang/v.git
synced 2025-09-15 10:27:19 -04:00
This commit is contained in:
parent
423a94aa58
commit
18f89991ef
@ -9,6 +9,7 @@ import v.util
|
||||
import v.token
|
||||
|
||||
const maximum_inline_sum_type_variants = 3
|
||||
const generic_type_level_cutoff_limit = 10 // it is very rarely deeper than 4
|
||||
|
||||
fn (mut p Parser) parse_array_type(expecting token.Kind, is_option bool) ast.Type {
|
||||
p.check(expecting)
|
||||
@ -866,6 +867,14 @@ fn (mut p Parser) parse_generic_type(name string) ast.Type {
|
||||
}
|
||||
|
||||
fn (mut p Parser) parse_generic_inst_type(name string) ast.Type {
|
||||
p.generic_type_level++
|
||||
defer {
|
||||
p.generic_type_level--
|
||||
}
|
||||
if p.generic_type_level > parser.generic_type_level_cutoff_limit {
|
||||
p.error('too many levels of Parser.parse_generic_inst_type() calls: ${p.generic_type_level}, probably due to too many layers embedded generic type')
|
||||
return ast.void_type
|
||||
}
|
||||
mut bs_name := name
|
||||
mut bs_cname := name
|
||||
start_pos := p.tok.pos()
|
||||
|
@ -105,6 +105,7 @@ mut:
|
||||
left_comments []ast.Comment
|
||||
script_mode bool
|
||||
script_mode_start_token token.Token
|
||||
generic_type_level int // to avoid infinite recursion segfaults due to compiler bugs in ensure_type_exists
|
||||
pub mut:
|
||||
scanner &scanner.Scanner = unsafe { nil }
|
||||
table &ast.Table = unsafe { nil }
|
||||
|
441
vlib/v/parser/testdata/silent/radamsa_too_many_nested_generic_types_vfmt_off.vv
vendored
Normal file
441
vlib/v/parser/testdata/silent/radamsa_too_many_nested_generic_types_vfmt_off.vv
vendored
Normal file
@ -0,0 +1,441 @@
|
||||
println('Hello, Worllo, Worintln('Hello, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, World!')<
|
||||
o, Wprld<
|
||||
o, WprldWorld!')<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
orld!')<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
@ -0,0 +1,7 @@
|
||||
vlib/v/parser/tests/too_many_layers_embedded_generic_type_err.vv:11:9: error: too many levels of Parser.parse_generic_inst_type() calls: 11, probably due to too many layers embedded generic type
|
||||
9 | o, Wprld<
|
||||
10 | o, Wprld<
|
||||
11 | o, Wprld<
|
||||
| ^
|
||||
12 | o, Wprld<
|
||||
13 | o, Wprld<
|
@ -0,0 +1,95 @@
|
||||
Hello, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
||||
o, Wprld<
|
Loading…
x
Reference in New Issue
Block a user