Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/src/jit-test/tests/xdr/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  module.js   Sprache: JAVA

 
// |jit-test|

load(libdir + "asserts.js");

async function parseAndEvaluate(source) {
    let stencil = compileToStencilXDR(source, {module: true});
    let m = instantiateModuleStencilXDR(stencil);
    moduleLink(m);
    await moduleEvaluate(m);
    return m;
}

(async () => {
  // Check the evaluation of an empty module succeeds.
  await parseAndEvaluate("");
})();

(async () => {
  // Check that evaluation returns evaluation promise,
  // and promise is always the same.
  let stencil = compileToStencilXDR("1", {module: true});
  let m = instantiateModuleStencilXDR(stencil);
  moduleLink(m);
  assertEq(typeof moduleEvaluate(m), "object");
  assertEq(moduleEvaluate(m) instanceof Promise, true);
  assertEq(moduleEvaluate(m), moduleEvaluate(m));
})();

(async () => {
  // Check top level variables are initialized by evaluation.
  let stencil = compileToStencilXDR("export var x = 2 + 2;", {module: true});
  let m = instantiateModuleStencilXDR(stencil);
  assertEq(typeof getModuleEnvironmentValue(m, "x"), "undefined");
  moduleLink(m);
  await moduleEvaluate(m);
  assertEq(getModuleEnvironmentValue(m, "x"), 4);
})();

(async () => {
  let m = await parseAndEvaluate("export let x = 2 * 3;");
  assertEq(getModuleEnvironmentValue(m, "x"), 6);

  // Set up a module to import from.
  let stencil = compileToStencilXDR(
    `var x = 1;
     export { x };
     export default 2;
     export function f(x) { return x + 1; }`,
  {module: true});
  let mod = instantiateModuleStencilXDR(stencil);
  let a = registerModule('a', mod);

  // Check we can evaluate top level definitions.
  await parseAndEvaluate("var foo = 1;");
  await parseAndEvaluate("let foo = 1;");
  await parseAndEvaluate("const foo = 1");
  await parseAndEvaluate("function foo() {}");
  await parseAndEvaluate("class foo { constructor() {} }");

  // Check we can evaluate all module-related syntax.
  await parseAndEvaluate("export var foo = 1;");
  await parseAndEvaluate("export let foo = 1;");
  await parseAndEvaluate("export const foo = 1;");
  await parseAndEvaluate("var x = 1; export { x };");
  await parseAndEvaluate("export default 1");
  await parseAndEvaluate("export default function() {};");
  await parseAndEvaluate("export default function foo() {};");
  await parseAndEvaluate("import a from 'a';");
  await parseAndEvaluate("import { x } from 'a';");
  await parseAndEvaluate("import * as ns from 'a';");
  await parseAndEvaluate("export * from 'a'");
  await parseAndEvaluate("export default class { constructor() {} };");
  await parseAndEvaluate("export default class foo { constructor() {} };");

  // Test default import
  m = await parseAndEvaluate("import a from 'a'; export { a };")
  assertEq(getModuleEnvironmentValue(m, "a"), 2);

  // Test named import
  m = await parseAndEvaluate("import { x as y } from 'a'; export { y };")
  assertEq(getModuleEnvironmentValue(m, "y"), 1);

  // Call exported function
  m = await parseAndEvaluate("import { f } from 'a'; export let x = f(3);")
  assertEq(getModuleEnvironmentValue(m, "x"), 4);

  // Import access in functions
  m = await parseAndEvaluate("import { x } from 'a'; function f() { return x; }")
  let f = getModuleEnvironmentValue(m, "f");
  assertEq(f(), 1);
})();
drainJobQueue();

Messung V0.5
C=87 H=100 G=93

¤ Dauer der Verarbeitung: 0.27 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.