From d73abd9196d739099a26c4daf6dc4eb094824db5 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 14 Nov 2016 18:13:11 +0100 Subject: [PATCH] fix for 7.1 (_empty_ no more used) --- src/Seld/JsonLint/JsonParser.php | 12 ++++++++++-- tests/JsonParserTest.php | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Seld/JsonLint/JsonParser.php b/src/Seld/JsonLint/JsonParser.php index acc1868..fc306a5 100644 --- a/src/Seld/JsonLint/JsonParser.php +++ b/src/Seld/JsonLint/JsonParser.php @@ -376,7 +376,11 @@ private function performAction(stdClass $yyval, $yytext, $yyleng, $yylineno, $yy $yyval->token = array($tokens[$len-2], $tokens[$len]); break; case 16: - $property = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; + if (PHP_VERSION_ID < 70100) { + $property = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; + } else { + $property = $tokens[$len][0]; + } if ($this->flags & self::PARSE_TO_ASSOC) { $yyval->token = array(); $yyval->token[$property] = $tokens[$len][1]; @@ -404,7 +408,11 @@ private function performAction(stdClass $yyval, $yytext, $yyleng, $yylineno, $yy $tokens[$len-2][$key] = $tokens[$len][1]; } else { $yyval->token = $tokens[$len-2]; - $key = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; + if (PHP_VERSION_ID < 70100) { + $key = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; + } else { + $key = $tokens[$len][0]; + } if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($tokens[$len-2]->{$key})) { $errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; $errStr .= $this->lexer->showPosition() . "\n"; diff --git a/tests/JsonParserTest.php b/tests/JsonParserTest.php index 1c00ff4..a993d17 100644 --- a/tests/JsonParserTest.php +++ b/tests/JsonParserTest.php @@ -154,6 +154,9 @@ public function testDetectsKeyOverridesWithEmpty() { $parser = new JsonParser(); + if (PHP_VERSION_ID >= 70100) { + $this->markTestSkipped('Only for PHP < 7.1'); + } try { $parser->parse('{"":"b", "_empty_":"a"}', JsonParser::DETECT_KEY_CONFLICTS); $this->fail('Duplicate keys should not be allowed'); @@ -182,6 +185,9 @@ public function testDuplicateKeysWithEmpty() { $parser = new JsonParser(); + if (PHP_VERSION_ID >= 70100) { + $this->markTestSkipped('Only for PHP < 7.1'); + } $result = $parser->parse('{"":"a", "_empty_":"b"}', JsonParser::ALLOW_DUPLICATE_KEYS); $this->assertThat($result, $this->logicalAnd(