Commit Graph

12096 Commits

Author SHA1 Message Date
Mohamed Hegazy
114cd80ed9 Merge pull request #26008 from ajafff/restbindingpattern
allow BindingPattern in BindingRestElement
2018-07-31 11:31:22 -07:00
Mohamed Hegazy
c4d79923f5 Merge pull request #25963 from ajafff/cleanup-factory
minor cleanup in factory.ts
2018-07-31 11:31:07 -07:00
Mohamed Hegazy
aaf14f47b7 Merge pull request #26065 from ajafff/createbinary-arrow-parens
createBinary: parenthesize ArrowFunction in RHS
2018-07-31 11:27:53 -07:00
Nathan Shively-Sanders
a21ac11582 In JSDoc, resolve import types as values too (#26066)
* In JSDoc, resolve import types as values too

This is something that we probably should have been doing for some time.
Fixes #26049

* Fix whitespace lint
2018-07-31 11:07:06 -07:00
Anders Hejlsberg
4bc7f1570b Merge pull request #26063 from Microsoft/mappedTypesArraysTuples
Improved mapped type support for arrays and tuples
2018-07-31 10:54:44 -07:00
Nathan Shively-Sanders
4d84bde9b3 Only bind module.exports if no local definition exists (#25869)
* Only bind module.exports if no local definition exists

Note that this uses `lookupSymbolForNameWorker`, which is really a
best-effort check since it only knows about symbols that it has already
encountered.

As a side-effect, even when `module` is bound as part of a
`module.exports` reference, it only declares it once instead of one
declaration per reference.

* Only type module.exports inside module files

It is an error inside script files, but the binder sometimes creates a
ModuleExports symbol because we doesn't know whether we have a commonjs
module until after binding is done.

* Only bind module.exports in a commonjs module

Note that this, too, is a best-effort check since evidence of
commonjs-ness may be found after a *reference* to module.exports. (A
reference to module.exports alone is not enough evidence that a file is
commonjs. It has to have an assignment to it.)
2018-07-30 12:27:59 -07:00
Mohamed Hegazy
9e740deee8 Merge pull request #25965 from ajafff/expose-escapeleadingunderscores
expose escapeLeadingUnderscores
2018-07-30 12:05:33 -07:00
Sheetal Nandi
9196b7db33 Merge pull request #25851 from Microsoft/configFileDiag
Report compiler options errors as well as part of configFileDiag event
2018-07-30 11:07:07 -07:00
Klaus Meinhardt
4dabd650ed createBinary: parenthesize ArrowFunction in RHS
Fixes: #25964
2018-07-30 19:22:30 +02:00
Anders Hejlsberg
8eb24db0c0 Homomorphic mapped type support for arrays and tuples 2018-07-29 15:14:01 -07:00
Tim Schaub
960800d1fe Remove trailing whitespace from JSDoc comments 2018-07-28 10:36:10 -06:00
Nathan Shively-Sanders
25fb5419c0 Support the JSDoc @enum tag (#26021)
* Support the JSDoc @enum tag

`@enum` is used on a variable declaration with an object literal
initializer. It does a number of things:

1. The object literal has a closed set of properties, unlike other
object literals in Javascript.
2. The variable's name is resolvable as a type, but it just has the
declared type of the enum tag.
3. Each property's type must be assignable to the enum tag's declared type,
which can be any type.

For example,

```js
/** @enum {string} */
const Target = {
  START: "START",
  END: "END",
  MISTAKE: 0, // error 'number' is not assignable to 'string' -- see (3)
}

Target.THIS_IS_AN_ERROR; // See (1)
/** @type {Target} See (2) */
var target = Target.START;
```

* Fix lint, add new test case, update API baselines
2018-07-28 07:53:08 -07:00
Sheetal Nandi
a26aff30e1 Merge pull request #25835 from Microsoft/getCurrentProgramOrUndefined
Reflect getCurrentProgram as Program|undefined in the ResolutionHostCache
2018-07-27 23:06:34 -07:00
Andy
644ceab02f Document ObjectLiteralElementLike (#26024) 2018-07-27 17:33:42 -07:00
Andy
d40d54984e Support deleting all unused type parameters in a list, and deleting @template tag (#25748)
* Support deleting all unused type parameters in a list, and deleting @template tag

* Support type parameter in 'infer'
2018-07-27 11:55:31 -07:00
Klaus Meinhardt
2ea3123dbd allow BindingPattern in BindingRestElement
Part of #6275
2018-07-27 15:58:02 +02:00
Wesley Wigham
d590d5bd0c Remove extraneous const, fixing #25714 (#25982) 2018-07-26 14:43:00 -07:00
Daniel Rosenwasser
6b60babeaf Merge pull request #25978 from Microsoft/capturedGlobalThis
Better error message for captured global 'this' in noImplicitThis
2018-07-26 13:20:05 -07:00
Wesley Wigham
d17efe69d1 Fix #25954 - Always retain export modifier if default modifier is present (#25974)
* Fix #25954 - Always retain export modifier if default modifier is present

* Also fix an issue with scope markers in ambient modules not affecting the modifiers required
2018-07-26 12:39:03 -07:00
Daniel Rosenwasser
64d01d8e8f Provide a better error on arrow functions that capture the global 'this'. 2018-07-26 11:51:04 -07:00
Mohamed Hegazy
3057be3a0b Merge pull request #25966 from ajafff/shorthandPropertyAssignment-initializer-symbol
correctly resolve Symbol of destructuring shorthand intializer
2018-07-26 09:32:39 -07:00
Andy
5e94cf626b Expand span of @typedef with properties to include the @typedef tag (#25950) 2018-07-26 08:56:24 -07:00
Klaus Meinhardt
b65bbfd42d correctly resolve Symbol of destructuring shorthand intializer
Fixes: #21046
2018-07-26 14:37:52 +02:00
Klaus Meinhardt
b057bf9f01 expose escapeLeadingUnderscores
Fixes: #25343
2018-07-26 14:20:48 +02:00
Klaus Meinhardt
95f061ea0a minor cleanup in factory.ts
* remove deprecated signatures
* deprecate some legacy signature
* remove 2 useless conditions
2018-07-26 13:19:45 +02:00
Sheetal Nandi
d920efe3f9 Merge branch 'master' into resolveJsonModuleError 2018-07-25 17:32:22 -07:00
Sheetal Nandi
dfb5cbd373 When json module is not found, include enabling --resolveJsonModule might help.
Fixes #25722
2018-07-25 16:20:37 -07:00
Matt McCutchen
da64479a64 Improve the error message when asserting to a type that is not
comparable to the original.

Also improve the error message for implicit conversion of a symbol to a
string in a template literal, which previously shared the error message
with type assertions.

Fixes #25539.  Addresses #25870.
2018-07-25 19:13:10 -04:00
Anders Hejlsberg
7473772291 Merge pull request #25938 from Microsoft/fixRestTupleArityCheck
Fix rest tuple arity check
2018-07-25 14:40:57 -07:00
Anders Hejlsberg
5288c37010 Rest parameter with fixed size tuple should be same as regular parameters 2018-07-25 12:42:37 -07:00
Andy
bd600cfd50 Fix duplicate "this" completion (#25900) 2018-07-25 12:29:28 -07:00
Anders Hejlsberg
7b4d13c95c Merge pull request #25859 from Microsoft/optimizePrimitiveIntersections
Optimize creation of intersections of union types
2018-07-25 10:28:43 -07:00
Anders Hejlsberg
f9681e2327 Update comment 2018-07-25 07:10:44 -07:00
Anders Hejlsberg
dd4fd8c60e Merge pull request #25913 from Microsoft/fixCircularConstraintCheck
Fix circular constraint check
2018-07-25 06:46:51 -07:00
Anders Hejlsberg
ff6059abf6 Address CR feedback 2018-07-24 17:58:03 -07:00
Andy
e4d4b0ae4b Handle PropertyAssignment in getCommentOwnerInfo (#25911) 2018-07-24 17:43:46 -07:00
Mohamed Hegazy
fd2eb4918d Merge pull request #25604 from mprobst/fix-exported-var-comments
Retain synthetic comments on exports.
2018-07-24 17:41:44 -07:00
Wesley Wigham
7d44014c56 Fix typos 2018-07-24 16:37:07 -07:00
Wesley Wigham
23eb591e01 Lookup files by resolved Path and not by fileName in sourcemapDecoder when querying program (#25908)
* Check if the file returned by the program actually refers to the same file as we intend

* Simplify
2018-07-24 15:44:22 -07:00
Anders Hejlsberg
1fd1de9625 More simplification + consistent use of getConstraintOfTypeParameter 2018-07-24 15:27:39 -07:00
Wesley Wigham
f6d3ac9b5d Fix #25820 - handle redirected files when comparing paths (#25902)
* Fix #25820 - handle redirected files when comparing paths

* Update test to do case check
2018-07-24 15:24:52 -07:00
Mohamed Hegazy
870c55c7a5 Merge pull request #25863 from mattmccutchen/issue-9744
Report a semantic error for an arrow function with a "this" parameter.
2018-07-24 15:08:26 -07:00
Anders Hejlsberg
7233cde0dc Simplify logic in getBaseConstraint 2018-07-24 14:49:22 -07:00
Wesley Wigham
797d8bd07b Call toPath on sourceRoot to ensure it is always absolute (#25838)
* Call toPath on sourceRoot to ensure it is always absolute

* Leave canonicalization to avoid a Path/string union
2018-07-24 14:14:41 -07:00
Wesley Wigham
59854bbd55 Inspect all possible module paths when looking for the best one to create a specifier with (#25850)
* Inspect all possible specifier paths when looking for the best one

* Add missing secondary option from test
2018-07-24 13:56:21 -07:00
Anders Hejlsberg
8ddeb966f5 Consistently include circularity check in type parameter constraints 2018-07-24 06:19:58 -07:00
Andy
30c41492d9 moduleSpecifiers: Allow "*" as a path mapping (#25881) 2018-07-23 17:11:30 -07:00
Nathan Shively-Sanders
2146a91df3 Simplify getWidenedTypeFromJSSpecialPropertyDeclarations (#25868)
* Split getWidenedTypeFromJSSpecialPropertyDeclaration

1. Handle this-property assignments
2. Handle other special property assignment

I have only started simplifying [2].

* Split into two passes

1. Look for jsdoc
2. Look for type of initializers

Both can be broken into their own functions.

* Break into two functions

* Move back to original function and single loop

Then, convert the 2 extracted functions to reduce-style functions that
take state and return the updated state.

* Cleanup suggestions from review
2018-07-23 15:52:48 -07:00
Matt McCutchen
f72193eedc Report a semantic error for an arrow function with a "this" parameter.
Fixes #9744.
2018-07-23 10:42:56 -04:00
Anders Hejlsberg
c0e0c1c2f3 Revise intersection optimizations to include string, number and symbol 2018-07-21 12:23:02 -07:00