12223 Commits

Author SHA1 Message Date
Sheetal Nandi
868cf3e6de renames per PR feedback 2018-08-28 11:21:35 -07:00
Sheetal Nandi
cec1b0a717 Report error summary from the queue. 2018-08-21 17:30:51 -07:00
Sheetal Nandi
4193846108 Do not expose change in createCompilerHost 2018-08-21 14:46:00 -07:00
Sheetal Nandi
0831edab36 Keep only errors starting on new screen 2018-08-21 13:41:32 -07:00
Sheetal Nandi
7960090bb6 Add preserveWatchOutput option to build option and report starting compilation and file changes detected status 2018-08-21 13:41:32 -07:00
Sheetal Nandi
dedb2aefc0 Combine buildHost methods into SolutionBuilderHost's reportDiagnostic and reportStatus 2018-08-21 13:41:32 -07:00
Sheetal Nandi
26b4b6c9ad Create api with watchHost to include in solution builder host 2018-08-21 13:41:32 -07:00
Sheetal Nandi
0c4003e735 Use SolutionBuilderHost instead of using compilerhost for solution builder 2018-08-21 13:41:31 -07:00
Sheetal Nandi
071d790dec Unify tsbuild option parsing with command line options parsing 2018-08-21 13:41:30 -07:00
Sheetal Nandi
8e49fec80f Move perform build to tsc instead of tsbuild 2018-08-21 13:41:30 -07:00
Sheetal Nandi
d2240a40e1 Ger rid of unnecessary upto date host and functions pulled out 2018-08-21 13:41:30 -07:00
Sheetal Nandi
17ee9231b7 Write first test with --build and --watch 2018-08-21 13:41:30 -07:00
Andy
72886512a6
When --noImplicitAny is enabled, don't report errors suggesting that a 'void' function can be 'new'ed (#26579) 2018-08-21 10:02:02 -07:00
Ron Buckton
42c9208fd1
Merge pull request #26564 from Microsoft/fix26497
Emit lib reference directives in declaration output
2018-08-21 09:48:07 -07:00
Ron Buckton
1de8cd3f62 Emit lib reference directives in declaration output 2018-08-20 16:54:51 -07:00
Matt McCutchen
cc1c2ab6b2 Go back to the old narrowing algorithm (pre #26143) and avoid #26130 by
skipping narrowing if the old algorithm produces a type to which the
assigned type is not assignable.

This also means we'll no longer narrow for erroneous assignments where
the assigned type is not assignable to the declared type.  This is the
reason for the numericLiteralTypes3 baseline change.

Fixes #26405.
2018-08-17 21:35:03 -04:00
Wesley Wigham
d433c6ed05
Track late bound names in binding patterns (#26336) 2018-08-17 16:30:01 -07:00
Sheetal Nandi
8e2c422f2b Disable apis for tsc --build till we have the actual API figured out with tests 2018-08-17 14:38:29 -07:00
Anders Hejlsberg
3e201e7809
Merge pull request #26517 from Microsoft/fixMappedArrayTypeConstraint
Fix mapped array type constraint
2018-08-17 10:52:42 -07:00
Anders Hejlsberg
b746da2a68
Merge pull request #26481 from Microsoft/simplifyResolveCall
Simplify call resolution logic
2018-08-17 10:51:12 -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
Tim Schaub
6fd725f3ea Skip whitespace or asterisk in JSDoc param type and name (#26067) 2018-08-16 16:16:09 -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
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
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
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
dac00d97b7 Do it correctly. 2018-08-15 09:00:23 -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
af71d55a49 Do not include json file unless --resolveJsonModule is specified
Fixes #26402
2018-08-14 16:23:13 -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