diff --git a/lib/lib.dom.d.ts b/lib/lib.dom.d.ts index 920c0ad2dae..78532a218e9 100644 --- a/lib/lib.dom.d.ts +++ b/lib/lib.dom.d.ts @@ -14132,6 +14132,7 @@ interface Storage { * storage[key] = value */ setItem(key: string, value: string): void; + [name: string]: any; } declare var Storage: { diff --git a/lib/tsc.js b/lib/tsc.js index 126f5f19bd6..b9fd54df617 100644 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -27809,19 +27809,23 @@ var ts; return createAnonymousType(symbol, exports_1, ts.emptyArray, ts.emptyArray, jsObjectLiteralIndexInfo, undefined); } } - function getAnnotatedAccessorType(accessor) { + function getAnnotatedAccessorTypeNode(accessor) { if (accessor) { if (accessor.kind === 156) { var getterTypeAnnotation = ts.getEffectiveReturnTypeNode(accessor); - return getterTypeAnnotation && getTypeFromTypeNode(getterTypeAnnotation); + return getterTypeAnnotation; } else { var setterTypeAnnotation = ts.getEffectiveSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation; } } return undefined; } + function getAnnotatedAccessorType(accessor) { + var node = getAnnotatedAccessorTypeNode(accessor); + return node && getTypeFromTypeNode(node); + } function getAnnotatedAccessorThisParameter(accessor) { var parameter = getAccessorThisParameter(accessor); return parameter && parameter.symbol; @@ -42059,9 +42063,13 @@ var ts; } } break; - case 154: case 156: case 157: + var otherKind = node.kind === 156 ? 157 : 156; + var otherAccessor = ts.getDeclarationOfKind(getSymbolOfNode(node), otherKind); + markDecoratorMedataDataTypeNodeAsReferenced(getAnnotatedAccessorTypeNode(node) || otherAccessor && getAnnotatedAccessorTypeNode(otherAccessor)); + break; + case 154: for (var _b = 0, _c = node.parameters; _b < _c.length; _b++) { var parameter = _c[_b]; markDecoratorMedataDataTypeNodeAsReferenced(getParameterTypeNodeForDecoratorCheck(parameter)); @@ -53166,14 +53174,19 @@ var ts; } return false; } + function getAccessorTypeNode(node) { + var accessors = resolver.getAllAccessorDeclarations(node); + return accessors.setAccessor && ts.getSetAccessorTypeAnnotationNode(accessors.setAccessor) + || accessors.getAccessor && ts.getEffectiveReturnTypeNode(accessors.getAccessor); + } function serializeTypeOfNode(node) { switch (node.kind) { case 152: case 149: - case 156: return serializeTypeNode(node.type); case 157: - return serializeTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); + case 156: + return serializeTypeNode(getAccessorTypeNode(node)); case 238: case 207: case 154: @@ -61494,7 +61507,7 @@ var ts; } if (node.kind === 278) { isBundledEmit = true; - var refs_1 = ts.createMap(); + refs = ts.createMap(); var hasNoDefaultLib_1 = false; var bundle = ts.createBundle(ts.map(node.sourceFiles, function (sourceFile) { if (sourceFile.isDeclarationFile || ts.isSourceFileJavaScript(sourceFile)) @@ -61508,7 +61521,7 @@ var ts; getSymbolAccessibilityDiagnostic = throwDiagnostic; needsScopeFixMarker = false; resultHasScopeMarker = false; - collectReferences(sourceFile, refs_1); + collectReferences(sourceFile, refs); if (ts.isExternalModule(sourceFile)) { resultHasExternalModuleIndicator = false; needsDeclare = false; @@ -61529,7 +61542,7 @@ var ts; bundle.hasNoDefaultLib = hasNoDefaultLib_1; var outputFilePath_1 = ts.getDirectoryPath(ts.normalizeSlashes(ts.getOutputPathsFor(node, host, true).declarationFilePath)); var referenceVisitor_1 = mapReferencesIntoArray(bundle.syntheticFileReferences, outputFilePath_1); - refs_1.forEach(referenceVisitor_1); + refs.forEach(referenceVisitor_1); return bundle; } needsDeclare = true; @@ -62229,6 +62242,15 @@ var ts; } return false; } + function isScopeMarker(node) { + return ts.isExportAssignment(node) || ts.isExportDeclaration(node); + } + function hasScopeMarker(node) { + if (ts.isModuleBlock(node)) { + return ts.some(node.statements, isScopeMarker); + } + return false; + } function ensureModifiers(node, privateDeclaration) { var currentFlags = ts.getModifierFlags(node); var newFlags = ensureModifierFlags(node, privateDeclaration); @@ -62242,7 +62264,7 @@ var ts; var additions = (needsDeclare && !isAlwaysType(node)) ? 2 : 0; var parentIsFile = node.parent.kind === 277; if (!parentIsFile || (isBundledEmit && parentIsFile && ts.isExternalModule(node.parent))) { - mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) ? 0 : 1) | 512 | 2); + mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) || hasScopeMarker(node.parent) ? 0 : 1) | 2); additions = 0; } return maskModifierFlags(node, mask, additions); @@ -62299,6 +62321,9 @@ var ts; if (modifierMask === void 0) { modifierMask = 3071 ^ 4; } if (modifierAdditions === void 0) { modifierAdditions = 0; } var flags = (ts.getModifierFlags(node) & modifierMask) | modifierAdditions; + if (flags & 512 && !(flags & 1)) { + flags ^= 1; + } if (flags & 512 && flags & 2) { flags ^= 2; } diff --git a/lib/tsserver.js b/lib/tsserver.js index 106825a7e83..f5a945ff945 100644 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -33849,19 +33849,23 @@ var ts; return createAnonymousType(symbol, exports_1, ts.emptyArray, ts.emptyArray, jsObjectLiteralIndexInfo, undefined); } } - function getAnnotatedAccessorType(accessor) { + function getAnnotatedAccessorTypeNode(accessor) { if (accessor) { if (accessor.kind === 156 /* GetAccessor */) { var getterTypeAnnotation = ts.getEffectiveReturnTypeNode(accessor); - return getterTypeAnnotation && getTypeFromTypeNode(getterTypeAnnotation); + return getterTypeAnnotation; } else { var setterTypeAnnotation = ts.getEffectiveSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation; } } return undefined; } + function getAnnotatedAccessorType(accessor) { + var node = getAnnotatedAccessorTypeNode(accessor); + return node && getTypeFromTypeNode(node); + } function getAnnotatedAccessorThisParameter(accessor) { var parameter = getAccessorThisParameter(accessor); return parameter && parameter.symbol; @@ -50647,9 +50651,13 @@ var ts; } } break; - case 154 /* MethodDeclaration */: case 156 /* GetAccessor */: case 157 /* SetAccessor */: + var otherKind = node.kind === 156 /* GetAccessor */ ? 157 /* SetAccessor */ : 156 /* GetAccessor */; + var otherAccessor = ts.getDeclarationOfKind(getSymbolOfNode(node), otherKind); + markDecoratorMedataDataTypeNodeAsReferenced(getAnnotatedAccessorTypeNode(node) || otherAccessor && getAnnotatedAccessorTypeNode(otherAccessor)); + break; + case 154 /* MethodDeclaration */: for (var _b = 0, _c = node.parameters; _b < _c.length; _b++) { var parameter = _c[_b]; markDecoratorMedataDataTypeNodeAsReferenced(getParameterTypeNodeForDecoratorCheck(parameter)); @@ -63980,6 +63988,11 @@ var ts; } return false; } + function getAccessorTypeNode(node) { + var accessors = resolver.getAllAccessorDeclarations(node); + return accessors.setAccessor && ts.getSetAccessorTypeAnnotationNode(accessors.setAccessor) + || accessors.getAccessor && ts.getEffectiveReturnTypeNode(accessors.getAccessor); + } /** * Serializes the type of a node for use with decorator type metadata. * @@ -63989,10 +64002,10 @@ var ts; switch (node.kind) { case 152 /* PropertyDeclaration */: case 149 /* Parameter */: - case 156 /* GetAccessor */: return serializeTypeNode(node.type); case 157 /* SetAccessor */: - return serializeTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); + case 156 /* GetAccessor */: + return serializeTypeNode(getAccessorTypeNode(node)); case 238 /* ClassDeclaration */: case 207 /* ClassExpression */: case 154 /* MethodDeclaration */: @@ -76386,7 +76399,7 @@ var ts; } if (node.kind === 278 /* Bundle */) { isBundledEmit = true; - var refs_1 = ts.createMap(); + refs = ts.createMap(); var hasNoDefaultLib_1 = false; var bundle = ts.createBundle(ts.map(node.sourceFiles, function (sourceFile) { if (sourceFile.isDeclarationFile || ts.isSourceFileJavaScript(sourceFile)) @@ -76400,7 +76413,7 @@ var ts; getSymbolAccessibilityDiagnostic = throwDiagnostic; needsScopeFixMarker = false; resultHasScopeMarker = false; - collectReferences(sourceFile, refs_1); + collectReferences(sourceFile, refs); if (ts.isExternalModule(sourceFile)) { resultHasExternalModuleIndicator = false; // unused in external module bundle emit (all external modules are within module blocks, therefore are known to be modules) needsDeclare = false; @@ -76421,7 +76434,7 @@ var ts; bundle.hasNoDefaultLib = hasNoDefaultLib_1; var outputFilePath_1 = ts.getDirectoryPath(ts.normalizeSlashes(ts.getOutputPathsFor(node, host, /*forceDtsPaths*/ true).declarationFilePath)); var referenceVisitor_1 = mapReferencesIntoArray(bundle.syntheticFileReferences, outputFilePath_1); - refs_1.forEach(referenceVisitor_1); + refs.forEach(referenceVisitor_1); return bundle; } // Single source file @@ -77198,6 +77211,15 @@ var ts; } return false; } + function isScopeMarker(node) { + return ts.isExportAssignment(node) || ts.isExportDeclaration(node); + } + function hasScopeMarker(node) { + if (ts.isModuleBlock(node)) { + return ts.some(node.statements, isScopeMarker); + } + return false; + } function ensureModifiers(node, privateDeclaration) { var currentFlags = ts.getModifierFlags(node); var newFlags = ensureModifierFlags(node, privateDeclaration); @@ -77211,7 +77233,7 @@ var ts; var additions = (needsDeclare && !isAlwaysType(node)) ? 2 /* Ambient */ : 0 /* None */; var parentIsFile = node.parent.kind === 277 /* SourceFile */; if (!parentIsFile || (isBundledEmit && parentIsFile && ts.isExternalModule(node.parent))) { - mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) ? 0 : 1 /* Export */) | 512 /* Default */ | 2 /* Ambient */); + mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) || hasScopeMarker(node.parent) ? 0 : 1 /* Export */) | 2 /* Ambient */); additions = 0 /* None */; } return maskModifierFlags(node, mask, additions); @@ -77270,6 +77292,11 @@ var ts; if (modifierMask === void 0) { modifierMask = 3071 /* All */ ^ 4 /* Public */; } if (modifierAdditions === void 0) { modifierAdditions = 0 /* None */; } var flags = (ts.getModifierFlags(node) & modifierMask) | modifierAdditions; + if (flags & 512 /* Default */ && !(flags & 1 /* Export */)) { + // A non-exported default is a nonsequitor - we usually try to remove all export modifiers + // from statements in ambient declarations; but a default export must retain its export modifier to be syntactically valid + flags ^= 1 /* Export */; + } if (flags & 512 /* Default */ && flags & 2 /* Ambient */) { flags ^= 2 /* Ambient */; // `declare` is never required alongside `default` (and would be an error if printed) } diff --git a/lib/tsserverlibrary.js b/lib/tsserverlibrary.js index 9baa1bf240f..47c6a0a7aaf 100644 --- a/lib/tsserverlibrary.js +++ b/lib/tsserverlibrary.js @@ -33836,19 +33836,23 @@ var ts; return createAnonymousType(symbol, exports_1, ts.emptyArray, ts.emptyArray, jsObjectLiteralIndexInfo, undefined); } } - function getAnnotatedAccessorType(accessor) { + function getAnnotatedAccessorTypeNode(accessor) { if (accessor) { if (accessor.kind === 156 /* GetAccessor */) { var getterTypeAnnotation = ts.getEffectiveReturnTypeNode(accessor); - return getterTypeAnnotation && getTypeFromTypeNode(getterTypeAnnotation); + return getterTypeAnnotation; } else { var setterTypeAnnotation = ts.getEffectiveSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation; } } return undefined; } + function getAnnotatedAccessorType(accessor) { + var node = getAnnotatedAccessorTypeNode(accessor); + return node && getTypeFromTypeNode(node); + } function getAnnotatedAccessorThisParameter(accessor) { var parameter = getAccessorThisParameter(accessor); return parameter && parameter.symbol; @@ -50634,9 +50638,13 @@ var ts; } } break; - case 154 /* MethodDeclaration */: case 156 /* GetAccessor */: case 157 /* SetAccessor */: + var otherKind = node.kind === 156 /* GetAccessor */ ? 157 /* SetAccessor */ : 156 /* GetAccessor */; + var otherAccessor = ts.getDeclarationOfKind(getSymbolOfNode(node), otherKind); + markDecoratorMedataDataTypeNodeAsReferenced(getAnnotatedAccessorTypeNode(node) || otherAccessor && getAnnotatedAccessorTypeNode(otherAccessor)); + break; + case 154 /* MethodDeclaration */: for (var _b = 0, _c = node.parameters; _b < _c.length; _b++) { var parameter = _c[_b]; markDecoratorMedataDataTypeNodeAsReferenced(getParameterTypeNodeForDecoratorCheck(parameter)); @@ -63967,6 +63975,11 @@ var ts; } return false; } + function getAccessorTypeNode(node) { + var accessors = resolver.getAllAccessorDeclarations(node); + return accessors.setAccessor && ts.getSetAccessorTypeAnnotationNode(accessors.setAccessor) + || accessors.getAccessor && ts.getEffectiveReturnTypeNode(accessors.getAccessor); + } /** * Serializes the type of a node for use with decorator type metadata. * @@ -63976,10 +63989,10 @@ var ts; switch (node.kind) { case 152 /* PropertyDeclaration */: case 149 /* Parameter */: - case 156 /* GetAccessor */: return serializeTypeNode(node.type); case 157 /* SetAccessor */: - return serializeTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); + case 156 /* GetAccessor */: + return serializeTypeNode(getAccessorTypeNode(node)); case 238 /* ClassDeclaration */: case 207 /* ClassExpression */: case 154 /* MethodDeclaration */: @@ -76373,7 +76386,7 @@ var ts; } if (node.kind === 278 /* Bundle */) { isBundledEmit = true; - var refs_1 = ts.createMap(); + refs = ts.createMap(); var hasNoDefaultLib_1 = false; var bundle = ts.createBundle(ts.map(node.sourceFiles, function (sourceFile) { if (sourceFile.isDeclarationFile || ts.isSourceFileJavaScript(sourceFile)) @@ -76387,7 +76400,7 @@ var ts; getSymbolAccessibilityDiagnostic = throwDiagnostic; needsScopeFixMarker = false; resultHasScopeMarker = false; - collectReferences(sourceFile, refs_1); + collectReferences(sourceFile, refs); if (ts.isExternalModule(sourceFile)) { resultHasExternalModuleIndicator = false; // unused in external module bundle emit (all external modules are within module blocks, therefore are known to be modules) needsDeclare = false; @@ -76408,7 +76421,7 @@ var ts; bundle.hasNoDefaultLib = hasNoDefaultLib_1; var outputFilePath_1 = ts.getDirectoryPath(ts.normalizeSlashes(ts.getOutputPathsFor(node, host, /*forceDtsPaths*/ true).declarationFilePath)); var referenceVisitor_1 = mapReferencesIntoArray(bundle.syntheticFileReferences, outputFilePath_1); - refs_1.forEach(referenceVisitor_1); + refs.forEach(referenceVisitor_1); return bundle; } // Single source file @@ -77185,6 +77198,15 @@ var ts; } return false; } + function isScopeMarker(node) { + return ts.isExportAssignment(node) || ts.isExportDeclaration(node); + } + function hasScopeMarker(node) { + if (ts.isModuleBlock(node)) { + return ts.some(node.statements, isScopeMarker); + } + return false; + } function ensureModifiers(node, privateDeclaration) { var currentFlags = ts.getModifierFlags(node); var newFlags = ensureModifierFlags(node, privateDeclaration); @@ -77198,7 +77220,7 @@ var ts; var additions = (needsDeclare && !isAlwaysType(node)) ? 2 /* Ambient */ : 0 /* None */; var parentIsFile = node.parent.kind === 277 /* SourceFile */; if (!parentIsFile || (isBundledEmit && parentIsFile && ts.isExternalModule(node.parent))) { - mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) ? 0 : 1 /* Export */) | 512 /* Default */ | 2 /* Ambient */); + mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) || hasScopeMarker(node.parent) ? 0 : 1 /* Export */) | 2 /* Ambient */); additions = 0 /* None */; } return maskModifierFlags(node, mask, additions); @@ -77257,6 +77279,11 @@ var ts; if (modifierMask === void 0) { modifierMask = 3071 /* All */ ^ 4 /* Public */; } if (modifierAdditions === void 0) { modifierAdditions = 0 /* None */; } var flags = (ts.getModifierFlags(node) & modifierMask) | modifierAdditions; + if (flags & 512 /* Default */ && !(flags & 1 /* Export */)) { + // A non-exported default is a nonsequitor - we usually try to remove all export modifiers + // from statements in ambient declarations; but a default export must retain its export modifier to be syntactically valid + flags ^= 1 /* Export */; + } if (flags & 512 /* Default */ && flags & 2 /* Ambient */) { flags ^= 2 /* Ambient */; // `declare` is never required alongside `default` (and would be an error if printed) } @@ -113800,8 +113827,8 @@ var ts; return undefined; } var result = []; - for (var _i = 0, refs_2 = refs; _i < refs_2.length; _i++) { - var ref = refs_2[_i]; + for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) { + var ref = refs_1[_i]; result.push({ path: ts.normalizeSlashes(ref.fileName), position: ref.pos, diff --git a/lib/typescript.js b/lib/typescript.js index b03617a8bf4..ffd4559dc01 100644 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -33836,19 +33836,23 @@ var ts; return createAnonymousType(symbol, exports_1, ts.emptyArray, ts.emptyArray, jsObjectLiteralIndexInfo, undefined); } } - function getAnnotatedAccessorType(accessor) { + function getAnnotatedAccessorTypeNode(accessor) { if (accessor) { if (accessor.kind === 156 /* GetAccessor */) { var getterTypeAnnotation = ts.getEffectiveReturnTypeNode(accessor); - return getterTypeAnnotation && getTypeFromTypeNode(getterTypeAnnotation); + return getterTypeAnnotation; } else { var setterTypeAnnotation = ts.getEffectiveSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation; } } return undefined; } + function getAnnotatedAccessorType(accessor) { + var node = getAnnotatedAccessorTypeNode(accessor); + return node && getTypeFromTypeNode(node); + } function getAnnotatedAccessorThisParameter(accessor) { var parameter = getAccessorThisParameter(accessor); return parameter && parameter.symbol; @@ -50634,9 +50638,13 @@ var ts; } } break; - case 154 /* MethodDeclaration */: case 156 /* GetAccessor */: case 157 /* SetAccessor */: + var otherKind = node.kind === 156 /* GetAccessor */ ? 157 /* SetAccessor */ : 156 /* GetAccessor */; + var otherAccessor = ts.getDeclarationOfKind(getSymbolOfNode(node), otherKind); + markDecoratorMedataDataTypeNodeAsReferenced(getAnnotatedAccessorTypeNode(node) || otherAccessor && getAnnotatedAccessorTypeNode(otherAccessor)); + break; + case 154 /* MethodDeclaration */: for (var _b = 0, _c = node.parameters; _b < _c.length; _b++) { var parameter = _c[_b]; markDecoratorMedataDataTypeNodeAsReferenced(getParameterTypeNodeForDecoratorCheck(parameter)); @@ -63967,6 +63975,11 @@ var ts; } return false; } + function getAccessorTypeNode(node) { + var accessors = resolver.getAllAccessorDeclarations(node); + return accessors.setAccessor && ts.getSetAccessorTypeAnnotationNode(accessors.setAccessor) + || accessors.getAccessor && ts.getEffectiveReturnTypeNode(accessors.getAccessor); + } /** * Serializes the type of a node for use with decorator type metadata. * @@ -63976,10 +63989,10 @@ var ts; switch (node.kind) { case 152 /* PropertyDeclaration */: case 149 /* Parameter */: - case 156 /* GetAccessor */: return serializeTypeNode(node.type); case 157 /* SetAccessor */: - return serializeTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); + case 156 /* GetAccessor */: + return serializeTypeNode(getAccessorTypeNode(node)); case 238 /* ClassDeclaration */: case 207 /* ClassExpression */: case 154 /* MethodDeclaration */: @@ -76373,7 +76386,7 @@ var ts; } if (node.kind === 278 /* Bundle */) { isBundledEmit = true; - var refs_1 = ts.createMap(); + refs = ts.createMap(); var hasNoDefaultLib_1 = false; var bundle = ts.createBundle(ts.map(node.sourceFiles, function (sourceFile) { if (sourceFile.isDeclarationFile || ts.isSourceFileJavaScript(sourceFile)) @@ -76387,7 +76400,7 @@ var ts; getSymbolAccessibilityDiagnostic = throwDiagnostic; needsScopeFixMarker = false; resultHasScopeMarker = false; - collectReferences(sourceFile, refs_1); + collectReferences(sourceFile, refs); if (ts.isExternalModule(sourceFile)) { resultHasExternalModuleIndicator = false; // unused in external module bundle emit (all external modules are within module blocks, therefore are known to be modules) needsDeclare = false; @@ -76408,7 +76421,7 @@ var ts; bundle.hasNoDefaultLib = hasNoDefaultLib_1; var outputFilePath_1 = ts.getDirectoryPath(ts.normalizeSlashes(ts.getOutputPathsFor(node, host, /*forceDtsPaths*/ true).declarationFilePath)); var referenceVisitor_1 = mapReferencesIntoArray(bundle.syntheticFileReferences, outputFilePath_1); - refs_1.forEach(referenceVisitor_1); + refs.forEach(referenceVisitor_1); return bundle; } // Single source file @@ -77185,6 +77198,15 @@ var ts; } return false; } + function isScopeMarker(node) { + return ts.isExportAssignment(node) || ts.isExportDeclaration(node); + } + function hasScopeMarker(node) { + if (ts.isModuleBlock(node)) { + return ts.some(node.statements, isScopeMarker); + } + return false; + } function ensureModifiers(node, privateDeclaration) { var currentFlags = ts.getModifierFlags(node); var newFlags = ensureModifierFlags(node, privateDeclaration); @@ -77198,7 +77220,7 @@ var ts; var additions = (needsDeclare && !isAlwaysType(node)) ? 2 /* Ambient */ : 0 /* None */; var parentIsFile = node.parent.kind === 277 /* SourceFile */; if (!parentIsFile || (isBundledEmit && parentIsFile && ts.isExternalModule(node.parent))) { - mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) ? 0 : 1 /* Export */) | 512 /* Default */ | 2 /* Ambient */); + mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) || hasScopeMarker(node.parent) ? 0 : 1 /* Export */) | 2 /* Ambient */); additions = 0 /* None */; } return maskModifierFlags(node, mask, additions); @@ -77257,6 +77279,11 @@ var ts; if (modifierMask === void 0) { modifierMask = 3071 /* All */ ^ 4 /* Public */; } if (modifierAdditions === void 0) { modifierAdditions = 0 /* None */; } var flags = (ts.getModifierFlags(node) & modifierMask) | modifierAdditions; + if (flags & 512 /* Default */ && !(flags & 1 /* Export */)) { + // A non-exported default is a nonsequitor - we usually try to remove all export modifiers + // from statements in ambient declarations; but a default export must retain its export modifier to be syntactically valid + flags ^= 1 /* Export */; + } if (flags & 512 /* Default */ && flags & 2 /* Ambient */) { flags ^= 2 /* Ambient */; // `declare` is never required alongside `default` (and would be an error if printed) } @@ -113800,8 +113827,8 @@ var ts; return undefined; } var result = []; - for (var _i = 0, refs_2 = refs; _i < refs_2.length; _i++) { - var ref = refs_2[_i]; + for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) { + var ref = refs_1[_i]; result.push({ path: ts.normalizeSlashes(ref.fileName), position: ref.pos, diff --git a/lib/typescriptServices.js b/lib/typescriptServices.js index b03617a8bf4..ffd4559dc01 100644 --- a/lib/typescriptServices.js +++ b/lib/typescriptServices.js @@ -33836,19 +33836,23 @@ var ts; return createAnonymousType(symbol, exports_1, ts.emptyArray, ts.emptyArray, jsObjectLiteralIndexInfo, undefined); } } - function getAnnotatedAccessorType(accessor) { + function getAnnotatedAccessorTypeNode(accessor) { if (accessor) { if (accessor.kind === 156 /* GetAccessor */) { var getterTypeAnnotation = ts.getEffectiveReturnTypeNode(accessor); - return getterTypeAnnotation && getTypeFromTypeNode(getterTypeAnnotation); + return getterTypeAnnotation; } else { var setterTypeAnnotation = ts.getEffectiveSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation; } } return undefined; } + function getAnnotatedAccessorType(accessor) { + var node = getAnnotatedAccessorTypeNode(accessor); + return node && getTypeFromTypeNode(node); + } function getAnnotatedAccessorThisParameter(accessor) { var parameter = getAccessorThisParameter(accessor); return parameter && parameter.symbol; @@ -50634,9 +50638,13 @@ var ts; } } break; - case 154 /* MethodDeclaration */: case 156 /* GetAccessor */: case 157 /* SetAccessor */: + var otherKind = node.kind === 156 /* GetAccessor */ ? 157 /* SetAccessor */ : 156 /* GetAccessor */; + var otherAccessor = ts.getDeclarationOfKind(getSymbolOfNode(node), otherKind); + markDecoratorMedataDataTypeNodeAsReferenced(getAnnotatedAccessorTypeNode(node) || otherAccessor && getAnnotatedAccessorTypeNode(otherAccessor)); + break; + case 154 /* MethodDeclaration */: for (var _b = 0, _c = node.parameters; _b < _c.length; _b++) { var parameter = _c[_b]; markDecoratorMedataDataTypeNodeAsReferenced(getParameterTypeNodeForDecoratorCheck(parameter)); @@ -63967,6 +63975,11 @@ var ts; } return false; } + function getAccessorTypeNode(node) { + var accessors = resolver.getAllAccessorDeclarations(node); + return accessors.setAccessor && ts.getSetAccessorTypeAnnotationNode(accessors.setAccessor) + || accessors.getAccessor && ts.getEffectiveReturnTypeNode(accessors.getAccessor); + } /** * Serializes the type of a node for use with decorator type metadata. * @@ -63976,10 +63989,10 @@ var ts; switch (node.kind) { case 152 /* PropertyDeclaration */: case 149 /* Parameter */: - case 156 /* GetAccessor */: return serializeTypeNode(node.type); case 157 /* SetAccessor */: - return serializeTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); + case 156 /* GetAccessor */: + return serializeTypeNode(getAccessorTypeNode(node)); case 238 /* ClassDeclaration */: case 207 /* ClassExpression */: case 154 /* MethodDeclaration */: @@ -76373,7 +76386,7 @@ var ts; } if (node.kind === 278 /* Bundle */) { isBundledEmit = true; - var refs_1 = ts.createMap(); + refs = ts.createMap(); var hasNoDefaultLib_1 = false; var bundle = ts.createBundle(ts.map(node.sourceFiles, function (sourceFile) { if (sourceFile.isDeclarationFile || ts.isSourceFileJavaScript(sourceFile)) @@ -76387,7 +76400,7 @@ var ts; getSymbolAccessibilityDiagnostic = throwDiagnostic; needsScopeFixMarker = false; resultHasScopeMarker = false; - collectReferences(sourceFile, refs_1); + collectReferences(sourceFile, refs); if (ts.isExternalModule(sourceFile)) { resultHasExternalModuleIndicator = false; // unused in external module bundle emit (all external modules are within module blocks, therefore are known to be modules) needsDeclare = false; @@ -76408,7 +76421,7 @@ var ts; bundle.hasNoDefaultLib = hasNoDefaultLib_1; var outputFilePath_1 = ts.getDirectoryPath(ts.normalizeSlashes(ts.getOutputPathsFor(node, host, /*forceDtsPaths*/ true).declarationFilePath)); var referenceVisitor_1 = mapReferencesIntoArray(bundle.syntheticFileReferences, outputFilePath_1); - refs_1.forEach(referenceVisitor_1); + refs.forEach(referenceVisitor_1); return bundle; } // Single source file @@ -77185,6 +77198,15 @@ var ts; } return false; } + function isScopeMarker(node) { + return ts.isExportAssignment(node) || ts.isExportDeclaration(node); + } + function hasScopeMarker(node) { + if (ts.isModuleBlock(node)) { + return ts.some(node.statements, isScopeMarker); + } + return false; + } function ensureModifiers(node, privateDeclaration) { var currentFlags = ts.getModifierFlags(node); var newFlags = ensureModifierFlags(node, privateDeclaration); @@ -77198,7 +77220,7 @@ var ts; var additions = (needsDeclare && !isAlwaysType(node)) ? 2 /* Ambient */ : 0 /* None */; var parentIsFile = node.parent.kind === 277 /* SourceFile */; if (!parentIsFile || (isBundledEmit && parentIsFile && ts.isExternalModule(node.parent))) { - mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) ? 0 : 1 /* Export */) | 512 /* Default */ | 2 /* Ambient */); + mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) || hasScopeMarker(node.parent) ? 0 : 1 /* Export */) | 2 /* Ambient */); additions = 0 /* None */; } return maskModifierFlags(node, mask, additions); @@ -77257,6 +77279,11 @@ var ts; if (modifierMask === void 0) { modifierMask = 3071 /* All */ ^ 4 /* Public */; } if (modifierAdditions === void 0) { modifierAdditions = 0 /* None */; } var flags = (ts.getModifierFlags(node) & modifierMask) | modifierAdditions; + if (flags & 512 /* Default */ && !(flags & 1 /* Export */)) { + // A non-exported default is a nonsequitor - we usually try to remove all export modifiers + // from statements in ambient declarations; but a default export must retain its export modifier to be syntactically valid + flags ^= 1 /* Export */; + } if (flags & 512 /* Default */ && flags & 2 /* Ambient */) { flags ^= 2 /* Ambient */; // `declare` is never required alongside `default` (and would be an error if printed) } @@ -113800,8 +113827,8 @@ var ts; return undefined; } var result = []; - for (var _i = 0, refs_2 = refs; _i < refs_2.length; _i++) { - var ref = refs_2[_i]; + for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) { + var ref = refs_1[_i]; result.push({ path: ts.normalizeSlashes(ref.fileName), position: ref.pos, diff --git a/lib/typingsInstaller.js b/lib/typingsInstaller.js index a6c148813da..930576fb7e7 100644 --- a/lib/typingsInstaller.js +++ b/lib/typingsInstaller.js @@ -33849,19 +33849,23 @@ var ts; return createAnonymousType(symbol, exports_1, ts.emptyArray, ts.emptyArray, jsObjectLiteralIndexInfo, undefined); } } - function getAnnotatedAccessorType(accessor) { + function getAnnotatedAccessorTypeNode(accessor) { if (accessor) { if (accessor.kind === 156 /* GetAccessor */) { var getterTypeAnnotation = ts.getEffectiveReturnTypeNode(accessor); - return getterTypeAnnotation && getTypeFromTypeNode(getterTypeAnnotation); + return getterTypeAnnotation; } else { var setterTypeAnnotation = ts.getEffectiveSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation; } } return undefined; } + function getAnnotatedAccessorType(accessor) { + var node = getAnnotatedAccessorTypeNode(accessor); + return node && getTypeFromTypeNode(node); + } function getAnnotatedAccessorThisParameter(accessor) { var parameter = getAccessorThisParameter(accessor); return parameter && parameter.symbol; @@ -50647,9 +50651,13 @@ var ts; } } break; - case 154 /* MethodDeclaration */: case 156 /* GetAccessor */: case 157 /* SetAccessor */: + var otherKind = node.kind === 156 /* GetAccessor */ ? 157 /* SetAccessor */ : 156 /* GetAccessor */; + var otherAccessor = ts.getDeclarationOfKind(getSymbolOfNode(node), otherKind); + markDecoratorMedataDataTypeNodeAsReferenced(getAnnotatedAccessorTypeNode(node) || otherAccessor && getAnnotatedAccessorTypeNode(otherAccessor)); + break; + case 154 /* MethodDeclaration */: for (var _b = 0, _c = node.parameters; _b < _c.length; _b++) { var parameter = _c[_b]; markDecoratorMedataDataTypeNodeAsReferenced(getParameterTypeNodeForDecoratorCheck(parameter)); @@ -63980,6 +63988,11 @@ var ts; } return false; } + function getAccessorTypeNode(node) { + var accessors = resolver.getAllAccessorDeclarations(node); + return accessors.setAccessor && ts.getSetAccessorTypeAnnotationNode(accessors.setAccessor) + || accessors.getAccessor && ts.getEffectiveReturnTypeNode(accessors.getAccessor); + } /** * Serializes the type of a node for use with decorator type metadata. * @@ -63989,10 +64002,10 @@ var ts; switch (node.kind) { case 152 /* PropertyDeclaration */: case 149 /* Parameter */: - case 156 /* GetAccessor */: return serializeTypeNode(node.type); case 157 /* SetAccessor */: - return serializeTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); + case 156 /* GetAccessor */: + return serializeTypeNode(getAccessorTypeNode(node)); case 238 /* ClassDeclaration */: case 207 /* ClassExpression */: case 154 /* MethodDeclaration */: @@ -76386,7 +76399,7 @@ var ts; } if (node.kind === 278 /* Bundle */) { isBundledEmit = true; - var refs_1 = ts.createMap(); + refs = ts.createMap(); var hasNoDefaultLib_1 = false; var bundle = ts.createBundle(ts.map(node.sourceFiles, function (sourceFile) { if (sourceFile.isDeclarationFile || ts.isSourceFileJavaScript(sourceFile)) @@ -76400,7 +76413,7 @@ var ts; getSymbolAccessibilityDiagnostic = throwDiagnostic; needsScopeFixMarker = false; resultHasScopeMarker = false; - collectReferences(sourceFile, refs_1); + collectReferences(sourceFile, refs); if (ts.isExternalModule(sourceFile)) { resultHasExternalModuleIndicator = false; // unused in external module bundle emit (all external modules are within module blocks, therefore are known to be modules) needsDeclare = false; @@ -76421,7 +76434,7 @@ var ts; bundle.hasNoDefaultLib = hasNoDefaultLib_1; var outputFilePath_1 = ts.getDirectoryPath(ts.normalizeSlashes(ts.getOutputPathsFor(node, host, /*forceDtsPaths*/ true).declarationFilePath)); var referenceVisitor_1 = mapReferencesIntoArray(bundle.syntheticFileReferences, outputFilePath_1); - refs_1.forEach(referenceVisitor_1); + refs.forEach(referenceVisitor_1); return bundle; } // Single source file @@ -77198,6 +77211,15 @@ var ts; } return false; } + function isScopeMarker(node) { + return ts.isExportAssignment(node) || ts.isExportDeclaration(node); + } + function hasScopeMarker(node) { + if (ts.isModuleBlock(node)) { + return ts.some(node.statements, isScopeMarker); + } + return false; + } function ensureModifiers(node, privateDeclaration) { var currentFlags = ts.getModifierFlags(node); var newFlags = ensureModifierFlags(node, privateDeclaration); @@ -77211,7 +77233,7 @@ var ts; var additions = (needsDeclare && !isAlwaysType(node)) ? 2 /* Ambient */ : 0 /* None */; var parentIsFile = node.parent.kind === 277 /* SourceFile */; if (!parentIsFile || (isBundledEmit && parentIsFile && ts.isExternalModule(node.parent))) { - mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) ? 0 : 1 /* Export */) | 512 /* Default */ | 2 /* Ambient */); + mask ^= ((privateDeclaration || (isBundledEmit && parentIsFile) || hasScopeMarker(node.parent) ? 0 : 1 /* Export */) | 2 /* Ambient */); additions = 0 /* None */; } return maskModifierFlags(node, mask, additions); @@ -77270,6 +77292,11 @@ var ts; if (modifierMask === void 0) { modifierMask = 3071 /* All */ ^ 4 /* Public */; } if (modifierAdditions === void 0) { modifierAdditions = 0 /* None */; } var flags = (ts.getModifierFlags(node) & modifierMask) | modifierAdditions; + if (flags & 512 /* Default */ && !(flags & 1 /* Export */)) { + // A non-exported default is a nonsequitor - we usually try to remove all export modifiers + // from statements in ambient declarations; but a default export must retain its export modifier to be syntactically valid + flags ^= 1 /* Export */; + } if (flags & 512 /* Default */ && flags & 2 /* Ambient */) { flags ^= 2 /* Ambient */; // `declare` is never required alongside `default` (and would be an error if printed) }