cgen: cleanup comptime checks (#23372)

This commit is contained in:
Felipe Pena 2025-01-05 05:04:31 -03:00 committed by GitHub
parent 495adc9cee
commit 43d679b1b9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 6 additions and 6 deletions

View File

@ -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)

View File

@ -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 {

View File

@ -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

View File

@ -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