Strict mode Failing
Expected no error, got SyntaxError: Invalid expression encountered
non-Strict mode Failing
Expected no error, got SyntaxError: Invalid expression encountered
Features:
- ∅
Expected no error, got SyntaxError: Invalid expression encountered
Expected no error, got SyntaxError: Invalid expression encountered
// Copyright (C) 2016 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-runtime-semantics-classdefinitionevaluation description: > Creation of new lexical environment for the class "name" (without a heritage) info: | 1. Let lex be the LexicalEnvironment of the running execution context. 2. Let classScope be NewDeclarativeEnvironment(lex). 3. Let classScopeEnvRec be classScope's EnvironmentRecord. 4. If className is not undefined, then a. Perform classScopeEnvRec.CreateImmutableBinding(className, true). 5. If ClassHeritageopt is not present, then [...] 6. Else, a. Set the running execution context's LexicalEnvironment to classScope. [...] 11. Set the running execution context's LexicalEnvironment to classScope. ---*/ var probeBefore = function() { return C; }; var C = 'outside'; var cls = class C { probe() { return C; } modify() { C = null; } }; assert.sameValue(probeBefore(), 'outside'); assert.sameValue(cls.prototype.probe(), cls, 'inner binding value'); assert.throws( TypeError, cls.prototype.modify, 'inner binding rejects modification' ); assert.sameValue(cls.prototype.probe(), cls, 'inner binding is immutable');