From fe6412d90bb1cf33b3d6eefa66e7c1d7ea9fe7d0 Mon Sep 17 00:00:00 2001 From: BobTheBuidler Date: Thu, 2 Oct 2025 01:04:22 +0000 Subject: [PATCH] [mypyc] feat: support constant folding in `ExpressionChecker.visit_typeddict_index_expr` --- mypy/checkexpr.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mypy/checkexpr.py b/mypy/checkexpr.py index 73282c94be4e..4f5650eb8a79 100644 --- a/mypy/checkexpr.py +++ b/mypy/checkexpr.py @@ -18,6 +18,7 @@ from mypy.checker_shared import ExpressionCheckerSharedApi from mypy.checkmember import analyze_member_access, has_operator from mypy.checkstrformat import StringFormatterChecker +from mypy.constant_fold import constant_fold_expr from mypy.erasetype import erase_type, remove_instance_last_known_values, replace_meta_vars from mypy.errors import ErrorInfo, ErrorWatcher, report_internal_error from mypy.expandtype import ( @@ -4620,8 +4621,8 @@ def union_tuple_fallback_item(self, left_type: TupleType) -> Type: def visit_typeddict_index_expr( self, td_type: TypedDictType, index: Expression, setitem: bool = False ) -> tuple[Type, set[str]]: - if isinstance(index, StrExpr): - key_names = [index.value] + if isinstance(folded_index := constant_fold_expr(index, "unused"), str): + key_names = [folded_index] else: typ = get_proper_type(self.accept(index)) if isinstance(typ, UnionType):