tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

import-meta.js (1354B)


      1 // |reftest| module async
      2 // Copyright (C) 2018 Leo Balter. All rights reserved.
      3 // This code is governed by the BSD license found in the LICENSE file.
      4 /*---
      5 description: >
      6    Dynamic Import receives an AssignmentExpression (ImportMeta)
      7 esid: prod-ImportCall
      8 info: |
      9    ImportCall [Yield]:
     10        import ( AssignmentExpression[+In, ?Yield] )
     11 
     12    Runtime Semantics: Evaluation
     13 
     14    ImportCall : import ( AssignmentExpression )
     15 
     16    ...
     17    5. Let specifierString be ToString(specifier).
     18    6. IfAbruptRejectPromise(specifierString, promiseCapability).
     19 features: [dynamic-import, import.meta]
     20 flags: [module, async]
     21 ---*/
     22 
     23 const p = import(import.meta);
     24 
     25 // We can at least assert p is a promise.
     26 assert.sameValue(Promise.resolve(p), p, 'Assert that p is a promise');
     27 
     28 // The keys of import.meta are implementation defined, but we know its
     29 // [[Prototype]] is null. In this case, import() should reject the
     30 // promise it returns, unless a toPrimitive related method is set.
     31 if (!Object.prototype.hasOwnProperty.call(import.meta, 'toString') &&
     32        !Object.prototype.hasOwnProperty.call(import.meta, 'valueOf') &&
     33        !Object.prototype.hasOwnProperty.call(import.meta, Symbol.toPrimitive)) {
     34    p.catch(error => assert.sameValue(error.constructor, TypeError, 'import() cannot resolve import.meta')).then($DONE, $DONE);
     35 } else {
     36    $DONE();
     37 }