parser: panic and exit count as returns
							parent
							
								
									fbc480fbed
								
							
						
					
					
						commit
						6a9bda806f
					
				| 
						 | 
				
			
			@ -1130,6 +1130,10 @@ fn (p mut Parser) statement(add_semi bool) string {
 | 
			
		|||
			p.js_decode()
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			// panic and exit count as returns since they stop the function
 | 
			
		||||
			if p.lit == 'panic' || p.lit == 'exit' {
 | 
			
		||||
				p.returns = true
 | 
			
		||||
			}
 | 
			
		||||
			// `a + 3`, `a(7)` or maybe just `a` 
 | 
			
		||||
			q = p.bool_expression()
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -2945,11 +2949,17 @@ fn (p mut Parser) if_st(is_expr bool, elif_depth int) string {
 | 
			
		|||
		if p.tok == .key_if {
 | 
			
		||||
			if is_expr {
 | 
			
		||||
				p.gen(') : (')
 | 
			
		||||
				return p.if_st(is_expr, elif_depth + 1)
 | 
			
		||||
				nested := p.if_st(is_expr, elif_depth + 1)
 | 
			
		||||
				nested_returns := p.returns
 | 
			
		||||
				p.returns = if_returns && nested_returns
 | 
			
		||||
				return nested
 | 
			
		||||
			}
 | 
			
		||||
			else {
 | 
			
		||||
				p.gen(' else ')
 | 
			
		||||
				return p.if_st(is_expr, 0)
 | 
			
		||||
				nested := p.if_st(is_expr, 0)
 | 
			
		||||
				nested_returns := p.returns
 | 
			
		||||
				p.returns = if_returns && nested_returns
 | 
			
		||||
				return nested
 | 
			
		||||
			}
 | 
			
		||||
			// return ''
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -2966,10 +2976,10 @@ fn (p mut Parser) if_st(is_expr bool, elif_depth int) string {
 | 
			
		|||
		if is_expr {
 | 
			
		||||
			p.gen(strings.repeat(`)`, elif_depth + 1))
 | 
			
		||||
		}
 | 
			
		||||
		return typ
 | 
			
		||||
	}
 | 
			
		||||
		else_returns := p.returns
 | 
			
		||||
		p.returns = if_returns && else_returns
 | 
			
		||||
		return typ
 | 
			
		||||
	}
 | 
			
		||||
	p.inside_if_expr = false
 | 
			
		||||
	if p.fileis('test_test') {
 | 
			
		||||
		println('if ret typ="$typ" line=$p.scanner.line_nr')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue