Commit graph

22392 commits

Author SHA1 Message Date
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
Sheetal Nandi 7329eb1ab1 Make sure config file parsing errors are available through program
Fixes #22570, #21940
2018-03-15 14:58:50 -07:00
Sheetal Nandi 66c690d401 Better test to see when console clearing happens 2018-03-15 14:46:43 -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
Nathan Shively-Sanders 0fa838a3ef
Brackets and postfix= in @param add undefined (#22514)
* Brackets and postfix= in `@param` add undefined

Previously they only added optionality.
Note that, unlike Typescript, when a parameter initializer is specified
in jsdoc, it does not remove undefined in the *body* of the function.
That's because TS will generate initialisation code, but JS won't, so
the author will have to manually write code to remove undefined from the
type.

```js
/** @param {number} [a=101] */
function f(a) {
  // a: number | undefined here
  if (!a) {
    a = 101
  }
  // a: number here
}
```

Note that we don't check that
1. the initializer value is actually assigned to the parameter.
2. the initializer's type matches the declared type of the parameter.

Pretty much we just parse it and leave it alone.

* Address PR comments
2018-03-13 15:56:38 -07:00
Andy 23a64fe804
Remove redundant call to checkNodeDeferred (#22516)
* Remove redundant call to `checkNodeDeferred`

* Use a set to speed up `contains` checks
2018-03-13 15:46:25 -07:00
csigs e41feab3bd
LEGO: Merge pull request 22521
LEGO: Merge pull request 22521
2018-03-13 15:11:08 -07:00
csigs 472a7f4d5b LEGO: check in for master to temporary branch. 2018-03-13 22:10:47 +00:00
Sheetal Nandi 4046bb15ac Do not send first missing file event as well. 2018-03-13 15:09:13 -07:00
Andy 0c6ef348ce
Simplify parseJsxChildren (#22511) 2018-03-13 12:28:21 -07:00
Mohamed Hegazy 85df31cde4
Merge pull request #22512 from Microsoft/fixUseOfProcess
Do not use unguarded process in tsc.ts
2018-03-13 11:24:31 -07:00
Sheetal Nandi 32018f66bb
Merge pull request #22496 from Microsoft/suppressMultipleDelete
Do not send delete event every poll for missing folder
2018-03-13 11:11:51 -07:00
Mohamed Hegazy 708caf9a72 Do not use unguarded process in tsc.ts 2018-03-13 11:03:12 -07:00