scope: remove redundant name arg from register() (#7077)
							parent
							
								
									f8af866f76
								
							
						
					
					
						commit
						2691163a7e
					
				| 
						 | 
				
			
			@ -121,7 +121,14 @@ pub fn (mut s Scope) register_struct_field(field ScopeStructField) {
 | 
			
		|||
	s.struct_fields << field
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn (mut s Scope) register(name string, obj ScopeObject) {
 | 
			
		||||
pub fn (mut s Scope) register(obj ScopeObject) {
 | 
			
		||||
	name := if obj is ConstField {
 | 
			
		||||
		obj.name
 | 
			
		||||
	} else if obj is GlobalField {
 | 
			
		||||
		obj.name
 | 
			
		||||
	} else {
 | 
			
		||||
		(obj as Var).name
 | 
			
		||||
	}
 | 
			
		||||
	if name == '_' {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2278,7 +2278,7 @@ pub fn (mut c Checker) assign_stmt(mut assign_stmt ast.AssignStmt) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
fn scope_register_it(mut s ast.Scope, pos token.Position, typ table.Type) {
 | 
			
		||||
	s.register('it', ast.Var{
 | 
			
		||||
	s.register(ast.Var{
 | 
			
		||||
		name: 'it'
 | 
			
		||||
		pos: pos
 | 
			
		||||
		typ: typ
 | 
			
		||||
| 
						 | 
				
			
			@ -2287,13 +2287,13 @@ fn scope_register_it(mut s ast.Scope, pos token.Position, typ table.Type) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
fn scope_register_ab(mut s ast.Scope, pos token.Position, typ table.Type) {
 | 
			
		||||
	s.register('a', ast.Var{
 | 
			
		||||
	s.register(ast.Var{
 | 
			
		||||
		name: 'a'
 | 
			
		||||
		pos: pos
 | 
			
		||||
		typ: typ
 | 
			
		||||
		is_used: true
 | 
			
		||||
	})
 | 
			
		||||
	s.register('b', ast.Var{
 | 
			
		||||
	s.register(ast.Var{
 | 
			
		||||
		name: 'b'
 | 
			
		||||
		pos: pos
 | 
			
		||||
		typ: typ
 | 
			
		||||
| 
						 | 
				
			
			@ -3624,7 +3624,7 @@ fn (mut c Checker) match_exprs(mut node ast.MatchExpr, type_sym table.TypeSymbol
 | 
			
		|||
						// smartcast either if the value is immutable or if the mut argument is explicitly given
 | 
			
		||||
						if (!is_mut || node.cond.is_mut) && !is_already_casted {
 | 
			
		||||
							sum_type_casts << expr_type
 | 
			
		||||
							scope.register(node.cond.name, ast.Var{
 | 
			
		||||
							scope.register(ast.Var{
 | 
			
		||||
								name: node.cond.name
 | 
			
		||||
								typ: node.cond_type
 | 
			
		||||
								pos: node.cond.pos
 | 
			
		||||
| 
						 | 
				
			
			@ -3862,7 +3862,7 @@ pub fn (mut c Checker) if_expr(mut node ast.IfExpr) table.Type {
 | 
			
		|||
									// smartcast either if the value is immutable or if the mut argument is explicitly given
 | 
			
		||||
									if !is_mut || infix.left.is_mut {
 | 
			
		||||
										sum_type_casts << right_expr.typ
 | 
			
		||||
										scope.register(infix.left.name, ast.Var{
 | 
			
		||||
										scope.register(ast.Var{
 | 
			
		||||
											name: infix.left.name
 | 
			
		||||
											typ: infix.left_type
 | 
			
		||||
											sum_type_casts: sum_type_casts
 | 
			
		||||
| 
						 | 
				
			
			@ -3872,7 +3872,7 @@ pub fn (mut c Checker) if_expr(mut node ast.IfExpr) table.Type {
 | 
			
		|||
										})
 | 
			
		||||
									}
 | 
			
		||||
								} else if left_sym.kind == .interface_ {
 | 
			
		||||
									scope.register(infix.left.name, ast.Var{
 | 
			
		||||
									scope.register(ast.Var{
 | 
			
		||||
										name: infix.left.name
 | 
			
		||||
										typ: right_expr.typ.to_ptr()
 | 
			
		||||
										sum_type_casts: sum_type_casts
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -649,7 +649,7 @@ fn (mut g Gen) autofree_call_pregen(node ast.CallExpr) {
 | 
			
		|||
			}
 | 
			
		||||
			s = '$t = '
 | 
			
		||||
		} else {
 | 
			
		||||
			scope.register(t, ast.Var{
 | 
			
		||||
			scope.register(ast.Var{
 | 
			
		||||
				name: t
 | 
			
		||||
				typ: table.string_type // is_arg: true // TODO hack so that it's not freed twice when out of scope. it's probably better to use one model
 | 
			
		||||
				is_autofree_tmp: true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -140,7 +140,7 @@ fn (mut p Parser) partial_assign_stmt(left []ast.Expr, left_comments []ast.Comme
 | 
			
		|||
					}
 | 
			
		||||
					obj := ast.ScopeObject(v)
 | 
			
		||||
					lx.obj = obj
 | 
			
		||||
					p.scope.register(lx.name, obj)
 | 
			
		||||
					p.scope.register(obj)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			ast.IndexExpr {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ fn (mut p Parser) vweb() ast.ComptimeCall {
 | 
			
		|||
					if obj is ast.Var {
 | 
			
		||||
						mut v := obj
 | 
			
		||||
						v.pos = stmt.body_pos
 | 
			
		||||
						tmpl_scope.register(v.name, v)
 | 
			
		||||
						tmpl_scope.register(v)
 | 
			
		||||
						// set the controller action var to used
 | 
			
		||||
						// if it's unused in the template it will warn
 | 
			
		||||
						v.is_used = true
 | 
			
		||||
| 
						 | 
				
			
			@ -159,12 +159,12 @@ fn (mut p Parser) comp_for() ast.CompFor {
 | 
			
		|||
	for_val := p.check_name()
 | 
			
		||||
	mut kind := ast.CompForKind.methods
 | 
			
		||||
	if for_val == 'methods' {
 | 
			
		||||
		p.scope.register(val_var, ast.Var{
 | 
			
		||||
		p.scope.register(ast.Var{
 | 
			
		||||
			name: val_var
 | 
			
		||||
			typ: p.table.find_type_idx('FunctionData')
 | 
			
		||||
		})
 | 
			
		||||
	} else if for_val == 'fields' {
 | 
			
		||||
		p.scope.register(val_var, ast.Var{
 | 
			
		||||
		p.scope.register(ast.Var{
 | 
			
		||||
			name: val_var
 | 
			
		||||
			typ: p.table.find_type_idx('FieldData')
 | 
			
		||||
		})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,13 +63,13 @@ pub fn (mut p Parser) call_expr(language table.Language, mod string) ast.CallExp
 | 
			
		|||
		p.inside_or_expr = true
 | 
			
		||||
		p.next()
 | 
			
		||||
		p.open_scope()
 | 
			
		||||
		p.scope.register('err', ast.Var{
 | 
			
		||||
		p.scope.register(ast.Var{
 | 
			
		||||
			name: 'err'
 | 
			
		||||
			typ: table.string_type
 | 
			
		||||
			pos: p.tok.position()
 | 
			
		||||
			is_used: true
 | 
			
		||||
		})
 | 
			
		||||
		p.scope.register('errcode', ast.Var{
 | 
			
		||||
		p.scope.register(ast.Var{
 | 
			
		||||
			name: 'errcode'
 | 
			
		||||
			typ: table.int_type
 | 
			
		||||
			pos: p.tok.position()
 | 
			
		||||
| 
						 | 
				
			
			@ -251,7 +251,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
 | 
			
		|||
				p.error_with_pos('redefinition of parameter `$param.name`', param.pos)
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
			p.scope.register(param.name, ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: param.name
 | 
			
		||||
				typ: param.typ
 | 
			
		||||
				is_mut: param.is_mut
 | 
			
		||||
| 
						 | 
				
			
			@ -370,7 +370,7 @@ fn (mut p Parser) anon_fn() ast.AnonFn {
 | 
			
		|||
	// TODO generics
 | 
			
		||||
	args, _, is_variadic := p.fn_args()
 | 
			
		||||
	for arg in args {
 | 
			
		||||
		p.scope.register(arg.name, ast.Var{
 | 
			
		||||
		p.scope.register(ast.Var{
 | 
			
		||||
			name: arg.name
 | 
			
		||||
			typ: arg.typ
 | 
			
		||||
			is_mut: arg.is_mut
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -94,7 +94,7 @@ fn (mut p Parser) for_stmt() ast.Stmt {
 | 
			
		|||
			if p.scope.known_var(val_var_name) {
 | 
			
		||||
				p.error('redefinition of value iteration variable `$val_var_name`')
 | 
			
		||||
			}
 | 
			
		||||
			p.scope.register(key_var_name, ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: key_var_name
 | 
			
		||||
				typ: table.int_type
 | 
			
		||||
				pos: key_var_pos
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ fn (mut p Parser) for_stmt() ast.Stmt {
 | 
			
		|||
			is_range = true
 | 
			
		||||
			p.next()
 | 
			
		||||
			high_expr = p.expr(0)
 | 
			
		||||
			p.scope.register(val_var_name, ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: val_var_name
 | 
			
		||||
				typ: table.int_type
 | 
			
		||||
				pos: val_var_pos
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ fn (mut p Parser) for_stmt() ast.Stmt {
 | 
			
		|||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			// this type will be set in checker
 | 
			
		||||
			p.scope.register(val_var_name, ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: val_var_name
 | 
			
		||||
				pos: val_var_pos
 | 
			
		||||
				is_mut: val_is_mut
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,13 +45,13 @@ fn (mut p Parser) if_expr(is_comptime bool) ast.IfExpr {
 | 
			
		|||
				// only declare `err` if previous branch was an `if` guard
 | 
			
		||||
				if prev_guard {
 | 
			
		||||
					p.open_scope()
 | 
			
		||||
					p.scope.register('errcode', ast.Var{
 | 
			
		||||
					p.scope.register(ast.Var{
 | 
			
		||||
						name: 'errcode'
 | 
			
		||||
						typ: table.int_type
 | 
			
		||||
						pos: body_pos
 | 
			
		||||
						is_used: true
 | 
			
		||||
					})
 | 
			
		||||
					p.scope.register('err', ast.Var{
 | 
			
		||||
					p.scope.register(ast.Var{
 | 
			
		||||
						name: 'err'
 | 
			
		||||
						typ: table.string_type
 | 
			
		||||
						pos: body_pos
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +100,7 @@ fn (mut p Parser) if_expr(is_comptime bool) ast.IfExpr {
 | 
			
		|||
				var_name: var_name
 | 
			
		||||
				expr: expr
 | 
			
		||||
			}
 | 
			
		||||
			p.scope.register(var_name, ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: var_name
 | 
			
		||||
				expr: cond
 | 
			
		||||
				pos: var_pos
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1276,7 +1276,7 @@ fn (mut p Parser) index_expr(left ast.Expr) ast.IndexExpr {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
fn (mut p Parser) scope_register_it() {
 | 
			
		||||
	p.scope.register('it', ast.Var{
 | 
			
		||||
	p.scope.register(ast.Var{
 | 
			
		||||
		name: 'it'
 | 
			
		||||
		pos: p.tok.position()
 | 
			
		||||
		is_used: true
 | 
			
		||||
| 
						 | 
				
			
			@ -1284,12 +1284,12 @@ fn (mut p Parser) scope_register_it() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
fn (mut p Parser) scope_register_ab() {
 | 
			
		||||
	p.scope.register('a', ast.Var{
 | 
			
		||||
	p.scope.register(ast.Var{
 | 
			
		||||
		name: 'a'
 | 
			
		||||
		pos: p.tok.position()
 | 
			
		||||
		is_used: true
 | 
			
		||||
	})
 | 
			
		||||
	p.scope.register('b', ast.Var{
 | 
			
		||||
	p.scope.register(ast.Var{
 | 
			
		||||
		name: 'b'
 | 
			
		||||
		pos: p.tok.position()
 | 
			
		||||
		is_used: true
 | 
			
		||||
| 
						 | 
				
			
			@ -1328,13 +1328,13 @@ fn (mut p Parser) dot_expr(left ast.Expr) ast.Expr {
 | 
			
		|||
		if p.tok.kind == .key_orelse {
 | 
			
		||||
			p.next()
 | 
			
		||||
			p.open_scope()
 | 
			
		||||
			p.scope.register('errcode', ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: 'errcode'
 | 
			
		||||
				typ: table.int_type
 | 
			
		||||
				pos: p.tok.position()
 | 
			
		||||
				is_used: true
 | 
			
		||||
			})
 | 
			
		||||
			p.scope.register('err', ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: 'err'
 | 
			
		||||
				typ: table.string_type
 | 
			
		||||
				pos: p.tok.position()
 | 
			
		||||
| 
						 | 
				
			
			@ -1746,7 +1746,7 @@ fn (mut p Parser) const_decl() ast.ConstDecl {
 | 
			
		|||
			comments: comments
 | 
			
		||||
		}
 | 
			
		||||
		fields << field
 | 
			
		||||
		p.global_scope.register(field.name, field)
 | 
			
		||||
		p.global_scope.register(field)
 | 
			
		||||
		comments = []
 | 
			
		||||
	}
 | 
			
		||||
	p.top_level_statement_end()
 | 
			
		||||
| 
						 | 
				
			
			@ -1835,7 +1835,7 @@ fn (mut p Parser) global_decl() ast.GlobalDecl {
 | 
			
		|||
			comments: comments
 | 
			
		||||
		}
 | 
			
		||||
		fields << field
 | 
			
		||||
		p.global_scope.register(field.name, field)
 | 
			
		||||
		p.global_scope.register(field)
 | 
			
		||||
		comments = []
 | 
			
		||||
	}
 | 
			
		||||
	p.check(.rpar)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -362,13 +362,13 @@ fn (mut p Parser) prefix_expr() ast.PrefixExpr {
 | 
			
		|||
		if p.tok.kind == .key_orelse {
 | 
			
		||||
			p.next()
 | 
			
		||||
			p.open_scope()
 | 
			
		||||
			p.scope.register('errcode', ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: 'errcode'
 | 
			
		||||
				typ: table.int_type
 | 
			
		||||
				pos: p.tok.position()
 | 
			
		||||
				is_used: true
 | 
			
		||||
			})
 | 
			
		||||
			p.scope.register('err', ast.Var{
 | 
			
		||||
			p.scope.register(ast.Var{
 | 
			
		||||
				name: 'err'
 | 
			
		||||
				typ: table.string_type
 | 
			
		||||
				pos: p.tok.position()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue