Commit Graph

3482 Commits

Author SHA1 Message Date
Ron Buckton
09487b8a1d Added tests, pr feedback 2017-08-11 15:31:09 -07:00
Ron Buckton
e3b6df64b3 Add support to infer the quote style for import quick fixes 2017-08-11 14:26:25 -07:00
Yui
d352e3b03f [Master] fix 16407 - LS in binding element of object binding pattern (#16534)
* wip-try get symbol of bindingelement in objectBindingPattern first

* Add fourslash tests

* Update .types baselines

* Update .symbols baselines

* Revert checker changes

* Actually lookup type for binding property name definition

* More succinct check, clarify yui's comment
2017-08-11 11:14:59 -07:00
Ryan Cavanaugh
c27ee81341 Merge branch 'master' into extract-method-2 2017-08-10 17:02:14 -07:00
Ryan Cavanaugh
24de14a9be Use isReadonlyArray 2017-08-10 16:40:08 -07:00
Ryan Cavanaugh
db37cea0b6 Use the function stack! 2017-08-10 16:38:24 -07:00
Ryan Cavanaugh
a04633c22c Style fixes 2017-08-10 16:35:32 -07:00
Ryan Cavanaugh
f957429efd Style fixups 2017-08-10 16:23:17 -07:00
Ryan Cavanaugh
12403d9f70 Various fixes 2017-08-10 13:07:42 -07:00
Andy
17a6f7b56a Remove unused internal utilities (#17380)
* Remove unused internal utilities

* Handle undefined input to `mapDefined`
2017-08-09 14:37:59 -07:00
Wesley Wigham
6221d7089e Fix import addition location (#17327)
* Add test with bug

* Fix for import placement

* Consolidate comment recognition functions into utilities

* Add another test with all 3 kinds

* Recognize path directives as part of triple slash directives

* Also handle no-default-lib triple-slash comments

* Test for all the triple-slash kinds

* Keep import-placement logic in the quickfix, since its not really a node start; accept new baselines

* Work in not-ES6, use a real no-lib comment

* Remove no default lib triple slash comment, it disables checking and thereby quick fixes

* Copy regex rather than have a regex copy
2017-08-09 14:03:37 -07:00
Andy
e73d58e21c findAllReferences: Type parameter is not globally visible (#16419)
* findAllReferences: Type parameter is not globally visible

* Add test for merged interface

* Clean up comment
2017-08-09 13:53:54 -07:00
Ron Buckton
83ae8afef8 Merge pull request #17394 from vvakame/openParentFormatting
Add SpaceBetweenOpenParens formatting rule
2017-08-08 13:04:13 -07:00
Andy
5141ce751d Deduplicate unresolvedImports (#17248)
* Deduplicate unresolvedImports

* Add `isNonDuplicateInSortedArray` helper
2017-08-08 11:02:10 -07:00
Andy
ceae613e4c Add lint rule to check that Debug.assert calls do not eagerly interpolate strings (#17125)
* And lint rule to check that `Debug.assert` calls do not eagerly interpolate strings

* Use more specific 'assert' functions to avoid callbacks

* Respond to PR feedback
2017-08-08 07:56:14 -07:00
Ron Buckton
31230b9176 Merge pull request #16953 from charlespierce/destructure_completion_nonpublic
Remove nonpublic members from destructuring completion lists
2017-08-07 14:24:47 -07:00
Ryan Cavanaugh
c7f665faa1 Extract Method (squash) 2017-08-04 16:10:33 -07:00
Andy
4f13bcfac1 Fix find-all-references for destructured getter (#17483)
* Fix find-all-references for destructured getter

* Handle setter too

* Use SymbolFlags.Accessor
2017-08-02 06:51:26 -07:00
Mine Starks
84c579586c Merge pull request #17536 from minestarks/fix15223
Missing import codefix: Take scoped packages (@foo/bar) into consideration
2017-07-31 14:09:37 -07:00
Mine Starks
16112c358d Missing import codefix: Take scoped packages (@foo/bar) into consideration 2017-07-31 13:28:55 -07:00
Andy
476157fab8 jsTyping: Better logging for addInferredTypings (#17249)
* jsTyping: Better logging for addInferredTypings

* Fix tests

* Indent other log under "Searching for typing names"
2017-07-28 12:43:50 -07:00
Daniel Rosenwasser
afdbf00d53 Add check to ensure that property access suggestions are only performed on the accessed property. 2017-07-27 18:12:20 -07:00
Daniel Rosenwasser
65650253cf Merge pull request #17462 from Microsoft/codeFixForErrorForPropertyOfTypeAsType
Quick fix to correct qualified names to indexed access types
2017-07-27 15:32:49 -07:00
Daniel Rosenwasser
0dc74245e2 Added codefix for replacing qualified names with indexed access types. 2017-07-27 12:42:11 -07:00
Andy
3330f2a33b JsTyping: Remove "safeList" global variable (#17304) 2017-07-27 10:54:47 -07:00
Mine Starks
89994111bd Missing import code fix - include export assignment properties when looking for module exports (#17376)
* Include export assignment properties when looking for module exports

* Create new API function for tryGetMemberInModuleExportsAndProperties

* Cleanup based on review feedback
2017-07-26 16:17:01 -07:00
Nathan Shively-Sanders
9fd90e7e02 Merge branch 'master' into jsdoc-param-type-literals 2017-07-26 11:09:24 -07:00
Nathan Shively-Sanders
fde4c188ac Address more PR comments 2017-07-26 10:57:29 -07:00
Andy
30d973bdcb Rename symbol.name to escapedName and make name unescaped (#17412) 2017-07-25 14:22:26 -07:00
Nathan Shively-Sanders
c55a043767 Address PR comments from Andy
I'll take a look at Wesley's next and see if those require any changes.
2017-07-25 14:14:12 -07:00
Andy
eadd084c82 Add 'name' property to Identifier (#17329)
* Add 'name' property to Identifier

* Rename to unescapedText

* Rename 'id.text' to 'id.escapedText'

* Rename 'id.unescapedText' to 'id.text'

* Make escapeIdentifier and unescapeIdentifier do nothing
2017-07-25 13:16:34 -07:00
vvakame
d1459f7e9c Add SpaceBetweenOpenParens rule 2017-07-25 18:24:04 +09:00
Nathan Shively-Sanders
7ff91c1e1c Parse jsdoc type literals in params
Now Typescript supports the creation of anonymous types using successive
`@param` lines in JSDoc:

```js
/**
 * @param {object} o - has a string and a number
 * @param {string} o.s - the string
 * @param {number} o.n - the number
 */
function f(o) { return o.s.length + o.n; }
```

This is equivalent to the Typescript syntax `{ s: string, n: number }`,
but it allows per-property documentation, even for types that only need
to be used in one place. (`@typedef` can be used for reusable types.)

If the type of the initial `@param` is `{object[]}`, then the resulting
type is an array of the specified anonymous type:

```js
/**
 * @param {Object[]} os - has a string and a number
 * @param {string} os[].s - the string
 * @param {number} os[].n - the number
 */
function f(os) { return os[0].s; }
```

Finally, nested anonymous types can be created by nesting the pattern:

```js
/**
 * @param {Object[]} os - has a string and a number
 * @param {string} os[].s - the string
 * @param {object} os[].nested - it's nested because of the object type
 * @param {number} os[].nested.length - it's a number
 */
function f(os) { return os[0].nested.length; }
```

Implementation notes:

1. I refactored JSDocParameterTag and JSDocPropertyTag to
JSDocPropertyLikeTag and modified its parsing to be more succinct. These
changes make the overall change easier to read but are not strictly
required.
2. parseJSDocEntityName accepts postfix[] as in `os[].nested.length`,
but it doesn't check that usages are correct. Such checking would be
easy to add but tedious and low-value.
3. `@typedef` doesn't support nested `@property` tags, but does support
`object[]` types. This is mostly a practical decision, backed up by the
fact that usejsdoc.org doesn't document nested types for `@typedef`.
2017-07-21 14:04:14 -07:00
Mine Starks
441daa4e19 Merge pull request #17302 from minestarks/removeimportfix
Bugs in missing import codefix
2017-07-21 10:22:24 -07:00
Mine Starks
9f6ec635a4 Cleaner path splitting, refine file extension and case sensitivity handling 2017-07-20 16:12:07 -07:00
Armando Aguirre
fe86d2fc06 Merge pull request #17257 from armanio123/FixNodeModulesTodos
Added node_modules path check on getTodoComments method.
2017-07-20 14:58:36 -07:00
Andy
c60774b4c6 Make many 'static' variables readonly (#17306) 2017-07-20 08:54:47 -07:00
Andy
53e4040ceb Remove duplicate emptyArrays (#17305) 2017-07-20 06:45:22 -07:00
Armando Aguirre
9bdd17e842 Added explanation comment for excluding files. 2017-07-19 15:42:01 -07:00
Mine Starks
15d294d350 Bugs in missing import codefix
- We didn't locate the package.json correctly in cases where the module to be imported is in a subdirectory of the package
- We didn't look at the types element in package.json (just typings)
- We didn't remove /index.js from the path if the main module was in a subdirectory

Fixes #16963
2017-07-19 11:02:49 -07:00
Andy
08a57d82cd Add 'clear' helper (#17209) 2017-07-18 11:08:44 -07:00
Andy
194c2bc2ca Make NodeArray readonly (#17213)
* Make NodeArray readonly

* Fix bug: use emptyArray instead of undefined

* Fix bug: Don't expose MutableNodeArray

* Undo trailing whitespace changes
2017-07-18 10:38:21 -07:00
Nathan Shively-Sanders
7d7a06dbc2 Merge pull request #17250 from Microsoft/quickfix-jsdoc-in-ts
Quickfix jsdoc in Typescript files
2017-07-18 08:59:19 -07:00
Armando Aguirre
6f28f83f18 Added node_modules path check on getTodoComments method. 2017-07-17 17:35:46 -07:00
Nathan Shively-Sanders
73cfa64f44 Make sure not to truncate the stringified type from typeToString 2017-07-17 14:47:10 -07:00
Sheetal Nandi
54dfdd77fb Merge pull request #17210 from Microsoft/readfile
`readFile` may return undefined
2017-07-17 14:39:57 -07:00
Nathan Shively-Sanders
b13de0547e JSDoc codefix:getTypeFromTypeNode >>> typeToString
Instead of trying to walk the type structure in the codefix, I changed
to call getTypeFromTypeNode in the checker and then calling
typeToString. Together, these two functions normalise out JSDoc.

Note that you only get `T | null` for `?T` if you have --strict on. This
is technically correct -- adding a null union does nothing without
strict -- but it would still serve as documentation.
2017-07-17 14:11:35 -07:00
Andy
2a219af308 convertFunctionToEs6Class: Bail if this is not a JavaScript file (#17149) 2017-07-17 12:56:16 -07:00
Andy
6cf30fbccf Fix bug in importTracker: getExportNode must verify that we are on the LHS of a VariableDeclaration (#17205) 2017-07-17 12:29:29 -07:00
Nathan Shively-Sanders
f9e5576d58 Codefix for ?! pre/postfix JSDoc types
For ?, provide two code fixes, one for jsdoc/closure semantics
(`?t -> t | null)` and one for flow semantics
(`?t -> t | null | undefined`).

The current way of doing this is the hackiest thing you can imagine, but
it was easier than lifting everything into the list monad for a code fix
that I might not actually keep.
2017-07-17 11:06:20 -07:00