Skip to content

Commit be6a048

Browse files
Update constant_fold.py
1 parent a595e4a commit be6a048

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

mypyc/irbuild/constant_fold.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
UnaryExpr,
3030
Var,
3131
)
32-
from mypy.types import LiteralType, TupleType
32+
from mypy.types import LiteralType, TupleType, get_proper_type
3333
from mypyc.irbuild.builder import IRBuilder
3434
from mypyc.irbuild.util import bytes_from_str
3535

@@ -91,12 +91,13 @@ def constant_fold_expr(builder: IRBuilder, expr: Expression) -> ConstantValue |
9191
isinstance(item, str) for item in folded_items
9292
):
9393
return folded_callee.join(folded_items) # type: ignore [arg-type]
94-
expr_type = builder.types[arg]
95-
if isinstance(expr_type, TupleType) and all(
96-
isinstance(i, LiteralType) and isinstance(i.value, str)
97-
for i in expr_type.items
98-
):
99-
return folded_callee.join(i.value for i in expr_type.items) # type: ignore [attr-defined]
94+
if expr_type := builder.types.get(arg):
95+
proper_type = get_proper_type(expr_type)
96+
if isinstance(proper_type, TupleType) and all(
97+
isinstance(i, LiteralType) and isinstance(i.value, str)
98+
for i in proper_type.items
99+
):
100+
return folded_callee.join(i.value for i in proper_type.items) # type: ignore [attr-defined]
100101

101102
# builtins.bytes methods
102103
elif isinstance(folded_callee, bytes):

0 commit comments

Comments
 (0)