all: cleanup smartcasts in the compiler (#13639)
parent
4e7db5bab0
commit
288b13b51d
|
@ -3544,13 +3544,10 @@ 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 {
|
||||
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)
|
||||
}
|
||||
else {}
|
||||
}
|
||||
if mut node.right is ast.IndexExpr {
|
||||
typ_sym := c.table.sym(node.right.left_type)
|
||||
mut is_mut := false
|
||||
|
|
|
@ -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