From 88d5aacf23a5551f5556ab16c452b6cd469d5430 Mon Sep 17 00:00:00 2001 From: BobTheBuidler Date: Thu, 2 Oct 2025 01:00:38 +0000 Subject: [PATCH 1/3] [mypyc] feat: support constant folding in `MessageBuilder.incompatible_argument` --- mypy/messages.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mypy/messages.py b/mypy/messages.py index 6329cad687f6..c850cd90d9fe 100644 --- a/mypy/messages.py +++ b/mypy/messages.py @@ -808,10 +808,10 @@ def incompatible_argument( ) arg_label = f'"{arg_name}"' if isinstance(outer_context, IndexExpr) and isinstance( - outer_context.index, StrExpr + index := constant_fold_expr(outer_context.index, "unused"), str ): msg = 'Value of "{}" has incompatible type {}; expected {}'.format( - outer_context.index.value, + index, quote_type_string(arg_type_str), quote_type_string(expected_type_str), ) From a2605ad95f9059ad08f54054f4f1e35495bf91a2 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 01:09:59 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- mypy/messages.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mypy/messages.py b/mypy/messages.py index c850cd90d9fe..535041fcd0de 100644 --- a/mypy/messages.py +++ b/mypy/messages.py @@ -50,7 +50,6 @@ MypyFile, NameExpr, ReturnStmt, - StrExpr, SymbolNode, SymbolTable, TypeInfo, From 175d5d46b8643e07219145339241b717ce14c196 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 1 Oct 2025 21:14:08 -0400 Subject: [PATCH 3/3] Update messages.py --- mypy/messages.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mypy/messages.py b/mypy/messages.py index 535041fcd0de..9b683143d68a 100644 --- a/mypy/messages.py +++ b/mypy/messages.py @@ -21,6 +21,7 @@ import mypy.typeops from mypy import errorcodes as codes, message_registry +from mypy.constant_fold import constant_fold_expr from mypy.erasetype import erase_type from mypy.errorcodes import ErrorCode from mypy.errors import ( @@ -807,7 +808,7 @@ def incompatible_argument( ) arg_label = f'"{arg_name}"' if isinstance(outer_context, IndexExpr) and isinstance( - index := constant_fold_expr(outer_context.index, "unused"), str + index := constant_fold_expr(outer_context.index, ""), str ): msg = 'Value of "{}" has incompatible type {}; expected {}'.format( index,