src: disable harmony classes
The V8 development branch has unshipped ES6 classes pending resolution of a number of inheritance edge cases. Disable classes in io.js for the sake of feature parity. See https://github.com/iojs/io.js/issues/251 for background and discussion. PR-URL: https://github.com/iojs/io.js/pull/272 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Domenic Denicola <domenic@domenicdenicola.com>
This commit is contained in:
parent
bc629c0c4f
commit
a2751e3e1e
@ -3355,6 +3355,12 @@ void Init(int* argc,
|
||||
DispatchDebugMessagesAsyncCallback);
|
||||
uv_unref(reinterpret_cast<uv_handle_t*>(&dispatch_debug_messages_async));
|
||||
|
||||
// TODO(bnoordhuis) V8 3.32 is unshipping Harmony classes for the moment.
|
||||
// We're currently at 3.31, disable classes for feature parity. Remove
|
||||
// again when we upgrade.
|
||||
V8::SetFlagsFromString("--noharmony_classes",
|
||||
sizeof("--noharmony_classes") - 1);
|
||||
|
||||
#if defined(NODE_V8_OPTIONS)
|
||||
// Should come before the call to V8::SetFlagsFromCommandLine()
|
||||
// so the user can disable a flag --foo at run-time by passing
|
||||
|
21
test/parallel/test-v8-features.js
Normal file
21
test/parallel/test-v8-features.js
Normal file
@ -0,0 +1,21 @@
|
||||
var common = require('../common');
|
||||
var assert = require('assert');
|
||||
var spawnSync = require('child_process').spawnSync;
|
||||
var v8 = require('v8');
|
||||
|
||||
// --harmony_classes implies --harmony_scoping; ensure that scoping still works
|
||||
// when classes are disabled.
|
||||
assert.throws(function() { eval('"use strict"; class C {}'); }, SyntaxError);
|
||||
eval('"use strict"; let x = 42'); // Should not throw.
|
||||
eval('"use strict"; const y = 42'); // Should not throw.
|
||||
|
||||
v8.setFlagsFromString('--harmony_classes');
|
||||
eval('"use strict"; class C {}'); // Should not throw.
|
||||
eval('"use strict"; let x = 42'); // Should not throw.
|
||||
eval('"use strict"; const y = 42'); // Should not throw.
|
||||
|
||||
// Verify that the --harmony_classes flag unlocks classes again.
|
||||
var args = ['--harmony_classes', '--use_strict', '-p', 'class C {}'];
|
||||
var cp = spawnSync(process.execPath, args);
|
||||
assert.equal(cp.status, 0);
|
||||
assert.equal(cp.stdout.toString('utf8').trim(), '[Function: C]');
|
Loading…
x
Reference in New Issue
Block a user