Commit Graph
492 Commits
Author SHA1 Message Date
Nathan Shively-Sanders 9658b476c2 Fix inferFromUsage on index signatures (#25934)
* Fix inferFromUsage on index signatures

1. Check the argumentExpression to determine the index signature type.
Previously, the code mistakenly checked the type of the element access
itself, which never returned a good type.
2. If inference for the index signature type fails, substitute anyType.
Previously, the code would create a bad index signature with an
undefined type.
3. Add tests. Previously, there were no tests.

* Fixing (1) means that number index signatures are now created.
Previously, only string index signatures would be created.
* Fixing (2) means that index signatures will be inferred from single
usage like `return a[0]`. Previously, the refactoring would fail,
perhaps because of a check when stringifying the index signature (I
haven't tracked down why.)

* Update fourslash test with improved inference
2018-07-25 10:51:11 -07:00
Andy 3d672d9550 Ensure fixSpelling and importFixes still trigger on "Did you mean the instance/static member ..." (#25847) 2018-07-20 16:51:35 -07:00
Andy 89f2af17f0 Avoid using old node in import fix to use namespace import (#25729) 2018-07-17 13:34:56 -07:00
Andy 27da9eab8d fixUnreachableCode: Don't delete whole block when non-first line is unreachable (#25625) 2018-07-13 09:57:04 -07:00
Andy 5f4a03c408 Ensure TypeChecker#getTypeAtLocation returns a defined result (#25583)
* Ensure TypeChecker#getTypeAtLocation returns a defined result

* Update additional baseline
2018-07-11 16:33:56 -07:00
Andy 1fc1495863 Increase span of unreachable code error (#25388)
* Increase span of unreachable code error

* Add a new diagnostic for each range of unreachable statements

* Update baselines
2018-07-10 11:45:16 -07:00
Daniel Rosenwasser 32bb63cbcf getSuggestionForNonexistentModule -> getSuggestionForNonexistentExport 2018-07-05 20:45:00 -07:00
Mohamed Hegazy 383319ded6 Merge pull request #25423 from Microsoft/defaultExportName
Handle getting name of default export that's an alias
2018-07-05 12:21:53 -07:00
Andy Hanson b1e916cae6 Handle getting name of default export that's an alias 2018-07-05 09:03:22 -07:00
Alexander T f851ab8f3e Add a suggestion - Did you mean 'typeof import()?. Add tests to handle undated error message 2018-07-04 16:04:29 +03:00
Andy 064ecd449e Support code-fix-all for importFixes (#25137)
* Support code-fix-all for importFixes

* Change description

* Update API (#25283)
2018-07-03 15:19:15 -07:00
Andy Hanson 271bbb027c Merge branch 'master' into fixAddMissingMember_all_dedup 2018-07-02 16:06:57 -07:00
Mohamed Hegazy 956f9d0be2 Merge pull request #25335 from Microsoft/codeFixAddMissingEnumMember_all
Combine code-fix-all for missing class member and missing enum member
2018-07-02 15:14:19 -07:00
Andy Hanson e0109ea93e Remove shadowed variable 2018-07-02 13:26:31 -07:00
Andy Hanson f3bc891ae9 fixAddMissingMember: Improve deduplication in code-fix-all 2018-07-02 11:26:50 -07:00
Andy ded446573a ChangeTracker: Combine deleteDeclaration, deleteNode, and deleteNodeInList (#25276)
* ChangeTracker: Combine deleteDeclaration, deleteNode, and deleteNodeInList

* Change name

* Update API (#24966)
2018-06-29 19:53:32 -07:00
Andy Hanson 2fa27ffdf7 Combine code-fix-all for missing class member and missing enum member 2018-06-29 19:39:19 -07:00
Mohamed Hegazy c27dace3df Merge pull request #25182 from Kingwl/fix-missing-enum-member
add quick fix for add missing enum member
2018-06-29 10:19:23 -07:00
王文璐 d8cdd7552e do not handle enum type member 2018-06-28 09:36:26 +08:00
Andy fd8b7f3da5 Remove redundant checks in getNameOfDeclaration (#25244) 2018-06-27 13:56:31 -07:00
Andy d957b1c8c2 fixUnusedIdentifier: Remove arguments corresponding to unused parameters (#25011)
* fixUnusedIdentifier: Remove arguments corresponding to unused parameters

* Update API (#24966)

* Fix handling of deletions: Make a list of things to delete and don't delete until the end

* Remove dummy test

* Bug fixes

* Update API (#24966)

* Move code to textChanges
2018-06-27 09:26:47 -07:00
王文璐 d6f5fc6518 add Initializer if enum value is another enum 2018-06-27 21:03:50 +08:00
Andy 13bc46d970 getTokenAtPosition: default includeJsDocComment to true (#25015)
* getTokenAtPosition: default includeJsDocComment to true

* Update API (#24966)

* Flip meaning of parameter

* Update API (#24966)

* Remove all `ignoreJsDocComment` uses (fixes #25162)
2018-06-26 16:20:44 -07:00
王文璐 d5268c81e7 add quick fix for add missing enum member 2018-06-26 10:17:22 +08:00
Nathan Shively-Sanders 43d0794ba3 Fix crash when binding jsdoc-style inner namepaths (#25106)
* getDeclarationIdentifier handles undefined name

getNameOfDeclaration actually doesn't handle all declarations, only
those that produce names that could be reasonably used as an identifier.
Until now, getDeclarationIdentifier assumed that getNameOfDeclaration
always returned a name. This caused crashes whenever we tried to get the
name of something like a Constructor.

* Add test and baselines

* getNameOfDeclaration can return undefined

This requires all callers to handle it, which turns out now to be too
disruptive.

* Fix lint
2018-06-21 10:01:39 -07:00
Nathan Shively-Sanders 0f55566cf4 In JS, always check the extends tag of a class before its heritage clause (#25111)
* Check extends tag first in getClassExtendsHeritageClauseElement

Previously getBaseTypeNodeOfClass checked, but this is only used in a
few places.

* Fix names and add test

* Update API baseline

* Move jsdocAugments tests to conformance/jsdoc

* Better naming in checkClassLikeDeclaration
2018-06-20 16:28:30 -07:00
Andy db85f37669 fixUnusedIdentifier: Don't needlessly exclude jsdoc (#25014) 2018-06-19 13:44:00 -07:00
Markus Johnsson aa87cc5b73 Merge branch 'master' of github.com:Microsoft/TypeScript 2018-06-19 11:18:20 +02:00
Wesley Wigham 640af3f75e Introduce related spans into tsserver protocol (#24548)
* Introduce related spans into tsserver protocol

* Incorporate pretty output, implement esModuleInterop related span
2018-06-15 10:54:36 -07:00
Andy 4a7a550502 moveToNewFile: Reuse code from importFixes for inserting import (#24957)
* moveToNewFile: Reuse code from importFixes for inserting import

* Fix test failures

* Update API baselines (#24966)
2018-06-14 15:41:47 -07:00
Wesley Wigham 61fb222cd2 Use symlinks when looking for module names for declaration emit (#24874)
* fix symlink tag, support arbitrary (ie, directory) links via @link

Introduce indirect symlink lookup to specifier deriver

Use fileset, move exec

vfs path resolution :shakes fist:

Apply files symlink relative to dirname

Use directory function

* Accept really bad baseline updates
2018-06-12 12:52:44 -07:00
Andy ed20f7d983 Simplify tryDeleteDeclaration (#24808) 2018-06-11 13:10:29 -07:00
Mohamed Hegazy e07e2e0e1f Merge pull request #23423 from Kingwl/add-braces
add support for add or remove braces to arrow function
2018-06-11 13:09:38 -07:00
Markus Johnsson 8850f74eab Merge branch 'master' of github.com:Microsoft/TypeScript 2018-06-10 15:00:52 +02:00
Markus Johnsson cb5b77365c Merge branch 'master' of github.com:Microsoft/TypeScript 2018-06-10 14:59:13 +02:00
Andy 04187bde8d fixStrictClassInitialization: Support array initializer (#24810) 2018-06-08 15:56:56 -07:00
Andy e821d613a1 fixUnusedIdentifier: Remove unused writes (#24805) 2018-06-08 15:20:33 -07:00
Andy 855c3a6d4f fixUnusedIdentifier: Delete trailing comma in array binding pattern (#24800) 2018-06-08 10:39:01 -07:00
kingwl 0d730c008a Merge branch 'master' into add-braces 2018-06-09 01:32:53 +08:00
Mohamed Hegazy b4dea5ecce Merge pull request #24760 from krk/codefix-asterisk
addMethodDeclaration codefix creates a generator function when target…
2018-06-08 08:57:49 -07:00
krk d7a0619009 Inlined asterisk token creation. 2018-06-08 14:49:11 +03:00
Andy 48dedacf3b fixStrictClassInitialization: Don't provide a default for string or number (#24767)
* fixStrictClassInitialization: Don't provide a default for `string` or `number`

* Update baselines
2018-06-07 15:03:38 -07:00
Andy 0fefaf286d moveToNewFile: Infer quote preference (#24652) 2018-06-07 12:10:48 -07:00
krk acbda14450 addMethodDeclaration codefix creates a generator function when target is child of a YieldExpression, resolves #24728 2018-06-07 20:59:06 +03:00
Wesley Wigham d9b93903c0 Use more nodelike paths for import types when possible (#24610)
* Use more nodelike paths for import types when possible

* move functionality from services into compiler, fix with propert file/directory conflict handling

* mark suspect cast
2018-06-05 12:54:36 -07:00
Andy d671c7ae96 getEditsForFileRename: Support directory rename (#24305)
* getEditsForFileRename: Support directory rename

* Code review

* Handle imports inside the new file/directory

* Document path updaters

* Shorten relative paths where possible

* Reduce duplicate code

* Rewrite, use moduleSpecifiers.ts to get module specifiers from scratch instead of updating relative paths

* Update additional tsconfig.json fields

* Add test with '.js' extension

* Handle case-insensitive paths

* Better tsconfig handling

* Handle properties inside compilerOptions

* Use getOptionFromName
2018-06-01 08:23:37 -07:00
Nathan Shively-Sanders d187de2076 Better JS container binding (#24367)
* Static assignments to class expressions work

* Bind static properties of functions too

Also update SymbolLinks in getTypeOfFuncClassEnumModule so that the
type gets cached correctly.

* Remove initializer handling:obj literals+type lookup

Also include a couple of improved baselines

* Fix 1-nested js containers:binding+cross-file merge

* Consolidate check into one utility

The utility is horrible and needs to change, but at least it's in one
place.

Next step is to make the utility like getDeclarationOfAlias, except
getDeclarationOfJSAlias.

* Defaulted assignments now (mostly) work

* Default assignment definitely work, and IIFEs kind of do

* n-nested undeclared containers now seem to work

Merging even seems to work ok.

* Handle prototype+prototype property assignments

Perhaps in the wrong way. I have an idea how to simplify them.

* Remove prototype special-case

1. It's not completely removed; the checker code in
getJavascriptClassType needs to be fixed, among other places.
2. I didn't actually remove the code so that it will be easier to see
what used to be there on Monday.

Regardless, the code will be much simpler and seems to be mostly
improved with very little work so far.

* Allow more merges+accept baselines

* Update more baselines

* Fix js initializer check in bindPropertyAssignment

* Fix codefixes

* Rest of strictNullChecks cleanup + other cleanup

1. Remove a few TODOs
2. Remove extraneous SymbolFlag
3. Simplify isSameDefaultedName

* Binder cleanup

* Checker cleanup

* Almost done with utilities cleanup

* Utilities cleanup

* Require js initializer to be (1) JS (2) initializer

Change getDeclarationOfJSInitializer to require that the provided js
initializer be in a javascript file, and that it is the initializer of
the retrieved declaration.

* Use getSymbolOfNode instead of accessing symbol directly

* Ugh. Start over with just test cases

* Handle additional cases in getTypeOfVariableOrParameterOrProperty

These are cases in a really embarrassing check, in which we admit that
the symbol flags steered us wrong and switch to
getTypeOfFuncClassEnumModule instead (which never asserts).

* Add test case for #24111

* Address PR comments
2018-05-31 11:41:26 -07:00
Vyacheslav Pukhanov 75f20f9b65 fixUnusedIdentifier: fix "Remove variable statement" codefix (#24497)
* fixUnusedIdentifier: fix "Remove variable statement" codefix

* Add test for a single "Remove variable statement" codefix in a file
2018-05-30 14:51:08 -07:00
Andy 43bf039a94 Add refactor to convert namespace to named imports and back (#24469)
* Add refactor to convert namespace to named imports and back

* Add tests and comments

* Code review

* Handle shorthand property assignment and re-export

* Don't use forEachFreeIdentifier

* Fix rename after "."
2018-05-30 14:11:53 -07:00
Mohamed Hegazy c47df3a8fd Merge pull request #24438 from vpukhanov/issue-22674
addMethodDeclaration: add after quickfix location if possible
2018-05-30 10:30:01 -07:00