Commit Graph

11840 Commits

Author SHA1 Message Date
Wesley Wigham
a7be62f9db Track name scope aloneside lexical scope 2018-06-26 12:24:55 -07:00
Martin Probst
6a24eabd18 Set current scope for classes. 2018-06-26 16:33:36 +02:00
Martin Probst
f1fe0b8116 use better scope 2018-06-26 15:51:37 +02:00
Martin Probst
55c3ec3e94 Fix decorator design:types emit for type variables.
Previously, TypeScript would resolve the reified types for the
`design:types` decorator emit in the regular `currentScope`. That scope
does not include class declaration bodies.

However when reifying types, class declarations do introduce a new scope
for any `TypeVariable`s declared on them. Because TS resolved the
EntityName for such types against the parent scope (e.g. the source
file), not the class scope, TypeScript would either fail to resolve the type (giving `TypeReferenceSerializationKind.Unknown`), or
incorrectly resolve to a different, accidentally matching symbol in the outer scope (giving `TypeWithConstructSignatureAndValue`).

This would result in an emit referencing an undeclared symbol, or
mis-referencing the wrong symbol.

    __metadata("design:type", typeof (_a = typeof TypeVariable !== "undefined" && TypeVariable) === "function" && _a || Object)
    __metadata("design:type", TypeVariable)

This change special cases `currentScope` for
`serializeTypeReferenceNode` to use a class scope, if present. This
changes the emit for a `TypeVariable` back to `Object`:

    __metadata("design:type", Object)
2018-06-25 17:24:05 +02:00
Wesley Wigham
bd97e12f76 Multifaceted approach to performantly enabling fileExists outside of the synchronize step in the emit host (#25107)
* Multifaceted approach to performantly enabling fileExists outside of the synchronize step in the emit host

* make cache undefinable and handle correctly

* Remove unneeded cast

* Readd assert

* More useful failure messager
2018-06-22 14:05:36 -07:00
Wesley Wigham
c441451f83 Cache specifier resolutions for speed when emitting many types from the same place (#25112)
* Cache specifier resolutions for speed when emitting many types from the same place

* I swear I accepted this once already
2018-06-22 14:05:07 -07:00
Nathan Shively-Sanders
0bb897273f Parse nested prop and param tags the same way (#25139)
That is, only nest them if their name matches the provided parent name.
Otherwise do not nest them.

Note that this commit changes the behaviour of an incorrect typedef that
contains both an `@type` child tag and `@property` child tags.

Previously, the `@type` would be incorrectly nested under a `@property`
tag with type `object`, just like `@property` tags would be. Now, the
`@type` tag causes the entire typedef to ignore the `@property` tags and
treat the typedef as if it were an instance of the
typedef-and-nested-type pattern:

```js
/**
 * @typedef {Object} name
 * @type {{ the, actual, type }}
 */
```
2018-06-21 16:12:55 -07:00
Daniel Rosenwasser
b4cf51365d Merge pull request #25136 from Microsoft/useGetObjectFlags
Use `getObjectFlags` as suggested in previous PR.
2018-06-21 14:30:59 -07:00
Daniel Rosenwasser
a5b9a4c5ea Use getObjectFlags as suggested in previous PR. 2018-06-21 13:52:06 -07:00
Daniel Rosenwasser
72068e22af Merge pull request #25115 from Microsoft/matchingTypeRefs
Improved errors using type reference targets
2018-06-21 13:46:21 -07:00
Wenlu Wang
51e7ae0813 provide spelling suggestion for indexed access (#22225)
* provide spelling suggestion for indexed access

* update merge

* accept baseline

* fix suggession return type

* allow string or identifier on getSuggestionForNonexistentProperty

* fix lint
2018-06-21 13:40:41 -07:00
Daniel Rosenwasser
9df95fee79 Expand better error messages to anonymous object types with identical type aliases. 2018-06-21 13:13:26 -07:00
Andy
662ca71efc Add 'withContext' helper in createNodeBuilder (#24994) 2018-06-21 12:17:38 -07:00
Andy
e3e4c5dd2e getEditsForFileRename: For directory rename, preserve casing of suffix (#24975) 2018-06-21 11:46:13 -07:00
Nathan Shively-Sanders
a7af92eb63 check return tag in getTypePredicateOfSignature (#25130) 2018-06-21 11:30:37 -07:00
Ron Buckton
272e5554c8 Merge branch 'master' into gulpProjectRefs 2018-06-21 10:55:35 -07:00
Andy
2b9166b2f9 Don't recommend to install '@types/foo' if that already exists (#24815)
* Don't recommend to install '@types/foo' if that already exists

* Add different extra diagnostic text if the @types package exists

* Update API (#24966)
2018-06-21 10:19:14 -07: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
Andy
40899eaf5b Error on 'const' in class expression (#25125) 2018-06-21 09:57:52 -07:00
Andy
3e50f502bb Mark some Type[] and Signature[] as ReadonlyArray (#25099) 2018-06-21 09:57:14 -07:00
Daniel Rosenwasser
4f32691f3e Try to report errors on types who have matching type references. 2018-06-21 00:31:33 -07:00
Ron Buckton
c8c0428162 Cleanup, remove some unneeded dependencies, make it easier to add gulp.watch support later 2018-06-20 18:24:12 -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
Sheetal Nandi
f506b28e95 Mark the declarations visible correctly when emit is disabled but asked to emit declarations for watch mode
Fixes #25068
2018-06-20 12:28:50 -07:00
Andy
b3f9ec3796 Fix bug: Still implement a method even if the return type is defined in another file (#24978) 2018-06-19 16:36:18 -07:00
Mohamed Hegazy
9706f1729e Merge pull request #25075 from Dangoo/feat/add_intl-number-format_format-to-parts_types
Add Intl.NumberFormat.formatToParts types
2018-06-19 14:20:26 -07:00
dangoo
b7f5f2a92b Add missing references in clparser and libs.json 2018-06-19 22:24:32 +02:00
Nathan Shively-Sanders
03fff50fa4 Simplify getJSDocCommentAndTags (#24997)
Previously, getJSDocCommentAndTags could recur up to four times if any
of four predicates matched. However, to avoid duplicates, the predicates
have been tuned to be mutually exclusive, which means that the recursion
can be turned into a while loop. The while loop is much simpler and
safer, since it is guaranteed to only walk up the tree one time. In
addition, the extra check that adds jsdoc from initializers only runs
once, before the loop, further reducing the opportunity for duplicate
jsdocs.

I thought about further simplifying the code that gets the next node to
check, but to know when to stop the loop, I'd need a predicate that is
as complicated as the code in `getNextJSDocCommentLocation`, so I kept
the existing code, just reordering it for compactness.
2018-06-19 10:14:47 -07:00
Ron Buckton
5bc8f957f1 Address lint warnings 2018-06-19 02:31:03 -07:00
Ron Buckton
21c23d4e4e Merge branch 'master' into gulpProjectRefs 2018-06-18 22:51:37 -07:00
Ron Buckton
891b15f60a Update gulpfile to support project references 2018-06-18 22:45:13 -07:00
Ryan Cavanaugh
4fafe0b502 Merge pull request #25049 from RyanCavanaugh/tsbuild-fixes
Fixes downstream prepend projects not being built correctly on upstream changes
2018-06-19 12:01:42 +12:00
Ryan Cavanaugh
43d1ae42a9 Do fewer calls to getRelativePathToDirectoryOrUrl when writing sourcemaps 2018-06-18 11:12:19 -07:00
Ryan Cavanaugh
bb29a1087e Fixes downstream prepend projects not being built correctly on upstream changes 2018-06-18 11:11:03 -07:00
Ron Buckton
aa26a59835 Merge pull request #24244 from Andarist/redefining-helpers
Use redefining helper pattern for better tree-shakeability
2018-06-18 01:11:23 -07:00
Ryan Cavanaugh
73844ac565 Accept baseline 2018-06-15 11:10:54 -07: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
Ryan Cavanaugh
e1e2882edf PR fixups 2018-06-15 10:48:46 -07:00
Ryan Cavanaugh
d02fe4ac44 Merge branch 'master' into esau-squash
# Conflicts:
#	tests/baselines/reference/api/typescript.d.ts
2018-06-15 10:40:46 -07:00
Ron Buckton
575ab61c6b Fix sources array case sensitivity 2018-06-14 23:27:04 -07:00
Ron Buckton
e62a5edc94 Fix off-by-one error with sourcemaps 2018-06-14 22:54:31 -07:00
Ryan Cavanaugh
03c3c9dda1 Merge branch 'master' into esau-squash 2018-06-14 13:23:15 -07:00
Nathan Shively-Sanders
57e652dd02 Js/check type tags (#24967)
* Check the type expression of `@type` tags

* Update existing tests and baselines
2018-06-14 13:11:52 -07:00
Sheetal Nandi
1cd604ac69 Merge pull request #24933 from Microsoft/failedLookupWatchesWithClassicResolver
Do not watch parent folders recursively if not needed
2018-06-14 13:09:16 -07:00
Andy
345012e29d Don't add diagnostic on unused import starting with underscore (#24958)
* Don't add diagnostic on unused import starting with underscore

* Fix lint
2018-06-14 12:55:12 -07:00
Ryan Cavanaugh
8491f70379 Merge branch 'master' into esau-squash
# Conflicts:
#	tests/baselines/reference/api/typescript.d.ts
2018-06-14 11:25:00 -07:00
Nathan Shively-Sanders
a56b272d38 In JS, fix crash with in a file with conflicting ES2015/commonjs exports (#24960)
* fix crash with conflicting ES2015/commonjs modules

* Refactor based on PR comments
2018-06-14 11:18:23 -07:00
Wesley Wigham
a77068827d Handle combinations of rootdir and outdir when calculating paths (#24941) 2018-06-14 11:07:46 -07:00
Wesley Wigham
2a1503610b Stop generating sectional sourcemaps (#24917)
* Generate normal 1-part sourcemaps (at increased processing cost), since tools dislike sectional ones

* Add semicolon

* Accept sad baselines]

* Forward along sourcesContent if available

* Supress lint since the API actually calls for null here

* Fix concatenated sourcemap paths

* Accept bad baselines :(

* Add overloads

* Accept api update

* Fix lint
2018-06-13 18:52:23 -07:00
Ryan Cavanaugh
e9ab5d4cbd Ryan feels shame as a major action 2018-06-13 17:33:01 -07:00