Commit Graph

11169 Commits

Author SHA1 Message Date
Andy
9557e4ad96 Handle completions in interface / type literal similar to class (#22701)
* Handle completions in interface / type literal similar to class

* Code review
2018-03-23 16:04:29 -07:00
Ryan Cavanaugh
e7b2017bb0 Merge pull request #22744 from RyanCavanaugh/fixCacheInvalidation
Fix cache invalidation
2018-03-23 15:44:35 -07:00
Ryan Cavanaugh
1e66f071fd Always include parent folder failed lookup locations 2018-03-23 14:42:16 -07:00
Wesley Wigham
0736554db7 Alternate but more general token comment emit fix + organizeImports fix (#22836)
@amcasey: Preserve leading trivia when organizing imports

When organizing imports, we used to move the leading and trailing trivia
of each individual import with that import as it was repositioned or
deleted.  This had the unfortunate effect of repositioning or deleting
the header comment of the file.

Our new approach is to leave the leading trivia of the first import
ahead of the resulting block of imports (i.e. it no longer follows the
first import as it is repositioned or deleted).  Trailing trivia on the
first import and trivia on subsequent imports are treated as before.
2018-03-23 14:13:40 -07:00
Anders Hejlsberg
deb87bb8ad Obtain constraint from destructured property when applicable 2018-03-23 09:42:43 -07:00
Andy
0e9364f48e Simplify functions for adding parse errors (#22513)
* Simplify functions for adding parse errors

* Prefer parseErrorAt over parseErrorAtRange
2018-03-23 08:34:04 -07:00
Sheetal Nandi
78c12cdb9d Merge pull request #22808 from Microsoft/moduleResolutionEvents
Invalidate resolutions from typeRoots watch event as a fallback mechanism
2018-03-22 20:41:14 -07:00
Nathan Shively-Sanders
e16bb3e418 Improve behaviour of ... inside JSDoc functions (#22809)
* No error for ... on last param of jsdoc function

* ... is a rest param w/array type in jsdoc function

* Simplify getTypeFromJSDocVariadicType
2018-03-22 16:17:16 -07:00
Wesley Wigham
ca1d19a579 Always make a new jsxAttributes type, dont reuse emptyObjectType (#22810)
* Always make a new jsxAttributes type, dont reuse emptyObjectType

* Break up conditional a bit
2018-03-22 15:16:33 -07:00
Wesley Wigham
a909000b62 Parse and check type arguments on JSX opening and self-closing tags (#22415)
* Parse and check type arguments on JSX opening like elements

* Fix nits
2018-03-22 15:07:36 -07:00
Wesley Wigham
a7b066fe04 Allow local class declarations to be returned as mixins (#22807) 2018-03-22 15:02:54 -07:00
Wesley Wigham
874dd25494 Stop printing two spaces between heritage clauses (#22801)
* Stop printing two spaces between heritage clauses

* Fix lint
2018-03-22 14:59:40 -07:00
Andy
94570eedcc Don't provide spelling suggestion for module (#22805) 2018-03-22 14:27:34 -07:00
Sheetal Nandi
306ed1291b Invalidate resolutions from typeRoots watch event as a fallback mechanism
There are times when the directory watcher for failed lookup locations isnt invoked and is not very determinitstic
So as a fallback, when we receive typeRoots watch event, handle failed lookup locations as well
2018-03-22 13:54:41 -07:00
Daniel Rosenwasser
db1e924a4b Update version to 2.9. 2018-03-22 13:06:00 -07:00
Wesley Wigham
7721cc45c8 Improve assertion violation message (#22522) 2018-03-22 11:46:52 -07:00
Nathan Shively-Sanders
4462c159b1 Correctly track thisContainer for this-property-assignments in JS nested containers (#22779)
* Track thisContainer for this-property-assignments in JS

Previously it would update on every block, not just those that could
bind `this`.

In addition, if the constructor symbol still can't be found, then no
binding happens. This is usually OK because people don't add new
properties in methods too often.

* Update additional baselines

* Add lib:dom to new test

* Address PR comments

* Correct new name for saveThisParentContainer
2018-03-22 09:54:43 -07:00
Sheetal Nandi
f3a1f165c2 Merge pull request #22729 from Microsoft/renameNodeModulesContainingAtTypes
Fix when program module resolution in watch mode when node_modules folder itself gets the rename event
2018-03-22 09:40:53 -07:00
Andy
6d82a20109 Combine getLastChild helpers (#22418) 2018-03-22 09:32:05 -07:00
Anders Hejlsberg
e5f6ed0b60 Merge pull request #22707 from Microsoft/fixIndexedAccessInConditionalType
Fix indexed access in conditional type
2018-03-21 15:18:39 -07:00
Nathan Shively-Sanders
de4a69cb72 In source files and blocks, bind function declarations before other statements (#22766)
* Add test case and temporarily disable inference

(Inference of class members from this-assignments inside a
prototype-assigned function.)

* Update baselines

* In blocks and source files, bind functions first

* Add tests from other bugs

* Remove temporary failsafe

* Update tests to restore intent and clean up errors

* Restore intent even better

* Restore intent even better x2

* Add missed baselines
2018-03-21 14:22:09 -07:00
Anders Hejlsberg
ee546fb30f Merge pull request #22764 from Microsoft/fixInferTypeDeclarationFiles
Fix missing 'infer T' in declaration files
2018-03-21 14:17:51 -07:00
Anders Hejlsberg
9083f6cf18 Revise binder logic to correctly find 'infer T' containers 2018-03-21 13:23:58 -07:00
Anders Hejlsberg
a75449cabc Revert strict containment check in checkInferType 2018-03-21 13:22:58 -07:00
Nathan Shively-Sanders
c930895d80 Undo 'any' inference propagation (#22736)
* Undo 'any' inference propagation

Removing this only changes one test slightly, and fixes JQuery types,
which rely on the old method of inference.

* Add jquery regression test and update baselines

* Restore any inference propagation to wildcard only
2018-03-21 11:13:39 -07:00
Anders Hejlsberg
fbd50487a5 Properly generate 'infer T' declarations in typeToTypeNode 2018-03-21 10:01:30 -07:00
Anders Hejlsberg
420e58c444 Implicit constraints in non-distributive '[T] extends [U] ? X : Y' types 2018-03-20 14:08:05 -07:00
Andy
cc3921323c Support services settings (#22236)
* Support services settings

* Code review

* More review

* Use different names for Options and GetCompletionsAtPositionOptions (todo: come up with better names)

* More renames

* More renaming

* Support quote style in importFixes

* Add `importModuleSpecifierPreference` option

* Support quote style for `throw new Error('Method not implemented.')` (#18169)

* options -> preferences
2018-03-20 13:07:59 -07:00
Andy
9ee5167030 Evaluate isPrototypePropertyAssignment lazily (#22728) 2018-03-20 12:33:30 -07:00
Sheetal Nandi
020f046696 Fix when program module resolution in watch mode when node_modules folder itself gets the rename event
Fixes #22712
2018-03-20 12:10:13 -07:00
Nathan Shively-Sanders
1074819be3 Js constructor function fixes (#22721)
* Do not add undefined for this assignments in functions

* Test:constructor functions with --strict

* First draft -- works, but needs a stricter check added

* Update baselines

* Make undefined-skip stricter and more efficient

Symbol-based now instead of syntactic

* Exclude prototype function assignments

* Add explanatory comment
2018-03-20 11:24:09 -07:00
Nathan Shively-Sanders
ab8233c5d3 Two JSdoc parsing fixes (#22705)
* Correctly parse JSDoc type *=

* Allow `markdown` quoted param names in JSDoc

* Add tests and update baselines

* Get correct span for the type '*'

* Fix whitespace lint

* Add unbracketed type test
2018-03-20 09:23:08 -07:00
Wesley Wigham
eaabf920eb Combine keyof T inferences (#22525)
* Combine keyof T inferences

* Extract covariant inference derivation into function

* Test:keyof inference lower priority than return inference

for #22376

* Update 'expected' comment in keyofInferenceLowerPriorityThanReturn

* Update comment in test too, not just baselines

* Fix typo

* Move tests
2018-03-19 16:56:51 -07:00
Anders Hejlsberg
de1ebb4a84 Add constraints to indexed access types in conditional types 2018-03-19 16:11:36 -07:00
Nathan Shively-Sanders
b56093f3ac Fix type when annotated with a JSDoc function type (#22692)
* Fix type when annotated with a JSDoc function type

Previously,
1. A variable annotated with a JSDoc function type would not require all
its parameters to be provided. This should only apply to functions
without a type annotation.
2. A parameter in a function with a JSDoc function type annotation would
still have the type 'any'.
3. Two `var` declarations in a Typescript and Javascript file,
respectively, would error even when they had identical function types.

* Update baselines and add constructor test

* Handle ConstructorType too

* Add test:method sig inside literal type

* Contextually type parameters by parent sig's JSDoc

Instead of a syntactic check in getJSDocTag

* Remove redundant check:isUntypedSignatureInJSFile

* Positive check for value signatures

Instead of excluding type signatures piecemeal.
2018-03-19 16:00:45 -07:00
Andy
737859e3c1 Put simpler condition in front of more complex one (#22696) 2018-03-19 13:35:19 -07:00
Andy
096b2b0712 Use isFunctionLike instead of switch (#22698) 2018-03-19 13:35:01 -07:00
AdityaDaflapurkar
76fefddcaa Remove type assertion in sum function (#22670) 2018-03-19 08:19:24 -07:00
Anders Hejlsberg
20c008ecab Mark implied object destructuring patterns as object literal types 2018-03-17 12:02:19 -07:00
Nathan Shively-Sanders
bb23e9601f Parse JSDoc ...T and T= only at top-level JSDoc (#22661)
* Parse JSDoc ...T and T= only at top-level JSDoc

...T and T= should only be legal at the top level of a type, and only in
JSDoc, since at least T= is ambiguous elsewhere. This PR changes parsing
to make that happen. The resulting parse tree is now simpler, allowing
me to get rid of some code I had to add in the checker.

* Extract JSDoc type parsing into its own function

* PR comments:return from parseJSDocType
2018-03-16 16:08:42 -07:00
Andy
92ec1149ac getAllJSDocTagsOfKind always returns a defined result (#22652) 2018-03-16 14:01:28 -07:00
Andy
28ff6b6ef3 Store import nodes in SourceFile.imports instead of StringLiteral nodes (#22495)
* Store import nodes in SourceFile.imports instead of StringLiteral nodes

* Change SourceFile#imports storage back

* Code review

* StringLiteral -> StringLiteralLike
2018-03-16 14:01:00 -07:00
Nathan Shively-Sanders
3b6ae8536f JSDoc ?Type adds optionality to parameters (#22646)
* jsdoc ?Type adds optionality to parameters

Chrome devtools expects that parameters with type `?T` (or `T?`) add
null to `T` and optionality to the parameter. Previously it only added
null to the type.

Currently the PR does *not* add undefined to the type of
`T`, which is expected by chrome-devtools-frontend, but is inconsistent
with typescript's rules. The implementation achieves this inconsistency by
exploiting the fact that checking the signature adds optionality and
checking the parameter adds `undefined`.

* Update chrome-devtools-frontend baseline

* Add optionality only for jsdoc postfix=

* Skip jsdoc prefix types in isJSDocOptionalParameter

Previously isJSDocOptionalParameter was incorrect for types like
`?number=`, which are optional but have JSDocNullableType as their root
type node.
2018-03-16 13:28:24 -07:00
Andy
99d5058568 Add 'isPrototypeAccess' helper (#22648)
* Add 'isPrototypeAccess' helper

* Fix type error
2018-03-16 13:27:47 -07:00
Wesley Wigham
2d01d76ee5 Change es2015 transform to retain comments on for of loop bodies (#22396) 2018-03-16 12:57:38 -07:00
Andy
b9f60566d0 For f.prototype.m = function() { this.x = 0; } make x a member of f, not of the function expression (#22643) 2018-03-16 11:35:51 -07:00
Sheetal Nandi
d4788f5d41 Merge pull request #22520 from Microsoft/betterDelete
Do not send first missing file event as well, Do not close typing installers watches just to recreate them
2018-03-16 11:17:23 -07:00
Wesley Wigham
bfe755c6ce Revert assertion addition (#22622) 2018-03-16 09:04:55 -07:00
Wesley Wigham
19ec83fcdf Refactor declaration emitter into declaration transformer (#21930)
* Refactor declaration emitter into declaration transformer

* Slight cleanup from code review feedback

* Incorporate fix for new test

* Swaths of PR feedback

* Merge public methods

* Per-file output

* Preserve input import ordering more often

* Unify jsdoc comment start detection under more lenient rule

* Move to per-file transformations to reduce the memory that msut be retained

* Fix typo
2018-03-15 22:23:10 -07:00
Andy
eb4dba7ad4 Disable assertion for deferredUnusedIdentifierNodes (#22604) 2018-03-15 10:49:39 -07:00