Neither `x[0]` nor `x[(0)]` should be dynamic names. Previously, the
latter was because `isDynamicName` didn't skip parentheses.
Since the binder treats dynamic names in property assignments as
assignment declarations, this incorrectly tried to create a binding for
expressions like `x[(0)] = 1`.
This caused an assert because `x[(0)]` would not take the dynamic name
code path during binding (`hasDynamicName` returned false), but the
normal code path for static names.
* Add declaration emit error and checking for circularly referential unions produced by recursive conditionals
* Allow indexed accesses to produce alias symbols on types
* Add test that still triggers the declaration emit error
* Fix spelling
Component commits:
0a696c902d Ensure formatter can always get a newline character
ab09d67b49 Make FormatContext.host optional since it’s not necessary if format options are all applied
90923e2050 Make FormattingHost required again
Co-authored-by: Andrew Branch <andrew@wheream.io>
Component commits:
6fe4be21e4 Exclude arrays and tuples from full intersection property check
9019e399e5 Add regression test
Co-authored-by: Anders Hejlsberg <andersh@microsoft.com>
Component commits:
99c5c096c5 Properly finalize evolving array type in getTypeAtFlowCall
b355cd4da4 Add regression test
Co-authored-by: Anders Hejlsberg <andersh@microsoft.com>
* Property handle private/protected properties in unions of object types
* Add regression test
Co-authored-by: Anders Hejlsberg <andersh@microsoft.com>
Component commits:
956ac2132a Allowed comment directives to be multiline
12749c9291 Added tests, and perhaps fixed a test runner bug?
99bb366fd6 I think it's going to need a consistent variable to loop over
a21477d6ac Used dynamically computed indexes in verifies
992441d9b8 Added multiline tests
199d256ba2 Increased flexibility for multiline comment parsing
65a7587432 Undid a couple of formatting changes; removed backslashes from multiline regexp
036a4ae922 Merge branch 'master'
b620104be2 Merge branch 'master' of https://github.com/microsoft/TypeScript into multiline-comment-directives
Co-authored-by: Orta Therox <orta.therox@gmail.com>
* Cherry-pick PR #38273 into release-3.9
Component commits:
c80c177b44 Harden node builder APIs to no longer return `undefined` for a node when `NodeBuilderFlags.IgnoreErrors` is provided
* Undo API changes for release branch
Co-authored-by: Wesley Wigham <t-weswig@microsoft.com>
Co-authored-by: Wesley Wigham <wwigham@gmail.com>
Component commits:
17f0dfbf9c fix(38177): add auto-import for missing argument type in new functions/methods
Co-authored-by: Alexander T <alexander.tarasyuk@outlook.com>
* Prefer a likely literal over anonymous type in --noImplicitAny codefixes
Before trying to make an anonymous type for a type's usage, we'll first check if there is exactly one builtin primitive the usage is assignable to, and use it if so. Right now that's only `number` and `string` because `boolean` has no distinguishable members.
A couple of implementation details:
* `tryInsertTypeAnnotation` needed to know to insert a type _after_ a node's `exclamationToken` if it exists
* This code area was written before `??` 😉
* Used unknown/any instead of void when applicable
* Fix little whitespace change in tests/cases/fourslash/codeFixInferFromUsagePropertyAccessJS.ts
* Undid some now-unnecessary unknown additions
* Took advice on restricting void to just call expressions
initialiser. But this is only correct when the initialiser is for a
parameter. For example:
```ts
declare let x: { s: string } | undefined;
const { s } = x;
```
This PR removes undefined from the type of a binding pattern only when
the binding pattern's parent is a parameter. This fixes the regression
from 3.8. However, it's still not the ideal fix; we should be able to
use control flow to solve this problem. Consider:
```ts
const { s }: { s: string } | undefined = { s: 'hi' }
declare function f({ s }: { s: string } | undefined = { s: 'hi' }): void
```
Neither line should have an error, but the first does in 3.8 and after
this change.
* Remove superCallShouldBeFirst error
It seems redundant since TS gives an error on any use of `this` before
super, and non-`this` uses before `super` should be fine.
Fixes#37371
* Revert "Remove superCallShouldBeFirst error"
This reverts commit 3c09153c8a.
* error except for target:"esnext" && useDefineForClassFields
* Fix use-before-def with methods on esnext+useDefineForClassFields
It was incorrectly flagging methods as used before their definition, but
this is allowed under any emit.
* Add instance function test case
* Propagate nonInferrableType in &&, || and ?? operators
* Add regression test
* Simpler solution: getTypeFacts(neverType) should return TypeFacts.None
* Fix prepending unused TypeScript variables with underscore doesn't rename JSDoc @param.
Fix test for quick fix "Prefix all unused declarations with '_' where possible".
Fixes#33021.
* Replace FindAllReferences.Core.eachSymbolReferenceInFile function call to more ligher call of getJSDocParameterTags when searching for a parameter in jsdoc.
* Remove redundant constant declaration.
* Add test for prefix single unused parameter in jsdoc.