compiler: blank ident - consolidate duplicated code into single function
							parent
							
								
									8a31ee4b53
								
							
						
					
					
						commit
						f7c00b8180
					
				| 
						 | 
					@ -185,7 +185,7 @@ fn (p mut Parser) chash() {
 | 
				
			||||||
			flag = flag.replace('@VROOT', p.vroot)
 | 
								flag = flag.replace('@VROOT', p.vroot)
 | 
				
			||||||
			flag = flag.replace('@VMOD', v_modules_path)
 | 
								flag = flag.replace('@VMOD', v_modules_path)
 | 
				
			||||||
			//p.log('adding flag "$flag"')
 | 
								//p.log('adding flag "$flag"')
 | 
				
			||||||
			_p := p.table.parse_cflag(flag, p.mod) or {
 | 
								_ = p.table.parse_cflag(flag, p.mod) or {
 | 
				
			||||||
				p.error_with_token_index(err, p.cur_tok_index()-1)
 | 
									p.error_with_token_index(err, p.cur_tok_index()-1)
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,21 +93,11 @@ fn (p mut Parser) gen_blank_identifier_assign() {
 | 
				
			||||||
	p.check_name()
 | 
						p.check_name()
 | 
				
			||||||
	p.check_space(.assign)
 | 
						p.check_space(.assign)
 | 
				
			||||||
	is_indexer := p.peek() == .lsbr
 | 
						is_indexer := p.peek() == .lsbr
 | 
				
			||||||
	mut expr := p.lit
 | 
						is_fn_call, next_expr := p.is_next_expr_fn_call()
 | 
				
			||||||
	mut is_fn_call := p.peek() == .lpar 
 | 
					 | 
				
			||||||
	if !is_fn_call {
 | 
					 | 
				
			||||||
		mut i := p.token_idx+1
 | 
					 | 
				
			||||||
		for (p.tokens[i].tok == .dot || p.tokens[i].tok == .name) &&
 | 
					 | 
				
			||||||
			p.tokens[i].lit != '_' {
 | 
					 | 
				
			||||||
			expr += if p.tokens[i].tok == .dot { '.' } else { p.tokens[i].lit }
 | 
					 | 
				
			||||||
			i++
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		is_fn_call = p.tokens[i].tok == .lpar
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	pos := p.cgen.add_placeholder()
 | 
						pos := p.cgen.add_placeholder()
 | 
				
			||||||
	mut typ := p.bool_expression()
 | 
						mut typ := p.bool_expression()
 | 
				
			||||||
	if !is_indexer && !is_fn_call {
 | 
						if !is_indexer && !is_fn_call {
 | 
				
			||||||
		p.error_with_token_index('assigning `$expr` to `_` is redundant', assign_error_tok_idx)
 | 
							p.error_with_token_index('assigning `$next_expr` to `_` is redundant', assign_error_tok_idx)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	tmp := p.get_tmp()
 | 
						tmp := p.get_tmp()
 | 
				
			||||||
	// handle or
 | 
						// handle or
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,20 +39,10 @@ fn (p mut Parser) gen_blank_identifier_assign() {
 | 
				
			||||||
	p.check_name()
 | 
						p.check_name()
 | 
				
			||||||
	p.check_space(.assign)
 | 
						p.check_space(.assign)
 | 
				
			||||||
	is_indexer := p.peek() == .lsbr
 | 
						is_indexer := p.peek() == .lsbr
 | 
				
			||||||
	mut expr := p.lit
 | 
						is_fn_call, next_expr := p.is_next_expr_fn_call()
 | 
				
			||||||
	mut is_fn_call := p.peek() == .lpar 
 | 
					 | 
				
			||||||
	if !is_fn_call {
 | 
					 | 
				
			||||||
		mut i := p.token_idx+1
 | 
					 | 
				
			||||||
		for (p.tokens[i].tok == .dot || p.tokens[i].tok == .name) &&
 | 
					 | 
				
			||||||
			p.tokens[i].lit != '_' {
 | 
					 | 
				
			||||||
			expr += if p.tokens[i].tok == .dot { '.' } else { p.tokens[i].lit }
 | 
					 | 
				
			||||||
			i++
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		is_fn_call = p.tokens[i].tok == .lpar
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	p.bool_expression()
 | 
						p.bool_expression()
 | 
				
			||||||
	if !is_indexer && !is_fn_call {
 | 
						if !is_indexer && !is_fn_call {
 | 
				
			||||||
		p.error_with_token_index('assigning `$expr` to `_` is redundant', assign_error_tok_idx)
 | 
							p.error_with_token_index('assigning `$next_expr` to `_` is redundant', assign_error_tok_idx)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	or_else := p.tok == .key_orelse
 | 
						or_else := p.tok == .key_orelse
 | 
				
			||||||
	//tmp := p.get_tmp()
 | 
						//tmp := p.get_tmp()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4209,3 +4209,18 @@ fn (p mut Parser) check_unused_imports() {
 | 
				
			||||||
	 // the imports are usually at the start of the file
 | 
						 // the imports are usually at the start of the file
 | 
				
			||||||
	p.production_error_with_token_index( 'the following imports were never used: $output', 0 )
 | 
						p.production_error_with_token_index( 'the following imports were never used: $output', 0 )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn (p mut Parser) is_next_expr_fn_call() (bool, string) {
 | 
				
			||||||
 | 
						mut next_expr := p.lit
 | 
				
			||||||
 | 
						mut is_fn_call := p.peek() == .lpar 
 | 
				
			||||||
 | 
						if !is_fn_call {
 | 
				
			||||||
 | 
							mut i := p.token_idx+1
 | 
				
			||||||
 | 
							for (p.tokens[i].tok == .dot || p.tokens[i].tok == .name) &&
 | 
				
			||||||
 | 
								p.tokens[i].lit != '_' && i < p.tokens.len {
 | 
				
			||||||
 | 
								next_expr += if p.tokens[i].tok == .dot { '.' } else { p.tokens[i].lit }
 | 
				
			||||||
 | 
								i++
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							is_fn_call = p.tokens[i].tok == .lpar
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return is_fn_call, next_expr
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue