From 70fa9845a17b308fa5b9b88b9befa5243a3c7ef3 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Thu, 2 Oct 2025 02:27:18 -0400 Subject: [PATCH 1/3] [mypyc] feat: add CastExpr support to `constant_fold_expr` --- mypy/constant_fold.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mypy/constant_fold.py b/mypy/constant_fold.py index 4582b2a7396d..7709debb4f57 100644 --- a/mypy/constant_fold.py +++ b/mypy/constant_fold.py @@ -8,6 +8,7 @@ from typing import Final, Union from mypy.nodes import ( + CastExpr, ComplexExpr, Expression, FloatExpr, @@ -73,6 +74,8 @@ def constant_fold_expr(expr: Expression, cur_mod_id: str) -> ConstantValue | Non value = constant_fold_expr(expr.expr, cur_mod_id) if value is not None: return constant_fold_unary_op(expr.op, value) + elif isinstance(expr, CastExpr): + return constant_fold_expr(expr.expr, cur_mod_id) return None From 2d177e973ec31be9daf873b76454460feafdf668 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Thu, 2 Oct 2025 02:29:57 -0400 Subject: [PATCH 2/3] Update constant_fold.py --- mypyc/irbuild/constant_fold.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mypyc/irbuild/constant_fold.py b/mypyc/irbuild/constant_fold.py index 12a4b15dd40c..73eb5777cbeb 100644 --- a/mypyc/irbuild/constant_fold.py +++ b/mypyc/irbuild/constant_fold.py @@ -15,6 +15,7 @@ from mypy.constant_fold import constant_fold_binary_op, constant_fold_unary_op from mypy.nodes import ( BytesExpr, + CastExpr, ComplexExpr, Expression, FloatExpr, @@ -72,6 +73,8 @@ def constant_fold_expr(builder: IRBuilder, expr: Expression) -> ConstantValue | value = constant_fold_expr(builder, expr.expr) if value is not None and not isinstance(value, bytes): return constant_fold_unary_op(expr.op, value) + elif isinstance(expr, CastExpr): + return constant_fold_expr(builder, expr.expr) return None From a8f50cef0eb899217083db83ece1506506337f78 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Fri, 3 Oct 2025 17:44:42 -0400 Subject: [PATCH 3/3] Update expression.py --- mypyc/irbuild/expression.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mypyc/irbuild/expression.py b/mypyc/irbuild/expression.py index 59ecc4ac2c5c..7d278a3bee02 100644 --- a/mypyc/irbuild/expression.py +++ b/mypyc/irbuild/expression.py @@ -518,6 +518,7 @@ def translate_super_method_call(builder: IRBuilder, expr: CallExpr, callee: Supe return builder.builder.call(decl, arg_values, arg_kinds, arg_names, expr.line) +@folding_candidate def translate_cast_expr(builder: IRBuilder, expr: CastExpr) -> Value: src = builder.accept(expr.expr) target_type = builder.type_to_rtype(expr.type)