diff --git a/TwigCS/src/Report/TextFormatter.php b/TwigCS/src/Report/TextFormatter.php index e066ea8..f2c2f28 100644 --- a/TwigCS/src/Report/TextFormatter.php +++ b/TwigCS/src/Report/TextFormatter.php @@ -104,13 +104,13 @@ public function display(Report $report, string $level = null): void } /** - * @param string $template - * @param int $line - * @param int $context + * @param string $template + * @param int|null $line + * @param int $context * * @return array */ - protected function getContext(string $template, int $line, int $context): array + protected function getContext(string $template, ?int $line, int $context): array { $lines = explode("\n", $template); diff --git a/TwigCS/src/Runner/Fixer.php b/TwigCS/src/Runner/Fixer.php index c39cfc3..b66c01f 100644 --- a/TwigCS/src/Runner/Fixer.php +++ b/TwigCS/src/Runner/Fixer.php @@ -145,7 +145,7 @@ public function fixFile(string $file): bool try { $twigSource = new Source($contents, 'TwigCS'); $stream = $this->tokenizer->tokenize($twigSource); - } catch (Exception $e) { + } catch (Exception $exception) { return false; } diff --git a/TwigCS/src/Runner/Linter.php b/TwigCS/src/Runner/Linter.php index a563e4d..26d8ff6 100644 --- a/TwigCS/src/Runner/Linter.php +++ b/TwigCS/src/Runner/Linter.php @@ -140,10 +140,10 @@ protected function processTemplate(string $file, Ruleset $ruleset, Report $repor // Tokenizer. try { $stream = $this->tokenizer->tokenize($twigSource); - } catch (Exception $e) { + } catch (Exception $exception) { $sniffViolation = new SniffViolation( Report::MESSAGE_TYPE_FATAL, - sprintf('Unable to tokenize file: %s', $e->getMessage()), + sprintf('Unable to tokenize file: %s', $exception->getMessage()), $file ); diff --git a/TwigCS/src/Token/Tokenizer.php b/TwigCS/src/Token/Tokenizer.php index c9239dc..6631c79 100644 --- a/TwigCS/src/Token/Tokenizer.php +++ b/TwigCS/src/Token/Tokenizer.php @@ -705,6 +705,11 @@ protected function lexPunctuation(): void array_pop($this->bracketsAndTernary); $lastBracket = end($this->bracketsAndTernary); } while ('?' === $lastBracket[0]); + + // This is maybe the end of the variable, start again. + $this->lexVariable(); + + return; } } diff --git a/TwigCS/tests/Ruleset/AbstractSniffTest.php b/TwigCS/tests/Ruleset/AbstractSniffTest.php index cdb58e1..4d5d310 100644 --- a/TwigCS/tests/Ruleset/AbstractSniffTest.php +++ b/TwigCS/tests/Ruleset/AbstractSniffTest.php @@ -49,8 +49,8 @@ protected function checkSniff(SniffInterface $sniff, array $expects): void $ruleset->addSniff($sniff); $report = $linter->run([$file], $ruleset); - } catch (Exception $e) { - self::fail($e->getMessage()); + } catch (Exception $exception) { + self::fail($exception->getMessage()); return; } diff --git a/TwigCS/tests/Token/Tokenizer/TokenizerTest.php b/TwigCS/tests/Token/Tokenizer/TokenizerTest.php index ccd58c8..4e01343 100644 --- a/TwigCS/tests/Token/Tokenizer/TokenizerTest.php +++ b/TwigCS/tests/Token/Tokenizer/TokenizerTest.php @@ -175,7 +175,17 @@ public function tokenizeDataProvider(): array 75 => Token::WHITESPACE_TYPE, 76 => Token::BLOCK_END_TYPE, 77 => Token::EOL_TYPE, - 78 => Token::EOF_TYPE, + 78 => Token::VAR_START_TYPE, + 79 => Token::WHITESPACE_TYPE, + 80 => Token::NAME_TYPE, + 81 => Token::WHITESPACE_TYPE, + 82 => Token::OPERATOR_TYPE, + 83 => Token::WHITESPACE_TYPE, + 84 => Token::STRING_TYPE, + 85 => Token::WHITESPACE_TYPE, + 86 => Token::VAR_END_TYPE, + 87 => Token::EOL_TYPE, + 88 => Token::EOF_TYPE, ], ], [ diff --git a/TwigCS/tests/Token/Tokenizer/TokenizerTest3.twig b/TwigCS/tests/Token/Tokenizer/TokenizerTest3.twig index 4c76576..2baa9b6 100644 --- a/TwigCS/tests/Token/Tokenizer/TokenizerTest3.twig +++ b/TwigCS/tests/Token/Tokenizer/TokenizerTest3.twig @@ -2,3 +2,4 @@ {{ bar ? 'string' : "string#" }} {{ baz ?: { a:[1, 2] } }} {% set a={foo: bar ? baz ? 1, test: 1} %} +{{ a ? ',' }}