From fab70ba24b1eba4742c0b79720c1a62d6009ee51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C5=91=20Tisza?= Date: Sun, 31 May 2020 00:02:03 +0200 Subject: [PATCH] resourceloader: Mention ECMAScript version in JS parse error ResourceLoader requires user scripts to be valid ES5. Browsers have implemented most of the ES6 spec by now, with some of the ES6 features actually having been around for a long time now. As such, parse errors for otherwise valid ES6 scripts, from the POV of the script author (which can include people editing their user scripts), this error message can be inscrutable. Try to make it more explicit. Change-Id: I20a6c705ac44c2c41b11e4a8f16675592b6d8a87 --- includes/resourceloader/ResourceLoaderModule.php | 6 +++--- .../includes/resourceloader/ResourceLoaderModuleTest.php | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/includes/resourceloader/ResourceLoaderModule.php b/includes/resourceloader/ResourceLoaderModule.php index 2fc3f52de90..b46c913a29d 100644 --- a/includes/resourceloader/ResourceLoaderModule.php +++ b/includes/resourceloader/ResourceLoaderModule.php @@ -938,9 +938,9 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface { // By returning this as replacement for the actual script, // we ensure modules are safe to load in a batch request, // without causing other unrelated modules to break. - return 'mw.log.error(' . - Xml::encodeJsVar( 'JavaScript parse error: ' . $err->getMessage() ) . - ');'; + return 'mw.log.error(' . Xml::encodeJsVar( + 'JavaScript parse error (scripts need to be valid ECMAScript 5): ' . + $err->getMessage() ) . ');'; } return $contents; } diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php index 09577e91888..0915f40b8df 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php @@ -92,8 +92,8 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase { ] ); $this->assertEquals( 'mw.log.error(' . - '"JavaScript parse error: Parse error: Unexpected token; ' . - 'token } expected in file \'input\' on line 3"' . + '"JavaScript parse error (scripts need to be valid ECMAScript 5): ' . + 'Parse error: Unexpected token; token } expected in file \'input\' on line 3"' . ');', $module->getScript( $context ), 'Replace invalid syntax with error logging'