summaryrefslogtreecommitdiffstats
path: root/php-jsonlint-php71.patch
blob: a1a4dc2c9016157dd81055b64a29bfdc3151cd59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
From d73abd9196d739099a26c4daf6dc4eb094824db5 Mon Sep 17 00:00:00 2001
From: Remi Collet <fedora@famillecollet.com>
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(