optional-chain-async-optional-chain-square-brackets.js 873 B

12345678910111213141516171819202122232425262728
  1. // Copyright 2019 Google, Inc. All rights reserved.
  2. // This code is governed by the BSD license found in the LICENSE file.
  3. /*---
  4. esid: prod-OptionalExpression
  5. description: >
  6. optional chain expansions in an async context
  7. info: |
  8. Left-Hand-Side Expressions
  9. OptionalExpression
  10. MemberExpression [PrimaryExpression Identifier] OptionalChain
  11. OptionalChain OptionalChain ?.[Expression]
  12. features: [optional-chaining]
  13. flags: [async]
  14. ---*/
  15. async function checkAssertions() {
  16. assert.sameValue(await {a: [11]}?.a[0], 11);
  17. const b = {c: [22, 33]};
  18. assert.sameValue(b?.c[await Promise.resolve(1)], 33);
  19. function e(val) {
  20. return val;
  21. }
  22. assert.sameValue({d: e}?.d(await Promise.resolve([44, 55]))[1], 55);
  23. assert.sameValue(undefined?.arr[
  24. await Promise.reject(new Error('unreachable'))
  25. ], undefined);
  26. }
  27. checkAssertions().then($DONE, $DONE);