Commit Graph

18201 Commits

Author SHA1 Message Date
Anders Hejlsberg
eeabd527ca Examine all constraints of indexed access types in relations 2018-08-27 15:50:26 -07:00
Nathan Shively-Sanders
b50c37de78 No assert for nameless typedefs (#26695)
The assert is over-optimistic and should be removed until we can parse
every possible thing that people might put in a JSDoc type position.

Fixes #26693
2018-08-27 14:12:14 -07:00
Wesley Wigham
0dbad04c3f Distribute indexed accesses when simplifying them (#26281)
* unknownify accesses

* Move to simplify to break less with fewer changes

* Accept baselines for now

* Always propegate any as an index type

* Fix flow control in the presence of simplifiable types

* Add spy repro from #25181

* Retain errorType when it is used as a marker for the lack of a constraint

* Small refinement

* Add new test

* Move most potentially recursive types from isIdenticalTo into structuredTypeRelatedTo to match the non-identity relations

* Fix nits

* Doesnt need to be undefineable at all
2018-08-27 13:32:01 -07:00
Andy
0a59da1a2c In pickLongestCandidateSignature, instantiate using inferred type arguments (#26646) 2018-08-27 10:30:25 -07:00
Nathan Shively-Sanders
6419240ab2 Declaration emit includes function properties (#26499)
* Declaration emit includes function properties

It does this by printing the type as an object literal type:

```ts
function f() { }
f.p = 1
```

Appears in a d.ts as

```ts
declare var f: {
  (): void;
  p: number;
}
```

It would also be possible to represent it as a namespace merge. I'm not
sure which is better.

```ts
declare function f(): void;
declare namespace f {
  export var p: number;
}
```

In order to avoid a private-name-used error (though I think it was
actually *unused*), I also had to change the nodeBuilder code to match.
This is arguably harder to read. So it's possible that I should instead
keep the nodeBuilder version as `typeof f` and make an exception for
private name use.

* Emit namespace merge instead of object type

This makes the change smaller, overall.

* Fix isJSContainerFunctionDeclaration+namespace merges

Also improve emit style to match other namespace emit.

* Add isPrivate + test case from PR comments
2018-08-27 10:29:53 -07:00
Andy
e411381266 Fix bug: Don't let empty signature documentation override other documentation (#26638) 2018-08-27 09:38:52 -07:00
Anders Hejlsberg
9c551a107a Ignore parameters when inferring from return type only signature 2018-08-25 16:09:08 -07:00
Ryan Cavanaugh
b5998d9b49 Merge pull request #26625 from ajafff/revert-destructuring-private-computed-name
Revert #26360: Don't error on destructure of private property with computed property syntax
2018-08-24 15:54:34 -07:00
Nathan Shively-Sanders
0043ba16b1 Allow weak type detection for intersection sources (#26668)
Previously, intersections were only allowed as targets, but this was
just an artifact of the original implementation, which operated inside
the structural part of isRelatedTo. Removing this restriction catches
subtle bugs in React user code, where a function named `create` returns
a mapped type whose types are all branded numbers. The display of these
properties, for some original type `T`, is not `number & { __ }` but
the much-less-obvious `RegisteredStyle<T>`.
2018-08-24 10:30:39 -07:00
Wenlu Wang
8ba501926a try get add missing member return type from context (#26250)
* try get add missing member return type from context

* support contextual type
2018-08-23 21:31:53 -07:00
csigs
0f04e43cc0 LEGO: check in for master to temporary branch. 2018-08-24 04:10:34 +00:00
Andy
f3ceebe552 Fix duplicate completions bugs (#26648)
* Fix duplicate completions bugs

* Remove old TODO
2018-08-23 18:22:07 -07:00
Nathan Shively-Sanders
6ea2278c7a Get symbol at location for class expressions/keywords (#26636)
* getSymbolAtLocation understands class expressions

Previously it did not.

* Update baselines
2018-08-23 11:27:03 -07:00
Nathan Shively-Sanders
03653934c3 Don't create expando object literals in TS (#26525)
Previously, getWidenedTypedFromJSPropertyAssignment was not called for
Typescript code. Since property assignments on functions, it is. That
meant that property assignments would incorrectly create a JS container
for empty object literals in a property assignment, even in Typescript:

```ts
const one = () => 1
one.p = {}
one.p.q = {} // should not work in Typescript!
```

Now empty object literals never create expando objects in Typescript,
because getJSExpandoObjectType requires the declaration to be in a JS
file.
2018-08-23 08:21:28 -07:00
Klaus Meinhardt
bedf776b42 Revert #26360: Don't error on destructure of private property with computed property syntax 2018-08-23 09:08:29 +02:00
Wesley Wigham
5e8b63cd1d Use context free expression types in evolving array checking and cache context free type (#26585)
* Use context free expression types in evolving array checking and cache context free type

* Simplify second test

* Low max depth a tad just so node 8 wont stack out

* By request make flow control a round number
2018-08-22 16:17:42 -07:00
Andy
194ffb3449 fourslash: Allow to verify textChanges without changing file content (#26607) 2018-08-22 15:20:33 -07:00
Ron Buckton
1f8aa057f8 Merge pull request #26483 from Microsoft/fix20594
Ensure for-in loop variable is checked
2018-08-22 11:41:17 -07:00
Anders Hejlsberg
056c87f289 Ignore constraints of generic mapped types in definitelyAssignableRelation 2018-08-22 07:08:35 -07:00
Anders Hejlsberg
93c76cb617 Merge pull request #26558 from Microsoft/fixInfiniteConstraints
Fix infinite constraints
2018-08-21 17:24:42 -07:00
Anders Hejlsberg
7ec98afb8f Merge pull request #26566 from Microsoft/fixStrictCoAndContraInferences
Properly handle co- and contra-variant inferences in strict mode
2018-08-21 16:11:52 -07:00
Anders Hejlsberg
7740822d02 Simplify or get constraint in distributive conditional type, but not both 2018-08-21 15:45:29 -07:00
Ryan Cavanaugh
13bd4788d9 Merge pull request #26569 from dsherret/issue26535_FixNullableDocumentRegistryTarget
Document Registry - Provide a default script target
2018-08-21 13:29:12 -07:00
David Sherret
0baf7465a5 Remove todo. 2018-08-21 13:29:32 -04: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
Anders Hejlsberg
7c2644a676 Perform depth check for all type instantiations 2018-08-21 06:30:47 -07:00
David Sherret
d00ad19bd7 Provide a default script target for the document registry. 2018-08-20 20:59:06 -04:00
Ron Buckton
1de8cd3f62 Emit lib reference directives in declaration output 2018-08-20 16:54:51 -07:00
Anders Hejlsberg
6a81d4c129 Merge branch 'master' into fixInfiniteConstraints 2018-08-20 16:30:32 -07:00
Anders Hejlsberg
15eaba254b Covariant inferences (other than never) preferred over contravariant 2018-08-20 16:04:11 -07:00
Anders Hejlsberg
103f894d38 Merge pull request #26425 from mattmccutchen/issue-26405
Go back to old narrowing algorithm but don't narrow in cases like #26130
2018-08-20 15:18:29 -07:00
Anders Hejlsberg
44ada08e02 Guard against infinite type instantiations and constraints 2018-08-20 12:41:31 -07:00
Andy
435a12e476 Remove some duplicate code in convertToAsyncFunction unit tests (#26527) 2018-08-17 18:41:18 -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
Wesley Wigham
d58b1f664b mark error type in baselines very not-aggressively (#26346) 2018-08-17 15:45:14 -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
Andy
60b8f8c206 Remove unnecessary callback in runBaseline (#26500) 2018-08-17 12:51:30 -07:00
Sheetal Nandi
0f97620b9c Merge pull request #25884 from Microsoft/optimizeOpenExternalProject
Delay load configured project referenced from external project when opening it
2018-08-17 12:26:14 -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
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
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
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