PY-20776 Warn expression parts that contain only whitespaces
authorMikhail Golubev <mikhail.golubev@jetbrains.com>
Thu, 22 Sep 2016 12:12:56 +0000 (15:12 +0300)
committerMikhail Golubev <mikhail.golubev@jetbrains.com>
Mon, 26 Sep 2016 06:09:23 +0000 (09:09 +0300)
python/src/com/jetbrains/python/validation/FStringsAnnotator.java
python/testData/highlighting/fStringEmptyExpressions.py

index c9ebf9e44b8587fa9b5b6e1d4fe309a1c1ce6036..fe30e47388ad043ea3841d123053b708e6f4647e 100644 (file)
@@ -17,6 +17,7 @@ package com.jetbrains.python.validation;
 
 import com.intellij.lang.ASTNode;
 import com.intellij.openapi.util.TextRange;
+import com.intellij.util.text.CharArrayUtil;
 import com.jetbrains.python.codeInsight.fstrings.FStringParser;
 import com.jetbrains.python.codeInsight.fstrings.FStringParser.FragmentOffsets;
 import com.jetbrains.python.psi.PyStringLiteralExpression;
@@ -42,7 +43,7 @@ public class FStringsAnnotator extends PyAnnotator {
         boolean hasUnclosedBrace = false;
         for (FragmentOffsets fragment : fragments) {
           final int fragContentEnd = fragment.getContentEndOffset();
-          if (fragment.getLeftBraceOffset() + 1 >= fragContentEnd) {
+          if (CharArrayUtil.isEmptyOrSpaces(nodeText, fragment.getLeftBraceOffset() + 1, fragment.getContentEndOffset())) {
             report(fragment.getContentRange().shiftRight(nodeOffset), "Empty expressions are not allowed inside f-strings");
           }
           if (fragment.getRightBraceOffset() == -1) {
index 4be2144f3450de66bb90b01b80ff83f26bb43bf3..62d62510882f9cd2521dbd34e0c4290ff8ea7796 100644 (file)
@@ -3,4 +3,6 @@ f'{<error descr="Empty expressions are not allowed inside f-strings"></error><er
 <error descr="Missing closing quote [']">f'{<error descr="Empty expressions are not allowed inside f-strings"></error><error descr="'}' is expected"></error></error>
 f'{<error descr="Empty expressions are not allowed inside f-strings"></error>!r}'
 f'{<error descr="Empty expressions are not allowed inside f-strings"></error>:2.3}'
-f'{42:2.{<error descr="Empty expressions are not allowed inside f-strings"></error>}}'
\ No newline at end of file
+f'{42:2.{<error descr="Empty expressions are not allowed inside f-strings"></error>}}'
+f'{<error descr="Empty expressions are not allowed inside f-strings">  </error>}'
+f'{42:{<error descr="Empty expressions are not allowed inside f-strings"> </error>}}'
\ No newline at end of file