Commit Graph
9632 Commits
Author SHA1 Message Date
TypeScript Bot 88d867dc39 🤖 Cherry-pick PR #34721 into release-3.7 (#34811)
* Cherry-pick PR #34721 into release-3.7

Component commits:
c8bdddf4fd Allow export declaration to reference const enums

857e7c43a2 Update baselines

6e0da2b563 Add test to verify reexported const enums are elided

* Update LKG
2019-10-30 15:28:36 -07:00
TypeScript Bot da0c1f8755 Cherry-pick PR #34791 into release-3.7 (#34834)
Component commits:
3904be131a Add circularity checking during deferred type argument creation
2019-10-30 14:01:24 -07:00
TypeScript Bot 60bf24d1e5 Cherry-pick PR #34786 into release-3.7 (#34833)
Component commits:
f6dbbfd80d Fix alias naming and structure bugs in js declarations

3005f18da5 Merge branch 'master' into fix-js-declaration-bugs

3bd49e49a7 Add another test case and change condition for ns merge to require signature or export content

ca5f764c8d Fix typo in comment
2019-10-30 13:24:42 -07:00
TypeScript Bot 28050d5c47 Cherry-pick PR #34789 into release-3.7 (#34812)
Component commits:
2e0b4513ef Add isIntersectionConstituent to relation key
isIntersectionConstituent controls whether relation checking performs
excess property and common property checks. It is possible to fail a
relation check with excess property checks turned on, cache the result,
and then skip a relation check with excess property checks that would
have succeeded. #33133 provides an example of such a program.

Fixes #33133 the right way, so I reverted the fix at #33213
Fixes #34762 (by reverting #33213)
Fixes #33944 -- I added the test from #34646

14d7a44c50 Merge branch 'master' into add-isIntersectionConstituent-to-relation-key

ea803620ec Update comments in test

0764275c30 Merge branch 'master' into add-isIntersectionConstituent-to-relation-key
2019-10-29 15:38:04 -07:00
Nathan Shively-Sanders 7d77ecbcff JSDoc type reference understands require with entity name (#34804)
* resolve require with entity name postfix

For example, `require("x").c`. This is the value equivalent of
`import("x").a.b.c`, but the syntax tree is not as nicely designed for
this purpose.

Fixes #34802

* Add bug number to test

* Add optional chain test
2019-10-29 15:17:02 -07:00
TypeScript Bot 87befe826f Cherry-pick PR #34715 into release-3.7 (#34719)
Component commits:
4cb867bee8 Fix regression in mixin emit by removing unneeded line of code

e3cc5e9acf Double the test, double the fun
2019-10-28 16:44:44 -07:00
TypeScript Bot 17bd75d613 Cherry-pick PR #34779 into release-3.7 (#34782)
Component commits:
2e435ae3b0 Fix incorrectly looking for position in call/new expression arguments when looking for indentation of type arguments Fixes #32487

0bb1b40b1b Update src/services/formatting/smartIndenter.ts
Co-Authored-By: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2019-10-28 14:59:27 -07:00
TypeScript Bot 9df593b1f3 Cherry-pick PR #34745 into release-3.7 (#34766)
Component commits:
07a371bbf6 Fix extract type on JS function params
2019-10-28 11:04:07 -07:00
TypeScript Bot 6317c901d7 Cherry-pick PR #34764 into release-3.7 (#34765)
Component commits:
ab9bc3a55a Fix type reference to merged prototype property assignment
The constructor function code path in the return type checking of
signatures needs to pass the *merged* symbol of the declaration to
getDeclaredTypeOfClassOrInterface. Other callers of
getDeclaredTypeOfClassOrInterface do this, or used an already-merged
symbol.

Fixes #33993
2019-10-28 10:58:15 -07:00
TypeScript Bot 330c8acda2 Cherry-pick PR #34702 into release-3.7 (#34710)
Component commits:
7be925173c Exclude ?? operator from true/false literal check in createFlowCondition

b9802166ae Accept new API baselines

3d4c14c5f8 Add tests

7362545e8c Accept new baselines

2d1af77839 Address CR feedback

8f0de27784 Accept new API baselines
2019-10-24 16:05:34 -07:00
TypeScript Bot 1ac8f40933 🤖 Cherry-pick PR #33847 into release-3.7 (#34720)
Component commits:
97dcbd3bb9 Avoid a crash with `@typedef` in a script file.
Scripts (as opposed to modules) do not have a symbol object. If a script
contains a `@typdef` defined on a namespace called `exports`, TypeScript
crashes because it attempts to create an exported symbol on the
(non-existent) symbol of the SourceFile.

This change avoids the crash by explicitly checking if the source file
has a symbol object, i.e. whether it is a module.

f9b7d6eaa8 Add usage of exports.SomeName typedef.

92dc69ddf0 Fix bug at bind site rather than in declare func
2019-10-24 14:30:58 -07:00
Andrew Casey 04d55bf05f Handle undefined from getPropertyNameForPropertyNameNode
...which can be returned when the property name is computed.

Part of #34404
2019-10-24 10:29:29 -07:00
TypeScript Bot 23d1b7b38a Cherry-pick PR #34706 into release-3.7 (#34708)
Component commits:
056a656937 Restore delayed merge check to getTypeFromJSDocValueReference
This is needed when a function merges with a prototype assignment. The
resulting *merged* symbol is a constructor function marked with
SymbolFlags.Class. However, the merge doesn't happen until
getTypeOfFuncClassEnumModule is called, which, in the
getTypeReferenceType code path, doesn't happen until
getTypeFromJSDocValueReference. That means the check for
SymbolFlags.Class is missed.

Previously, getTypeFromJSDocValueReference had a weird check
`symbol !== getTypeOfSymbol(symbol).symbol`, which, if true, ran
getTypeReferenceType again on `getTypeOfSymbol(symbol).symbol`. For
JS "aliases", this had the effect of dereferencing the alias, and for
function-prototype merges, this had the effect of ... just trying again
after the merge had happened.

This is a confusing way to run things. getTypeReferenceType should
instead detect a function-prototype merge, cause it to happen, and
*then* run the rest of its code instead of relying on try-again logic at
the very end. However, for the RC, I want to fix this code by restoring
the old check, with an additional check to make sure that #33106 doesn't
break again:

```ts
const valueType = getTypeOfSymbol(symbol)
symbol !== valueType.symbol && getMergedSymbol(symbol) === valueType.symbol
```

I'll work on the real fix afterwards and put it into 3.8.

d1515f4ee0 Add bug number
2019-10-24 09:58:21 -07:00
TypeScript Bot 49301482a0 Cherry-pick PR #34683 into release-3.7 (#34705)
Component commits:
2aa257df80 getTypeFromJSDocValueReference: handle import types
Previously it only handled types whose declaration was from `require`,
but now it handles types whose reference is an import type as well.
2019-10-24 09:25:35 -07:00
Wesley Wigham 7afaef1067 Cherry-pick PR #34679 into release-3.7
Component commits:
e0b98c6eae Do not consider element accesses which are neither statically bindable nor late bound as special assignments
2019-10-23 13:22:52 -07:00
Nathan Shively-Sanders f21e9312e8 Cherry-pick PR #34649 into release-3.7 (#34657)
Component commits:
b6744812a0 Treat any mix of element/prop access as declaration in JS
Fixes #34642 but, notably, doesn't actually make the assignment into a
working declaration. It just fixes the crash.
2019-10-22 15:22:40 -07:00
TypeScript Bot ea71ecfe22 Cherry-pick PR #34650 into release-3.7 (#34658)
Component commits:
6a6f4a666e Fix crash in assigning function with this ref to alias
2019-10-22 15:22:31 -07:00
Nathan Shively-Sanders 2b0d4600a7 Cherry-pick PR #34649 into release-3.7
Component commits:
b6744812a0 Treat any mix of element/prop access as declaration in JS
Fixes #34642 but, notably, doesn't actually make the assignment into a
working declaration. It just fixes the crash.
2019-10-22 21:47:42 +00:00
Anders Hejlsberg f84fd300b8 Merge pull request #34607 from microsoft/fix33490
Fix type inference regression
2019-10-21 12:50:38 -07:00
Anders Hejlsberg ff6626f869 Merge pull request #34597 from microsoft/optionalChainControlFlow
More optional chaining control flow analysis
2019-10-21 12:36:07 -07:00
Andrew Branch 1d3ecc0610 Ensure export= symbol from JavaScript always has a valueDeclaration (#34553) 2019-10-21 09:56:02 -07:00
Anders Hejlsberg 56520da6f0 Add regression tests 2019-10-20 18:00:08 -07:00
Anders Hejlsberg d218a31a7d Add tests 2019-10-19 10:51:59 -07:00
Daniel Rosenwasser b845800bdf Add option to configure automatic optional chain completions (#34552)
Add option to configure automatic optional chain completions
2019-10-18 17:35:59 -07:00
Andrew Branch 91196fc53f Ensure functions that have prototype properties assigned by Object.defineProperty get marked as classes (#34577)
* Ensure functions that have prototype properties assigned by Object.defineProperty get marked as classes

* Revert unneeded change
2019-10-18 16:31:43 -07:00
Nathan Shively-Sanders cdf1ab2dec Bind @class in the right place -- bindWorker not bindChildrenWorker (#34575)
Also add an assert to make future mismatches fail in an obvious place
instead of in a while loop.
2019-10-18 14:13:14 -07:00
Nathan Shively-Sanders fa1884ed1b Fix crash in expando assignment to alias (#34566)
* Fix crash in expando assignment to alias

This PR disallows expando assignments

Fixes #34493, but disallows the prototype assignment nonetheless.

* Revert mistaken changes
2019-10-18 13:31:44 -07:00
Nathan Shively-Sanders 1d5add528d Emit computed property temps even w/o init w/useDefineForClassFields (#34406)
Fixes #33857
2019-10-18 13:23:38 -07:00
Nathan Shively-Sanders 82f927f8dd Fix stack overflow in circular assignment declaration (#34543)
* Fix stack overflow in circular assignment declaration

It also needs to have multiple assignments so that it has a ValueModule
flag.

Fixes #33006

* remove errant comment

* Remove other possible circularity

* Restore fallback with additional condition
2019-10-18 09:01:21 -07:00
Tim Suchanek 9ff9c41a9a Add completion test for partial generic object (#34559) 2019-10-18 08:59:49 -07:00
Daniel Rosenwasser d2fab65df6 Added test. 2019-10-17 17:04:45 -07:00
Andrew Branch 454a3a0b0f Fix auto-imports from auto type acquisition definitions (#33766)
* Fix auto-imports from ATA typings

* Compare canonical filenames in isImportablePath
2019-10-17 13:59:09 -07:00
Nathan Shively-Sanders f5dbcb78af Resolve more jsdoc value references as types (#34515)
* Resolve more jsdoc value references as types

* add test
2019-10-17 11:21:34 -07:00
Andrew Branch f41b7b59ce Fix quick info for methods whose contextual type is a mapped type property (#33930) 2019-10-17 10:54:01 -07:00
Andrew Branch a95a25b9a7 Fix completions of optional properties in generic positions (#33937)
* fixes #30507

* Add test case for generic Partial type

* Fixes #28470

* Simplify contextFlags binary check

* Add string literal completion test

* Fix ContextFlags typings

* Speed up inference expression for completion

* Fix baseline merge

* Make contextFlags internal

* Reapply readonly array changes

* accept baselines

* Fix generic completion tests

* Re-merge ContextFlags

* Don’t change type during inference

* Fix typos and superfluous undefined arguments

* Add test for completions in unconstrained generic object literal
2019-10-17 10:45:40 -07:00
Klaus Meinhardt 45d0ef9441 factory: parenthesize for-of expression when necessary (#34229)
Fixes: #33856
2019-10-17 10:17:33 -07:00
Orta 5d20c573a6 Merge pull request #34524 from orta/fix_32675
Does not add a duplicate completion when offering an export which was re-declared as a global
2019-10-17 13:08:32 -04:00
Orta Therox 85010fa6fe Make sure that global module re-exports are short-cutted to be added to completions 2019-10-17 12:33:01 -04:00
Nathan Shively-Sanders f3a234caac Dedupe inherited jsdoc comments (#34522)
JSDoc on own properties was already deduped, but inherited jsdoc was
incorrectly not deduped.

Fixes #32708
2019-10-16 15:56:01 -07:00
Orta Therox c40ddb183e Does not add a duplicate completion when offering an export which was re-declared as a global - fixes #32675 2019-10-16 17:02:35 -04:00
Klaus Meinhardt 178417f431 factory: correctly parenthesize conditional head (#34227)
Fixes: #34109
2019-10-16 10:41:52 -07:00
Nathan Shively-Sanders 29f9493d87 Fix crash when exporting+aliasing globalThis inside declare global (#34408)
* global module:Fix crash when exporting+aliasing globalThis

* Fix another globalThis crash

find-all-refs assumed that an export inside a `declare x` was always an
ambient module, but it is not -- `declare global` does not allow
`export`, so find-all-refs shouldn't return any refs for this error case.
2019-10-15 14:05:39 -07:00
Anders Hejlsberg a685ac426c Merge pull request #34212 from microsoft/fix34021
Fix control flow analysis for --noFallthroughCasesInSwitch
2019-10-15 12:10:53 -07:00
Andrew Branch e146f0d13d Allow inferFromUsage to do auto-imports (#33915)
* Add test

* Auto-import instead of using ImportTypeNodes

* Write more tests and fix namespace case

* Remove unused enum memmber

* Update API baselines

* Lint

* Style nits and util consolidation
2019-10-14 10:33:00 -07:00
Anders Hejlsberg cc817bc63e Add tests 2019-10-13 09:45:56 -07:00
Sheetal Nandi 57d7edb7bd Merge pull request #33883 from microsoft/revert-32887-incrementalNoEmit
Revert "Disallow incremental with noEmit"
2019-10-10 13:08:35 -07:00
Wesley Wigham 114329ade8 Handle when import alias has to parent (therefore is synthetic module symbol) (#33813) 2019-10-10 04:29:33 -07:00
Andrew Casey 87c905f423 Handle string literals in merge conflict regions
Check for undefined, like the other code paths in the same function.
2019-10-09 14:46:19 -07:00
Anders Hejlsberg 6104f746ad Merge pull request #33831 from microsoft/falseAssertions
Code following truthiness assertion with false argument is unreachable
2019-10-09 13:23:05 -07:00
Klaus Meinhardt e48cd3a101 Fix noImplicitAny check on ambient private getters (#33896) 2019-10-09 10:05:26 -07:00