[PY-27601] Updated fix for "Too few arguments for format string"

There are two important changes:

Based on the implementation at https://github.com/python/cpython/blob/master/Objects/stringlib/unicode_format.h#L82 I have added two new warning messages to PyStringFormatInspection, which detect changes between manual and automatic field numbering.

I have also fixed the way PySubstitutionChunkReference uses myPosition
field to refer to the correct positional argument. It uses the explicitly specified position, if present, or the auto-numbered one otherwise. I have tried to fix all the visible regressions introduced by this change.
This commit is contained in:
Andrei-Silviu DRAGNEA (24887)
2018-04-24 19:12:36 +03:00
committed by Valentina Kiryushkina
parent 9a52af5553
commit 2a37853de1
10 changed files with 76 additions and 20 deletions
@@ -0,0 +1 @@
<warning descr="Cannot switch from automatic field numbering to manual field specification">'{} {1}'</warning>.format(6, 7)
@@ -0,0 +1 @@
<warning descr="Cannot switch from manual field specification to automatic field numbering">'{1} {}'</warning>.format(6, 7)
@@ -1 +1,2 @@
'{a} {}'.format(6, a=2)
x = '{a} {}'.format(6, a=2)
print("{} {other} {}".format("one", "two", other="OTHER"))