import * as t from 'node:assert/strict';
import { describe, it } from 'vitest';
import { parseSource } from '../../../src/parser';
import { fail, pass } from '../../test-utils';

describe('Next - Import Meta', () => {
  for (const arg of [
    'class C {set x(_) { () => import.meta }}',
    'function f() { import.meta}',
    'class C {set x(_) { () => { import.meta } }}',
    'class C {set x(_) { if (1) { import.meta }}}',
    '({m() { if (1) {} else { import.meta }}})',
    '({m() { while (0) { import.meta }}})',
    '({m() { do { import.meta } while (0)}})',
    'class C {set x(_) { import.meta.url }}',
    'class C {set x(_) { import.meta[0] }}',
    'function f() { import.meta.couldBeMutable = true }',
    'class C {set x(_) { import.meta() }}',
    '({set x(_) { new import.meta.MagicClass}})',
    '({set x(_) { new import.meta}})',
    '({set x(_) { t = [...import.meta]}})',
    'class C {set x(_) { f = {...import.meta} }}',
    'class C {set x(_) { delete import.meta }}',
    "'use strict'; import.meta",
    "'use strict'; () => { import.meta }",
    "'use strict'; () => import.meta",
    "'use strict'; if (1) { import.meta }",
    "'use strict'; if (1) {} else { import.meta }",
    "'use strict'; while (0) { import.meta }",
    "'use strict'; do { import.meta } while (0)",
    "'use strict'; import.meta.url",
    "'use strict'; import.meta[0]",
    "'use strict'; import.meta.couldBeMutable = true",
    "'use strict'; import.meta()",
    "'use strict'; new import.meta.MagicClass",
    "'use strict'; new import.meta",
    "'use strict'; t = [...import.meta]",
    "'use strict'; f = {...import.meta}",
    '(import.meta?.a)',
    '(a?.import.meta)',
215
