[TASK] Inform user if TS condition does not make sense 36/56836/3
authorMarkus Klein <markus.klein@typo3.org>
Wed, 2 May 2018 22:23:05 +0000 (00:23 +0200)
committerMarkus Klein <markus.klein@typo3.org>
Thu, 3 May 2018 07:41:08 +0000 (09:41 +0200)
Empty conditions `[]` always evaluate to false. Warn the user
if such a condition is present.

Resolves: #84911
Releases: master, 8.7
Change-Id: I499e64aad30e29fe3698c40fed57e1f1c87ce885
Reviewed-on: https://review.typo3.org/56836
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/core/Classes/TypoScript/Parser/TypoScriptParser.php
typo3/sysext/core/Tests/Unit/TypoScript/Parser/TypoScriptParserTest.php

index 8c71b26..ba9edb3 100644 (file)
@@ -237,6 +237,10 @@ class TypoScriptParser
                 $this->error('Breakpoint at ' . ($this->lineNumberOffset + $this->rawP - 2) . ': Line content was "' . $this->raw[$this->rawP - 2] . '"', 1);
                 break;
             }
+            if ($pre === '[]') {
+                $this->error('Empty condition is always false, this does not make sense. At line ' . ($this->lineNumberOffset + $this->rawP - 1), 2);
+                break;
+            }
             $preUppercase = strtoupper($pre);
             if ($pre[0] === '[' &&
                 ($preUppercase === '[GLOBAL]' ||
index 2e72196..2e46483 100644 (file)
@@ -274,6 +274,17 @@ class TypoScriptParserTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCas
     }
 
     /**
+     * @test
+     */
+    public function emptyConditionIsReported()
+    {
+        $typoScript = '[]';
+        $this->typoScriptParser->parse($typoScript);
+        $expected = 'Empty condition is always false, this does not make sense. At line 0';
+        $this->assertEquals($expected, $this->typoScriptParser->errors[0][0]);
+    }
+
+    /**
      * @return array
      */
     public function doubleSlashCommentsDataProvider()