From 5d1f1c5fa8848e406f3bc1d66a79fd9f1e819bba Mon Sep 17 00:00:00 2001 From: Evan Lucas Date: Thu, 29 Oct 2015 11:22:00 -0500 Subject: [PATCH] src: wrap source before doing syntax check This is to ensure that it is evaluated the same way it would be if it were to be run by node or required. Before, the following would pass if run by node, but fail if run via the syntax check flag: if (true) { return; } Now, this will pass the syntax check PR-URL: https://github.com/nodejs/node/pull/3587 Reviewed-By: Ben Noordhuis Reviewed-By: Sakthipriyan Vairamani --- src/node.js | 2 ++ test/fixtures/syntax/illegal_if_not_wrapped.js | 3 +++ test/parallel/test-cli-syntax.js | 1 + 3 files changed, 6 insertions(+) create mode 100644 test/fixtures/syntax/illegal_if_not_wrapped.js diff --git a/src/node.js b/src/node.js index 7cfd2c035962a6..1aa489b79dee6d 100644 --- a/src/node.js +++ b/src/node.js @@ -104,6 +104,8 @@ var source = fs.readFileSync(filename, 'utf-8'); // remove shebang and BOM source = internalModule.stripBOM(source.replace(/^\#\!.*/, '')); + // wrap it + source = Module.wrap(source); // compile the script, this will throw if it fails new vm.Script(source, {filename: filename, displayErrors: true}); process.exit(0); diff --git a/test/fixtures/syntax/illegal_if_not_wrapped.js b/test/fixtures/syntax/illegal_if_not_wrapped.js new file mode 100644 index 00000000000000..d76a836c882b23 --- /dev/null +++ b/test/fixtures/syntax/illegal_if_not_wrapped.js @@ -0,0 +1,3 @@ +if (true) { + return; +} diff --git a/test/parallel/test-cli-syntax.js b/test/parallel/test-cli-syntax.js index 20fdfdc995acbb..1118a63934d747 100644 --- a/test/parallel/test-cli-syntax.js +++ b/test/parallel/test-cli-syntax.js @@ -20,6 +20,7 @@ var syntaxArgs = [ 'syntax/good_syntax', 'syntax/good_syntax_shebang.js', 'syntax/good_syntax_shebang', + 'syntax/illegal_if_not_wrapped.js' ].forEach(function(file) { file = path.join(common.fixturesDir, file);