Commit Graph

11108 Commits

Author SHA1 Message Date
Nathan Shively-Sanders
0f5166535e Improve unmatched jsdoc param error (#22577)
* Improve unmatched jsdoc parameter error message

* Remove extraneous carriage return
2018-03-14 12:37:57 -07:00
Nathan Shively-Sanders
ee8adaeac2 No error on unmatchable @param tags (#22510)
* No errr on unmatchable `@param` tags

Such as when the initializer is not a function, or when the function
mentions `arguments` in its body.

* Do not require dummy param for JS uses of arguments

1. JS functions that use `arguments` do not require a dummy parameter in
order to get a type for the synthetic `args` parameter if there is an
`@param` with a `...` type.
2.JS functions that use `arguments` and have an `@param` must have a
type that is a `...` type.

* Check for array type instead of syntactic `...`

* Address PR comments

* Update baselines
2018-03-14 11:06:25 -07:00
Nathan Shively-Sanders
bd94170b7f Brackets and postfix= in @param add undefined (#22514)
* Brackets and postfix= in `@param` add undefined

Previously they only added optionality.
Note that, unlike Typescript, when a parameter initializer is specified
in jsdoc, it does not remove undefined in the *body* of the function.
That's because TS will generate initialisation code, but JS won't, so
the author will have to manually write code to remove undefined from the
type.

```js
/** @param {number} [a=101] */
function f(a) {
  // a: number | undefined here
  if (!a) {
    a = 101
  }
  // a: number here
}
```

Note that we don't check that
1. the initializer value is actually assigned to the parameter.
2. the initializer's type matches the declared type of the parameter.

Pretty much we just parse it and leave it alone.

* Address PR comments
2018-03-13 15:57:55 -07:00
Mohamed Hegazy
630af21963 Do not use unguarded process in tsc.ts 2018-03-13 11:06:04 -07:00
Mohamed Hegazy
c48b52f676 Merge branch 'master' into release-2.8 2018-03-09 14:43:30 -08:00
Martyn Janes
bcf6e342f1 Fix typo in emitDeclarationOnly error message for declaration required 2018-03-09 22:37:10 +03:00
Mohamed Hegazy
260194c7b4 Merge branch 'master' into release-2.8 2018-03-09 09:05:59 -08:00
Andy
2170f6e1f8 FunctionLike = SignatureDeclaration (#22365) 2018-03-08 16:31:42 -08:00
Andy
e48bcd60ba Treat 'yield;' as 'yield undefined;' (#22297)
* Treat 'yield;' as 'yield undefined;'

* Use undefinedWideningType
2018-03-08 15:41:04 -08:00
Andy
28e8c4f3b8 Factor out a getYieldedTypeOfYieldExpression helper (#22416) 2018-03-08 15:06:29 -08:00
Wesley Wigham
87d88e2ba3 Handle resolving and unknown symbols in getLiteralTypeFromPropertyName (#22406) 2018-03-08 13:35:55 -08:00
Sheetal Nandi
17b10dc2a9 Merge pull request #21243 from Microsoft/watchOptions
Different watchFile and watchDirectory options through environment variable
2018-03-08 12:44:53 -08:00
Nathan Shively-Sanders
a81f264d70 Call process.stdout._handle.setBlocking(true) (#22389)
* Call process.stdout._handle.setBlocking(true)

This prevents output from being truncated when the compiler can output
errors to stdout faster than it can receive them. This may slow down
performance for compilations for many errors, but those were already
quite slow.

* Disable tslint no-unnnecessary-type-assertion-2

It is wrong. It *is* necessary.
2018-03-08 12:38:30 -08:00
Sheetal Nandi
8378f692c7 Directly assign values for watchFile and watchDirectory in node System 2018-03-08 12:18:04 -08:00
Andy
a49e83ffa7 annotateWithTypeFromJSDoc: Use changes.insertTypeAnnotation instead of replaceNode (#22404) 2018-03-08 11:47:30 -08:00
Nathan Shively-Sanders
e4610e3418 Import types in JS with var x = require('./mod') (#22161) 2018-03-08 11:11:51 -08:00
Nathan Shively-Sanders
f8134d0b45 Merge branch 'master' into js-object-literal-assignments-as-declarations 2018-03-08 10:40:55 -08:00
Nathan Shively-Sanders
35730f2879 Improve error span:duplicate symbols cross-js/ts
when the JS symbol is a JS initializer
2018-03-08 10:33:38 -08:00
Nathan Shively-Sanders
04ceb3d9bd Disallow JS/non-JS merge without crashing
Note that the error location is misleading because it's reported inside
the merge step for the js initializer.
2018-03-08 09:49:23 -08:00
Wesley Wigham
95862880fb Filter symbol property names out of index signature assignability checks (#22398) 2018-03-08 09:30:25 -08:00
Andy
55bffba5fd Use getTextOfNode over getTextOfNodeFromSourceText(getSourceFileOfNode(node)) (#22387) 2018-03-08 07:52:35 -08:00
Andy
2676786e7f Add 'isNamedDeclaration' helper to reduce casts (#22089)
* Add 'isNamedDeclaration' helper to reduce casts

* Add assertion

* Remove assertion
2018-03-08 07:50:25 -08:00
Wesley Wigham
88ba1ef2de Platform independent wildcard file include ordering (#22393)
* Resolve config wildcards result order in a platform independent manner

* Accept affected user test baseline

* Per reccomendation, just change matchFiles

* Add test asserting the same order on differing case sensitive platforms
2018-03-07 19:54:19 -08:00
Wesley Wigham
45eaf42006 Use single replacer for string escaping (#22335) 2018-03-07 17:36:31 -08:00
Nathan Shively-Sanders
239f214b1c Address PR comments
1. Add documentation
2. Better organisation of concerns in utility functions
3. Better handling of module.exports and exports in the binder's new
code.
2018-03-07 16:26:29 -08:00
Nathan Shively-Sanders
d86440f94f Merge branch 'master' into js-object-literal-assignments-as-declarations 2018-03-07 14:51:55 -08:00
Andy
1f7a5097fa When every import is unused, error on the entire import declaration (#22386)
* When every import is unused, error on the entire import declaration

* Code review

* Store key in map value
2018-03-07 14:42:09 -08:00
Andy
e5804aefde inferFromUsage: use ChangeTracker and typeToTypeNode (#22379)
* inferFromUsage: use ChangeTracker and typeToTypeNode

* Use typeToTypeNode with SymbolTracker

* Add comment
2018-03-07 14:40:50 -08:00
Andy
0be9ee2871 Increase size of span for unused declaration (#22388) 2018-03-07 14:14:11 -08:00
Andy
c0ac687a8f Mark SymbolTracker as deprecated publicly (#22384) 2018-03-07 11:25:29 -08:00
Andy
a138985448 isValidMethodAccess: Instantiate signature this type if necessary (#21722) 2018-03-06 10:18:06 -08:00
Mohamed Hegazy
785fd363cb Update version 2018-03-06 09:15:06 -08:00
Andy
e5f91f5948 Convert annotateWithTypeFromJSDoc refactor to a codefix (#22336)
* Convert annotateWithTypeFromJSDoc refactor to a codefix

* Compute isJsFile once at top
2018-03-06 07:49:21 -08:00
Josh Goldberg
7826b38426 Apply 'no-unnecessary-initializer' lint rule (#22014)
* Apply 'no-unnecessary-initializer' lint rule

Forbids `let`/`const` statements to be initialized to `undefined`, since that's the initial value by default anyway.
The auto-fixer also happened to remove two unnecessary `as number` casts in `src/harness/parallel/worker.ts`.

For historical data: to run with `--fix`, I modified the line in `Jakefile.js` that declared the `cmd` for running TSLint.

* Moved worker.ts type assertions to parameters
2018-03-06 07:30:40 -08:00
Andy
5e593acad9 Avoid cast by providing type predicate to isExternalModuleAugmentation (#22119)
* Avoid cast by providing type predicate to isExternalModuleAugmentation

* Break into isExternalModuleAugmentation and isModuleAugmentationExternal
2018-03-06 07:27:36 -08:00
Wesley Wigham
48b63187c6 Remove TypeFacts.Discriminatable (#22346) 2018-03-05 15:51:47 -08:00
Wesley Wigham
2f0a13c7c3 Use global NonNullable type for nonnull types (#22096)
* Use NonNullable type for nonnull types

* Add noLib test

* Remove conditional type fallback for when lib is not present
2018-03-05 14:52:06 -08:00
Andy
4ddf045d6a For <div a= >, after =, do not try to parse an expression (#21373) 2018-03-05 14:38:55 -08:00
Wesley Wigham
16bf02991d Allow indexing generics with unique symbols (#22339)
* Allow indexing generics with unique symbols

* Move condition to assert
2018-03-05 13:58:19 -08:00
Wesley Wigham
53ae507545 Add inference priority for mapped type keys (#22246)
* Add inference priority for mapped type keys

The new priority causes union inference, similarly to return type

* Rename priority

* Fix comment typo
2018-03-05 13:19:00 -08:00
Andy
2ac2291b84 Convert use-default-import refactor to a codefix (#22334) 2018-03-05 12:43:01 -08:00
Anders Hejlsberg
07ed899b46 Merge branch 'master' into checkInferredConstraints 2018-03-05 06:32:11 -08:00
Anders Hejlsberg
70818ae716 Merge pull request #22313 from Microsoft/fixDistributiveConditionalTypes
Fix distributive conditional types
2018-03-05 06:23:45 -08:00
Anders Hejlsberg
6fcc99e800 Properly check inferred constraints for 'infer X' type variables 2018-03-04 16:28:22 -08:00
Sheetal Nandi
ae8637c99f Merge branch 'master' into watchOptions 2018-03-03 10:51:59 -08:00
Anders Hejlsberg
8dfcc364bb Defer distributive conditional type when check type is generic 2018-03-03 09:26:40 -08:00
Sheetal Nandi
6e756b5907 Merge pull request #22308 from Microsoft/declarationEmitOfIndirectAlias
Fix incorrect error reported when using type from indirect module alias and current module is exported with "export default"
2018-03-02 19:10:36 -08:00
Wesley Wigham
1c93744a9c Much better comment preservation (#22141)
* Retain comments on (and produce sourcemaps on) the equals token in initializers

* Improved comments/sourcemaps for await, yield, while, and for

* Retain comments on block curly-braces

* Emit comments for if statements

* Improved switch case comment emit

* Improve comment and sourcemap emit for try/catch, throw, and continue statements

* Improve sourcemap emit and comments for with statements

* More accurate sourcemaps+comments emit for new, typeof, void, and delete

* Improve comment emit for element access expressions

* Preserve more comments on imports and exports

* Make function a bit more defensive like other usages of emitTrailingCommentsOfPosition

* Support preserving comments within empty lists

* Handle leading comments of tokens, conditionally indent leading comments

* Stop heuristically sourcemapping tokens

When the transform was trivial it worked, but was unneeded, but when it was complex, it was brittle - best leave source mapping up to the transformers

* Fix unneeded +1

* Tighten up element access comments

* Handle comments on parenthesized expression tokens

* Fix nit
2018-03-02 17:23:59 -08:00
Yuichi Nukiyama
25525bc9d6 Change esnext.promise to es2018.promise (#22292)
* change esnest.promise to es2018.promise

* modify unit tests

* resolve conflict

* resolve conflict
2018-03-02 17:08:36 -08:00
Sheetal Nandi
9f10790023 Do not try to resolve alias for default symbol
Fixes #22257
2018-03-02 16:34:11 -08:00