Commit graph

24605 commits

Author SHA1 Message Date
James Keane 50f442f9ff Fixes #26122 - erroneous "TS2350" for js constructors called with incorrect parameters (#26124)
* Fixes #26122.

When `resolveCall` does not resolve in `resolveNewExpression`, the error should only be thrown if there is a *defined* signature that is not-void.

* Fix other baselines to remove erroneous TS2350.
2018-08-01 13:40:55 -07:00
Sheetal Nandi a5a26ec939
Merge pull request #26109 from Microsoft/invalidTsconfig
Handle when property name turns out to be non string literal computed name because of errors in tsconfig file
2018-08-01 09:04:13 -07:00
Andy 9c9f3e3cf9
importFixes: When one file redirects to another, consider both for global import specifiers (#25834)
* importFixes: When one file redirects to another, consider both for global import specifiers

* Add test for #26044

* Avoid a symlinked package globally importing itself (fixes another case of #26044)

* Compare to node_modules with getCanonicalFileName
2018-07-31 17:28:56 -07:00
Andy f326b4b7cb
Make import fix for default import mention that it's a default import (#26105) 2018-07-31 17:28:35 -07:00
Andy 1599ee2805
Always return a defined result from getTypeFromTypeNode (#26108) 2018-07-31 17:28:15 -07:00
Sheetal Nandi 3c971ed685 Handle when property name turns out to be non string literal computed name because of errors in tsconfig file
Fixes #26076
2018-07-31 17:23:55 -07:00
Andy 9277ec08d7
Update more baselines from #25626 (#26107) 2018-07-31 16:34:40 -07:00
Andy b895614c55
Avoid trying to write the type of non-values (#25626) 2018-07-31 15:02:41 -07:00
Wesley Wigham 2edc47bc67
Fix decorated accessor emit (#26016) 2018-07-31 13:53:28 -07:00
James Keane dfedb24f75 Jsdoc @constructor - in constructor properly infer this as class instance (#25980)
* Properly infer `this` in tagged `@constructor`s.

`c.prototype.method = function() { this }` was already supported.

This commit add support to two more kinds relying on the JSDoc
`@constructor` tag. These are:
 1. `/** @constructor */ function Example() { this }`
 2. `/** @constructor */ var Example = function() { this }`

* Update the baseline for js constructorFunctions.

C3 and C4 `this` was set as `any`, now it is properly showing as
the class type.

* Fix lint errors

* Add circular initialisers to constructo fn tests.

* Error (`TS2348`) if calling tagged js constructors

When calling a JS function explicitly tagged with either `@class` or
`@constructor` the checker should throw a TS2348 not callable error.

* Don't resolve jsdoc classes with construct sigs.

This undoes the last commit that sought to change how js functions
tagged with `@class` were inferred. For some reason, currently
unknown, giving those functions construct signatures causes issues
in property assignment/member resolution (as seen in the
`typeFromPropertyAssignment12` test case).

Instead of changing the signature resolution, the error is explicitly
generated in `resolveCallExpression` for those functions.
2018-07-31 13:52:39 -07:00
Nathan Shively-Sanders 4821f81ce7
Refactor and improve caching in getTypeOfSymbol callees (#25842)
* Refactor+improve caching in getTypeOfSymbol

1. Always cache calls to getTypeOfSymbol, even in the error case.
2. JS expando types are now cached on the original symbol as well as the
cloned symbol. Previously they were only cached on the cloned symbol.
3. Large callees of getTypeOfSymbol (variable/param/property,
func/class/enum/module, and accessors) now handle only caching and
delegate to -Worker functions whose return values are cached
unconditionally (unlike previously).

* Fix circularity detection in getTypeOfFuncClassEnumModule

Previously, successfully obtaining a type from a js special property
declaration would forget to pop the circularity detection stack and
check its value.
2018-07-31 13:07:16 -07:00
Mohamed Hegazy ab5f04721d
Merge pull request #26101 from Microsoft/Fix26083-2
Port generated lib files
2018-07-31 13:01:04 -07:00
Mohamed Hegazy ff69f7f744 Port generated lib files 2018-07-31 12:20:35 -07:00
Sheetal Nandi 7bd1c8e6aa
Merge pull request #25811 from Microsoft/subDirectoryOfRootWatches
Watch subdirectories in project root instead of watching project root…
2018-07-31 11:51:16 -07:00
Andy 0d1a49c865
Ignore trailing comma when resolving signature for quick info (#25841)
* Ignore trailing comma when resolving signature for quick info

* Add test for signature help
2018-07-31 11:39:39 -07:00
Mohamed Hegazy 114cd80ed9
Merge pull request #26008 from ajafff/restbindingpattern
allow BindingPattern in BindingRestElement
2018-07-31 11:31:22 -07:00
Mohamed Hegazy c4d79923f5
Merge pull request #25963 from ajafff/cleanup-factory
minor cleanup in factory.ts
2018-07-31 11:31:07 -07:00
Mohamed Hegazy aaf14f47b7
Merge pull request #26065 from ajafff/createbinary-arrow-parens
createBinary: parenthesize ArrowFunction in RHS
2018-07-31 11:27:53 -07:00
Nathan Shively-Sanders a21ac11582
In JSDoc, resolve import types as values too (#26066)
* In JSDoc, resolve import types as values too

This is something that we probably should have been doing for some time.
Fixes #26049

* Fix whitespace lint
2018-07-31 11:07:06 -07:00
Anders Hejlsberg 4bc7f1570b
Merge pull request #26063 from Microsoft/mappedTypesArraysTuples
Improved mapped type support for arrays and tuples
2018-07-31 10:54:44 -07:00
Ryan Cavanaugh 03c7a19b07
Merge pull request #26093 from Microsoft/RyanCavanaugh-patch-1
Update CONTRIBUTING.md
2018-07-31 10:24:03 -07:00
Mohamed Hegazy 59e61090df
Merge pull request #25944 from Microsoft/portGeneratedLibFiles
Port generated lib files
2018-07-31 10:20:36 -07:00
Ryan Cavanaugh 9d88798ab1
Update CONTRIBUTING.md 2018-07-31 09:29:02 -07:00
TypeScript Bot 6cd313b0e1 Update user baselines (#26088) 2018-07-31 09:22:33 -07:00
Sheetal Nandi e2a8f996d0 Update the public API after PR #26032 2018-07-30 15:30:05 -07:00
Sheetal Nandi b8c8e5527c
Merge pull request #26032 from Microsoft/projectReferences
Keep the configured projects referenced during original location and project get, alive till the referencing project is alive
2018-07-30 14:47:20 -07:00
Sheetal Nandi d65cb21fcd Keep the original configured project alive created during findAllReferences 2018-07-30 14:44:21 -07:00
Sheetal Nandi f3b0a2de06 Move the original location getter to ProjectService.
This is in anticipation of work needed to keep original projects alive
2018-07-30 14:44:21 -07:00
Sheetal Nandi 1345a35e5f
Merge pull request #26012 from Microsoft/compileOnSaveOptimization
If project name is specified in compile on save, do not update all projects to just use that project
2018-07-30 14:43:18 -07:00
Sheetal Nandi 7b405c4ad9 Test that verifies we arent updating all projects unnecessarily when called with compileOnSave and project 2018-07-30 14:10:56 -07:00
Nathan Shively-Sanders 4d84bde9b3
Only bind module.exports if no local definition exists (#25869)
* Only bind module.exports if no local definition exists

Note that this uses `lookupSymbolForNameWorker`, which is really a
best-effort check since it only knows about symbols that it has already
encountered.

As a side-effect, even when `module` is bound as part of a
`module.exports` reference, it only declares it once instead of one
declaration per reference.

* Only type module.exports inside module files

It is an error inside script files, but the binder sometimes creates a
ModuleExports symbol because we doesn't know whether we have a commonjs
module until after binding is done.

* Only bind module.exports in a commonjs module

Note that this, too, is a best-effort check since evidence of
commonjs-ness may be found after a *reference* to module.exports. (A
reference to module.exports alone is not enough evidence that a file is
commonjs. It has to have an assignment to it.)
2018-07-30 12:27:59 -07:00
Mohamed Hegazy 9e740deee8
Merge pull request #25965 from ajafff/expose-escapeleadingunderscores
expose escapeLeadingUnderscores
2018-07-30 12:05:33 -07:00
Sheetal Nandi 9196b7db33
Merge pull request #25851 from Microsoft/configFileDiag
Report compiler options errors as well as part of configFileDiag event
2018-07-30 11:07:07 -07:00
Klaus Meinhardt 4dabd650ed createBinary: parenthesize ArrowFunction in RHS
Fixes: #25964
2018-07-30 19:22:30 +02:00
Anders Hejlsberg efb6e0b842 Accept new baselines 2018-07-29 15:26:03 -07:00
Anders Hejlsberg 32a9ec6c30 Add tests 2018-07-29 15:25:54 -07:00
Anders Hejlsberg df100957b6 Accept new baselines 2018-07-29 15:14:44 -07:00
Anders Hejlsberg 8eb24db0c0 Homomorphic mapped type support for arrays and tuples 2018-07-29 15:14:01 -07:00
Mohamed Hegazy 0923771606
Merge pull request #26029 from tschaub/fix-25916
Remove trailing whitespace from JSDoc comments
2018-07-28 11:40:10 -07:00
Tim Schaub 960800d1fe Remove trailing whitespace from JSDoc comments 2018-07-28 10:36:10 -06:00
Nathan Shively-Sanders 25fb5419c0
Support the JSDoc @enum tag (#26021)
* Support the JSDoc @enum tag

`@enum` is used on a variable declaration with an object literal
initializer. It does a number of things:

1. The object literal has a closed set of properties, unlike other
object literals in Javascript.
2. The variable's name is resolvable as a type, but it just has the
declared type of the enum tag.
3. Each property's type must be assignable to the enum tag's declared type,
which can be any type.

For example,

```js
/** @enum {string} */
const Target = {
  START: "START",
  END: "END",
  MISTAKE: 0, // error 'number' is not assignable to 'string' -- see (3)
}

Target.THIS_IS_AN_ERROR; // See (1)
/** @type {Target} See (2) */
var target = Target.START;
```

* Fix lint, add new test case, update API baselines
2018-07-28 07:53:08 -07:00
Sheetal Nandi a26aff30e1
Merge pull request #25835 from Microsoft/getCurrentProgramOrUndefined
Reflect getCurrentProgram as Program|undefined in the ResolutionHostCache
2018-07-27 23:06:34 -07:00
Andy 5e1872f0c0
getDocCommentTemplateAtPosition: Return result if in empty comment (#26026) 2018-07-27 17:34:16 -07:00
Andy 644ceab02f
Document ObjectLiteralElementLike (#26024) 2018-07-27 17:33:42 -07:00
Andy 57d425169a
createJavaScriptSignatureHelpItems: Use array helpers and simplify (#26025) 2018-07-27 17:33:17 -07:00
Mohamed Hegazy 78ad21d33b Update authors for release 3.0.1 2018-07-27 16:55:47 -07:00
Sheetal Nandi ab1b899cea Use isArray instead of isProjectsArray 2018-07-27 12:50:32 -07:00
Sheetal Nandi 399f497a32 Unify getProjects for compileOnSave and others like (navigation etc) 2018-07-27 12:47:47 -07:00
Andy d40d54984e
Support deleting all unused type parameters in a list, and deleting @template tag (#25748)
* Support deleting all unused type parameters in a list, and deleting @template tag

* Support type parameter in 'infer'
2018-07-27 11:55:31 -07:00
Sheetal Nandi 94033f212d If project name is specified in compile on save, do not update all projects to just use that project 2018-07-27 11:21:14 -07:00