Commit Graph

28909 Commits

Author SHA1 Message Date
Anders Hejlsberg 303e08fc4f Add regression test 2018-07-21 12:31:24 -07:00
Anders Hejlsberg c0e0c1c2f3 Revise intersection optimizations to include string, number and symbol 2018-07-21 12:23:02 -07:00
Sheetal Nandi a9d497a008 Report compiler options errors as well as part of configFileDiag event
Fixes #25741
2018-07-20 18:04:08 -07:00
Andy 93722c8942 findAllReferences/rename: Search in all open projects (#25648)
* findAllReferences/rename: Search in all open projects

* Avoid needing a dummy location when location is unused

* Remove Program#getDeclarationEmitPath

* Only iterate over enabled projects
2018-07-20 16:53:59 -07:00
Andy 3d672d9550 Ensure fixSpelling and importFixes still trigger on "Did you mean the instance/static member ..." (#25847) 2018-07-20 16:51:35 -07:00
Mohamed Hegazy 00a64172af Merge pull request #25680 from a-tarasyuk/bug/25667-getmodifiedtime-has-wrong-return-type
25667 - getModifiedTime has wrong return type
2018-07-20 16:35:43 -07:00
Anders Hejlsberg 7c512fbc41 Merge pull request #25817 from Microsoft/fixGenericRestTypes
Fix generic rest types
2018-07-20 10:57:21 -10:00
Sheetal Nandi b31f242223 Reflect getCurrentProgram as Program|undefined in the ResolutionHostCache
If there were any exceptions, the getCurrentProgram might return undefined so this is defensive check for program
Fixes #25765
2018-07-20 12:20:39 -07:00
Andy e103692f32 Don't report quickInfo inside a comment in a PropertyAccessExpression (#25813) 2018-07-20 11:49:21 -07:00
Alexander 8c7a1fad25 use missingFileModifiedTime instead check on undefined 2018-07-20 21:30:10 +03:00
Andy bcd565287c Remove bad import completions tests (#25816) 2018-07-20 11:11:03 -07:00
Andy b21c1fd595 errorCodes in CodeFixRequestArgs is non-optional (#25815) 2018-07-20 11:10:33 -07:00
Nathan Shively-Sanders 31d599abaf Check module.exports (#25732)
* Revert "Revert "Explicitly typed special assignments are context sensitive (#25619)""

This reverts commit 16676f2707.

* Revert "Revert "Explicitly typed prototype assignments are context sensitive (#25688)""

This reverts commit ff8c30d636.

* Initial, wasteful, solution

It burns a check flags. Probably necessary, but perhaps not.

I haven't accepted baselines, but they are a bit questionable. I'm not
sure the synthetic type is right, because I expected to see
{ "exports": typeof import("x") } but instead see { "x": typeof
import("x") }.

* Update some baselines

* module.exports= always uses lhs type

Conflicts between exports property assignments and exports assignments
should get a union type instead of an error.

* Fix lint and accept good user baselines

* Add tests based on user tests.

These currently fail.

* Fix all but 1 of user test bugs found by typing module.exports

Still quite messy and full of notes

* Follow merged symbols+allow any object type

This allows exports like `module.exports = new EE` to have properties
added to them.

Still messy, but I'm going to run user tests and look for regressions.

* Update improved user baselines

* Fix infinite recursion when checking module.exports

* Fix bogus use-before-def error

getExportSymbolOfValueSymbolIfExported should always merge its returned
symbol, whether it's symbol.exportSymbol or just symbol.

* Update user test baselines

* Cleanup

* More small cleanup

* Bind `module` of `module.exports` as a special symbol

Previously it was also special, but created during name resolution in
the checker. It made sense when there was only one special symbol for
all files, but now there is one `module` symbol per file.
2018-07-20 10:59:26 -07:00
Wenlu Wang fedcd3a1b4 improve completions keyword for function like body (#25824) 2018-07-20 08:25:16 -07:00
王文璐 1c522a6e99 improve enum rechability check 2018-07-20 15:48:30 +08:00
Alexander T 8ae163a1cc Merge branch 'master' of https://github.com/Microsoft/TypeScript into bug/25667-getmodifiedtime-has-wrong-return-type 2018-07-20 10:18:22 +03:00
Alexander T 37add88b18 Update tests baselines 2018-07-20 10:17:27 +03:00
csigs 98915693bc LEGO: Merge pull request 25818
LEGO: Merge pull request 25818
2018-07-19 21:10:53 -07:00
csigs 2c6f265ae0 LEGO: check in for master to temporary branch. 2018-07-20 04:10:29 +00:00
Anders Hejlsberg 949f8d23f6 Accept new baselines 2018-07-19 18:29:39 -07:00
Anders Hejlsberg b48910413a Add regression test 2018-07-19 18:29:30 -07:00
Anders Hejlsberg 5f2efc223d Properly handle all generic kinds of types in rest positions 2018-07-19 18:29:20 -07:00
Sheetal Nandi 4ee3f2b3ea Watch subdirectories in project root instead of watching project root so as to avoid watching excluded directories that are not part of config file
Fixes #25629 and Microsoft/vscode#51139
2018-07-19 17:21:50 -07:00
Mohamed Hegazy feca91c67b Merge pull request #25809 from ajafff/verify-strict-options
correctly detect if strictNullChecks is enabled
2018-07-19 15:56:45 -07:00
Mohamed Hegazy 555ead611b Merge pull request #25806 from ajafff/expose-stripInternal
API: expose CompilerOptions.stripInternal
2018-07-19 15:54:58 -07:00
Klaus Meinhardt 99d123a72d add correct test 2018-07-20 00:30:11 +02:00
Klaus Meinhardt 7031c43978 correctly detect if strictNullChecks is enabled
Fixes: #25808
2018-07-20 00:16:59 +02:00
Klaus Meinhardt d5b3a28608 API: expose CompilerOptions.stripInternal 2018-07-19 23:13:53 +02:00
Nathan Shively-Sanders 1cedab18be Fix parsing of parenthesized JSDoc parameters (#25799)
* Fix parsing of parenthesized JSDoc parameters

Parenthesis can start a jsdoc function parameter since it is just a
type, and parenthesis can start a type:

```js
/** @type {function(((string))): void} */
```

However, this is not legal in other parameter lists:

```ts
function x((((a))): string) { }
```

This change makes jsdoc function parameter lists parse differently than
normal parameter lists by allowing parenthesis as a start character of
jsdoc parameters.

* Parse nested uses of jsdoc function types

* Fix test
2018-07-19 12:50:36 -07:00
Andy 46827f4a76 Handle completions at name of namespace declaration (#25661)
* Handle completions at name of namespace declaration

* Handle namespace merging
2018-07-19 10:26:18 -07:00
Daniel Rosenwasser 37277e86e6 Merge pull request #25752 from Microsoft/objectsAgainstArrays
Avoid elaborating object literals against array-likes
2018-07-18 15:29:47 -07:00
csigs ac3f5b689c LEGO: Merge pull request 25780
LEGO: Merge pull request 25780
2018-07-18 15:10:53 -07:00
csigs 8a1ff48218 LEGO: check in for master to temporary branch. 2018-07-18 22:10:28 +00:00
Wenlu Wang ed8b76424e add grammar check for labeled declaration (#25317)
* add grammar check for labeled function declaration

* fix debug failed on labeled class declaration

* move labeled statement check to binder and add more pattern for check

* update diagnostic message

* update baseline
2018-07-18 15:37:27 -06:00
Andy 2701f785ed Consistently use ScriptInfo for converting positions to Locations (#25623)
* Consistently use ScriptInfo for converting positions to Locations

* Code review
2018-07-18 13:02:38 -07:00
Andy 751f20e8bc Don't bother trying to get the name of a default export (#25773)
* Don't bother trying to get the name of a default export

* Fix lint
2018-07-18 11:43:13 -07:00
Martin Probst c50a6f7389 Fix comment emit for namespaces & enums.
Keep emit flags set on the original node on a namespace or enum node.
This prevents dropping flags like NoComments, which caused duplicated
comment emits.

Additionally, TypeScript would emit synthetic comments twice, once for
the variable declaration, once for the module statement. This explicitly
clears away synthetic comments on namespaces and enums if their
synthetic comments have already been emitted on the corresponding
variable statement.
2018-07-18 17:23:28 +02:00
Martin Probst a7224ec612 Do not emit comments if container had a comment suppression. 2018-07-18 17:23:27 +02:00
Martin Probst 2529b864f4 Retain synthetic comments on classes and their properties. 2018-07-18 17:23:27 +02:00
Martin Probst 1bd79af760 Reduce duplication of addSyntheticComment. 2018-07-18 16:30:32 +02:00
Martin Probst 6f114a2c9b Fix comments for import and export declarations.
Previously, TypeScript would only set the text range when transforming
import and export declarations, leading it to drop synthetic comments
and emit flags.

This commit sets the original node on the statements that contains the
generated `require()` call (or similar, depending on module system),
retaining emit flags and synthetic comments.
2018-07-18 16:30:32 +02:00
Martin Probst db888b8670 Retain synthetic comments on exported variables.
Variables that do not have a local variable created get transformed into
a single exports assignment expression. TypeScript previously just
created a new expression and set the text range to retain original
comments, but for synthetic comments, merging the emit nodes by setting
the original node is required.
2018-07-18 16:30:32 +02:00
Daniel Rosenwasser 806a5385cc Accepted baselines. 2018-07-17 21:58:02 -07:00
Daniel Rosenwasser 649f294413 Elaborate on the first non-array type when object literals are compared against 'T | T[]'. 2018-07-17 21:54:33 -07:00
Daniel Rosenwasser 36e26c1a35 Accepted baselines. 2018-07-17 21:52:36 -07:00
Daniel Rosenwasser bda32aeee2 Added test. 2018-07-17 21:52:24 -07:00
Andy d92c26db69 Add test that getEditsForFileRename respects UserPreferences (#25745)
* Add test that getEditsForFileRename respects UserPreferences

* Test quotePreference
2018-07-17 17:05:35 -07:00
Andy 854462d383 Fix formatting at trailing comma (#25706) 2018-07-17 15:21:35 -07:00
Andy 6d8a5f6288 Fix invalid cast: JSDocSignature is not a SignatureDeclaration (#25734) 2018-07-17 13:35:55 -07:00
Andy d28fb65a1f Fix type of TypeParameterDeclaration#parent (#25737) 2018-07-17 13:35:34 -07:00