// Copyright (C) 2018 Leo Balter. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- path: language/statements/class/elements/syntax/early-errors/invalid-names/method-heritage- name: > Invalid private names should throw a SyntaxError, method in class declaration features: [class, class-fields-private] esid: sec-static-semantics-early-errors info: | ScriptBody:StatementList It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. ModuleBody:ModuleItemList It is a Syntax Error if AllPrivateNamesValid of ModuleItemList with an empty List as an argument is false. Static Semantics: AllPrivateNamesValid ClassBody : ClassElementList 1. Let newNames be the concatenation of names with PrivateBoundNames of ClassBody. 2. Return AllPrivateNamesValid of ClassElementList with the argument newNames. For all other grammatical productions, recurse on subexpressions/substatements, passing in the names of the caller. If all pieces return true, then return true. If any returns false, return false. negative: phase: parse type: SyntaxError ---*/ $DONOTEVALUATE(); class Parent { #x = 42; } class C extends Parent { m() { /*{ body }*/ } }