Commit graph

24973 commits

Author SHA1 Message Date
Anders Hejlsberg 53f5e84b25 Accept new baselines 2018-08-17 10:11:34 -07:00
Anders Hejlsberg 596493cce4 Add tests 2018-08-17 10:11:28 -07:00
Anders Hejlsberg 9b6f06d83c Correct apparent type for homomorphic mapped types applied to array types 2018-08-17 09:45:09 -07:00
Andy ee25cdecbc
Update LKG and remove newly unnecessary non-null assertions (#26515) 2018-08-17 09:13:43 -07:00
TypeScript Bot 2d495b7f25 Update user baselines (#26512) 2018-08-17 08:13:05 -07:00
Tim Schaub 6fd725f3ea Skip whitespace or asterisk in JSDoc param type and name (#26067) 2018-08-16 16:16:09 -07:00
Andy 746e39e9e9
Set "rootDir" for cancellationToken project (#26498) 2018-08-16 15:12:38 -07:00
Ryan Cavanaugh 7a658256a2
Merge pull request #26431 from mattmccutchen/issue-26430
Mapped types like Pick<T, K> should adopt property documentation from T.
2018-08-16 13:35:55 -07:00
TypeScript Bot 2ee4cee4dc Update user baselines (#26490) 2018-08-16 12:49:23 -07:00
Sheetal Nandi 0ca9a36610
Merge pull request #26420 from Microsoft/largeNonTsFiles
Check large file size only for non ts files
2018-08-16 10:28:24 -07:00
Nathan Shively-Sanders 75071a2509
Allow super references to constructor function methods (#26482)
Previously, they were mistakenly treated as private because of a check
that required all super property accesses (like `super.x()`) to be
references to a MethodDeclaration or MethodSignature. This change also
allows PrototypeProperty special assignment kinds.
2018-08-16 09:20:30 -07:00
Nathan Shively-Sanders 56f82563ae Check SymbolFlags instead 2018-08-16 08:38:41 -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
Ron Buckton a901930723 Ensure for-in loop variable is checked 2018-08-15 16:03:28 -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
Anders Hejlsberg bfe7f02068 Fix lint errors 2018-08-15 15:25:31 -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
Anders Hejlsberg 38e174bbfb Accept new baselines 2018-08-15 12:28:59 -07:00
Anders Hejlsberg b96c4cb7b2 Use synthetic arguments instead of GetEffectiveArgumentXXX functions 2018-08-15 12:23:13 -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
Anders Hejlsberg 4323fd7481 Simplify chooseOverload function 2018-08-14 10:23:35 -07:00
Matt McCutchen d7b802577c Mapped types like Pick<T, K> should adopt property documentation from T.
Fixes #26430.
2018-08-13 19:56:20 -04: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
Anders Hejlsberg b53491cbe4 Include all excluded arguments in one go instead of one by one 2018-08-13 13:47:55 -07:00
Sheetal Nandi 7e117f2707 Check large file size only for non ts files 2018-08-13 13:30:31 -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