From 77de45b0fd3ef5d5235609d9057d7fe3bd18455b Mon Sep 17 00:00:00 2001 From: Valentina Kiryushkina Date: Tue, 18 Oct 2016 16:44:48 +0300 Subject: [PATCH] PY-8325 Do not reset chunk position if it was parsed --- .../python/inspections/PyStringFormatInspection.java | 4 +++- .../PyStringFormatInspection/TooFewMappingKeys.py | 2 ++ .../python/inspections/PyStringFormatInspectionTest.java | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 python/testData/inspections/PyStringFormatInspection/TooFewMappingKeys.py diff --git a/python/src/com/jetbrains/python/inspections/PyStringFormatInspection.java b/python/src/com/jetbrains/python/inspections/PyStringFormatInspection.java index 1a8488a0146c..98f64e4b6a8d 100644 --- a/python/src/com/jetbrains/python/inspections/PyStringFormatInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyStringFormatInspection.java @@ -491,7 +491,9 @@ public class PyStringFormatInspection extends PyInspection { as(chunks.get(i), PyStringFormatParser.NewStyleSubstitutionChunk.class); if (chunk != null) { - chunk.setPosition(i); + if (chunk.getPosition() == null) { + chunk.setPosition(i); + } String mappingKey = inspectNewStyleChunkAndGetMappingKey(chunk); if (!isProblem()) { inspectArguments(chunk, mappingKey); diff --git a/python/testData/inspections/PyStringFormatInspection/TooFewMappingKeys.py b/python/testData/inspections/PyStringFormatInspection/TooFewMappingKeys.py new file mode 100644 index 000000000000..273c0acb0f56 --- /dev/null +++ b/python/testData/inspections/PyStringFormatInspection/TooFewMappingKeys.py @@ -0,0 +1,2 @@ +'Hello, {1}'.format('World') +'Hello, {} {}!'.format('World') \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/inspections/PyStringFormatInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyStringFormatInspectionTest.java index 7fbd033f61ac..6778337d9903 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyStringFormatInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyStringFormatInspectionTest.java @@ -189,6 +189,11 @@ public class PyStringFormatInspectionTest extends PyTestCase { doTest(); } + // PY-8325 + public void testTooFewMappingKeys() { + doTest(); + } + // PY-20599 public void testPy3kAsciiFormatSpecifier() { runWithLanguageLevel(LanguageLevel.PYTHON35, new Runnable() {