Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / nikic / php-parser / test_old / run.php
index bc14d893a7e100f87fd2f9af7ee2f5f2ab02aab6..2d7cdaccb6e973c94a777f4857fd80b3c685b724 100644 (file)
@@ -110,17 +110,24 @@ switch ($testType) {
         showHelp('Test type must be one of: PHP5, PHP7 or Symfony');
 }
 
-require_once dirname(__FILE__) . '/../lib/PhpParser/Autoloader.php';
-PhpParser\Autoloader::register();
-
-$parserName    = 'PhpParser\Parser\\' . $version;
-$parser        = new $parserName(new PhpParser\Lexer\Emulative);
+require_once __DIR__ . '/../vendor/autoload.php';
+
+$lexer = new PhpParser\Lexer\Emulative(['usedAttributes' => [
+    'comments', 'startLine', 'endLine', 'startTokenPos', 'endTokenPos',
+]]);
+$parserName = 'PhpParser\Parser\\' . $version;
+/** @var PhpParser\Parser $parser */
+$parser = new $parserName($lexer);
 $prettyPrinter = new PhpParser\PrettyPrinter\Standard;
-$nodeDumper    = new PhpParser\NodeDumper;
+$nodeDumper = new PhpParser\NodeDumper;
+
+$cloningTraverser = new PhpParser\NodeTraverser;
+$cloningTraverser->addVisitor(new PhpParser\NodeVisitor\CloningVisitor);
 
-$parseFail = $ppFail = $compareFail = $count = 0;
+$parseFail = $fpppFail = $ppFail = $compareFail = $count = 0;
 
-$readTime = $parseTime = $ppTime = $reparseTime = $compareTime = 0;
+$readTime = $parseTime = $cloneTime = 0;
+$fpppTime = $ppTime = $reparseTime = $compareTime = 0;
 $totalStartTime = microtime(true);
 
 foreach (new RecursiveIteratorIterator(
@@ -132,10 +139,10 @@ foreach (new RecursiveIteratorIterator(
     }
 
     $startTime = microtime(true);
-    $code = file_get_contents($file);
+    $origCode = file_get_contents($file);
     $readTime += microtime(true) - $startTime;
 
-    if (null === $code = $codeExtractor($file, $code)) {
+    if (null === $origCode = $codeExtractor($file, $origCode)) {
         continue;
     }
 
@@ -149,11 +156,30 @@ foreach (new RecursiveIteratorIterator(
 
     try {
         $startTime = microtime(true);
-        $stmts = $parser->parse($code);
+        $origStmts = $parser->parse($origCode);
         $parseTime += microtime(true) - $startTime;
 
+        $origTokens = $lexer->getTokens();
+
         $startTime = microtime(true);
-        $code = '<?php' . "\n" . $prettyPrinter->prettyPrint($stmts);
+        $stmts = $cloningTraverser->traverse($origStmts);
+        $cloneTime += microtime(true) - $startTime;
+
+        $startTime = microtime(true);
+        $code = $prettyPrinter->printFormatPreserving($stmts, $origStmts, $origTokens);
+        $fpppTime += microtime(true) - $startTime;
+
+        if ($code !== $origCode) {
+            echo $file, ":\n Result of format-preserving pretty-print differs\n";
+            if ($verbose) {
+                echo "FPPP output:\n=====\n$code\n=====\n\n";
+            }
+
+            ++$fpppFail;
+        }
+
+        $startTime = microtime(true);
+        $code = "<?php\n" . $prettyPrinter->prettyPrint($stmts);
         $ppTime += microtime(true) - $startTime;
 
         try {
@@ -200,6 +226,9 @@ if (0 === $parseFail && 0 === $ppFail && 0 === $compareFail) {
     if (0 !== $ppFail) {
         echo '    ', $ppFail,      ' pretty print failures.', "\n";
     }
+    if (0 !== $fpppFail) {
+        echo '    ', $fpppFail,      ' FPPP failures.', "\n";
+    }
     if (0 !== $compareFail) {
         echo '    ', $compareFail, ' compare failures.',      "\n";
     }
@@ -210,6 +239,8 @@ echo "\n",
      "\n",
      'Reading files took:   ', $readTime,    "\n",
      'Parsing took:         ', $parseTime,   "\n",
+     'Cloning took:         ', $cloneTime,   "\n",
+     'FPPP took:            ', $fpppTime,    "\n",
      'Pretty printing took: ', $ppTime,      "\n",
      'Reparsing took:       ', $reparseTime, "\n",
      'Comparing took:       ', $compareTime, "\n",