Commit graph

24751 commits

Author SHA1 Message Date
Anders Hejlsberg
9b6f06d83c Correct apparent type for homomorphic mapped types applied to array types 2018-08-17 09:45:09 -07:00
Anders Hejlsberg
178f792f18
Merge pull request #26340 from Microsoft/neverIndexedAccess
T[K] should be 'never' when T is 'never'
2018-08-15 16:07:11 -07:00
Sheetal Nandi
969b46e44b
Merge pull request #26458 from Microsoft/pathMappingResultsToNodeModules
When path mapping results to file in node_modules, mark it as external library
2018-08-15 15:28:50 -07:00
Nathan Shively-Sanders
cc67ce1141
Property assignments in Typescript (#26368)
* Allow special property assignments in TS

But only for functions and constant variable declarations initialised with
functions.

This specifically excludes class declarations and class expressions,
which differs from Javascript. That's because Typescript supports
`static` properties, which are equivalent to property assignments to a
class.

* Improve contextual typing predicate

Don't think it's right yet, but probably closer?

* More fixes.

The code is still fantastically ugly, but everything works the way it
should.

Also update baselines, even where it is ill-advised.

* Cleanup

* Remove extra whitespace

* Some kind of fix to isAnyDeclarationName

It's not done yet.

Specifically, in TS:
Special property assignments are supposed to be declaration sites (but not all
top-level assignments), and I think I
got them to be. (But not sure).

In JS:
Special property assignments are supposed to be declaration sites (but not all
top-level assignments), and I'm pretty sure ALL top-level assignments
have been declaration sites for some time. This is incorrect, and
probably means the predicate needs to be the same for both dialects.

* Add fourslash and improve isAnyDeclarationName

Now JS behaves the same as TS.

* Cleanup from PR comments
2018-08-15 15:25:25 -07:00
Nathan Shively-Sanders
08eb99d8ec
For a this-property assignment with an empty object initializer, use type annotation if present (#26428)
* This-property w/empty object init: use type annotation

* JS initializer type doesn't apply to this-property assignments

* Move getJSExpandoType into getWidenedType* functions

Plus some cleanup.

* Improved style from PR comments

* Parameters are not expando
2018-08-15 14:53:30 -07:00
Daniel Rosenwasser
dfef227b18
Merge pull request #26473 from Microsoft/doGlobalImplicitThisRight
Fix bad message for captured global 'this'.
2018-08-15 13:08:38 -07:00
Sheetal Nandi
fea1667002 Use string contains and nodeModulesPathPart const for "/node_modules/" 2018-08-15 11:47:16 -07:00
Sheetal Nandi
b983da55fd
Merge pull request #26457 from Microsoft/baseUrlPathMappingResolveJsonModule
Do not include json file unless --resolveJsonModule is specified
2018-08-15 11:43:01 -07:00
Andy
fd948ac6d2
Fix invalid cast (#26462) 2018-08-15 10:17:18 -07:00
Nathan Shively-Sanders
2bfd919b6a
Narrow on element access of literal (#26424)
* Narrow literal element accesses

This means that, for example, the tuple `[number, string?]` allows its
second element to be narrowed with element access:

```ts
export function f(pair: [number, string?]): string {
  return pair[1] ? pair[1] : 'nope';
}
```

* Update baselines

* Cleanup

* More cleanup

* Test dashes in property names

* More cleanup

* Delete undead code
2018-08-15 09:58:39 -07:00
Daniel Rosenwasser
aba82901ac Accepted baselines. 2018-08-15 09:00:37 -07:00
Daniel Rosenwasser
dac00d97b7 Do it correctly. 2018-08-15 09:00:23 -07:00
Daniel Rosenwasser
31d8cbe895 Accepted baselines. 2018-08-14 23:04:54 -07:00
Daniel Rosenwasser
dc1fbc24cd Updated test cases. 2018-08-14 23:02:08 -07:00
Daniel Rosenwasser
c0531c74f4 Accepted baselines. 2018-08-14 22:55:48 -07:00
Daniel Rosenwasser
d8c82a84e5 Make it better. 2018-08-14 22:55:06 -07:00
Sheetal Nandi
b9bd0d9a3f
Merge pull request #26451 from Microsoft/nonRecursiveOnHostsWithoutRecursiveSupport
Return the nonrecursive directory watcher correctly on platforms that  dont support recrusive directory watching
2018-08-14 17:12:48 -07:00
Sheetal Nandi
1dd3cd288e Make file as externalLibrary import if path contains node_modules 2018-08-14 16:27:18 -07:00
Sheetal Nandi
a32f62b310 Write tests to demonstrate how baseUrl + pathMapping to node_modules behaves 2018-08-14 16:26:41 -07:00
Sheetal Nandi
af71d55a49 Do not include json file unless --resolveJsonModule is specified
Fixes #26402
2018-08-14 16:23:13 -07:00
Sheetal Nandi
aa8f1e5b6a Test when module resolution because of path mapping takes to json file
Test for #26402
2018-08-14 16:23:07 -07:00
Nathan Shively-Sanders
29ca93ba48
Classes can extend Javascript constructor functions (#26452)
* Classes can extend JS constructor functions

Now ES6 classes can extend ES5 constructor functions, although only
those written in a JS file.

Note that the static side assignability is checked. I need to write
tests to make sure that instance side assignability is checked too.
I haven't tested generic constructor functions yet either.

* Test static+instance assignability errors+generics

Note that generics do not work.

* Cleanup from PR comments

* Even more cleanup

* Update case of function name
2018-08-14 14:43:04 -07:00
Andy
62e6e6ae27
Remove special handling for JSDocPropertyLikeTag in getJSSpecialType (#26432)
* Remove special handling for JSDocPropertyLikeTag in getJSSpecialType

* Reduce nesting
2018-08-14 13:48:17 -07:00
James Keane
a1089893bd Fixes #26128 - signature comp for jsdoc @class. (#26160)
* Fixes #26128 - signature comp for  jsdoc @class.

Another issue caused by js functions tagged with jsdoc
`@constructor` not having construct signatures.

A jsdoc function type that constructs a type (`function(new: Ex)`),
has a construct signature and return value inferred as the
constructed type where as a jsdoc `@constructor` has no construct
signatures, and it's call signature has a void return type
(or undefined).

i.e:
```javascript
/** @constructor **/ function E() {};

// typeof E -> call signature: () => void

/** @param {function(new: E)} d */ function c(d) {}

// typeof d -> construct: () => E
```

--

This commit fixes this (in an inelegant way) by considering `@class` function signatures as construct signatures and synthesizing it's return value _only for signature comparison_.

There might be a slight performance hit, since the synthesized return value is not cached; but changing the `@class` function's return type in `getReturnTypeOfSignature` causes other issues.

* Update jsdoc function test to fix mistake.
2018-08-14 13:35:51 -07:00
Sheetal Nandi
512a49be81 Return the nonrecursive directory watcher correctly on platforms that dont support recrusive directory watching
Fixes #26288
2018-08-14 12:14:22 -07:00
Andy
cea4838972
Set rootDir in tsconfig-base.json (#26415) 2018-08-13 15:19:27 -07:00
Andy
e8b72aa7d9
Error on accessing private property through destructuring assignment, and mark property used (#26381)
* Error on accessing private property through destructuring assignment, and mark property used

* Factor out getTypeOfObjectLiteralDestructuringProperty
2018-08-13 14:08:00 -07:00
TypeScript Bot
ec1cc0ae57 Update user baselines (#26419) 2018-08-13 13:17:11 -07:00
Andy
ad63468ed5
noUnusedLocals: f(x = 1) does not use x (#26366) 2018-08-13 11:14:52 -07:00
Sheetal Nandi
f2011ce755
Merge pull request #26197 from Microsoft/largeFileEvent
Send event on referencing large file
2018-08-13 11:14:22 -07:00
Sheetal Nandi
2b83b67aa3
Merge pull request #26140 from Kingwl/completionUnionType
improve completions for union type in type arguments
2018-08-13 10:36:19 -07:00
Sheetal Nandi
fe387cc7f0
Merge pull request #26377 from Microsoft/moduleResolutionWithSymLinks
Use original path from resolved module cache when available.
2018-08-10 22:27:38 -07:00
Sheetal Nandi
8e05f4ec64 Add documentation for originalPath 2018-08-10 17:08:53 -07:00
Sheetal Nandi
c5b74db78b
Merge pull request #26200 from Microsoft/watchWithStrict
Refresh semantic diagnostics when compiler options affecting semantic diagnostics generation changes
2018-08-10 16:15:37 -07:00
Elizabeth Dinella
421730a68d
Refactoring promises returning functions to use async and await (#26373) 2018-08-10 16:11:45 -07:00
Sheetal Nandi
82d4cccf53 Use original path from resolved module cache when available.
Fixes #26273
Thanks to @ajafff, for partial fix  and test (#26310)
2018-08-10 16:11:38 -07:00
Andy
08f5edbd03
Treat NoSubstitutionTemplateLiteral like StringLiteral in more places (#26330)
* Treat NoSubstitutionTemplateLiteral like StringLiteral in more places

* Move isStringOrNumericLiteral closer to its only use
2018-08-10 16:00:08 -07:00
Andrew Casey
8ef7ceda6d
Merge pull request #26289 from amcasey/LibSuggestions
Don't compute suggestion diagnostics for lib files
2018-08-10 15:59:40 -07:00
Klaus Meinhardt
ad4403e43a moduleNameResolver: fix invalid assertion and avoid unnecessary work (#26319)
* moduleNameResolver: fix invalid assertion and avoid unnecessary work

Part of #18217

* assert nonRelativeModuleName
2018-08-10 15:59:08 -07:00
Nathan Shively-Sanders
a6c5d50749
Allow type predicates in JSDoc (#26343)
* Allow type predicates

1. Parse type predicates. Note that they are parsed everywhere, and get
the appropriate error when used places besides a return type.
2. When creating a type predicate, correctly find the function's parameters
starting from the jsdoc return type.

* Fix type of TypePredicateNode.parent: add JSDocTypeExpression

* Update API baselines

* Handle JSDoc signature inside @type annotations

* Fix circularity when getting type predicates

Also move createTypePredicateFromTypePredicateNode closer to its use

* More cleanup based on review comments
2018-08-10 15:31:39 -07:00
Andy
46d3caab7c
Don't error on destructure of private property with computed property syntax (#26360) 2018-08-10 15:11:04 -07:00
Sheetal Nandi
796302294f Review feedback 2018-08-10 14:44:44 -07:00
Sheetal Nandi
c8e10a9a66
Merge pull request #26296 from ajafff/modulenameresolver-cache
fix moduleNameResolver cache
2018-08-10 14:36:54 -07:00
Andy
4bb740218d
getDefaultExportInfo: Use getImmediateAliasedSymbol instead of getAliasedSymbol (#26364) 2018-08-10 14:35:18 -07:00
Sheetal Nandi
9ba224d3b0
Merge pull request #26305 from ajafff/common-prefix
moduleNameResolver: fix getCommonPrefix
2018-08-10 13:35:24 -07:00
Klaus Meinhardt
3469b62be6 review comments 2018-08-10 22:25:27 +02:00
Klaus Meinhardt
4db7c869e5 restore old algorithm 2018-08-10 22:11:16 +02:00
Wesley Wigham
19e04b2cdb
Dont use baseURL relative absolute paths in declaration emit, use absolute paths in bundle emit (#26341) 2018-08-10 12:54:45 -07:00
TypeScript Bot
ef7997cb73 Update user baselines (#26358) 2018-08-10 10:27:14 -07:00
Andy
a73161e9d5
Don't store @template constraint in a TypeParameterDeclaration node (#26283)
* Don't store @template constraint in a TypeParameterDeclaration node

* Code review

* Update API
2018-08-09 17:39:15 -07:00