From 4c6bb6991efc168b0e1c497d8682c3d4adee19c2 Mon Sep 17 00:00:00 2001 From: Valerie R Young Date: Fri, 20 Apr 2018 13:24:17 -0400 Subject: [PATCH] export-ns: success case for initializing nested namespace --- ...t-nested-namespace-props-nrml-1_FIXTURE.js | 4 ++ ...t-nested-namespace-props-nrml-2_FIXTURE.js | 23 +++++++++ ...t-nested-namespace-props-nrml-3_FIXTURE.js | 5 ++ .../get-nested-namespace-props-nrml.js | 51 +++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-1_FIXTURE.js create mode 100644 test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-2_FIXTURE.js create mode 100644 test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-3_FIXTURE.js create mode 100644 test/language/module-code/namespace/internals/get-nested-namespace-props-nrml.js diff --git a/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-1_FIXTURE.js b/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-1_FIXTURE.js new file mode 100644 index 00000000000..c3b3ea40c51 --- /dev/null +++ b/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-1_FIXTURE.js @@ -0,0 +1,4 @@ +// Copyright (C) 2018 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +export * as exportns from './get-nested-namespace-props-nrml-2_FIXTURE.js'; diff --git a/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-2_FIXTURE.js b/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-2_FIXTURE.js new file mode 100644 index 00000000000..2dc945443d7 --- /dev/null +++ b/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-2_FIXTURE.js @@ -0,0 +1,23 @@ +// Copyright (C) 2018 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +var notExportedVar; +let notExportedLet; +const notExportedConst = null; +function notExportedFunc() {} +function* notExportedGen() {} +class notExportedClass {} + +var starBindingId; + +export var starAsVarDecl; +export let starAsLetDecl; +export const starAsConstDecl = null; +export function starAsFuncDecl() {} +export function* starAsGenDecl() {} +export class starAsClassDecl {} +export { starAsBindingId }; +export { starAsBindingId as starIdName }; +export { starAsIndirectIdName } from './get-nested-namespace-props-nrml-3_FIXTURE.js'; +export { starAsIndirectIdName as starAsIndirectIdName2 } from './get-nested-namespace-props-nrml-3_FIXTURE.js'; +export * as namespaceBinding from './get-nested-namespace-props-nrml-3_FIXTURE.js';; diff --git a/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-3_FIXTURE.js b/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-3_FIXTURE.js new file mode 100644 index 00000000000..889b984be01 --- /dev/null +++ b/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-3_FIXTURE.js @@ -0,0 +1,5 @@ +// Copyright (C) 2016 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +export var indirectIdName; +export var starIndirectIdName; diff --git a/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml.js b/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml.js new file mode 100644 index 00000000000..5141fc6661d --- /dev/null +++ b/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml.js @@ -0,0 +1,51 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: > + Module namespace object reports properties for all ExportEntries of all + dependencies. +esid: sec-moduledeclarationinstantiation +info: | + [...] + 12. For each ImportEntry Record in in module.[[ImportEntries]], do + a. Let importedModule be ? HostResolveImportedModule(module, + in.[[ModuleRequest]]). + b. If in.[[ImportName]] is "*", then + i. Let namespace be ? GetModuleNamespace(importedModule). + [...] + + Runtime Semantics: GetModuleNamespace + 3. If namespace is undefined, then + a. Let exportedNames be ? module.GetExportedNames(« »). + b. Let unambiguousNames be a new empty List. + c. For each name that is an element of exportedNames, + i. Let resolution be ? module.ResolveExport(name, « », « »). + ii. If resolution is null, throw a SyntaxError exception. + iii. If resolution is not "ambiguous", append name to + unambiguousNames. + d. Let namespace be ModuleNamespaceCreate(module, unambiguousNames). +flags: [module] +---*/ + +import * as ns from './get-nested-namespace-props-nrml-1_FIXTURE.js'; + +// Export entries defined by a re-exported as exportns module +assert('starAsVarDecl' in ns.exportns, 'starssVarDecl'); +assert('starAsLetDecl' in ns.exportns, 'starSsLetDecl'); +assert('starAsConstDecl' in ns.exportns, 'starSsConstDecl'); +assert('starAsFuncDecl' in ns.exportns, 'starAsFuncDecl'); +assert('starAsGenDecl' in ns.exportns, 'starAsGenDecl'); +assert('starAsClassDecl' in ns.exportns, 'starAsClassDecl'); +assert('starAsBindingId' in ns.exportns, 'starAsBindingId'); +assert('starAsIdName' in ns.exportns, 'starAsIdName'); +assert('starAsIndirectIdName' in ns.exportns, 'starAsIndirectIdName'); +assert('starAsIndirectIdName2' in ns.exportns, 'starAsIndirectIdName2'); +assert('namespaceBinding' in ns.exportns, 'namespaceBinding'); + +// Bindings that were not exported from any module +assert.sameValue('nonExportedVar' in ns.exportns, false, 'nonExportedVar'); +assert.sameValue('nonExportedLet' in ns.exportns, false, 'nonExportedLet'); +assert.sameValue('nonExportedConst' in ns.exportns, false, 'nonExportedConst'); +assert.sameValue('nonExportedFunc' in ns.exportns, false, 'nonExportedFunc'); +assert.sameValue('nonExportedGen' in ns.exportns, false, 'nonExportedGen'); +assert.sameValue('nonExportedClass' in ns.exportns, false, 'nonExportedClass');