checker: protect against stackoverflows due to deep expr recursion
parent
30f1c6bad5
commit
99f311cc5f
|
@ -1765,14 +1765,14 @@ pub fn (c &Checker) unwrap_generic(typ table.Type) table.Type {
|
||||||
|
|
||||||
// TODO node must be mut
|
// TODO node must be mut
|
||||||
pub fn (mut c Checker) expr(node ast.Expr) table.Type {
|
pub fn (mut c Checker) expr(node ast.Expr) table.Type {
|
||||||
/*
|
|
||||||
c.expr_level++
|
c.expr_level++
|
||||||
defer { c.expr_level -- }
|
defer { c.expr_level -- }
|
||||||
if c.expr_level > 20 {
|
if c.expr_level > 200 {
|
||||||
c.warn('checker: too many expr levels', node.position())
|
c.error('checker: too many expr levels: $c.expr_level ', node.position())
|
||||||
//panic('checker: too many expr levels')
|
return table.void_type
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
match mut node {
|
match mut node {
|
||||||
ast.AnonFn {
|
ast.AnonFn {
|
||||||
keep_fn := c.cur_fn
|
keep_fn := c.cur_fn
|
||||||
|
|
Loading…
Reference in New Issue