From 78159b8c5576fbbdcb7b02963ded4d24fce0d904 Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Wed, 14 Aug 2024 00:37:01 +0100 Subject: [PATCH 1/2] Remove source phase resolution time negative error types --- .../import-source-binding-name-2.js | 23 ------------- .../import-source-binding-name-2_FIXTURE.js | 20 +++++++++++ .../import-source-binding-name.js | 23 ------------- .../import-source-binding-name_FIXTURE.js | 20 +++++++++++ .../import-source-newlines.js | 31 ----------------- .../import-source-newlines_FIXTURE.js | 29 ++++++++++++++++ .../source-phase-import/import-source.js | 34 +++++++++++++++++++ 7 files changed, 103 insertions(+), 77 deletions(-) delete mode 100644 test/language/module-code/source-phase-import/import-source-binding-name-2.js create mode 100644 test/language/module-code/source-phase-import/import-source-binding-name-2_FIXTURE.js delete mode 100644 test/language/module-code/source-phase-import/import-source-binding-name.js create mode 100644 test/language/module-code/source-phase-import/import-source-binding-name_FIXTURE.js delete mode 100644 test/language/module-code/source-phase-import/import-source-newlines.js create mode 100644 test/language/module-code/source-phase-import/import-source-newlines_FIXTURE.js create mode 100644 test/language/module-code/source-phase-import/import-source.js diff --git a/test/language/module-code/source-phase-import/import-source-binding-name-2.js b/test/language/module-code/source-phase-import/import-source-binding-name-2.js deleted file mode 100644 index 9bc061ba0b3..00000000000 --- a/test/language/module-code/source-phase-import/import-source-binding-name-2.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (C) 2024 Chengzhong Wu. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -description: > - ImportBinding in ImportDeclaration may be 'source' and 'from' -esid: sec-modules -info: | - ImportDeclaration: - import source ImportedBinding FromClause ; - -negative: - phase: resolution - type: SyntaxError -features: [source-phase-imports] -flags: [module] ----*/ - -$DONOTEVALUATE(); - -import "../resources/ensure-linking-error_FIXTURE.js"; - -import source source from ''; -import source from from ''; diff --git a/test/language/module-code/source-phase-import/import-source-binding-name-2_FIXTURE.js b/test/language/module-code/source-phase-import/import-source-binding-name-2_FIXTURE.js new file mode 100644 index 00000000000..1bcaafc167b --- /dev/null +++ b/test/language/module-code/source-phase-import/import-source-binding-name-2_FIXTURE.js @@ -0,0 +1,20 @@ +// Copyright (C) 2024 Chengzhong Wu. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +// ImportBinding in ImportDeclaration may be 'source' and 'from' +// This test is verified with `import-source.js` in the same directory that +// this file does not raise SyntaxError. Note that a SyntaxError could also +// be raised when the imported module does not have a source phase +// representation (see sec-source-text-module-record-initialize-environment, 7.c.ii). +// +// esid: sec-modules +// info: | +// ImportDeclaration: +// import source ImportedBinding FromClause ; + +$DONOTEVALUATE(); + +import "../resources/ensure-linking-error_FIXTURE.js"; + +import source source from ''; +import source from from ''; diff --git a/test/language/module-code/source-phase-import/import-source-binding-name.js b/test/language/module-code/source-phase-import/import-source-binding-name.js deleted file mode 100644 index e75446f3687..00000000000 --- a/test/language/module-code/source-phase-import/import-source-binding-name.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (C) 2024 Chengzhong Wu. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -description: > - ImportBinding in ImportDeclaration may be 'source' and 'from' -esid: sec-modules -info: | - ImportDeclaration: - import source ImportedBinding FromClause ; - -negative: - phase: resolution - type: SyntaxError -features: [source-phase-imports] -flags: [module] ----*/ - -$DONOTEVALUATE(); - -import "../resources/ensure-linking-error_FIXTURE.js"; - -import source from ''; -import from from ''; diff --git a/test/language/module-code/source-phase-import/import-source-binding-name_FIXTURE.js b/test/language/module-code/source-phase-import/import-source-binding-name_FIXTURE.js new file mode 100644 index 00000000000..1452e33532a --- /dev/null +++ b/test/language/module-code/source-phase-import/import-source-binding-name_FIXTURE.js @@ -0,0 +1,20 @@ +// Copyright (C) 2024 Chengzhong Wu. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +// ImportBinding in ImportDeclaration may be 'source' and 'from' +// This test is verified with `import-source.js` in the same directory that +// this file does not raise SyntaxError. Note that a SyntaxError could also +// be raised when the imported module does not have a source phase +// representation (see sec-source-text-module-record-initialize-environment, 7.c.ii). +// +// esid: sec-modules +// info: +// ImportDeclaration: +// import source ImportedBinding FromClause ; + +$DONOTEVALUATE(); + +import "../resources/ensure-linking-error_FIXTURE.js"; + +import source from ''; +import from from ''; diff --git a/test/language/module-code/source-phase-import/import-source-newlines.js b/test/language/module-code/source-phase-import/import-source-newlines.js deleted file mode 100644 index a5aa505186f..00000000000 --- a/test/language/module-code/source-phase-import/import-source-newlines.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2024 Chengzhong Wu. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -description: > - import source in ImportDeclaration may include line terminators -esid: sec-modules -info: | - ImportDeclaration: - import source ImportedBinding FromClause ; - - This test uses all four LineFeed characters in order to completely verify the - grammar. - - 16.2.1.7.2 GetModuleSource ( ) - Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available. -negative: - phase: resolution - type: SyntaxError -features: [source-phase-imports] -flags: [module] ----*/ - -$DONOTEVALUATE(); - -import "../resources/ensure-linking-error_FIXTURE.js"; - -import - -

source - -

y from ''; diff --git a/test/language/module-code/source-phase-import/import-source-newlines_FIXTURE.js b/test/language/module-code/source-phase-import/import-source-newlines_FIXTURE.js new file mode 100644 index 00000000000..e738133ac4a --- /dev/null +++ b/test/language/module-code/source-phase-import/import-source-newlines_FIXTURE.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Chengzhong Wu. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +// import source in ImportDeclaration may include line terminators +// This test is verified with `import-source.js` in the same directory that +// this file does not raise SyntaxError. Note that a SyntaxError could also +// be raised when the imported module does not have a source phase +// representation (see sec-source-text-module-record-initialize-environment, 7.c.ii). +// +// esid: sec-modules +// info: | +// ImportDeclaration: +// import source ImportedBinding FromClause ; +// +// This test uses all four LineFeed characters in order to completely verify the +// grammar. +// +// 16.2.1.7.2 GetModuleSource ( ) +// Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available. + +$DONOTEVALUATE(); + +import "../resources/ensure-linking-error_FIXTURE.js"; + +import + +

source + +

y from ''; diff --git a/test/language/module-code/source-phase-import/import-source.js b/test/language/module-code/source-phase-import/import-source.js new file mode 100644 index 00000000000..d4aec889b37 --- /dev/null +++ b/test/language/module-code/source-phase-import/import-source.js @@ -0,0 +1,34 @@ +// Copyright (C) 2025 Bloomberg LP. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Verify that ImportDeclaration can be correctly parsed. +esid: sec-modules +features: [source-phase-imports] +flags: [async] +includes: [asyncHelpers.js] +---*/ + +function assertImportSourceResolutionFailure(specifier) { + // Import the module and assert that the promise is rejected with a host + // defined error during the resolution phase. + // Note that this is not a `import.source`. + return import(specifier).then( + () => { + throw new Test262Error(`${specifier}: Promise should be rejected`); + }, + error => { + print(error) + if (error instanceof SyntaxError) { + throw new Test262Error(`${specifier}: Promise should be rejected with a non-SyntaxError`); + } + } + ); +} + +asyncTest(async function () { + await assertImportSourceResolutionFailure('./import-source-binding-name_FIXTURE.js'); + await assertImportSourceResolutionFailure('./import-source-binding-name-2_FIXTURE.js'); + await assertImportSourceResolutionFailure('./import-source-newlines_FIXTURE.js'); +}); From 43442b0ca4e084e004e5b4156fcbc66f65ec6a7c Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Mon, 17 Feb 2025 17:20:15 +0000 Subject: [PATCH 2/2] fixup! Remove source phase resolution time negative error types --- .../source-phase-import/import-source-binding-name-2_FIXTURE.js | 2 -- .../source-phase-import/import-source-binding-name_FIXTURE.js | 2 -- .../source-phase-import/import-source-newlines_FIXTURE.js | 2 -- test/language/module-code/source-phase-import/import-source.js | 1 - 4 files changed, 7 deletions(-) diff --git a/test/language/module-code/source-phase-import/import-source-binding-name-2_FIXTURE.js b/test/language/module-code/source-phase-import/import-source-binding-name-2_FIXTURE.js index 1bcaafc167b..306bf0a5cd7 100644 --- a/test/language/module-code/source-phase-import/import-source-binding-name-2_FIXTURE.js +++ b/test/language/module-code/source-phase-import/import-source-binding-name-2_FIXTURE.js @@ -12,8 +12,6 @@ // ImportDeclaration: // import source ImportedBinding FromClause ; -$DONOTEVALUATE(); - import "../resources/ensure-linking-error_FIXTURE.js"; import source source from ''; diff --git a/test/language/module-code/source-phase-import/import-source-binding-name_FIXTURE.js b/test/language/module-code/source-phase-import/import-source-binding-name_FIXTURE.js index 1452e33532a..ca1e7a51298 100644 --- a/test/language/module-code/source-phase-import/import-source-binding-name_FIXTURE.js +++ b/test/language/module-code/source-phase-import/import-source-binding-name_FIXTURE.js @@ -12,8 +12,6 @@ // ImportDeclaration: // import source ImportedBinding FromClause ; -$DONOTEVALUATE(); - import "../resources/ensure-linking-error_FIXTURE.js"; import source from ''; diff --git a/test/language/module-code/source-phase-import/import-source-newlines_FIXTURE.js b/test/language/module-code/source-phase-import/import-source-newlines_FIXTURE.js index e738133ac4a..3678d48fcff 100644 --- a/test/language/module-code/source-phase-import/import-source-newlines_FIXTURE.js +++ b/test/language/module-code/source-phase-import/import-source-newlines_FIXTURE.js @@ -18,8 +18,6 @@ // 16.2.1.7.2 GetModuleSource ( ) // Source Text Module Record provides a GetModuleSource implementation that always returns an abrupt completion indicating that a source phase import is not available. -$DONOTEVALUATE(); - import "../resources/ensure-linking-error_FIXTURE.js"; import diff --git a/test/language/module-code/source-phase-import/import-source.js b/test/language/module-code/source-phase-import/import-source.js index d4aec889b37..48fa601ba16 100644 --- a/test/language/module-code/source-phase-import/import-source.js +++ b/test/language/module-code/source-phase-import/import-source.js @@ -19,7 +19,6 @@ function assertImportSourceResolutionFailure(specifier) { throw new Test262Error(`${specifier}: Promise should be rejected`); }, error => { - print(error) if (error instanceof SyntaxError) { throw new Test262Error(`${specifier}: Promise should be rejected with a non-SyntaxError`); }