// Copyright 2022 Mathias Bynens. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
author: Mathias Bynens
esid: prod-PrivateIdentifier
description: |
  Test that Unicode v12.0.0 ID_Continue characters are accepted as
  identifier part characters in escaped form, i.e.
  - \uXXXX or \u{XXXX} for BMP symbols
  - \u{XXXXXX} for astral symbols
  in private class fields.
info: |
  Generated by https://github.com/mathiasbynens/caniunicode
features: [class, class-fields-private]
---*/

class _ {
  #_\u0EBA\u{119D1}\u{119D2}\u{119D3}\u{119D4}\u{119D5}\u{119D6}\u{119D7}\u{119DA}\u{119DB}\u{119DC}\u{119DD}\u{119DE}\u{119DF}\u{119E0}\u{119E4}\u{16F4F}\u{16F7F}\u{16F80}\u{16F81}\u{16F82}\u{16F83}\u{16F84}\u{16F85}\u{16F86}\u{16F87}\u{1E130}\u{1E131}\u{1E132}\u{1E133}\u{1E134}\u{1E135}\u{1E136}\u{1E140}\u{1E141}\u{1E142}\u{1E143}\u{1E144}\u{1E145}\u{1E146}\u{1E147}\u{1E148}\u{1E149}\u{1E2EC}\u{1E2ED}\u{1E2EE}\u{1E2EF}\u{1E2F0}\u{1E2F1}\u{1E2F2}\u{1E2F3}\u{1E2F4}\u{1E2F5}\u{1E2F6}\u{1E2F7}\u{1E2F8}\u{1E2F9};
};
