22195 Commits

Author SHA1 Message Date
Wesley Wigham
eaabf920eb
Combine keyof T inferences (#22525)
* Combine keyof T inferences

* Extract covariant inference derivation into function

* Test:keyof inference lower priority than return inference

for #22376

* Update 'expected' comment in keyofInferenceLowerPriorityThanReturn

* Update comment in test too, not just baselines

* Fix typo

* Move tests
2018-03-19 16:56:51 -07:00
Nathan Shively-Sanders
b56093f3ac
Fix type when annotated with a JSDoc function type (#22692)
* Fix type when annotated with a JSDoc function type

Previously,
1. A variable annotated with a JSDoc function type would not require all
its parameters to be provided. This should only apply to functions
without a type annotation.
2. A parameter in a function with a JSDoc function type annotation would
still have the type 'any'.
3. Two `var` declarations in a Typescript and Javascript file,
respectively, would error even when they had identical function types.

* Update baselines and add constructor test

* Handle ConstructorType too

* Add test:method sig inside literal type

* Contextually type parameters by parent sig's JSDoc

Instead of a syntactic check in getJSDocTag

* Remove redundant check:isUntypedSignatureInJSFile

* Positive check for value signatures

Instead of excluding type signatures piecemeal.
2018-03-19 16:00:45 -07:00
csigs
d88041fc0a
LEGO: Merge pull request 22703
LEGO: Merge pull request 22703
2018-03-19 15:12:07 -07:00
csigs
995c7db8cd LEGO: check in for master to temporary branch. 2018-03-19 22:11:42 +00:00
Andy
737859e3c1
Put simpler condition in front of more complex one (#22696) 2018-03-19 13:35:19 -07:00
Andy
096b2b0712
Use isFunctionLike instead of switch (#22698) 2018-03-19 13:35:01 -07:00
Andy
0df92a1ba1
Simplify isImplementation (#22660) 2018-03-19 11:59:22 -07:00
Andy
c7215a181c
findAllRefs: give entry for union its own definition (#22694) 2018-03-19 11:58:20 -07:00
AdityaDaflapurkar
76fefddcaa Remove type assertion in sum function (#22670) 2018-03-19 08:19:24 -07:00
Anders Hejlsberg
c48662c891
Merge pull request #22675 from Microsoft/fixWideningInDestructuring
Fix widening in destructuring
2018-03-17 15:21:16 -07:00
Anders Hejlsberg
b7047e852b Accept new baselines 2018-03-17 12:23:54 -07:00
Anders Hejlsberg
979bda484c Add regression test 2018-03-17 12:23:45 -07:00
Anders Hejlsberg
eab5b9f20c Accept new baselines 2018-03-17 12:23:05 -07:00
Anders Hejlsberg
20c008ecab Mark implied object destructuring patterns as object literal types 2018-03-17 12:02:19 -07:00
Nathan Shively-Sanders
bb23e9601f
Parse JSDoc ...T and T= only at top-level JSDoc (#22661)
* Parse JSDoc ...T and T= only at top-level JSDoc

...T and T= should only be legal at the top level of a type, and only in
JSDoc, since at least T= is ambiguous elsewhere. This PR changes parsing
to make that happen. The resulting parse tree is now simpler, allowing
me to get rid of some code I had to add in the checker.

* Extract JSDoc type parsing into its own function

* PR comments:return from parseJSDocType
2018-03-16 16:08:42 -07:00
Andy
5fd3ed2c10
Fix indent (#22662) 2018-03-16 15:54:52 -07:00
Andy
42c7aa85ce
Clean up isNameOfExternalModuleImportOrDeclaration (#22659) 2018-03-16 14:54:41 -07:00
Andy
92ec1149ac
getAllJSDocTagsOfKind always returns a defined result (#22652) 2018-03-16 14:01:28 -07:00
Andy
28ff6b6ef3
Store import nodes in SourceFile.imports instead of StringLiteral nodes (#22495)
* Store import nodes in SourceFile.imports instead of StringLiteral nodes

* Change SourceFile#imports storage back

* Code review

* StringLiteral -> StringLiteralLike
2018-03-16 14:01:00 -07:00
Andy
adf3635a1f
For import fix, for "foo/index" module, use "foo" as default export name, not "index" (#22651) 2018-03-16 14:00:33 -07:00
Nathan Shively-Sanders
3b6ae8536f
JSDoc ?Type adds optionality to parameters (#22646)
* jsdoc ?Type adds optionality to parameters

Chrome devtools expects that parameters with type `?T` (or `T?`) add
null to `T` and optionality to the parameter. Previously it only added
null to the type.

Currently the PR does *not* add undefined to the type of
`T`, which is expected by chrome-devtools-frontend, but is inconsistent
with typescript's rules. The implementation achieves this inconsistency by
exploiting the fact that checking the signature adds optionality and
checking the parameter adds `undefined`.

* Update chrome-devtools-frontend baseline

* Add optionality only for jsdoc postfix=

* Skip jsdoc prefix types in isJSDocOptionalParameter

Previously isJSDocOptionalParameter was incorrect for types like
`?number=`, which are optional but have JSDocNullableType as their root
type node.
2018-03-16 13:28:24 -07:00
Andy
99d5058568
Add 'isPrototypeAccess' helper (#22648)
* Add 'isPrototypeAccess' helper

* Fix type error
2018-03-16 13:27:47 -07:00
Wesley Wigham
2d01d76ee5
Change es2015 transform to retain comments on for of loop bodies (#22396) 2018-03-16 12:57:38 -07:00
Matt Bierner
9774cd5eb5 Fix await code action crashes when await is not in a function (#22623)
Fixes #22614
2018-03-16 11:53:17 -07:00
Andy
b9f60566d0
For f.prototype.m = function() { this.x = 0; } make x a member of f, not of the function expression (#22643) 2018-03-16 11:35:51 -07:00
Sheetal Nandi
d4788f5d41
Merge pull request #22520 from Microsoft/betterDelete
Do not send first missing file event as well, Do not close typing installers watches just to recreate them
2018-03-16 11:17:23 -07:00
Matt Bierner
984aaa3ee9 Fix completions and brace in empty file (#22620)
Fixes #22618
2018-03-16 11:05:33 -07:00
Wesley Wigham
bfe755c6ce
Revert assertion addition (#22622) 2018-03-16 09:04:55 -07:00
Wesley Wigham
19ec83fcdf
Refactor declaration emitter into declaration transformer (#21930)
* Refactor declaration emitter into declaration transformer

* Slight cleanup from code review feedback

* Incorporate fix for new test

* Swaths of PR feedback

* Merge public methods

* Per-file output

* Preserve input import ordering more often

* Unify jsdoc comment start detection under more lenient rule

* Move to per-file transformations to reduce the memory that msut be retained

* Fix typo
2018-03-15 22:23:10 -07:00
Andy
162a273e43
Simplify some code in parseTestData (#22587) 2018-03-15 13:05:01 -07:00
Andy
eb4dba7ad4
Disable assertion for deferredUnusedIdentifierNodes (#22604) 2018-03-15 10:49:39 -07:00
Sheetal Nandi
e48ed3f9c2 Do not close the file watches just to create new ones in the type installer
Fixes #22581
2018-03-15 10:45:09 -07:00
Andy
85e9cce3c7
Don't add external module completions in a pure commonjs file (#22583) 2018-03-15 08:13:16 -07:00
csigs
0666b281b0
LEGO: Merge pull request 22586
LEGO: Merge pull request 22586
2018-03-14 15:10:57 -07:00
csigs
77e529bf7e LEGO: check in for master to temporary branch. 2018-03-14 22:10:37 +00:00
Nathan Shively-Sanders
0d684b5681
Update user tests for new jsdoc fixes (#22582)
From #22510 and #22514, which remove lots of bogus `@param` errors and
add lots of `Object is possibly undefined` errors, respectively.

There are quite a few effects of the correct addition of undefined to
types based on postfix= in jsdoc, actually.
2018-03-14 14:40:35 -07:00
Klaus Meinhardt
7715b5139b Signature#declaration can be undefined (#22515) 2018-03-14 13:24:41 -07:00
Andy
1736741e54
Simplify implementation of firstOrUndefined and lastOrUndefined (#22572) 2018-03-14 12:40:48 -07:00
Andy
5f1668e53d
Use type predicate for getFirstJSDocTag (#22573)
* Use type predicate for getFirstJSDocTag

* Restore API
2018-03-14 12:40:30 -07:00
Nathan Shively-Sanders
3728ec353a
Improve unmatched jsdoc param error (#22577)
* Improve unmatched jsdoc parameter error message

* Remove extraneous carriage return
2018-03-14 12:36:01 -07:00
Andy
e7ce3f9457
useNonAdjustedEndPosition when replacing import node (#22517)
* useNonAdjustedEndPosition when replacing import node

* Never adjust positions, and add trivia test
2018-03-14 11:46:45 -07:00
Wesley Wigham
6efc679b9e
Update circle config to build all branches
And move submodule update into run, since in checkout it doesn't seem to run
2018-03-14 11:23:03 -07:00
Andy
6ef2db5c48
inferFromUsage: Handle being at an unexpected location (#22569)
* inferFromUsage: Handle being at an unexpected location

* add comment
2018-03-14 10:57:38 -07:00
Nathan Shively-Sanders
677d860b44
No error on unmatchable @param tags (#22510)
* No errr on unmatchable `@param` tags

Such as when the initializer is not a function, or when the function
mentions `arguments` in its body.

* Do not require dummy param for JS uses of arguments

1. JS functions that use `arguments` do not require a dummy parameter in
order to get a type for the synthetic `args` parameter if there is an
`@param` with a `...` type.
2.JS functions that use `arguments` and have an `@param` must have a
type that is a `...` type.

* Check for array type instead of syntactic `...`

* Address PR comments

* Update baselines
2018-03-14 10:17:54 -07:00
Nathan Shively-Sanders
24fdb5201d
Pass stack trace limit to parallel workers, and always convert to number (#22527)
* Pass stackTraceLimit to parallel workers

Specifying it breaks some output, both in parallel and normal runners.
I'll look at that in another commit, probably another PR, depending on
how simple the problem is.

* Always convert stackTraceLimit to a number

Sometimes it's not a number, even though the type claims it is.
2018-03-14 07:05:32 -07:00
csigs
8d172aa353
LEGO: Merge pull request 22561
LEGO: Merge pull request 22561
2018-03-13 21:10:47 -07:00
csigs
e8ee4b02b4 LEGO: check in for master to temporary branch. 2018-03-14 04:10:27 +00:00
Andy
d1d69602ae
getJSDocParameterTags: Always return defined result (#22523)
* getJSDocParameterTags: Always return defined result

* Make line shorter

* Simplify remaining use
2018-03-13 17:56:00 -07:00
Sheetal Nandi
60501c8b49
Merge pull request #22526 from Microsoft/testModifiedTime
Instead of using current time, use predefined time for modification to ensure we can detect changes correctly and arent timing dependent
2018-03-13 17:06:22 -07:00
Sheetal Nandi
d8fe6ed01a Instead of using current time, use predefined time for modification to ensure we can detect changes correctly and arent timing dependent
Fixes #22455
2018-03-13 17:05:16 -07:00