mirror of
https://github.com/vlang/v.git
synced 2025-08-03 17:57:59 -04:00
cgen: cleanup comptime checks (#23372)
This commit is contained in:
parent
495adc9cee
commit
43d679b1b9
@ -372,7 +372,7 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
|
|||||||
g.assign_ct_type = var_type
|
g.assign_ct_type = var_type
|
||||||
}
|
}
|
||||||
} else if val is ast.InfixExpr && val.op in [.plus, .minus, .mul, .div, .mod]
|
} else if val is ast.InfixExpr && val.op in [.plus, .minus, .mul, .div, .mod]
|
||||||
&& g.comptime.is_comptime(val.left) {
|
&& val.left_ct_expr {
|
||||||
ctyp := g.unwrap_generic(g.type_resolver.get_type(val.left))
|
ctyp := g.unwrap_generic(g.type_resolver.get_type(val.left))
|
||||||
if ctyp != ast.void_type {
|
if ctyp != ast.void_type {
|
||||||
ct_type_var := g.comptime.get_ct_type_var(val.left)
|
ct_type_var := g.comptime.get_ct_type_var(val.left)
|
||||||
|
@ -231,7 +231,6 @@ fn (mut g Gen) str_val(node ast.StringInterLiteral, i int, fmts []u8) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn (mut g Gen) string_inter_literal(node ast.StringInterLiteral) {
|
fn (mut g Gen) string_inter_literal(node ast.StringInterLiteral) {
|
||||||
// fn (mut g Gen) str_int2(node ast.StringInterLiteral) {
|
|
||||||
inside_interface_deref_old := g.inside_interface_deref
|
inside_interface_deref_old := g.inside_interface_deref
|
||||||
g.inside_interface_deref = true
|
g.inside_interface_deref = true
|
||||||
defer {
|
defer {
|
||||||
|
@ -17,10 +17,10 @@ pub fn (mut ct TypeResolver) unwrap_generic_expr(expr ast.Expr, default_typ ast.
|
|||||||
return expr.typ
|
return expr.typ
|
||||||
}
|
}
|
||||||
ast.InfixExpr {
|
ast.InfixExpr {
|
||||||
if ct.info.is_comptime(expr.left) {
|
if expr.left_ct_expr {
|
||||||
return ct.resolver.unwrap_generic(ct.get_type(expr.left))
|
return ct.resolver.unwrap_generic(ct.get_type(expr.left))
|
||||||
}
|
}
|
||||||
if ct.info.is_comptime(expr.right) {
|
if expr.right_ct_expr {
|
||||||
return ct.resolver.unwrap_generic(ct.get_type(expr.right))
|
return ct.resolver.unwrap_generic(ct.get_type(expr.right))
|
||||||
}
|
}
|
||||||
return default_typ
|
return default_typ
|
||||||
|
@ -207,12 +207,13 @@ pub fn (mut t TypeResolver) get_type(node ast.Expr) ast.Type {
|
|||||||
} else if node is ast.ParExpr && t.info.is_comptime(node.expr) {
|
} else if node is ast.ParExpr && t.info.is_comptime(node.expr) {
|
||||||
return t.get_type(node.expr)
|
return t.get_type(node.expr)
|
||||||
} else if node is ast.InfixExpr {
|
} else if node is ast.InfixExpr {
|
||||||
if !node.left.is_literal() && t.info.is_comptime(node.left) {
|
if node.left_ct_expr {
|
||||||
return t.get_type(node.left)
|
return t.get_type(node.left)
|
||||||
} else if !node.right.is_literal() && t.info.is_comptime(node.right) {
|
} else if node.right_ct_expr {
|
||||||
return t.get_type(node.right)
|
return t.get_type(node.right)
|
||||||
}
|
}
|
||||||
} else if node is ast.CastExpr && node.typ.has_flag(.generic) {
|
} else if node is ast.CastExpr && node.typ.has_flag(.generic) {
|
||||||
|
// T(expr)
|
||||||
return t.resolver.unwrap_generic(node.typ)
|
return t.resolver.unwrap_generic(node.typ)
|
||||||
}
|
}
|
||||||
return ast.void_type
|
return ast.void_type
|
||||||
|
Loading…
x
Reference in New Issue
Block a user