all: cleanup smartcasts in the compiler (#13639)
							parent
							
								
									4e7db5bab0
								
							
						
					
					
						commit
						288b13b51d
					
				|  | @ -3544,12 +3544,9 @@ pub fn (mut c Checker) prefix_expr(mut node ast.PrefixExpr) ast.Type { | |||
| 		for mut expr is ast.ParExpr { | ||||
| 			expr = expr.expr | ||||
| 		} | ||||
| 		match expr { | ||||
| 			ast.BoolLiteral, ast.CallExpr, ast.CharLiteral, ast.FloatLiteral, ast.IntegerLiteral, | ||||
| 			ast.InfixExpr, ast.StringLiteral, ast.StringInterLiteral { | ||||
| 				c.error('cannot take the address of $expr', node.pos) | ||||
| 			} | ||||
| 			else {} | ||||
| 		if expr in [ast.BoolLiteral, ast.CallExpr, ast.CharLiteral, ast.FloatLiteral, | ||||
| 			ast.IntegerLiteral, ast.InfixExpr, ast.StringLiteral, ast.StringInterLiteral] { | ||||
| 			c.error('cannot take the address of $expr', node.pos) | ||||
| 		} | ||||
| 		if mut node.right is ast.IndexExpr { | ||||
| 			typ_sym := c.table.sym(node.right.left_type) | ||||
|  |  | |||
|  | @ -103,10 +103,9 @@ fn (mut c Checker) for_in_stmt(mut node ast.ForInStmt) { | |||
| 				value_type = value_type.ref() | ||||
| 				match node.cond { | ||||
| 					ast.Ident { | ||||
| 						if node.cond.obj is ast.Var { | ||||
| 							obj := node.cond.obj as ast.Var | ||||
| 							if !obj.is_mut { | ||||
| 								c.error('`$obj.name` is immutable, it cannot be changed', | ||||
| 						if mut node.cond.obj is ast.Var { | ||||
| 							if !node.cond.obj.is_mut { | ||||
| 								c.error('`$node.cond.obj.name` is immutable, it cannot be changed', | ||||
| 									node.cond.pos) | ||||
| 							} | ||||
| 						} | ||||
|  |  | |||
|  | @ -684,10 +684,8 @@ fn (mut g Gen) sql_select(node ast.SqlExpr, expr string, left string) { | |||
| 				name := sel | ||||
| 				s := g.table.find_type_idx('orm.Primitive') | ||||
| 				if s != 0 { | ||||
| 					if ident.info is ast.IdentVar { | ||||
| 						mut info := ident.info as ast.IdentVar | ||||
| 						info.typ = s | ||||
| 						ident.info = info | ||||
| 					if mut ident.info is ast.IdentVar { | ||||
| 						ident.info.typ = s | ||||
| 					} | ||||
| 				} | ||||
| 				ident.name = name | ||||
|  |  | |||
|  | @ -159,10 +159,9 @@ fn (mut p Parser) partial_assign_stmt(left []ast.Expr, left_comments []ast.Comme | |||
| 						return p.error_with_pos('redefinition of `$lx.name`', lx.pos) | ||||
| 					} | ||||
| 					mut share := ast.ShareType(0) | ||||
| 					if lx.info is ast.IdentVar { | ||||
| 						iv := lx.info as ast.IdentVar | ||||
| 						share = iv.share | ||||
| 						if iv.is_static { | ||||
| 					if mut lx.info is ast.IdentVar { | ||||
| 						share = lx.info.share | ||||
| 						if lx.info.is_static { | ||||
| 							if !p.pref.translated && !p.is_translated && !p.pref.is_fmt | ||||
| 								&& !p.inside_unsafe_fn { | ||||
| 								return p.error_with_pos('static variables are supported only in translated mode or in [unsafe] fn', | ||||
|  | @ -170,7 +169,7 @@ fn (mut p Parser) partial_assign_stmt(left []ast.Expr, left_comments []ast.Comme | |||
| 							} | ||||
| 							is_static = true | ||||
| 						} | ||||
| 						if iv.is_volatile { | ||||
| 						if lx.info.is_volatile { | ||||
| 							is_volatile = true | ||||
| 						} | ||||
| 					} | ||||
|  |  | |||
|  | @ -31,17 +31,16 @@ fn (mut p Parser) sql_expr() ast.Expr { | |||
| 		p.next() | ||||
| 		where_expr = p.expr(0) | ||||
| 		// `id == x` means that a single object is returned
 | ||||
| 		if !is_count && where_expr is ast.InfixExpr { | ||||
| 			e := where_expr as ast.InfixExpr | ||||
| 			if e.op == .eq && e.left is ast.Ident { | ||||
| 				if e.left.name == 'id' { | ||||
| 		if !is_count && mut where_expr is ast.InfixExpr { | ||||
| 			if where_expr.op == .eq && mut where_expr.left is ast.Ident { | ||||
| 				if where_expr.left.name == 'id' { | ||||
| 					query_one = true | ||||
| 				} | ||||
| 			} | ||||
| 			if e.right is ast.Ident { | ||||
| 				if !p.scope.known_var(e.right.name) { | ||||
| 					p.check_undefined_variables([e.left], e.right) or { | ||||
| 						return p.error_with_pos(err.msg(), e.right.pos) | ||||
| 			if mut where_expr.right is ast.Ident { | ||||
| 				if !p.scope.known_var(where_expr.right.name) { | ||||
| 					p.check_undefined_variables([where_expr.left], where_expr.right) or { | ||||
| 						return p.error_with_pos(err.msg(), where_expr.right.pos) | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
|  |  | |||
|  | @ -935,8 +935,8 @@ pub fn (mut t Transformer) if_expr(mut node ast.IfExpr) ast.Expr { | |||
| 			stmt = t.stmt(mut stmt) | ||||
| 
 | ||||
| 			if i == branch.stmts.len - 1 { | ||||
| 				if stmt is ast.ExprStmt { | ||||
| 					expr := (stmt as ast.ExprStmt).expr | ||||
| 				if mut stmt is ast.ExprStmt { | ||||
| 					expr := stmt.expr | ||||
| 
 | ||||
| 					match expr { | ||||
| 						ast.IfExpr { | ||||
|  | @ -976,8 +976,8 @@ pub fn (mut t Transformer) match_expr(mut node ast.MatchExpr) ast.Expr { | |||
| 			stmt = t.stmt(mut stmt) | ||||
| 
 | ||||
| 			if i == branch.stmts.len - 1 { | ||||
| 				if stmt is ast.ExprStmt { | ||||
| 					expr := (stmt as ast.ExprStmt).expr | ||||
| 				if mut stmt is ast.ExprStmt { | ||||
| 					expr := stmt.expr | ||||
| 
 | ||||
| 					match expr { | ||||
| 						ast.IfExpr { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue