Commit Graph

28909 Commits

Author SHA1 Message Date
Nathan Shively-Sanders 64ff195426 Set-only accessors spread to undefined (#28213)
* Set-only accessors spread to undefined

Previously they were skipped. The runtime behaviour is to create a
property of type undefined, unlike (for example) spreading numbers or
other primitives. So now spreading a set-only accessor creates a
property of type undefined:

```ts
const o: { foo: undefined } = { ...{ set foo(v: number) { } } }
```

Notably, `o.foo: undefined` not `number`.

Fixes #26337

* Fix isSpreadableProperty oversimplification
2018-10-29 14:51:12 -07:00
Mine Starks 1fbabd5534 Merge pull request #28106 from minestarks/configure-plugins
configurePlugins command for tsserver
2018-10-29 14:06:40 -07:00
Nathan Shively-Sanders 60efb65931 infer-from-usage suggestions can't be ignored, and always do something when invoked. (#28206)
* Do not ts-ignore noImplicitAny suggestions

Still need to write tests.

* Add tests

* More tests

* Update baselines
2018-10-29 13:23:33 -07:00
Sheetal Nandi d32c1b091a Ignore any changes to file or folder that are in node_modules and start with "."
Fixes #27673
2018-10-29 12:00:46 -07:00
Andy 24febc2445 Allow to combine --resolveJsonModule with --isolatedModules (#28207) 2018-10-29 11:56:49 -07:00
Andy 672b0e3e16 Have flatMap return a ReadonlyArray by default (#28205) 2018-10-29 11:12:51 -07:00
Andy c97fc64972 Always use verify.completions when testing completions (#28137) 2018-10-29 10:03:25 -07:00
Wesley Wigham a6952887e9 Use same condition in isReferencedAliasDeclaration as isAliasResolvedToValue (#28171) 2018-10-29 09:38:10 -07:00
iliashkolyar 21feb204f6 Merge branch 'master' into codefix_add_missing_new_operator 2018-10-28 23:27:16 +02:00
iliashkolyar 583dbc571e Add missing apostrophe to codefix suggestion 2018-10-28 23:18:19 +02:00
ispedals 57546393ff Support synthesized SourceFile parent in getOrCreateEmitNode (#24709)
getOrCreateEmitNode() assumes that the SourceFile of node that is
part of a parse tree will also be a parse tree node. This assumption is
not valid for a transformed SourceFile. disposeEmitNodes() already handles
this case by getting the original SourceFile node if the provided node
is synthesized, so do the same in getOrCreateEmitNode().

This results in the test case in #24709 to run without error.
2018-10-28 13:12:08 -04:00
superkd37 1ec54f3b7f Update .mailmap 2018-10-27 20:39:23 +05:30
Wesley Wigham e2100cd2cc Measure variance of aliased conditional types using variance markers (#27804)
* Measure variance of aliased conditional types using variance markers

* Just do variance probing for all type aliases

* Small limiter for predictability

* Inline property set, remove unused functions
2018-10-26 16:26:20 -07:00
Anders Hejlsberg ccc16136b2 Merge pull request #28170 from Microsoft/fixGenericMappedTypeConstraint
No constraint for { [P in K]: XXX } where K is type variable
2018-10-26 16:02:17 -07:00
Wesley Wigham 972c403cd8 JSX uses mixed signatures and union sigs use subtype on partial match (#28141)
* JSX uses mixed signatures and union sigs use subtype on partial match

* Small improvement
2018-10-26 16:01:32 -07:00
Anders Hejlsberg 00fbdedbcc Accept new baselines 2018-10-26 15:32:18 -07:00
Anders Hejlsberg 24e3745296 Add regression test 2018-10-26 15:32:10 -07:00
Andy 36dfd775b3 Parse an object literal property as shorthand unless followed by '(' or ':' (#28121) 2018-10-26 15:00:31 -07:00
Jack W abce9ae0be Bring typeof switch inline with if (#27680)
- Narrow unknown
- Narrow union members (in addition to filtering)
2018-10-26 14:56:26 -07:00
Andy 77d8e15905 Remove unused property ParameterInference#typeNode (#28115) 2018-10-26 14:44:49 -07:00
Anders Hejlsberg 30d1ecd1bd Constraint for { [P in K]: XXX } should be empty type 2018-10-26 14:14:53 -07:00
Nathan Shively-Sanders 372c7d9b0c infer from usage JSDoc:Don't emit nested comments (#28161)
* infer from usage JSDoc:Don't emit nested comments

Previously, the trivia on a parameter name would show up inside the
emitted JSDoc comment. If the trivia contained a C-style comment, the
emitted JSDoc comment would be invalid. For example:

```js
function call(callback /*oh no*/) {
  return callback(this)
}
```

Emitted this comment:

```js
/**
 * @param {(arg0: any) => void} callback /*oh no*/
 */
```

* Remove misleading comment used for debugging.
2018-10-26 14:09:42 -07:00
TypeScript Bot 14c328e706 Update user baselines (#28157) 2018-10-26 09:55:05 -07:00
Klaus Meinhardt 3fb8873bc2 don't resolve import types in JSDoc of TS files (#28158) 2018-10-26 09:50:12 -07:00
Prateek Goel 15e7fa727f Merge branch 'error-messages' of https://github.com/prateekgoel/TypeScript into error-messages 2018-10-26 10:17:07 +05:30
Prateek Goel 2fa23e96cd Error messages and tests 2018-10-26 10:14:53 +05:30
Prateek Goel d45eed314a Error messages for extending a specific type 2018-10-26 10:14:37 +05:30
csigs 0e372e98e8 LEGO: Merge pull request 28146
LEGO: Merge pull request 28146
2018-10-25 16:45:36 -07:00
csigs 1979570f73 LEGO: check in for master to temporary branch. 2018-10-25 23:45:15 +00:00
Nathan Shively-Sanders dc9a066f65 Do not merge commonJS exports into an alias (#28133)
* Do not merge commonsjs exports onto an alias

getCommonJSExportEquals merges export assignments and export property
assignments. Something like this, which has no equivalent structure in
TS:

```js
module.exports = function() { }
module.exports.expando = 1
```

However, it is sometimes called with an alias, when its
parent, resolveExternalModuleSymbol, is called with dontResolveAlias:
true, and when the initialiser of the export assignment is an alias:

```js
function alias() { }
module.exports = alias
module.exports.expando = 1
```

In this case, (1) the actual value `alias` will have already merged in a
previous call to getCommonJSExportEquals and
(2) getTypeOfSymbol will follow the alias symbol to get the right type.
So getCommonJSExportEquals should do nothing in this case.

This bug manifests in the code for dynamic imports, which calls
getTypeOfSymbol on the incorrectly merged alias, which now has enough
value flags--Function, for example--to take the wrong branch and
subsequently crash.

* Update baselines
2018-10-25 15:08:06 -07:00
Andy 070218f828 Remove DirectoryOfFailedLookupWatch#ignore, use DirectoryOfFailedLookupWatch | undefined (#28091) 2018-10-25 15:03:46 -07:00
Andy efc831e0ba At '.' in array literal, don't close the array (#28120) 2018-10-25 12:25:33 -07:00
Sheetal Nandi 539b9a6d50 Merge pull request #28028 from ajafff/optimize-resolve-reusing-old-state
Fix performance regression when reusing old state
2018-10-25 11:12:53 -07:00
Wesley Wigham 05716a74a5 Add support for configuration inheritance via packages (#27348)
* Add support for configuration inheritance via packages

* Fix lint

* Propagate trace into config parse hosts
2018-10-25 10:19:57 -07:00
TypeScript Bot 0aac87fd60 Update user baselines (#28129) 2018-10-25 09:28:04 -07:00
Anders Hejlsberg 6e8e5c10dd Merge pull request #28112 from Microsoft/fixInstanceofControlFlow
Fix instanceof control flow analysis
2018-10-25 06:16:39 -07:00
fullheightcoding 8e8a2397ca Fixed some typos. 2018-10-25 17:55:28 +11:00
Sanket Mishra f58d173703 Fixed typos in spec.md
Changed 're-factoring' to 'refactoring'.
Changed 'screen shot' to 'screenshot'.
2018-10-25 10:00:51 +05:30
Andy 42740d66c2 Improve performance of suggestionDiagnostics for convertToAsyncFunction (#28089) 2018-10-24 21:23:47 -07:00
Nathan Shively-Sanders fe2a33fcbc Merge existing JSDoc comments (#27978)
* Correct indentation, using correct (I hope) indentation code

Note that part of the code, in formatting.ts, is cloned but should be
extracted to a function instead.

* Remove some possibly-superfluous code

But I see 4 failures with whitespace, so perhaps not.

* Restrict indentation change to avoid breaking baselines

The indentation code is very complex so I'm just going to avoid breaking
our single-line tests for now, plus add a simple jsdoc test to show that
multiline jsdoc indentation isn't destroyed in the common case.

* Switched over to construction for @return/@type

Still doesn't merge correctly though

* Add @return tags to emitter

* Merge multiple jsdocs

(not for @param yet)

* Merge multiple jsdoc for parameters too

* Emit more jsdoc tags

Not all of them; I got cold feet since I'll have to write tests for
them. I'll do that tomorrow.

* Many fixes to JSDoc emit

And single tests (at least) for all tags

* Cleanup in textChanges.ts

* Cleanup in formatting.ts

(Plus a little more in textChanges.ts)

* Cleanup in inferFromUsage.ts

* Fix minor omissions

* Separate merged top-level JSDoc comments with \n

instead of space.

* Don't delete intrusive non-jsdoc comments

* Cleanup from PR comments

1. Refactor emit code into smaller functions.
2. Preceding-whitespace utility is slightly easier to use.
3. Better casts and types in inferFromUsage make it easier to read.

* Fix bogus newline

* Use @andy-ms' cleanup annotateJSDocParameters
2018-10-24 16:14:52 -07:00
Andy e46c846ee6 Remove getBucketForCompilationSettings (#28088) 2018-10-24 15:37:46 -07:00
Andy 854f20e90f Remove 'verify.fileAfterCodeFix', use 'verify.codeFix' (#28110) 2018-10-24 15:34:15 -07:00
Anders Hejlsberg cc9f45d517 Accept new baselines 2018-10-24 13:51:35 -07:00
Anders Hejlsberg ba8310ab8d Add regression test 2018-10-24 13:51:24 -07:00
Anders Hejlsberg 6fbd2a5f59 Reset narrowing of 'x.y' only when 'x' has a narrowable type 2018-10-24 13:51:11 -07:00
Noel Yoo 6409195054 Update CI (#28082)
* Use 'node' instead of 'stable'

* Add node 10

* Drop node 8
2018-10-24 13:21:58 -07:00
Nathan Shively-Sanders 0db3038b57 Fix tests for node 11 (#28108)
1. Sort is now stable in node 11, which exposed a lack in the sorting of
nested ranges. Ranges now sort based on last ending if the start
positions are the same. This means nested ranges sort the
containing range first, even if a range contains another range that
starts at the same position.
2. Symbol has a new member description which can't be accessed through
the prototype. In addition, Array now has flat and flatMap, which I
excluded to keep baselines the same between Node 6-11.
2018-10-24 13:03:29 -07:00
Nathan Shively-Sanders ff6f94791f Use regex+getTokenAtPosition to find dynamic import (#28104)
Instead of walking the entire tree. This stack overflows for large
trees.

Still need to adapt a test.
2018-10-24 11:27:39 -07:00
Andy eadf44d073 Add generateTypesForModule to public API (#28069)
* Add generateTypesForModule to public API

* Avoid parameter initializer and update baselines
2018-10-23 16:10:26 -07:00
Nathan Shively-Sanders 996fb78445 Test update of DOM. (#28050)
Based on the few changes that have been accepted since Mohamed left.
2018-10-23 15:24:56 -07:00