v8/test/cctest/interpreter
Nicolò Ribaudo b3b9466a05 [class] Improve errors for reinitialized private elements
Previously V8 was reusing the error fur duplicate declarations, using
the private name for class fields or the class name for class methods
as the redeclared identifier.

    class A { constructor(o) { return o } }
    class B extends A { #x }
    class C extends A { #x() {} }
    let D = (0, class extends A { #x() {} });

    new B(new B({})) // Identifier '#x' has already been declared
    new C(new C({})) // Identifier 'C' has already been declared
    new D(new D({})) // Identifier '' has already been declared

This patch changes it to use error messages that better explain what's
happening:

    new B(new B({})) // Cannot initialize #x twice on the same object
    new C(new C({})) // Cannot initialize private methods of
                     // class C twice on the same object
    new D(new D({})) // Cannot initialize private methods of
                     // class anonymous twice on the same object

I initially tried to use the same message for both fields and methods,
but the problem with that is that when initializing fields we only
have access to the field name, while when initializing methods we only
have access to the class name (using the "private brand" symbol).
However, almost all the error messages are different for private fields
and for methods so this shouldn't be a problem.

Bug: v8:12042
Change-Id: Iaa50c16e4fa5c0646ad9ef2aa7e65bb649b3fce2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3078362
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Joyee Cheung <joyee@igalia.com>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#76279}
2021-08-13 10:04:36 +00:00
..
bytecode_expectations [class] Improve errors for reinitialized private elements 2021-08-13 10:04:36 +00:00
bytecode-expectations-printer.cc Remove one-shot function optimizations. 2021-05-21 12:38:18 +00:00
bytecode-expectations-printer.h Remove one-shot function optimizations. 2021-05-21 12:38:18 +00:00
generate-bytecode-expectations.cc Remove windows.h from win32-headers.h 2021-08-03 16:07:16 +00:00
interpreter-tester.cc [runtime] Move string table off-heap 2020-08-06 12:27:18 +00:00
interpreter-tester.h [cleanup] Remove DISALLOW_COPY_AND_ASSIGN in test/{cctest,fuzzer,inspector} 2020-11-10 01:24:43 +00:00
source-position-matcher.cc Fix most instances of -Wunreachable-code-aggressive. 2021-07-01 03:03:25 +00:00
source-position-matcher.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-bytecode-generator.cc Remove one-shot function optimizations. 2021-05-21 12:38:18 +00:00
test-interpreter-intrinsics.cc [interpreter] Remove %_Call 2021-06-17 15:16:41 +00:00
test-interpreter.cc [interpreter] Remove unused interpreter intrinsics 2021-06-17 13:43:41 +00:00
test-source-positions.cc [TurboFan] Templatize GetBytecodeArray 2020-12-17 16:46:53 +00:00