From 6760a03cec69a1b2238ff8c4824493a5e1e7875f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 28 Jun 2019 13:22:25 -0700 Subject: [PATCH 1/2] Add vscode docker test (#32152) * Add vscode docker test * Remove PID-log line * Update user baselines (#18) --- src/testRunner/externalCompileRunner.ts | 29 ++++++-- .../baselines/reference/docker/azure-sdk.log | 12 ---- .../reference/docker/office-ui-fabric.log | 71 ------------------- tests/baselines/reference/docker/vscode.log | 34 +++++++++ tests/baselines/reference/docker/xterm.js.log | 1 - tests/cases/docker/vscode/Dockerfile | 19 +++++ 6 files changed, 77 insertions(+), 89 deletions(-) create mode 100644 tests/baselines/reference/docker/vscode.log create mode 100644 tests/cases/docker/vscode/Dockerfile diff --git a/src/testRunner/externalCompileRunner.ts b/src/testRunner/externalCompileRunner.ts index 4e2cb0041d1..1a027f975da 100644 --- a/src/testRunner/externalCompileRunner.ts +++ b/src/testRunner/externalCompileRunner.ts @@ -157,7 +157,15 @@ ${sanitizeDockerfileOutput(result.stderr.toString())}`; } function sanitizeDockerfileOutput(result: string): string { - return stripAbsoluteImportPaths(sanitizeTimestamps(sanitizeVersionSpecifiers(stripRushStageNumbers(stripANSIEscapes(normalizeNewlines(result)))))); + return [ + normalizeNewlines, + stripANSIEscapes, + stripRushStageNumbers, + sanitizeVersionSpecifiers, + sanitizeTimestamps, + sanitizeUnimportantGulpOutput, + stripAbsoluteImportPaths, + ].reduce((result, f) => f(result), result); } function normalizeNewlines(result: string): string { @@ -172,17 +180,28 @@ function stripRushStageNumbers(result: string): string { return result.replace(/\d+ of \d+:/g, "XX of XX:"); } +/** + * Gulp's output order within a `parallel` block is nondeterministic (and there's no way to configure it to execute in series), + * so we purge as much of the gulp output as we can + */ +function sanitizeUnimportantGulpOutput(result: string): string { + return result.replace(/^.*(\] (Starting)|(Finished)).*$/gm, "") // task start/end messages (nondeterministic order) + .replace(/^.*\] Respawned to PID: \d+.*$/gm, "") // PID of child is OS and system-load dependent (likely stableish in a container but still dangerous) + .replace(/\n+/g, "\n"); +} + function sanitizeTimestamps(result: string): string { return result.replace(/\[\d?\d:\d\d:\d\d (A|P)M\]/g, "[XX:XX:XX XM]") - .replace(/\d+(\.\d+)? seconds?/g, "? seconds") - .replace(/\d+(\.\d+)? minutes?/g, "") - .replace(/\d+(\.\d+)?s/g, "?s"); + .replace(/\[\d?\d:\d\d:\d\d\]/g, "[XX:XX:XX]") + .replace(/\d+(\.\d+)? sec(onds?)?/g, "? seconds") + .replace(/\d+(\.\d+)? min(utes?)?/g, "") + .replace(/\d+(\.\d+)?( m)?s/g, "?s"); } function sanitizeVersionSpecifiers(result: string): string { return result .replace(/\d+.\d+.\d+-insiders.\d\d\d\d\d\d\d\d/g, "X.X.X-insiders.xxxxxxxx") - .replace(/@\d+\.\d+\.\d+/g, "@X.X.X"); + .replace(/([@v])\d+\.\d+\.\d+/g, "$1X.X.X"); } /** diff --git a/tests/baselines/reference/docker/azure-sdk.log b/tests/baselines/reference/docker/azure-sdk.log index 9cb070c1089..0069c7e433e 100644 --- a/tests/baselines/reference/docker/azure-sdk.log +++ b/tests/baselines/reference/docker/azure-sdk.log @@ -1,14 +1,9 @@ Exit Code: 1 Standard output: - Rush Multi-Project Build Tool 5.7.3 - https://rushjs.io - - Starting "rush rebuild" - Executing a maximum of 1 simultaneous processes... - [@azure/cosmos] started XX of XX: [@azure/cosmos] completed successfully in ? seconds [@azure/service-bus] started @@ -44,7 +39,6 @@ XX of XX: [@azure/keyvault-keys] completed successfully in ? seconds [@azure/keyvault-secrets] started XX of XX: [@azure/keyvault-secrets] completed successfully in ? seconds [@azure/core-amqp] started - SUCCESS (16) ================================ @azure/abort-controller (? seconds) @@ -64,18 +58,15 @@ SUCCESS (16) @azure/template (? seconds) testhub (? seconds) ================================ - SUCCESS WITH WARNINGS (1) ================================ @azure/service-bus (? seconds) Warning: You have changed the public API signature for this project. Updating review/service-bus.api.md ================================ - BLOCKED (1) ================================ @azure/event-hubs ================================ - FAILURE (1) ================================ @azure/core-amqp (? seconds) @@ -85,8 +76,6 @@ src/errors.ts(586,20): error TS7053: Element implicitly has an 'any' type becaus src/errors.ts(607,34): error TS7053: Element implicitly has an 'any' type because expression of type 'any' can't be used to index type 'typeof SystemErrorConditionMapper'. src/errors.ts(608,20): error TS7053: Element implicitly has an 'any' type because expression of type 'any' can't be used to index type 'typeof ConditionErrorNameMapper'. ================================ - - Error: Project(s) failed to build rush rebuild - Errors! ( ? seconds) @@ -95,7 +84,6 @@ rush rebuild - Errors! ( ? seconds) Standard error: Your version of Node.js (12.4.0) has not been tested with this release of Rush. The Rush team will not accept issue reports for it. Please consider upgrading Rush or downgrading Node.js. XX of XX: [@azure/service-bus] completed with warnings in ? seconds - XX of XX: [@azure/core-amqp] failed to build! XX of XX: [@azure/event-hubs] blocked by [@azure/core-amqp]! [@azure/core-amqp] Returned error code: 2 diff --git a/tests/baselines/reference/docker/office-ui-fabric.log b/tests/baselines/reference/docker/office-ui-fabric.log index 370ba398f01..3657e61b3be 100644 --- a/tests/baselines/reference/docker/office-ui-fabric.log +++ b/tests/baselines/reference/docker/office-ui-fabric.log @@ -1,14 +1,9 @@ Exit Code: 1 Standard output: - Rush Multi-Project Build Tool 5.6.0 - https://rushjs.io - - Starting "rush rebuild" - Executing a maximum of 1 simultaneous processes... - [@uifabric/prettier-rules] started XX of XX: [@uifabric/prettier-rules] completed successfully in ? seconds [@uifabric/tslint-rules] started @@ -36,9 +31,7 @@ XX of XX: [@uifabric/file-type-icons] completed successfully in ? seconds [@uifabric/foundation] started ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions. ● createFactory › passes componentProps without userProps - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -46,16 +39,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:205:73) - ● createFactory › passes userProp string as child - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -63,16 +52,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:210:76) - ● createFactory › passes userProp integer as child - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -80,16 +65,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:220:76) - ● createFactory › passes userProp string as defaultProp - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -97,16 +78,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:225:92) - ● createFactory › passes userProp integer as defaultProp - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -114,16 +91,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:235:92) - ● createFactory › merges userProps over componentProps - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -131,16 +104,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:245:84) - ● createFactory › renders div and userProp integer as children - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -148,16 +117,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:255:86) - ● createFactory › renders div and userProp string as children - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -165,16 +130,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:266:86) - ● createFactory › renders userProp span function without component props - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -182,16 +143,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:288:61) - ● createFactory › renders userProp span function with component props - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -199,16 +156,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:301:61) - ● createFactory › renders userProp span component with component props - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -216,16 +169,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:314:61) - ● createFactory › passes props and type arguments to userProp function - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -233,16 +182,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at Object. (src/slots.test.tsx:334:43) - ● getSlots › creates slots and passes merged props to them - RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -250,14 +195,12 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed 192 | } 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) at _renderSlot (src/slots.tsx:221:100) at Object.slot [as testSlot1] (src/slots.tsx:142:16) at Object. (src/slots.test.tsx:399:24) - [XX:XX:XX XM] x Error detected while running 'jest' [XX:XX:XX XM] x ------------------------------------ [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node /office-ui-fabric-react/common/temp/node_modules/jest/bin/jest.js --config /office-ui-fabric-react/packages/foundation/jest.config.js --passWithNoTests --colors @@ -273,7 +216,6 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed XX of XX: [@uifabric/icons] completed successfully in ? seconds [@uifabric/webpack-utils] started XX of XX: [@uifabric/webpack-utils] completed successfully in ? seconds - SUCCESS (8) ================================ @uifabric/build (? seconds) @@ -285,28 +227,21 @@ SUCCESS (8) @uifabric/tslint-rules (? seconds) @uifabric/webpack-utils (? seconds) ================================ - SUCCESS WITH WARNINGS (6) ================================ @uifabric/codepen-loader (? seconds) ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions. - @uifabric/jest-serializer-merge-styles (? seconds) ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions. - @uifabric/merge-styles (? seconds) ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions. - @uifabric/set-version (? seconds) ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions. - @uifabric/styling (? seconds) ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions. - @uifabric/utilities (? seconds) ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions. ================================ - BLOCKED (27) ================================ @uifabric/api-docs @@ -337,14 +272,12 @@ theming-designer todo-app vr-tests ================================ - FAILURE (1) ================================ @uifabric/foundation (? seconds) ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions. ● createFactory › passes componentProps without userProps RangeError: Invalid array length - 189 | for (const props of allProps) { 190 | classNames.push(props && props.className); > 191 | assign(finalProps, ...(props as any)); @@ -354,7 +287,6 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed [...179 lines omitted...] 193 | 194 | finalProps.className = mergeStyles(defaultStyles, classNames); - at Object.__spreadArrays (../../common/temp/node_modules/.registry.npmjs.org/tslib/1.10.0/node_modules/tslib/tslib.js:182:22) at _constructFinalProps (src/slots.tsx:191:11) at result (src/slots.tsx:88:24) @@ -373,8 +305,6 @@ ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed [XX:XX:XX XM] x finished 'build' in ?s with errors [XX:XX:XX XM] x Error previously detected. See above for error messages. ================================ - - Error: Project(s) failed to build rush rebuild - Errors! ( ? seconds) @@ -388,7 +318,6 @@ XX of XX: [@uifabric/merge-styles] completed with warnings in ? seconds XX of XX: [@uifabric/jest-serializer-merge-styles] completed with warnings in ? seconds XX of XX: [@uifabric/utilities] completed with warnings in ? seconds XX of XX: [@uifabric/styling] completed with warnings in ? seconds - XX of XX: [@uifabric/foundation] failed to build! XX of XX: [@uifabric/experiments] blocked by [@uifabric/foundation]! XX of XX: [@uifabric/fabric-website] blocked by [@uifabric/foundation]! diff --git a/tests/baselines/reference/docker/vscode.log b/tests/baselines/reference/docker/vscode.log new file mode 100644 index 00000000000..8f23cb6719d --- /dev/null +++ b/tests/baselines/reference/docker/vscode.log @@ -0,0 +1,34 @@ +Exit Code: 1 +Standard output: +yarn run vX.X.X +$ gulp compile --max_old_space_size=4095 +[XX:XX:XX] Node flags detected: --max_old_space_size=4095 +[XX:XX:XX] Using gulpfile /vscode/gulpfile.js +[XX:XX:XX] Error: /vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts(560,5): Type 'null' is not assignable to type 'string'. +[XX:XX:XX] Error: /vscode/src/vs/base/browser/ui/menu/menubar.ts(742,7): Type '"underline" | null' is not assignable to type 'string'. + Type 'null' is not assignable to type 'string'. +[XX:XX:XX] Error: /vscode/src/vs/editor/browser/controller/textAreaInput.ts(208,33): Property 'locale' does not exist on type 'CompositionEvent'. +[XX:XX:XX] Error: /vscode/src/vs/editor/browser/controller/textAreaInput.ts(225,33): Property 'locale' does not exist on type 'CompositionEvent'. +[XX:XX:XX] Error: /vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts(560,5): Type 'null' is not assignable to type 'string'. +[XX:XX:XX] Error: /vscode/src/vs/base/browser/ui/menu/menubar.ts(742,7): Type '"underline" | null' is not assignable to type 'string'. + Type 'null' is not assignable to type 'string'. +[XX:XX:XX] Error: /vscode/src/vs/editor/browser/controller/textAreaInput.ts(208,33): Property 'locale' does not exist on type 'CompositionEvent'. +[XX:XX:XX] Error: /vscode/src/vs/editor/browser/controller/textAreaInput.ts(225,33): Property 'locale' does not exist on type 'CompositionEvent'. +info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. + + + +Standard error: +[XX:XX:XX] 'compile' errored after +[XX:XX:XX] Error: Found 4 errors + at Stream. (/vscode/build/lib/reporter.js:74:29) + at _end (/vscode/node_modules/through/index.js:65:9) + at Stream.stream.end (/vscode/node_modules/through/index.js:74:5) + at Stream.onend (internal/streams/legacy.js:42:10) + at Stream.emit (events.js:203:15) + at Stream.EventEmitter.emit (domain.js:466:23) + at drain (/vscode/node_modules/through/index.js:34:23) + at Stream.stream.queue.stream.push (/vscode/node_modules/through/index.js:45:5) + at Stream.end (/vscode/node_modules/through/index.js:15:35) + at _end (/vscode/node_modules/through/index.js:65:9) +error Command failed with exit code 1. diff --git a/tests/baselines/reference/docker/xterm.js.log b/tests/baselines/reference/docker/xterm.js.log index 5eb25dc4da0..6024f04e09d 100644 --- a/tests/baselines/reference/docker/xterm.js.log +++ b/tests/baselines/reference/docker/xterm.js.log @@ -6,5 +6,4 @@ Standard output: - Standard error: diff --git a/tests/cases/docker/vscode/Dockerfile b/tests/cases/docker/vscode/Dockerfile new file mode 100644 index 00000000000..d20e2e8d622 --- /dev/null +++ b/tests/cases/docker/vscode/Dockerfile @@ -0,0 +1,19 @@ +# vscode only supports node 8 :( +FROM node:10 +RUN apt-get update +RUN apt-get install libsecret-1-dev libx11-dev libxkbfile-dev -y +RUN npm i -g yarn +RUN git clone https://github.com/microsoft/vscode.git /vscode +WORKDIR /vscode +RUN git pull +COPY --from=typescript/typescript /typescript/typescript-*.tgz /typescript.tgz +RUN mkdir /typescript +RUN tar -xzvf /typescript.tgz -C /typescript +WORKDIR /vscode/build +RUN yarn add typescript@/typescript/package +WORKDIR /vscode +RUN yarn add typescript@/typescript/package +RUN yarn +ENTRYPOINT [ "yarn" ] +# Build +CMD [ "compile" ] \ No newline at end of file From b4a1a5996f632a811fadaeba5008acf4acbde383 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 28 Jun 2019 13:23:15 -0700 Subject: [PATCH 2/2] Rework declaration emit visibility calculation for namespaces (#32156) * Rework declaration visibility for namespaces * Accept skipped baselines --- src/compiler/transformers/declarations.ts | 95 +++++++++---- .../reference/aliasInaccessibleModule.js | 1 + .../reference/aliasInaccessibleModule2.js | 1 + ...eTypeAnnotationVisibilityErrorAccessors.js | 5 +- ...ationVisibilityErrorParameterOfFunction.js | 15 +- ...tionVisibilityErrorReturnTypeOfFunction.js | 15 +- ...eTypeAnnotationVisibilityErrorTypeAlias.js | 10 +- ...ypeAnnotationVisibilityErrorTypeLiteral.js | 15 +- ...ationVisibilityErrorVariableDeclaration.js | 15 +- tests/baselines/reference/declInput-2.js | 7 +- ...eclarationEmitDestructuringPrivacyError.js | 3 +- .../declarationEmitExpressionInExtends5.js | 9 +- ...nFunctionTypeNonlocalShouldNotBeAnError.js | 3 +- ...rtNamespaceDeclarationRetainsVisibility.js | 32 +++++ ...espaceDeclarationRetainsVisibility.symbols | 27 ++++ ...amespaceDeclarationRetainsVisibility.types | 19 +++ .../getEmitOutputWithEmitterErrors.baseline | 3 +- .../reference/privacyAccessorDeclFile.js | 60 ++++---- .../privacyCheckTypeOfInvisibleModuleError.js | 3 +- ...rivacyCheckTypeOfInvisibleModuleNoError.js | 3 +- .../privacyClassExtendsClauseDeclFile.js | 25 ++-- .../privacyClassImplementsClauseDeclFile.js | 27 ++-- .../privacyFunctionParameterDeclFile.js | 108 +++++++------- .../privacyFunctionReturnTypeDeclFile.js | 132 +++++++++--------- tests/baselines/reference/privacyGloImport.js | 19 +-- .../reference/privacyGloImportParseErrors.js | 37 ++--- tests/baselines/reference/privacyImport.js | 19 +-- .../privacyInterfaceExtendsClauseDeclFile.js | 27 ++-- .../privacyTypeParameterOfFunctionDeclFile.js | 48 ++++--- .../privacyTypeParametersOfClassDeclFile.js | 20 +-- ...rivacyTypeParametersOfInterfaceDeclFile.js | 24 ++-- .../baselines/reference/privacyVarDeclFile.js | 108 +++++++------- .../reference/symbolDeclarationEmit12.js | 3 +- .../reference/typeFromPropertyAssignment29.js | 3 +- ...rtNamespaceDeclarationRetainsVisibility.ts | 14 ++ 35 files changed, 568 insertions(+), 387 deletions(-) create mode 100644 tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.js create mode 100644 tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.symbols create mode 100644 tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.types create mode 100644 tests/cases/compiler/exportNamespaceDeclarationRetainsVisibility.ts diff --git a/src/compiler/transformers/declarations.ts b/src/compiler/transformers/declarations.ts index 4f68c36d919..bb939f7d4f1 100644 --- a/src/compiler/transformers/declarations.ts +++ b/src/compiler/transformers/declarations.ts @@ -190,6 +190,10 @@ namespace ts { } } + function createEmptyExports() { + return createExportDeclaration(/*decorators*/ undefined, /*modifiers*/ undefined, createNamedExports([]), /*moduleSpecifier*/ undefined); + } + function transformRoot(node: Bundle): Bundle; function transformRoot(node: SourceFile): SourceFile; function transformRoot(node: SourceFile | Bundle): SourceFile | Bundle; @@ -277,7 +281,7 @@ namespace ts { refs.forEach(referenceVisitor); const emittedImports = filter(combinedStatements, isAnyImportSyntax); if (isExternalModule(node) && (!resultHasExternalModuleIndicator || (needsScopeFixMarker && !resultHasScopeMarker))) { - combinedStatements = setTextRange(createNodeArray([...combinedStatements, createExportDeclaration(/*decorators*/ undefined, /*modifiers*/ undefined, createNamedExports([]), /*moduleSpecifier*/ undefined)]), combinedStatements); + combinedStatements = setTextRange(createNodeArray([...combinedStatements, createEmptyExports()]), combinedStatements); } const updated = updateSourceFileNode(node, combinedStatements, /*isDeclarationFile*/ true, references, getFileReferencesForUsedTypeReferences(), node.hasNoDefaultLib, getLibReferences()); updated.exportedModulesFromDeclarationEmit = exportedModulesFromDeclarationEmit; @@ -670,7 +674,7 @@ namespace ts { } const priorNeedsDeclare = needsDeclare; needsDeclare = i.parent && isSourceFile(i.parent) && !(isExternalModule(i.parent) && isBundledEmit); - const result = transformTopLevelDeclaration(i, /*privateDeclaration*/ true); + const result = transformTopLevelDeclaration(i); needsDeclare = priorNeedsDeclare; lateStatementReplacementMap.set("" + getOriginalNodeId(i), result); } @@ -685,12 +689,12 @@ namespace ts { if (lateStatementReplacementMap.has(key)) { const result = lateStatementReplacementMap.get(key); lateStatementReplacementMap.delete(key); - if (result && isSourceFile(statement.parent)) { + if (result) { if (isArray(result) ? some(result, needsScopeMarker) : needsScopeMarker(result)) { // Top-level declarations in .d.ts files are always considered exported even without a modifier unless there's an export assignment or specifier needsScopeFixMarker = true; } - if (isArray(result) ? some(result, isExternalModuleIndicator) : isExternalModuleIndicator(result)) { + if (isSourceFile(statement.parent) && (isArray(result) ? some(result, isExternalModuleIndicator) : isExternalModuleIndicator(result))) { resultHasExternalModuleIndicator = true; } } @@ -939,8 +943,8 @@ namespace ts { case SyntaxKind.ExportDeclaration: { if (isSourceFile(input.parent)) { resultHasExternalModuleIndicator = true; - resultHasScopeMarker = true; } + resultHasScopeMarker = true; // Always visible if the parent node isn't dropped for being not visible // Rewrite external module names if necessary return updateExportDeclaration(input, /*decorators*/ undefined, input.modifiers, input.exportClause, rewriteModuleSpecifier(input, input.moduleSpecifier)); @@ -949,8 +953,8 @@ namespace ts { // Always visible if the parent node isn't dropped for being not visible if (isSourceFile(input.parent)) { resultHasExternalModuleIndicator = true; - resultHasScopeMarker = true; } + resultHasScopeMarker = true; if (input.expression.kind === SyntaxKind.Identifier) { return input; } @@ -973,7 +977,19 @@ namespace ts { return input; } - function transformTopLevelDeclaration(input: LateVisibilityPaintedStatement, isPrivate?: boolean) { + function stripExportModifiers(statement: Statement): Statement { + if (isImportEqualsDeclaration(statement) || hasModifier(statement, ModifierFlags.Default)) { + // `export import` statements should remain as-is, as imports are _not_ implicitly exported in an ambient namespace + // Likewise, `export default` classes and the like and just be `default`, so we preserve their `export` modifiers, too + return statement; + } + const clone = getMutableClone(statement); + const modifiers = createModifiersFromModifierFlags(getModifierFlags(statement) & (ModifierFlags.All ^ ModifierFlags.Export)); + clone.modifiers = modifiers.length ? createNodeArray(modifiers) : undefined; + return clone; + } + + function transformTopLevelDeclaration(input: LateVisibilityPaintedStatement) { if (shouldStripInternal(input)) return; switch (input.kind) { case SyntaxKind.ImportEqualsDeclaration: { @@ -1006,7 +1022,7 @@ namespace ts { return cleanup(updateTypeAliasDeclaration( input, /*decorators*/ undefined, - ensureModifiers(input, isPrivate), + ensureModifiers(input), input.name, visitNodes(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), visitNode(input.type, visitDeclarationSubtree, isTypeNode) @@ -1015,7 +1031,7 @@ namespace ts { return cleanup(updateInterfaceDeclaration( input, /*decorators*/ undefined, - ensureModifiers(input, isPrivate), + ensureModifiers(input), input.name, ensureTypeParams(input, input.typeParameters), transformHeritageClauses(input.heritageClauses), @@ -1027,7 +1043,7 @@ namespace ts { const clean = cleanup(updateFunctionDeclaration( input, /*decorators*/ undefined, - ensureModifiers(input, isPrivate), + ensureModifiers(input), /*asteriskToken*/ undefined, input.name, ensureTypeParams(input, input.typeParameters), @@ -1052,7 +1068,7 @@ namespace ts { const varDecl = createVariableDeclaration(unescapeLeadingUnderscores(p.escapedName), type, /*initializer*/ undefined); return createVariableStatement(/*modifiers*/ undefined, createVariableDeclarationList([varDecl])); }); - const namespaceDecl = createModuleDeclaration(/*decorators*/ undefined, ensureModifiers(input, isPrivate), input.name!, createModuleBlock(declarations), NodeFlags.Namespace); + const namespaceDecl = createModuleDeclaration(/*decorators*/ undefined, ensureModifiers(input), input.name!, createModuleBlock(declarations), NodeFlags.Namespace); if (!hasModifier(clean, ModifierFlags.Default)) { return [clean, namespaceDecl]; @@ -1086,7 +1102,9 @@ namespace ts { namespaceDecl.name ); - resultHasExternalModuleIndicator = true; + if (isSourceFile(input.parent)) { + resultHasExternalModuleIndicator = true; + } resultHasScopeMarker = true; return [cleanDeclaration, namespaceDeclaration, exportDefaultDeclaration]; @@ -1099,10 +1117,32 @@ namespace ts { needsDeclare = false; const inner = input.body; if (inner && inner.kind === SyntaxKind.ModuleBlock) { + const oldNeedsScopeFix = needsScopeFixMarker; + const oldHasScopeFix = resultHasScopeMarker; + resultHasScopeMarker = false; + needsScopeFixMarker = false; const statements = visitNodes(inner.statements, visitDeclarationStatements); - const body = updateModuleBlock(inner, transformAndReplaceLatePaintedStatements(statements)); + let lateStatements = transformAndReplaceLatePaintedStatements(statements); + if (input.flags & NodeFlags.Ambient) { + needsScopeFixMarker = false; // If it was `declare`'d everything is implicitly exported already, ignore late printed "privates" + } + // With the final list of statements, there are 3 possibilities: + // 1. There's an export assignment or export declaration in the namespace - do nothing + // 2. Everything is exported and there are no export assignments or export declarations - strip all export modifiers + // 3. Some things are exported, some are not, and there's no marker - add an empty marker + if (!isGlobalScopeAugmentation(input) && !hasScopeMarker(lateStatements) && !resultHasScopeMarker) { + if (needsScopeFixMarker) { + lateStatements = createNodeArray([...lateStatements, createEmptyExports()]); + } + else { + lateStatements = visitNodes(lateStatements, stripExportModifiers); + } + } + const body = updateModuleBlock(inner, lateStatements); needsDeclare = previousNeedsDeclare; - const mods = ensureModifiers(input, isPrivate); + needsScopeFixMarker = oldNeedsScopeFix; + resultHasScopeMarker = oldHasScopeFix; + const mods = ensureModifiers(input); return cleanup(updateModuleDeclaration( input, /*decorators*/ undefined, @@ -1113,7 +1153,7 @@ namespace ts { } else { needsDeclare = previousNeedsDeclare; - const mods = ensureModifiers(input, isPrivate); + const mods = ensureModifiers(input); needsDeclare = false; visitNode(inner, visitDeclarationStatements); // eagerly transform nested namespaces (the nesting doesn't need any elision or painting done) @@ -1130,7 +1170,7 @@ namespace ts { } } case SyntaxKind.ClassDeclaration: { - const modifiers = createNodeArray(ensureModifiers(input, isPrivate)); + const modifiers = createNodeArray(ensureModifiers(input)); const typeParameters = ensureTypeParams(input, input.typeParameters); const ctor = getFirstConstructorWithBody(input); let parameterProperties: ReadonlyArray | undefined; @@ -1224,10 +1264,10 @@ namespace ts { } } case SyntaxKind.VariableStatement: { - return cleanup(transformVariableStatement(input, isPrivate)); + return cleanup(transformVariableStatement(input)); } case SyntaxKind.EnumDeclaration: { - return cleanup(updateEnumDeclaration(input, /*decorators*/ undefined, createNodeArray(ensureModifiers(input, isPrivate)), input.name, createNodeArray(mapDefined(input.members, m => { + return cleanup(updateEnumDeclaration(input, /*decorators*/ undefined, createNodeArray(ensureModifiers(input)), input.name, createNodeArray(mapDefined(input.members, m => { if (shouldStripInternal(m)) return; // Rewrite enum values to their constants, if available const constValue = resolver.getConstantValue(m); @@ -1255,11 +1295,11 @@ namespace ts { } } - function transformVariableStatement(input: VariableStatement, privateDeclaration?: boolean) { + function transformVariableStatement(input: VariableStatement) { if (!forEach(input.declarationList.declarations, getBindingNameVisible)) return; const nodes = visitNodes(input.declarationList.declarations, visitDeclarationSubtree); if (!length(nodes)) return; - return updateVariableStatement(input, createNodeArray(ensureModifiers(input, privateDeclaration)), updateVariableDeclarationList(input.declarationList, nodes)); + return updateVariableStatement(input, createNodeArray(ensureModifiers(input)), updateVariableDeclarationList(input.declarationList, nodes)); } function recreateBindingPattern(d: BindingPattern): VariableDeclaration[] { @@ -1306,28 +1346,25 @@ namespace ts { return isExportAssignment(node) || isExportDeclaration(node); } - function hasScopeMarker(node: Node) { - if (isModuleBlock(node)) { - return some(node.statements, isScopeMarker); - } - return false; + function hasScopeMarker(statements: ReadonlyArray) { + return some(statements, isScopeMarker); } - function ensureModifiers(node: Node, privateDeclaration?: boolean): ReadonlyArray | undefined { + function ensureModifiers(node: Node): ReadonlyArray | undefined { const currentFlags = getModifierFlags(node); - const newFlags = ensureModifierFlags(node, privateDeclaration); + const newFlags = ensureModifierFlags(node); if (currentFlags === newFlags) { return node.modifiers; } return createModifiersFromModifierFlags(newFlags); } - function ensureModifierFlags(node: Node, privateDeclaration?: boolean): ModifierFlags { + function ensureModifierFlags(node: Node): ModifierFlags { let mask = ModifierFlags.All ^ (ModifierFlags.Public | ModifierFlags.Async); // No async modifiers in declaration files let additions = (needsDeclare && !isAlwaysType(node)) ? ModifierFlags.Ambient : ModifierFlags.None; const parentIsFile = node.parent.kind === SyntaxKind.SourceFile; if (!parentIsFile || (isBundledEmit && parentIsFile && isExternalModule(node.parent as SourceFile))) { - mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) || hasScopeMarker(node.parent) ? 0 : ModifierFlags.Export) | ModifierFlags.Ambient); + mask ^= ModifierFlags.Ambient; additions = ModifierFlags.None; } return maskModifierFlags(node, mask, additions); diff --git a/tests/baselines/reference/aliasInaccessibleModule.js b/tests/baselines/reference/aliasInaccessibleModule.js index 66a59a9f0ee..d27cac1f8e7 100644 --- a/tests/baselines/reference/aliasInaccessibleModule.js +++ b/tests/baselines/reference/aliasInaccessibleModule.js @@ -16,4 +16,5 @@ declare module M { module N { } export import X = N; + export {}; } diff --git a/tests/baselines/reference/aliasInaccessibleModule2.js b/tests/baselines/reference/aliasInaccessibleModule2.js index 324581ce622..89b7e66c962 100644 --- a/tests/baselines/reference/aliasInaccessibleModule2.js +++ b/tests/baselines/reference/aliasInaccessibleModule2.js @@ -31,4 +31,5 @@ declare module M { } import R = N; export import X = R; + export {}; } diff --git a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorAccessors.js b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorAccessors.js index 20d784489d9..60181761533 100644 --- a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorAccessors.js +++ b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorAccessors.js @@ -264,13 +264,13 @@ var m; declare module m { class private1 { } - class public1 { + export class public1 { } module m2 { class public2 { } } - class c { + export class c { readonly foo1: private1; readonly foo2: private1; foo3: private1; @@ -287,4 +287,5 @@ declare module m { foo114: m2.public2; foo115: m2.public2; } + export {}; } diff --git a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorParameterOfFunction.js b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorParameterOfFunction.js index 4e1edd7fe39..3fb6308392e 100644 --- a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorParameterOfFunction.js +++ b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorParameterOfFunction.js @@ -111,16 +111,17 @@ var m; declare module m { class private1 { } - class public1 { + export class public1 { } - function foo3(param: private1): void; - function foo4(param?: private1): void; - function foo13(param: public1): void; - function foo14(param?: public1): void; + export function foo3(param: private1): void; + export function foo4(param?: private1): void; + export function foo13(param: public1): void; + export function foo14(param?: public1): void; module m2 { class public2 { } } - function foo113(param: m2.public2): void; - function foo114(param?: m2.public2): void; + export function foo113(param: m2.public2): void; + export function foo114(param?: m2.public2): void; + export {}; } diff --git a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorReturnTypeOfFunction.js b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorReturnTypeOfFunction.js index 8a2437a2ac4..a4fcbc3d5cb 100644 --- a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorReturnTypeOfFunction.js +++ b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorReturnTypeOfFunction.js @@ -129,16 +129,17 @@ var m; declare module m { class private1 { } - class public1 { + export class public1 { } - function foo3(): private1; - function foo4(): private1; - function foo13(): public1; - function foo14(): public1; + export function foo3(): private1; + export function foo4(): private1; + export function foo13(): public1; + export function foo14(): public1; module m2 { class public2 { } } - function foo113(): m2.public2; - function foo114(): m2.public2; + export function foo113(): m2.public2; + export function foo114(): m2.public2; + export {}; } diff --git a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeAlias.js b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeAlias.js index fd39a6e20d9..387e002c251 100644 --- a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeAlias.js +++ b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeAlias.js @@ -95,11 +95,12 @@ interface Window { } declare module M { type W = Window | string; - module N { + export module N { class Window { } var p: W; } + export {}; } declare module M1 { type W = Window | string; @@ -118,7 +119,8 @@ declare module M2 { class public1 { } } - type t2 = private1; - type t12 = public1; - type t112 = m3.public1; + export type t2 = private1; + export type t12 = public1; + export type t112 = m3.public1; + export {}; } diff --git a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeLiteral.js b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeLiteral.js index ecb3e035e2a..b3ba6a4ee52 100644 --- a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeLiteral.js +++ b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeLiteral.js @@ -71,7 +71,7 @@ declare module m { class public1 { } } - var x: { + export var x: { x: private1; y: m2.public1; (): m2.public1[]; @@ -79,12 +79,12 @@ declare module m { [n: number]: private1; [s: string]: m2.public1; }; - var x2: { + export var x2: { x: private1; y: m2.public1; method(): private1; }; - var x3: { + export var x3: { (): m2.public1[]; [s: string]: m2.public1; [n: number]: private1; @@ -92,8 +92,9 @@ declare module m { y: m2.public1; method(): private1; }; - var y: (a: private1) => m2.public1; - var y2: (a: private1) => m2.public1; - var z: new (a: private1) => m2.public1; - var z2: new (a: private1) => m2.public1; + export var y: (a: private1) => m2.public1; + export var y2: (a: private1) => m2.public1; + export var z: new (a: private1) => m2.public1; + export var z2: new (a: private1) => m2.public1; + export {}; } diff --git a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorVariableDeclaration.js b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorVariableDeclaration.js index 6bdcedae7d7..51e1f8db822 100644 --- a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorVariableDeclaration.js +++ b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorVariableDeclaration.js @@ -72,16 +72,17 @@ var m; declare module m { class private1 { } - class public1 { + export class public1 { } - var k: private1; - var l: private1; - var k2: public1; - var l2: public1; + export var k: private1; + export var l: private1; + export var k2: public1; + export var l2: public1; module m2 { class public2 { } } - var k3: m2.public2; - var l3: m2.public2; + export var k3: m2.public2; + export var l3: m2.public2; + export {}; } diff --git a/tests/baselines/reference/declInput-2.js b/tests/baselines/reference/declInput-2.js index f1f23b7f22e..95800d8a602 100644 --- a/tests/baselines/reference/declInput-2.js +++ b/tests/baselines/reference/declInput-2.js @@ -54,13 +54,13 @@ var M; declare module M { class C { } - class E { + export class E { } - interface I1 { + export interface I1 { } interface I2 { } - class D { + export class D { private c; m1: number; m2: string; @@ -75,4 +75,5 @@ declare module M { m262(i: I2): void; m3(): C; } + export {}; } diff --git a/tests/baselines/reference/declarationEmitDestructuringPrivacyError.js b/tests/baselines/reference/declarationEmitDestructuringPrivacyError.js index dc037d7db11..794f14417b9 100644 --- a/tests/baselines/reference/declarationEmitDestructuringPrivacyError.js +++ b/tests/baselines/reference/declarationEmitDestructuringPrivacyError.js @@ -22,5 +22,6 @@ var m; declare module m { class c { } - var x: number, y: c, z: number; + export var x: number, y: c, z: number; + export {}; } diff --git a/tests/baselines/reference/declarationEmitExpressionInExtends5.js b/tests/baselines/reference/declarationEmitExpressionInExtends5.js index 03fd1c9ea11..f19d0c8862c 100644 --- a/tests/baselines/reference/declarationEmitExpressionInExtends5.js +++ b/tests/baselines/reference/declarationEmitExpressionInExtends5.js @@ -59,12 +59,13 @@ var Test; //// [declarationEmitExpressionInExtends5.d.ts] declare namespace Test { - interface IFace { + export interface IFace { } - class SomeClass implements IFace { + export class SomeClass implements IFace { } const Derived_base: new () => IFace; - class Derived extends Derived_base { + export class Derived extends Derived_base { } - function getClass(): new () => T; + export function getClass(): new () => T; + export {}; } diff --git a/tests/baselines/reference/declarationFunctionTypeNonlocalShouldNotBeAnError.js b/tests/baselines/reference/declarationFunctionTypeNonlocalShouldNotBeAnError.js index 88343a7d08e..a51f4f14593 100644 --- a/tests/baselines/reference/declarationFunctionTypeNonlocalShouldNotBeAnError.js +++ b/tests/baselines/reference/declarationFunctionTypeNonlocalShouldNotBeAnError.js @@ -21,7 +21,8 @@ var foo; //// [declarationFunctionTypeNonlocalShouldNotBeAnError.d.ts] declare namespace foo { function bar(): void; - const obj: { + export const obj: { bar: typeof bar; }; + export {}; } diff --git a/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.js b/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.js new file mode 100644 index 00000000000..2f68257c25c --- /dev/null +++ b/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.js @@ -0,0 +1,32 @@ +//// [exportNamespaceDeclarationRetainsVisibility.ts] +namespace X { + interface A { + kind: 'a'; + } + + interface B { + kind: 'b'; + } + + export type C = A | B; +} + +export = X; + +//// [exportNamespaceDeclarationRetainsVisibility.js] +"use strict"; +exports.__esModule = true; + + +//// [exportNamespaceDeclarationRetainsVisibility.d.ts] +declare namespace X { + interface A { + kind: 'a'; + } + interface B { + kind: 'b'; + } + export type C = A | B; + export {}; +} +export = X; diff --git a/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.symbols b/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.symbols new file mode 100644 index 00000000000..af62dd23d5d --- /dev/null +++ b/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.symbols @@ -0,0 +1,27 @@ +=== tests/cases/compiler/exportNamespaceDeclarationRetainsVisibility.ts === +namespace X { +>X : Symbol(X, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 0, 0)) + + interface A { +>A : Symbol(A, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 0, 13)) + + kind: 'a'; +>kind : Symbol(A.kind, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 1, 17)) + } + + interface B { +>B : Symbol(B, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 3, 5)) + + kind: 'b'; +>kind : Symbol(B.kind, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 5, 17)) + } + + export type C = A | B; +>C : Symbol(C, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 7, 5)) +>A : Symbol(A, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 0, 13)) +>B : Symbol(B, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 3, 5)) +} + +export = X; +>X : Symbol(X, Decl(exportNamespaceDeclarationRetainsVisibility.ts, 0, 0)) + diff --git a/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.types b/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.types new file mode 100644 index 00000000000..69422a8458c --- /dev/null +++ b/tests/baselines/reference/exportNamespaceDeclarationRetainsVisibility.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/exportNamespaceDeclarationRetainsVisibility.ts === +namespace X { + interface A { + kind: 'a'; +>kind : "a" + } + + interface B { + kind: 'b'; +>kind : "b" + } + + export type C = A | B; +>C : C +} + +export = X; +>X : any + diff --git a/tests/baselines/reference/getEmitOutputWithEmitterErrors.baseline b/tests/baselines/reference/getEmitOutputWithEmitterErrors.baseline index 7ad60f361bb..580bd65b66a 100644 --- a/tests/baselines/reference/getEmitOutputWithEmitterErrors.baseline +++ b/tests/baselines/reference/getEmitOutputWithEmitterErrors.baseline @@ -15,6 +15,7 @@ FileName : /tests/cases/fourslash/inputFile.d.ts declare module M { class C { } - var foo: C; + export var foo: C; + export {}; } diff --git a/tests/baselines/reference/privacyAccessorDeclFile.js b/tests/baselines/reference/privacyAccessorDeclFile.js index 8a3a7b2d2de..a7eb6296f5c 100644 --- a/tests/baselines/reference/privacyAccessorDeclFile.js +++ b/tests/baselines/reference/privacyAccessorDeclFile.js @@ -3606,9 +3606,9 @@ export declare class publicClassWithPrivateModuleSetAccessorTypes { export declare module publicModule { class privateClass { } - class publicClass { + export class publicClass { } - class publicClassWithWithPrivateGetAccessorTypes { + export class publicClassWithWithPrivateGetAccessorTypes { static readonly myPublicStaticMethod: privateClass; private static readonly myPrivateStaticMethod; readonly myPublicMethod: privateClass; @@ -3618,7 +3618,7 @@ export declare module publicModule { readonly myPublicMethod1: privateClass; private readonly myPrivateMethod1; } - class publicClassWithWithPublicGetAccessorTypes { + export class publicClassWithWithPublicGetAccessorTypes { static readonly myPublicStaticMethod: publicClass; private static readonly myPrivateStaticMethod; readonly myPublicMethod: publicClass; @@ -3628,35 +3628,36 @@ export declare module publicModule { readonly myPublicMethod1: publicClass; private readonly myPrivateMethod1; } - class publicClassWithWithPrivateSetAccessorTypes { + export class publicClassWithWithPrivateSetAccessorTypes { static myPublicStaticMethod: privateClass; private static myPrivateStaticMethod; myPublicMethod: privateClass; private myPrivateMethod; } - class publicClassWithWithPublicSetAccessorTypes { + export class publicClassWithWithPublicSetAccessorTypes { static myPublicStaticMethod: publicClass; private static myPrivateStaticMethod; myPublicMethod: publicClass; private myPrivateMethod; } - class publicClassWithPrivateModuleGetAccessorTypes { + export class publicClassWithPrivateModuleGetAccessorTypes { static readonly myPublicStaticMethod: privateModule.publicClass; readonly myPublicMethod: privateModule.publicClass; static readonly myPublicStaticMethod1: privateModule.publicClass; readonly myPublicMethod1: privateModule.publicClass; } - class publicClassWithPrivateModuleSetAccessorTypes { + export class publicClassWithPrivateModuleSetAccessorTypes { static myPublicStaticMethod: privateModule.publicClass; myPublicMethod: privateModule.publicClass; } + export {}; } declare module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - class publicClassWithWithPrivateGetAccessorTypes { + export class publicClassWithWithPrivateGetAccessorTypes { static readonly myPublicStaticMethod: privateClass; private static readonly myPrivateStaticMethod; readonly myPublicMethod: privateClass; @@ -3666,7 +3667,7 @@ declare module privateModule { readonly myPublicMethod1: privateClass; private readonly myPrivateMethod1; } - class publicClassWithWithPublicGetAccessorTypes { + export class publicClassWithWithPublicGetAccessorTypes { static readonly myPublicStaticMethod: publicClass; private static readonly myPrivateStaticMethod; readonly myPublicMethod: publicClass; @@ -3676,28 +3677,29 @@ declare module privateModule { readonly myPublicMethod1: publicClass; private readonly myPrivateMethod1; } - class publicClassWithWithPrivateSetAccessorTypes { + export class publicClassWithWithPrivateSetAccessorTypes { static myPublicStaticMethod: privateClass; private static myPrivateStaticMethod; myPublicMethod: privateClass; private myPrivateMethod; } - class publicClassWithWithPublicSetAccessorTypes { + export class publicClassWithWithPublicSetAccessorTypes { static myPublicStaticMethod: publicClass; private static myPrivateStaticMethod; myPublicMethod: publicClass; private myPrivateMethod; } - class publicClassWithPrivateModuleGetAccessorTypes { + export class publicClassWithPrivateModuleGetAccessorTypes { static readonly myPublicStaticMethod: privateModule.publicClass; readonly myPublicMethod: privateModule.publicClass; static readonly myPublicStaticMethod1: publicClass; readonly myPublicMethod1: publicClass; } - class publicClassWithPrivateModuleSetAccessorTypes { + export class publicClassWithPrivateModuleSetAccessorTypes { static myPublicStaticMethod: privateModule.publicClass; myPublicMethod: privateModule.publicClass; } + export {}; } export {}; //// [privacyAccessorDeclFile_GlobalFile.d.ts] @@ -3722,14 +3724,14 @@ declare class publicClassInGlobalWithWithPublicSetAccessorTypes { declare module publicModuleInGlobal { class privateClass { } - class publicClass { + export class publicClass { } module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - class publicClassWithWithPrivateGetAccessorTypes { + export class publicClassWithWithPrivateGetAccessorTypes { static readonly myPublicStaticMethod: privateClass; private static readonly myPrivateStaticMethod; readonly myPublicMethod: privateClass; @@ -3739,7 +3741,7 @@ declare module publicModuleInGlobal { readonly myPublicMethod1: privateClass; private readonly myPrivateMethod1; } - class publicClassWithWithPublicGetAccessorTypes { + export class publicClassWithWithPublicGetAccessorTypes { static readonly myPublicStaticMethod: publicClass; private static readonly myPrivateStaticMethod; readonly myPublicMethod: publicClass; @@ -3749,30 +3751,31 @@ declare module publicModuleInGlobal { readonly myPublicMethod1: publicClass; private readonly myPrivateMethod1; } - class publicClassWithWithPrivateSetAccessorTypes { + export class publicClassWithWithPrivateSetAccessorTypes { static myPublicStaticMethod: privateClass; private static myPrivateStaticMethod; myPublicMethod: privateClass; private myPrivateMethod; } - class publicClassWithWithPublicSetAccessorTypes { + export class publicClassWithWithPublicSetAccessorTypes { static myPublicStaticMethod: publicClass; private static myPrivateStaticMethod; myPublicMethod: publicClass; private myPrivateMethod; } - class publicClassWithPrivateModuleGetAccessorTypes { + export class publicClassWithPrivateModuleGetAccessorTypes { static readonly myPublicStaticMethod: privateModule.publicClass; readonly myPublicMethod: privateModule.publicClass; static readonly myPublicStaticMethod1: publicClass; readonly myPublicMethod1: publicClass; } - class publicClassWithPrivateModuleSetAccessorTypes { + export class publicClassWithPrivateModuleSetAccessorTypes { static myPublicStaticMethod: privateModule.publicClass; myPublicMethod: privateModule.publicClass; } + export {}; } - class publicClassWithWithPrivateGetAccessorTypes { + export class publicClassWithWithPrivateGetAccessorTypes { static readonly myPublicStaticMethod: privateClass; private static readonly myPrivateStaticMethod; readonly myPublicMethod: privateClass; @@ -3782,7 +3785,7 @@ declare module publicModuleInGlobal { readonly myPublicMethod1: privateClass; private readonly myPrivateMethod1; } - class publicClassWithWithPublicGetAccessorTypes { + export class publicClassWithWithPublicGetAccessorTypes { static readonly myPublicStaticMethod: publicClass; private static readonly myPrivateStaticMethod; readonly myPublicMethod: publicClass; @@ -3792,26 +3795,27 @@ declare module publicModuleInGlobal { readonly myPublicMethod1: publicClass; private readonly myPrivateMethod1; } - class publicClassWithWithPrivateSetAccessorTypes { + export class publicClassWithWithPrivateSetAccessorTypes { static myPublicStaticMethod: privateClass; private static myPrivateStaticMethod; myPublicMethod: privateClass; private myPrivateMethod; } - class publicClassWithWithPublicSetAccessorTypes { + export class publicClassWithWithPublicSetAccessorTypes { static myPublicStaticMethod: publicClass; private static myPrivateStaticMethod; myPublicMethod: publicClass; private myPrivateMethod; } - class publicClassWithPrivateModuleGetAccessorTypes { + export class publicClassWithPrivateModuleGetAccessorTypes { static readonly myPublicStaticMethod: privateModule.publicClass; readonly myPublicMethod: privateModule.publicClass; static readonly myPublicStaticMethod1: privateModule.publicClass; readonly myPublicMethod1: privateModule.publicClass; } - class publicClassWithPrivateModuleSetAccessorTypes { + export class publicClassWithPrivateModuleSetAccessorTypes { static myPublicStaticMethod: privateModule.publicClass; myPublicMethod: privateModule.publicClass; } + export {}; } diff --git a/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleError.js b/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleError.js index ae3e7f350b0..68647309469 100644 --- a/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleError.js +++ b/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleError.js @@ -22,5 +22,6 @@ declare module Outer { module Inner { var m: typeof Inner; } - var f: typeof Inner; + export var f: typeof Inner; + export {}; } diff --git a/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleNoError.js b/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleNoError.js index 4a3a1bb08bc..7c84bb003b8 100644 --- a/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleNoError.js +++ b/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleNoError.js @@ -22,5 +22,6 @@ declare module Outer { module Inner { var m: number; } - var f: typeof Inner; + export var f: typeof Inner; + export {}; } diff --git a/tests/baselines/reference/privacyClassExtendsClauseDeclFile.js b/tests/baselines/reference/privacyClassExtendsClauseDeclFile.js index f761fe3ae4d..b07f94ea376 100644 --- a/tests/baselines/reference/privacyClassExtendsClauseDeclFile.js +++ b/tests/baselines/reference/privacyClassExtendsClauseDeclFile.js @@ -368,30 +368,32 @@ var publicClassExtendingPublicClassInGlobal = /** @class */ (function (_super) { //// [privacyClassExtendsClauseDeclFile_externalModule.d.ts] export declare module publicModule { - class publicClassInPublicModule { + export class publicClassInPublicModule { private f1; } class privateClassInPublicModule { } - class publicClassExtendingPublicClassInModule extends publicClassInPublicModule { + export class publicClassExtendingPublicClassInModule extends publicClassInPublicModule { } - class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { + export class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { } - class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { + export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { } + export {}; } declare module privateModule { - class publicClassInPrivateModule { + export class publicClassInPrivateModule { private f1; } class privateClassInPrivateModule { } - class publicClassExtendingPublicClassInModule extends publicClassInPrivateModule { + export class publicClassExtendingPublicClassInModule extends publicClassInPrivateModule { } - class publicClassExtendingPrivateClassInModule extends privateClassInPrivateModule { + export class publicClassExtendingPrivateClassInModule extends privateClassInPrivateModule { } - class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { + export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { } + export {}; } export declare class publicClass { private f1; @@ -407,15 +409,16 @@ export declare class publicClassExtendingFromPrivateModuleClass extends privateM export {}; //// [privacyClassExtendsClauseDeclFile_GlobalFile.d.ts] declare module publicModuleInGlobal { - class publicClassInPublicModule { + export class publicClassInPublicModule { private f1; } class privateClassInPublicModule { } - class publicClassExtendingPublicClassInModule extends publicClassInPublicModule { + export class publicClassExtendingPublicClassInModule extends publicClassInPublicModule { } - class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { + export class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { } + export {}; } declare class publicClassInGlobal { } diff --git a/tests/baselines/reference/privacyClassImplementsClauseDeclFile.js b/tests/baselines/reference/privacyClassImplementsClauseDeclFile.js index 615a03fe07d..988210f57f2 100644 --- a/tests/baselines/reference/privacyClassImplementsClauseDeclFile.js +++ b/tests/baselines/reference/privacyClassImplementsClauseDeclFile.js @@ -242,30 +242,32 @@ var publicClassImplementingPublicInterfaceInGlobal = /** @class */ (function () //// [privacyClassImplementsClauseDeclFile_externalModule.d.ts] export declare module publicModule { - interface publicInterfaceInPublicModule { + export interface publicInterfaceInPublicModule { } interface privateInterfaceInPublicModule { } - class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule { + export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule { } - class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { + export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { } - class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { + export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { } - class publicClassImplementingPrivateAndPublicInterface implements privateInterfaceInPublicModule, publicInterfaceInPublicModule { + export class publicClassImplementingPrivateAndPublicInterface implements privateInterfaceInPublicModule, publicInterfaceInPublicModule { } + export {}; } declare module privateModule { - interface publicInterfaceInPrivateModule { + export interface publicInterfaceInPrivateModule { } interface privateInterfaceInPrivateModule { } - class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule { + export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule { } - class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule { + export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule { } - class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { + export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { } + export {}; } export interface publicInterface { } @@ -280,14 +282,15 @@ export declare class publicClassImplementingFromPrivateModuleInterface implement export {}; //// [privacyClassImplementsClauseDeclFile_GlobalFile.d.ts] declare module publicModuleInGlobal { - interface publicInterfaceInPublicModule { + export interface publicInterfaceInPublicModule { } interface privateInterfaceInPublicModule { } - class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule { + export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule { } - class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { + export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { } + export {}; } interface publicInterfaceInGlobal { } diff --git a/tests/baselines/reference/privacyFunctionParameterDeclFile.js b/tests/baselines/reference/privacyFunctionParameterDeclFile.js index e287ef7c3d5..3ba73184890 100644 --- a/tests/baselines/reference/privacyFunctionParameterDeclFile.js +++ b/tests/baselines/reference/privacyFunctionParameterDeclFile.js @@ -1334,19 +1334,19 @@ export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(par export declare module publicModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivateParmeterTypes { + export interface publicInterfaceWithPrivateParmeterTypes { new (param: privateClass): publicClass; (param: privateClass): publicClass; myMethod(param: privateClass): void; } - interface publicInterfaceWithPublicParmeterTypes { + export interface publicInterfaceWithPublicParmeterTypes { new (param: publicClass): publicClass; (param: publicClass): publicClass; myMethod(param: publicClass): void; } - class publicClassWithWithPrivateParmeterTypes { + export class publicClassWithWithPrivateParmeterTypes { private param1; param2: privateClass; static myPublicStaticMethod(param: privateClass): void; @@ -1355,7 +1355,7 @@ export declare module publicModule { private myPrivateMethod; constructor(param: privateClass, param1: privateClass, param2: privateClass); } - class publicClassWithWithPublicParmeterTypes { + export class publicClassWithWithPublicParmeterTypes { private param1; param2: publicClass; static myPublicStaticMethod(param: publicClass): void; @@ -1364,41 +1364,42 @@ export declare module publicModule { private myPrivateMethod; constructor(param: publicClass, param1: publicClass, param2: publicClass); } - function publicFunctionWithPrivateParmeterTypes(param: privateClass): void; - function publicFunctionWithPublicParmeterTypes(param: publicClass): void; - function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; - function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void; - interface publicInterfaceWithPrivateModuleParameterTypes { + export function publicFunctionWithPrivateParmeterTypes(param: privateClass): void; + export function publicFunctionWithPublicParmeterTypes(param: publicClass): void; + export function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; + export function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void; + export interface publicInterfaceWithPrivateModuleParameterTypes { new (param: privateModule.publicClass): publicClass; (param: privateModule.publicClass): publicClass; myMethod(param: privateModule.publicClass): void; } - class publicClassWithPrivateModuleParameterTypes { + export class publicClassWithPrivateModuleParameterTypes { private param1; param2: privateModule.publicClass; static myPublicStaticMethod(param: privateModule.publicClass): void; myPublicMethod(param: privateModule.publicClass): void; constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass); } - function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; - function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export {}; } declare module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivateParmeterTypes { + export interface publicInterfaceWithPrivateParmeterTypes { new (param: privateClass): publicClass; (param: privateClass): publicClass; myMethod(param: privateClass): void; } - interface publicInterfaceWithPublicParmeterTypes { + export interface publicInterfaceWithPublicParmeterTypes { new (param: publicClass): publicClass; (param: publicClass): publicClass; myMethod(param: publicClass): void; } - class publicClassWithWithPrivateParmeterTypes { + export class publicClassWithWithPrivateParmeterTypes { private param1; param2: privateClass; static myPublicStaticMethod(param: privateClass): void; @@ -1407,7 +1408,7 @@ declare module privateModule { private myPrivateMethod; constructor(param: privateClass, param1: privateClass, param2: privateClass); } - class publicClassWithWithPublicParmeterTypes { + export class publicClassWithWithPublicParmeterTypes { private param1; param2: publicClass; static myPublicStaticMethod(param: publicClass): void; @@ -1416,24 +1417,25 @@ declare module privateModule { private myPrivateMethod; constructor(param: publicClass, param1: publicClass, param2: publicClass); } - function publicFunctionWithPrivateParmeterTypes(param: privateClass): void; - function publicFunctionWithPublicParmeterTypes(param: publicClass): void; - function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; - function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void; - interface publicInterfaceWithPrivateModuleParameterTypes { + export function publicFunctionWithPrivateParmeterTypes(param: privateClass): void; + export function publicFunctionWithPublicParmeterTypes(param: publicClass): void; + export function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; + export function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void; + export interface publicInterfaceWithPrivateModuleParameterTypes { new (param: privateModule.publicClass): publicClass; (param: privateModule.publicClass): publicClass; myMethod(param: privateModule.publicClass): void; } - class publicClassWithPrivateModuleParameterTypes { + export class publicClassWithPrivateModuleParameterTypes { private param1; param2: privateModule.publicClass; static myPublicStaticMethod(param: privateModule.publicClass): void; myPublicMethod(param: privateModule.publicClass): void; constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass); } - function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; - function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export {}; } export {}; //// [privacyFunctionParameterDeclFile_GlobalFile.d.ts] @@ -1458,24 +1460,24 @@ declare function publicAmbientFunctionWithPublicParmeterTypesInGlobal(param: pub declare module publicModuleInGlobal { class privateClass { } - class publicClass { + export class publicClass { } module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivateParmeterTypes { + export interface publicInterfaceWithPrivateParmeterTypes { new (param: privateClass): publicClass; (param: privateClass): publicClass; myMethod(param: privateClass): void; } - interface publicInterfaceWithPublicParmeterTypes { + export interface publicInterfaceWithPublicParmeterTypes { new (param: publicClass): publicClass; (param: publicClass): publicClass; myMethod(param: publicClass): void; } - class publicClassWithWithPrivateParmeterTypes { + export class publicClassWithWithPrivateParmeterTypes { private param1; param2: privateClass; static myPublicStaticMethod(param: privateClass): void; @@ -1484,7 +1486,7 @@ declare module publicModuleInGlobal { private myPrivateMethod; constructor(param: privateClass, param1: privateClass, param2: privateClass); } - class publicClassWithWithPublicParmeterTypes { + export class publicClassWithWithPublicParmeterTypes { private param1; param2: publicClass; static myPublicStaticMethod(param: publicClass): void; @@ -1493,36 +1495,37 @@ declare module publicModuleInGlobal { private myPrivateMethod; constructor(param: publicClass, param1: publicClass, param2: publicClass); } - function publicFunctionWithPrivateParmeterTypes(param: privateClass): void; - function publicFunctionWithPublicParmeterTypes(param: publicClass): void; - function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; - function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void; - interface publicInterfaceWithPrivateModuleParameterTypes { + export function publicFunctionWithPrivateParmeterTypes(param: privateClass): void; + export function publicFunctionWithPublicParmeterTypes(param: publicClass): void; + export function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; + export function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void; + export interface publicInterfaceWithPrivateModuleParameterTypes { new (param: privateModule.publicClass): publicClass; (param: privateModule.publicClass): publicClass; myMethod(param: privateModule.publicClass): void; } - class publicClassWithPrivateModuleParameterTypes { + export class publicClassWithPrivateModuleParameterTypes { private param1; param2: privateModule.publicClass; static myPublicStaticMethod(param: privateModule.publicClass): void; myPublicMethod(param: privateModule.publicClass): void; constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass); } - function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; - function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export {}; } - interface publicInterfaceWithPrivateParmeterTypes { + export interface publicInterfaceWithPrivateParmeterTypes { new (param: privateClass): publicClass; (param: privateClass): publicClass; myMethod(param: privateClass): void; } - interface publicInterfaceWithPublicParmeterTypes { + export interface publicInterfaceWithPublicParmeterTypes { new (param: publicClass): publicClass; (param: publicClass): publicClass; myMethod(param: publicClass): void; } - class publicClassWithWithPrivateParmeterTypes { + export class publicClassWithWithPrivateParmeterTypes { private param1; param2: privateClass; static myPublicStaticMethod(param: privateClass): void; @@ -1531,7 +1534,7 @@ declare module publicModuleInGlobal { private myPrivateMethod; constructor(param: privateClass, param1: privateClass, param2: privateClass); } - class publicClassWithWithPublicParmeterTypes { + export class publicClassWithWithPublicParmeterTypes { private param1; param2: publicClass; static myPublicStaticMethod(param: publicClass): void; @@ -1540,22 +1543,23 @@ declare module publicModuleInGlobal { private myPrivateMethod; constructor(param: publicClass, param1: publicClass, param2: publicClass); } - function publicFunctionWithPrivateParmeterTypes(param: privateClass): void; - function publicFunctionWithPublicParmeterTypes(param: publicClass): void; - function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; - function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void; - interface publicInterfaceWithPrivateModuleParameterTypes { + export function publicFunctionWithPrivateParmeterTypes(param: privateClass): void; + export function publicFunctionWithPublicParmeterTypes(param: publicClass): void; + export function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; + export function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void; + export interface publicInterfaceWithPrivateModuleParameterTypes { new (param: privateModule.publicClass): publicClass; (param: privateModule.publicClass): publicClass; myMethod(param: privateModule.publicClass): void; } - class publicClassWithPrivateModuleParameterTypes { + export class publicClassWithPrivateModuleParameterTypes { private param1; param2: privateModule.publicClass; static myPublicStaticMethod(param: privateModule.publicClass): void; myPublicMethod(param: privateModule.publicClass): void; constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass); } - function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; - function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; + export {}; } diff --git a/tests/baselines/reference/privacyFunctionReturnTypeDeclFile.js b/tests/baselines/reference/privacyFunctionReturnTypeDeclFile.js index 79b144d815e..e59e9800ee7 100644 --- a/tests/baselines/reference/privacyFunctionReturnTypeDeclFile.js +++ b/tests/baselines/reference/privacyFunctionReturnTypeDeclFile.js @@ -2341,21 +2341,21 @@ export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): export declare module publicModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivateParmeterTypes { + export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } - interface publicInterfaceWithPublicParmeterTypes { + export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } - class publicClassWithWithPrivateParmeterTypes { + export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass; private static myPrivateStaticMethod; myPublicMethod(): privateClass; @@ -2365,7 +2365,7 @@ export declare module publicModule { myPublicMethod1(): privateClass; private myPrivateMethod1; } - class publicClassWithWithPublicParmeterTypes { + export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass; private static myPrivateStaticMethod; myPublicMethod(): publicClass; @@ -2375,46 +2375,47 @@ export declare module publicModule { myPublicMethod1(): publicClass; private myPrivateMethod1; } - function publicFunctionWithPrivateParmeterTypes(): privateClass; - function publicFunctionWithPublicParmeterTypes(): publicClass; - function publicFunctionWithPrivateParmeterTypes1(): privateClass; - function publicFunctionWithPublicParmeterTypes1(): publicClass; - function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; - function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; - interface publicInterfaceWithPrivateModuleParameterTypes { + export function publicFunctionWithPrivateParmeterTypes(): privateClass; + export function publicFunctionWithPublicParmeterTypes(): publicClass; + export function publicFunctionWithPrivateParmeterTypes1(): privateClass; + export function publicFunctionWithPublicParmeterTypes1(): publicClass; + export function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; + export function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; + export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } - class publicClassWithPrivateModuleParameterTypes { + export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass; myPublicMethod(): privateModule.publicClass; static myPublicStaticMethod1(): privateModule.publicClass; myPublicMethod1(): privateModule.publicClass; } - function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; - function publicFunctionWithPrivateModuleParameterTypes1(): privateModule.publicClass; - function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export function publicFunctionWithPrivateModuleParameterTypes1(): privateModule.publicClass; + export function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export {}; } declare module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivateParmeterTypes { + export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } - interface publicInterfaceWithPublicParmeterTypes { + export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } - class publicClassWithWithPrivateParmeterTypes { + export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass; private static myPrivateStaticMethod; myPublicMethod(): privateClass; @@ -2424,7 +2425,7 @@ declare module privateModule { myPublicMethod1(): privateClass; private myPrivateMethod1; } - class publicClassWithWithPublicParmeterTypes { + export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass; private static myPrivateStaticMethod; myPublicMethod(): publicClass; @@ -2434,27 +2435,28 @@ declare module privateModule { myPublicMethod1(): publicClass; private myPrivateMethod1; } - function publicFunctionWithPrivateParmeterTypes(): privateClass; - function publicFunctionWithPublicParmeterTypes(): publicClass; - function publicFunctionWithPrivateParmeterTypes1(): privateClass; - function publicFunctionWithPublicParmeterTypes1(): publicClass; - function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; - function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; - interface publicInterfaceWithPrivateModuleParameterTypes { + export function publicFunctionWithPrivateParmeterTypes(): privateClass; + export function publicFunctionWithPublicParmeterTypes(): publicClass; + export function publicFunctionWithPrivateParmeterTypes1(): privateClass; + export function publicFunctionWithPublicParmeterTypes1(): publicClass; + export function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; + export function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; + export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } - class publicClassWithPrivateModuleParameterTypes { + export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass; myPublicMethod(): privateModule.publicClass; static myPublicStaticMethod1(): publicClass; myPublicMethod1(): publicClass; } - function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; - function publicFunctionWithPrivateModuleParameterTypes1(): publicClass; - function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export function publicFunctionWithPrivateModuleParameterTypes1(): publicClass; + export function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export {}; } export {}; //// [privacyFunctionReturnTypeDeclFile_GlobalFile.d.ts] @@ -2482,26 +2484,26 @@ declare function publicAmbientFunctionWithPublicParmeterTypesInGlobal(): publicC declare module publicModuleInGlobal { class privateClass { } - class publicClass { + export class publicClass { } module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivateParmeterTypes { + export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } - interface publicInterfaceWithPublicParmeterTypes { + export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } - class publicClassWithWithPrivateParmeterTypes { + export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass; private static myPrivateStaticMethod; myPublicMethod(): privateClass; @@ -2511,7 +2513,7 @@ declare module publicModuleInGlobal { myPublicMethod1(): privateClass; private myPrivateMethod1; } - class publicClassWithWithPublicParmeterTypes { + export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass; private static myPrivateStaticMethod; myPublicMethod(): publicClass; @@ -2521,41 +2523,42 @@ declare module publicModuleInGlobal { myPublicMethod1(): publicClass; private myPrivateMethod1; } - function publicFunctionWithPrivateParmeterTypes(): privateClass; - function publicFunctionWithPublicParmeterTypes(): publicClass; - function publicFunctionWithPrivateParmeterTypes1(): privateClass; - function publicFunctionWithPublicParmeterTypes1(): publicClass; - function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; - function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; - interface publicInterfaceWithPrivateModuleParameterTypes { + export function publicFunctionWithPrivateParmeterTypes(): privateClass; + export function publicFunctionWithPublicParmeterTypes(): publicClass; + export function publicFunctionWithPrivateParmeterTypes1(): privateClass; + export function publicFunctionWithPublicParmeterTypes1(): publicClass; + export function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; + export function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; + export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } - class publicClassWithPrivateModuleParameterTypes { + export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass; myPublicMethod(): privateModule.publicClass; static myPublicStaticMethod1(): publicClass; myPublicMethod1(): publicClass; } - function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; - function publicFunctionWithPrivateModuleParameterTypes1(): publicClass; - function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export function publicFunctionWithPrivateModuleParameterTypes1(): publicClass; + export function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export {}; } - interface publicInterfaceWithPrivateParmeterTypes { + export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } - interface publicInterfaceWithPublicParmeterTypes { + export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } - class publicClassWithWithPrivateParmeterTypes { + export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass; private static myPrivateStaticMethod; myPublicMethod(): privateClass; @@ -2565,7 +2568,7 @@ declare module publicModuleInGlobal { myPublicMethod1(): privateClass; private myPrivateMethod1; } - class publicClassWithWithPublicParmeterTypes { + export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass; private static myPrivateStaticMethod; myPublicMethod(): publicClass; @@ -2575,25 +2578,26 @@ declare module publicModuleInGlobal { myPublicMethod1(): publicClass; private myPrivateMethod1; } - function publicFunctionWithPrivateParmeterTypes(): privateClass; - function publicFunctionWithPublicParmeterTypes(): publicClass; - function publicFunctionWithPrivateParmeterTypes1(): privateClass; - function publicFunctionWithPublicParmeterTypes1(): publicClass; - function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; - function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; - interface publicInterfaceWithPrivateModuleParameterTypes { + export function publicFunctionWithPrivateParmeterTypes(): privateClass; + export function publicFunctionWithPublicParmeterTypes(): publicClass; + export function publicFunctionWithPrivateParmeterTypes1(): privateClass; + export function publicFunctionWithPublicParmeterTypes1(): publicClass; + export function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; + export function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; + export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } - class publicClassWithPrivateModuleParameterTypes { + export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass; myPublicMethod(): privateModule.publicClass; static myPublicStaticMethod1(): privateModule.publicClass; myPublicMethod1(): privateModule.publicClass; } - function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; - function publicFunctionWithPrivateModuleParameterTypes1(): privateModule.publicClass; - function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export function publicFunctionWithPrivateModuleParameterTypes1(): privateModule.publicClass; + export function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; + export {}; } diff --git a/tests/baselines/reference/privacyGloImport.js b/tests/baselines/reference/privacyGloImport.js index 3ca1bf812d3..805f651c026 100644 --- a/tests/baselines/reference/privacyGloImport.js +++ b/tests/baselines/reference/privacyGloImport.js @@ -265,7 +265,7 @@ var m2; //// [privacyGloImport.d.ts] declare module m1 { - module m1_M1_public { + export module m1_M1_public { class c1 { } function f1(): c1; @@ -280,17 +280,18 @@ declare module m1 { var v2: c1; } import m1_im1_private = m1_M1_public; - var m1_im1_private_v1_public: typeof m1_im1_private.c1; - var m1_im1_private_v2_public: m1_im1_private.c1; - var m1_im1_private_v3_public: typeof m1_im1_private.f1; - var m1_im1_private_v4_public: m1_im1_private.c1; + export var m1_im1_private_v1_public: typeof m1_im1_private.c1; + export var m1_im1_private_v2_public: m1_im1_private.c1; + export var m1_im1_private_v3_public: typeof m1_im1_private.f1; + export var m1_im1_private_v4_public: m1_im1_private.c1; import m1_im2_private = m1_M2_private; - var m1_im2_private_v1_public: typeof m1_im2_private.c1; - var m1_im2_private_v2_public: m1_im2_private.c1; - var m1_im2_private_v3_public: typeof m1_im2_private.f1; - var m1_im2_private_v4_public: m1_im2_private.c1; + export var m1_im2_private_v1_public: typeof m1_im2_private.c1; + export var m1_im2_private_v2_public: m1_im2_private.c1; + export var m1_im2_private_v3_public: typeof m1_im2_private.f1; + export var m1_im2_private_v4_public: m1_im2_private.c1; export import m1_im1_public = m1_M1_public; export import m1_im2_public = m1_M2_private; + export {}; } declare module glo_M1_public { class c1 { diff --git a/tests/baselines/reference/privacyGloImportParseErrors.js b/tests/baselines/reference/privacyGloImportParseErrors.js index bdf8025a5ed..d41b0b897e7 100644 --- a/tests/baselines/reference/privacyGloImportParseErrors.js +++ b/tests/baselines/reference/privacyGloImportParseErrors.js @@ -245,7 +245,7 @@ var m2; //// [privacyGloImportParseErrors.d.ts] declare module m1 { - module m1_M1_public { + export module m1_M1_public { class c1 { } function f1(): c1; @@ -259,7 +259,7 @@ declare module m1 { var v1: typeof c1; var v2: c1; } - module "m1_M3_public" { + export module "m1_M3_public" { function f1(): any; class c1 { } @@ -269,27 +269,28 @@ declare module m1 { var v2: c1; } import m1_im1_private = m1_M1_public; - var m1_im1_private_v1_public: typeof m1_im1_private.c1; - var m1_im1_private_v2_public: m1_im1_private.c1; - var m1_im1_private_v3_public: typeof m1_im1_private.f1; - var m1_im1_private_v4_public: m1_im1_private.c1; + export var m1_im1_private_v1_public: typeof m1_im1_private.c1; + export var m1_im1_private_v2_public: m1_im1_private.c1; + export var m1_im1_private_v3_public: typeof m1_im1_private.f1; + export var m1_im1_private_v4_public: m1_im1_private.c1; import m1_im2_private = m1_M2_private; - var m1_im2_private_v1_public: typeof m1_im2_private.c1; - var m1_im2_private_v2_public: m1_im2_private.c1; - var m1_im2_private_v3_public: typeof m1_im2_private.f1; - var m1_im2_private_v4_public: m1_im2_private.c1; - var m1_im3_private_v1_public: any; - var m1_im3_private_v2_public: any; - var m1_im3_private_v3_public: any; - var m1_im3_private_v4_public: any; - var m1_im4_private_v1_public: any; - var m1_im4_private_v2_public: any; - var m1_im4_private_v3_public: any; - var m1_im4_private_v4_public: any; + export var m1_im2_private_v1_public: typeof m1_im2_private.c1; + export var m1_im2_private_v2_public: m1_im2_private.c1; + export var m1_im2_private_v3_public: typeof m1_im2_private.f1; + export var m1_im2_private_v4_public: m1_im2_private.c1; + export var m1_im3_private_v1_public: any; + export var m1_im3_private_v2_public: any; + export var m1_im3_private_v3_public: any; + export var m1_im3_private_v4_public: any; + export var m1_im4_private_v1_public: any; + export var m1_im4_private_v2_public: any; + export var m1_im4_private_v3_public: any; + export var m1_im4_private_v4_public: any; export import m1_im1_public = m1_M1_public; export import m1_im2_public = m1_M2_private; export import m1_im3_public = require("m1_M3_public"); export import m1_im4_public = require("m1_M4_private"); + export {}; } declare module glo_M1_public { class c1 { diff --git a/tests/baselines/reference/privacyImport.js b/tests/baselines/reference/privacyImport.js index 0915fc9983b..f15833a079b 100644 --- a/tests/baselines/reference/privacyImport.js +++ b/tests/baselines/reference/privacyImport.js @@ -706,7 +706,7 @@ var m3; //// [privacyImport.d.ts] export declare module m1 { - module m1_M1_public { + export module m1_M1_public { class c1 { } function f1(): c1; @@ -721,17 +721,18 @@ export declare module m1 { var v2: c1; } import m1_im1_private = m1_M1_public; - var m1_im1_private_v1_public: typeof m1_im1_private.c1; - var m1_im1_private_v2_public: m1_im1_private.c1; - var m1_im1_private_v3_public: typeof m1_im1_private.f1; - var m1_im1_private_v4_public: m1_im1_private.c1; + export var m1_im1_private_v1_public: typeof m1_im1_private.c1; + export var m1_im1_private_v2_public: m1_im1_private.c1; + export var m1_im1_private_v3_public: typeof m1_im1_private.f1; + export var m1_im1_private_v4_public: m1_im1_private.c1; import m1_im2_private = m1_M2_private; - var m1_im2_private_v1_public: typeof m1_im2_private.c1; - var m1_im2_private_v2_public: m1_im2_private.c1; - var m1_im2_private_v3_public: typeof m1_im2_private.f1; - var m1_im2_private_v4_public: m1_im2_private.c1; + export var m1_im2_private_v1_public: typeof m1_im2_private.c1; + export var m1_im2_private_v2_public: m1_im2_private.c1; + export var m1_im2_private_v3_public: typeof m1_im2_private.f1; + export var m1_im2_private_v4_public: m1_im2_private.c1; export import m1_im1_public = m1_M1_public; export import m1_im2_public = m1_M2_private; + export {}; } export declare module glo_M1_public { class c1 { diff --git a/tests/baselines/reference/privacyInterfaceExtendsClauseDeclFile.js b/tests/baselines/reference/privacyInterfaceExtendsClauseDeclFile.js index f6d0278e0bd..6f9d8036e7f 100644 --- a/tests/baselines/reference/privacyInterfaceExtendsClauseDeclFile.js +++ b/tests/baselines/reference/privacyInterfaceExtendsClauseDeclFile.js @@ -101,30 +101,32 @@ exports.__esModule = true; //// [privacyInterfaceExtendsClauseDeclFile_externalModule.d.ts] export declare module publicModule { - interface publicInterfaceInPublicModule { + export interface publicInterfaceInPublicModule { } interface privateInterfaceInPublicModule { } - interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule { + export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule { } - interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { + export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { } - interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { + export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { } - interface publicInterfaceImplementingPrivateAndPublicInterface extends privateInterfaceInPublicModule, publicInterfaceInPublicModule { + export interface publicInterfaceImplementingPrivateAndPublicInterface extends privateInterfaceInPublicModule, publicInterfaceInPublicModule { } + export {}; } declare module privateModule { - interface publicInterfaceInPrivateModule { + export interface publicInterfaceInPrivateModule { } interface privateInterfaceInPrivateModule { } - interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPrivateModule { + export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPrivateModule { } - interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPrivateModule { + export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPrivateModule { } - interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { + export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { } + export {}; } export interface publicInterface { } @@ -139,14 +141,15 @@ export interface publicInterfaceImplementingFromPrivateModuleInterface extends p export {}; //// [privacyInterfaceExtendsClauseDeclFile_GlobalFile.d.ts] declare module publicModuleInGlobal { - interface publicInterfaceInPublicModule { + export interface publicInterfaceInPublicModule { } interface privateInterfaceInPublicModule { } - interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule { + export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule { } - interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { + export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { } + export {}; } interface publicInterfaceInGlobal { } diff --git a/tests/baselines/reference/privacyTypeParameterOfFunctionDeclFile.js b/tests/baselines/reference/privacyTypeParameterOfFunctionDeclFile.js index 32425e9d9a4..bb541a48007 100644 --- a/tests/baselines/reference/privacyTypeParameterOfFunctionDeclFile.js +++ b/tests/baselines/reference/privacyTypeParameterOfFunctionDeclFile.js @@ -872,95 +872,97 @@ export declare function publicFunctionWithPrivateMopduleTypeParameters(): privateClass; (): privateClass; myMethod(): privateClass; } - interface publicInterfaceWithPublicTypeParameters { + export interface publicInterfaceWithPublicTypeParameters { new (): publicClass; (): publicClass; myMethod(): publicClass; } - class publicClassWithWithPrivateTypeParameters { + export class publicClassWithWithPrivateTypeParameters { static myPublicStaticMethod(): void; private static myPrivateStaticMethod; myPublicMethod(): void; private myPrivateMethod; } - class publicClassWithWithPublicTypeParameters { + export class publicClassWithWithPublicTypeParameters { static myPublicStaticMethod(): void; private static myPrivateStaticMethod; myPublicMethod(): void; private myPrivateMethod; } - function publicFunctionWithPrivateTypeParameters(): void; - function publicFunctionWithPublicTypeParameters(): void; - interface publicInterfaceWithPublicTypeParametersWithoutExtends { + export function publicFunctionWithPrivateTypeParameters(): void; + export function publicFunctionWithPublicTypeParameters(): void; + export interface publicInterfaceWithPublicTypeParametersWithoutExtends { new (): publicClass; (): publicClass; myMethod(): publicClass; } - class publicClassWithWithPublicTypeParametersWithoutExtends { + export class publicClassWithWithPublicTypeParametersWithoutExtends { static myPublicStaticMethod(): void; private static myPrivateStaticMethod; myPublicMethod(): void; private myPrivateMethod; } - function publicFunctionWithPublicTypeParametersWithoutExtends(): void; - interface publicInterfaceWithPrivatModuleTypeParameters { + export function publicFunctionWithPublicTypeParametersWithoutExtends(): void; + export interface publicInterfaceWithPrivatModuleTypeParameters { new (): privateModule.publicClass; (): privateModule.publicClass; myMethod(): privateModule.publicClass; } - class publicClassWithWithPrivateModuleTypeParameters { + export class publicClassWithWithPrivateModuleTypeParameters { static myPublicStaticMethod(): void; myPublicMethod(): void; } - function publicFunctionWithPrivateMopduleTypeParameters(): void; + export function publicFunctionWithPrivateMopduleTypeParameters(): void; + export {}; } declare module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivateTypeParameters { + export interface publicInterfaceWithPrivateTypeParameters { new (): privateClass; (): privateClass; myMethod(): privateClass; } - interface publicInterfaceWithPublicTypeParameters { + export interface publicInterfaceWithPublicTypeParameters { new (): publicClass; (): publicClass; myMethod(): publicClass; } - class publicClassWithWithPrivateTypeParameters { + export class publicClassWithWithPrivateTypeParameters { static myPublicStaticMethod(): void; private static myPrivateStaticMethod; myPublicMethod(): void; private myPrivateMethod; } - class publicClassWithWithPublicTypeParameters { + export class publicClassWithWithPublicTypeParameters { static myPublicStaticMethod(): void; private static myPrivateStaticMethod; myPublicMethod(): void; private myPrivateMethod; } - function publicFunctionWithPrivateTypeParameters(): void; - function publicFunctionWithPublicTypeParameters(): void; - interface publicInterfaceWithPublicTypeParametersWithoutExtends { + export function publicFunctionWithPrivateTypeParameters(): void; + export function publicFunctionWithPublicTypeParameters(): void; + export interface publicInterfaceWithPublicTypeParametersWithoutExtends { new (): publicClass; (): publicClass; myMethod(): publicClass; } - class publicClassWithWithPublicTypeParametersWithoutExtends { + export class publicClassWithWithPublicTypeParametersWithoutExtends { static myPublicStaticMethod(): void; private static myPrivateStaticMethod; myPublicMethod(): void; private myPrivateMethod; } - function publicFunctionWithPublicTypeParametersWithoutExtends(): void; + export function publicFunctionWithPublicTypeParametersWithoutExtends(): void; + export {}; } export {}; diff --git a/tests/baselines/reference/privacyTypeParametersOfClassDeclFile.js b/tests/baselines/reference/privacyTypeParametersOfClassDeclFile.js index bcf4c542fb7..468f656fde1 100644 --- a/tests/baselines/reference/privacyTypeParametersOfClassDeclFile.js +++ b/tests/baselines/reference/privacyTypeParametersOfClassDeclFile.js @@ -405,34 +405,36 @@ export declare class publicClassWithTypeParametersFromPrivateModule { + export class publicClassWithPrivateTypeParameters { myMethod(val: T): T; } - class publicClassWithPublicTypeParameters { + export class publicClassWithPublicTypeParameters { myMethod(val: T): T; } - class publicClassWithPublicTypeParametersWithoutExtends { + export class publicClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; } - class publicClassWithTypeParametersFromPrivateModule { + export class publicClassWithTypeParametersFromPrivateModule { myMethod(val: T): T; } + export {}; } declare module privateModule { class privateClassInPrivateModule { } - class publicClassInPrivateModule { + export class publicClassInPrivateModule { } - class publicClassWithPrivateTypeParameters { + export class publicClassWithPrivateTypeParameters { myMethod(val: T): T; } - class publicClassWithPublicTypeParameters { + export class publicClassWithPublicTypeParameters { myMethod(val: T): T; } - class publicClassWithPublicTypeParametersWithoutExtends { + export class publicClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; } + export {}; } export {}; diff --git a/tests/baselines/reference/privacyTypeParametersOfInterfaceDeclFile.js b/tests/baselines/reference/privacyTypeParametersOfInterfaceDeclFile.js index 2a7a83e4577..23a7508c6e2 100644 --- a/tests/baselines/reference/privacyTypeParametersOfInterfaceDeclFile.js +++ b/tests/baselines/reference/privacyTypeParametersOfInterfaceDeclFile.js @@ -301,13 +301,13 @@ export interface publicInterfaceWithPrivateModuleTypeParameterConstraints { } - class publicClassInPublicModuleT { + export class publicClassInPublicModuleT { } - interface publicInterfaceWithPrivateTypeParameters { + export interface publicInterfaceWithPrivateTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT; myMethod1(): privateClassInPublicModuleT; @@ -315,7 +315,7 @@ export declare module publicModule { myMethod3(): publicClassInPublicModuleT; myMethod4(): publicClassInPublicModuleT; } - interface publicInterfaceWithPublicTypeParameters { + export interface publicInterfaceWithPublicTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT; myMethod1(): privateClassInPublicModuleT; @@ -323,23 +323,24 @@ export declare module publicModule { myMethod3(): publicClassInPublicModuleT; myMethod4(): publicClassInPublicModuleT; } - interface publicInterfaceWithPublicTypeParametersWithoutExtends { + export interface publicInterfaceWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT; } - interface publicInterfaceWithPrivateModuleTypeParameterConstraints { + export interface publicInterfaceWithPrivateModuleTypeParameterConstraints { } + export {}; } declare module privateModule { class privateClassInPrivateModule { } - class publicClassInPrivateModule { + export class publicClassInPrivateModule { } class privateClassInPrivateModuleT { } - class publicClassInPrivateModuleT { + export class publicClassInPrivateModuleT { } - interface publicInterfaceWithPrivateTypeParameters { + export interface publicInterfaceWithPrivateTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT; myMethod1(): privateClassInPrivateModuleT; @@ -347,7 +348,7 @@ declare module privateModule { myMethod3(): publicClassInPrivateModuleT; myMethod4(): publicClassInPrivateModuleT; } - interface publicInterfaceWithPublicTypeParameters { + export interface publicInterfaceWithPublicTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT; myMethod1(): privateClassInPrivateModuleT; @@ -355,9 +356,10 @@ declare module privateModule { myMethod3(): publicClassInPrivateModuleT; myMethod4(): publicClassInPrivateModuleT; } - interface publicInterfaceWithPublicTypeParametersWithoutExtends { + export interface publicInterfaceWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT; } + export {}; } export {}; diff --git a/tests/baselines/reference/privacyVarDeclFile.js b/tests/baselines/reference/privacyVarDeclFile.js index f32b8707534..76d69b2a2ef 100644 --- a/tests/baselines/reference/privacyVarDeclFile.js +++ b/tests/baselines/reference/privacyVarDeclFile.js @@ -727,76 +727,78 @@ export declare var publicAmbientVarWithPrivateModulePropertyTypes: privateModule export declare module publicModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivatePropertyTypes { + export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } - interface publicInterfaceWithPublicPropertyTypes { + export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } - class publicClassWithWithPrivatePropertyTypes { + export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty; myPublicProperty: privateClass; private myPrivateProperty; } - class publicClassWithWithPublicPropertyTypes { + export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty; myPublicProperty: publicClass; private myPrivateProperty; } - var publicVarWithPrivatePropertyTypes: privateClass; - var publicVarWithPublicPropertyTypes: publicClass; - var publicAmbientVarWithPrivatePropertyTypes: privateClass; - var publicAmbientVarWithPublicPropertyTypes: publicClass; - interface publicInterfaceWithPrivateModulePropertyTypes { + export var publicVarWithPrivatePropertyTypes: privateClass; + export var publicVarWithPublicPropertyTypes: publicClass; + export var publicAmbientVarWithPrivatePropertyTypes: privateClass; + export var publicAmbientVarWithPublicPropertyTypes: publicClass; + export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } - class publicClassWithPrivateModulePropertyTypes { + export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } - var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; - var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export {}; } declare module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivatePropertyTypes { + export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } - interface publicInterfaceWithPublicPropertyTypes { + export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } - class publicClassWithWithPrivatePropertyTypes { + export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty; myPublicProperty: privateClass; private myPrivateProperty; } - class publicClassWithWithPublicPropertyTypes { + export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty; myPublicProperty: publicClass; private myPrivateProperty; } - var publicVarWithPrivatePropertyTypes: privateClass; - var publicVarWithPublicPropertyTypes: publicClass; - var publicAmbientVarWithPrivatePropertyTypes: privateClass; - var publicAmbientVarWithPublicPropertyTypes: publicClass; - interface publicInterfaceWithPrivateModulePropertyTypes { + export var publicVarWithPrivatePropertyTypes: privateClass; + export var publicVarWithPublicPropertyTypes: publicClass; + export var publicAmbientVarWithPrivatePropertyTypes: privateClass; + export var publicAmbientVarWithPublicPropertyTypes: publicClass; + export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } - class publicClassWithPrivateModulePropertyTypes { + export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } - var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; - var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export {}; } export {}; //// [privacyVarDeclFile_GlobalFile.d.ts] @@ -816,74 +818,76 @@ declare var publicAmbientVarWithPublicPropertyTypesInGlobal: publicClassInGlobal declare module publicModuleInGlobal { class privateClass { } - class publicClass { + export class publicClass { } module privateModule { class privateClass { } - class publicClass { + export class publicClass { } - interface publicInterfaceWithPrivatePropertyTypes { + export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } - interface publicInterfaceWithPublicPropertyTypes { + export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } - class publicClassWithWithPrivatePropertyTypes { + export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty; myPublicProperty: privateClass; private myPrivateProperty; } - class publicClassWithWithPublicPropertyTypes { + export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty; myPublicProperty: publicClass; private myPrivateProperty; } - var publicVarWithPrivatePropertyTypes: privateClass; - var publicVarWithPublicPropertyTypes: publicClass; - var publicAmbientVarWithPrivatePropertyTypes: privateClass; - var publicAmbientVarWithPublicPropertyTypes: publicClass; - interface publicInterfaceWithPrivateModulePropertyTypes { + export var publicVarWithPrivatePropertyTypes: privateClass; + export var publicVarWithPublicPropertyTypes: publicClass; + export var publicAmbientVarWithPrivatePropertyTypes: privateClass; + export var publicAmbientVarWithPublicPropertyTypes: publicClass; + export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } - class publicClassWithPrivateModulePropertyTypes { + export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } - var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; - var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export {}; } - interface publicInterfaceWithPrivatePropertyTypes { + export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } - interface publicInterfaceWithPublicPropertyTypes { + export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } - class publicClassWithWithPrivatePropertyTypes { + export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty; myPublicProperty: privateClass; private myPrivateProperty; } - class publicClassWithWithPublicPropertyTypes { + export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty; myPublicProperty: publicClass; private myPrivateProperty; } - var publicVarWithPrivatePropertyTypes: privateClass; - var publicVarWithPublicPropertyTypes: publicClass; - var publicAmbientVarWithPrivatePropertyTypes: privateClass; - var publicAmbientVarWithPublicPropertyTypes: publicClass; - interface publicInterfaceWithPrivateModulePropertyTypes { + export var publicVarWithPrivatePropertyTypes: privateClass; + export var publicVarWithPublicPropertyTypes: publicClass; + export var publicAmbientVarWithPrivatePropertyTypes: privateClass; + export var publicAmbientVarWithPublicPropertyTypes: publicClass; + export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } - class publicClassWithPrivateModulePropertyTypes { + export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } - var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; - var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; + export {}; } diff --git a/tests/baselines/reference/symbolDeclarationEmit12.js b/tests/baselines/reference/symbolDeclarationEmit12.js index d700f9ac510..0b2034e0450 100644 --- a/tests/baselines/reference/symbolDeclarationEmit12.js +++ b/tests/baselines/reference/symbolDeclarationEmit12.js @@ -31,11 +31,12 @@ var M; declare module M { interface I { } - class C { + export class C { [Symbol.iterator]: I; [Symbol.toPrimitive](x: I): void; [Symbol.isConcatSpreadable](): I; readonly [Symbol.toPrimitive]: any; [Symbol.toPrimitive]: I; } + export {}; } diff --git a/tests/baselines/reference/typeFromPropertyAssignment29.js b/tests/baselines/reference/typeFromPropertyAssignment29.js index 8c2750ebb6d..3fd21be5e3a 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment29.js +++ b/tests/baselines/reference/typeFromPropertyAssignment29.js @@ -219,7 +219,8 @@ declare namespace Ns { namespace ExpandoNamespace { var p6: number; } - function foo(): typeof ExpandoNamespace; + export function foo(): typeof ExpandoNamespace; + export {}; } declare var ExpandoExpr2: (n: number) => string; declare var n: number; diff --git a/tests/cases/compiler/exportNamespaceDeclarationRetainsVisibility.ts b/tests/cases/compiler/exportNamespaceDeclarationRetainsVisibility.ts new file mode 100644 index 00000000000..3b92c7f7987 --- /dev/null +++ b/tests/cases/compiler/exportNamespaceDeclarationRetainsVisibility.ts @@ -0,0 +1,14 @@ +// @declaration: true +namespace X { + interface A { + kind: 'a'; + } + + interface B { + kind: 'b'; + } + + export type C = A | B; +} + +export = X; \ No newline at end of file