current commit
261004.7 · deps: update V8 to 15.2.124.38
// Copyright 2026 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --allow-natives-syntax --enable-queue-microtask

(function TestQueueMicrotask() {
  assertDoesNotThrow(() => queueMicrotask(() => {}));
})();

(function TestQueueMicrotaskNotAFunction() {
  assertThrows(() => queueMicrotask(), TypeError);
  assertThrows(() => queueMicrotask(undefined), TypeError);
  assertThrows(() => queueMicrotask(null), TypeError);
  assertThrows(() => queueMicrotask(1), TypeError);
  assertThrows(() => queueMicrotask('1'), TypeError);
  assertThrows(() => queueMicrotask({}), TypeError);
  assertThrows(() => queueMicrotask([]), TypeError);
  assertThrows(() => queueMicrotask(Symbol()), TypeError);
})();

(function TestQueueMicrotaskOrder() {
  let result = '';
  queueMicrotask(() => result += 'a');
  result += 'b';
  Promise.resolve().then(() => result += 'c');

  %PerformMicrotaskCheckpoint();
  assertEquals('bac', result);
})();

(function TestQueueMicrotaskNested() {
  let result = '';
  queueMicrotask(() => {
    result += 'a';
    queueMicrotask(() => result += 'c');
  });
  result += 'b';

  %PerformMicrotaskCheckpoint();
  assertEquals('bac', result);
})();