Jake Bailey
36e29448e9
Get codebase building pre bundling
...
This isn't totally complete, but enough to get everything building and
tests running manually. The next commit will make the build work fully.
2022-11-07 13:34:44 -08:00
Oleksandr T
fa4b49d541
fix(51374): ts(80004): Quick fix... > Annotate with type from JSDoc :: object types ( #51378 )
...
* fix(51374): transform JSDocTypeLiteral
* add additional tests
* add additional tests
2022-11-07 11:35:08 -08:00
Anders Hejlsberg
7cf842b42b
Enum unification and improvements ( #50528 )
...
* Fix enum classification and evaluation
* References in literal enums must be to other enum members
* Accept new baselines
* Unify enum types + template literal constant expressions
* Accept new baselines
* Fix fourslash tests
* Fix new compiler errors
* Fix lint error
* Accept new API baselines
* Fix test
* Better error message + consistently check enum initializers
* Accept new baselines
2022-11-03 11:05:42 -07:00
Gabriela Araujo Britto
fdcb2ffd1b
Fix services' type's isLiteral implementation ( #50929 )
...
* fix services' type's isLiteral
* update literal completions tests
* remove booleans from literals
2022-11-02 11:28:10 -07:00
Wesley Wigham
4d15bb16e1
Fix #50869 , only cache calculated type for non-context sensitive parameters ( #50976 )
...
* Fix #50869 , only cache calculated type for non-context sensitive parameters
* Simplify check, update comment
2022-10-31 17:24:51 -07:00
Oleksandr T
64d0d5ae14
fix(51301): Fixing an unused import at the end of a line removes the newline ( #51320 )
...
* fix(51301): keep the line break after removing the unused identifier
* preserve line breaks in import specifiers
* preserve line breaks in parameters and destructuring elements
* remove preserveLineBreak option
2022-10-27 17:27:36 -07:00
Oleksandr T
d4f26c840b
fix(51245): Class with parameter decorator in arrow function causes "convert to default export" refactoring failure ( #51256 )
...
* fix(51245): don't rely on parent nodes in formatting rules
* check existing parent node
2022-10-26 16:59:44 -04:00
Oleksandr T
8b1ecdb701
fix(50654): "Move to a new file" breaks the declaration of referenced variable ( #50681 )
...
* fix(50654): remove entire import require call instead of the name
* handle require imports in ts files
2022-10-25 17:05:57 -07:00
Oleksandr T
88d25b4f23
fix(50068): Refactors trigger debug failure when JSX text has a ' and a tag on the same line. ( #51299 )
...
* fix(50068): rescan JsxText on JsxElement context
* fix lint errors
* add tests
2022-10-25 13:10:31 -07:00
Andrew Branch
ef69116c41
Generate shortest rootDirs module specifier instead of first possible ( #51244 )
...
* Generate shortest rootDirs module specifier instead of first possible
* Simplify `min`
2022-10-21 16:05:58 -07:00
Oleksandr T
245a02cbed
fix(51222): Go-to-definition on return statements should jump to the containing function declaration ( #51227 )
...
* fix(51222): add go-to-definition return statement to containing function
* add additional tests
2022-10-19 11:32:39 -07:00
Mateusz Burzyński
85d405a1d7
Fixed a false positive "await has no effect on the type" diagnostic with mixed generic union ( #50833 )
2022-10-18 14:10:03 -07:00
Oleksandr T
f25bcb7c27
fix(49196): add jsdoc snippet for interface member functions ( #51135 )
2022-10-17 17:35:08 -07:00
Oleksandr T
7406ee9c14
fix(51170): Completing an unimplemented property overwrites rest of line ( #51175 )
...
* fix(51170): skip insertText for class members with existing initializer
* skip insertText for class members with existing tokens
2022-10-17 13:14:23 -07:00
Isabel Duan
2cb7e779d7
fix(50416): correctly names disabled export refactors ( #50663 )
...
* added test case to try to retrieve duplicate refactor as in #50416 . 'verify.refactorAvailable' correctly retrieves nonduplicate refactors...
* optional arguments in refactorAvailable return `true` even if there is no single refactor that satisfies both
* it still passes :C
* Delete fixExtractToInnerFunctionDuplicaton.ts
* deleted extra test code
* fix 'verify.refactorAvailable' so that tests correctly check for multiple arguments
* fixes #50416
* refactor
2022-10-13 16:44:30 -07:00
Oleksandr T
2bcfed01f3
feat(37440): Provide a quick-fix for non-exported types ( #51038 )
...
* feat(37440): add QF to handle missing exports
* change diagnostic message
* add type modifier only if isolatedModules is set or if the export declaration already uses type modifiers
2022-10-13 15:43:49 -07:00
Oleksandr T
cf1b6b7333
feat(51163): show QF to fill in the missing properties for the mapped type. ( #51165 )
2022-10-13 11:29:18 -07:00
Valerian Clerc
503604c884
Overloads shouldn't gain @deprecated tags of other overloads in quick info ( #50904 )
...
* Add test case to check for the propogation of @deprecation tag to multiple overloads
* Implement filter to only include @deprecated tag in first signature after JSDoc comment
2022-10-11 16:58:03 -07:00
Nathan Shively-Sanders
299745cb21
Fix crash in goto-def on @override ( #51016 )
...
* Fix crash in goto-def on `@override`
When the base type is not defined, getDefinitionFromOverriddenMember
will have its type as errorType, which has no symbol. The error handling
previously only handled the case of no baseType at all -- which I'm not
sure ever actually happens.
* Improve checking
1. getTypeAtLocation never returns undefined, only errorType, so check for that.
2. Return directly after missing baseTypeNode instead of continuing to return later.
* Experiment with making goto-def on `override` more consistent
* Unify static/instance node->symbol->type path
* Make getSymbolAtLocation support class expressions
and parenthesized expressions
* Revert "Make getSymbolAtLocation support class expressions"
This reverts commit 4c1b03135576c9e5d146ce6f38e691c804cbb0dd.
* fix semicolon lint
2022-10-03 16:07:57 -07:00
Oleksandr T
7dcf11f139
fix(50750): Object type literal with string literal property in contextual typing position causes language service error on all literal type references ( #50757 )
...
* fix(50750): skip unbound symbols from JSDoc tags in typescript
* skip contextual type checking in JsDoc for TypeScript files
2022-10-03 15:57:32 -07:00
Andrew Branch
0ce72ef6c8
Add option to OrganizeImports for removal only ( #50931 )
...
* Remove unused imports
* Lint
* Update baselines
* Make mode paramter required
* Clean up
2022-09-29 16:30:02 -07:00
Jack Works
42f9143e11
feat: codefix for for await of ( #50623 )
2022-09-29 16:13:25 -07:00
Jake Bailey
645d1cd7c1
Fix assert in addIndirectUser in FAR ( #50905 )
2022-09-22 16:47:27 -07:00
Oleksandr T
7a3de819bf
fix(49993): skip the quick fix for an expression with an enum type ( #50625 )
2022-09-21 16:59:17 -07:00
Oleksandr T
4d91204c9d
fix(37030): Expand Selection in function and arrow function skips body block ( #50711 )
...
* fix(37030): include curly braces from function body in the selection
* add missed sourceFile argument
2022-09-21 10:47:24 -07:00
Oleksandr T
1d9ab83914
fix(50866): emit modifiers from export declarations ( #50874 )
2022-09-21 09:59:15 -07:00
Andrew Branch
938a69a526
Fix import statement completions followed by interface declaration ( #50350 )
...
* Fix import statement completions followed by interface declaration
* Fix stuff
* Linty
* Fix when named imports is missing closing brace
2022-09-20 13:29:06 -07:00
Oleksandr T
e002159ad1
feat(49962): Disallow comparison against NaN ( #50626 )
...
* feat(49962): disallow comparison against NaN
* change diagnostic message
* use global NaN symbol for NaN equality comparisons
2022-09-20 13:16:44 -07:00
magic-akari
01cae69e34
fix(50796): omit questionToken in object literal method completions ( #50802 )
2022-09-16 10:06:03 -07:00
Oleksandr T
08b91f6b82
fix(50717): tsc crashes when it sees a JSDoc tag inside an @override annotation ( #50724 )
2022-09-13 12:51:17 -07:00
Ron Buckton
a4cabe725b
Support for auto-accessor fields from the Stage 3 Decorators proposal ( #49705 )
...
* Support for auto-accessor fields
* Add tests, ensure accessors are initialized in ctor
* classFields cleanup and PR feedback
2022-09-12 15:12:11 -04:00
Jake Bailey
eb40134373
Don't leave space for property access on non-integer literals ( #50703 )
2022-09-09 14:36:39 -07:00
Jake Bailey
1a1c271675
Don't remove space before dot if in property access on numeric literal ( #50695 )
...
* Add failing test
* Don't remove space before dot if in property access on numeric literal
2022-09-08 19:08:51 -07:00
Oleksandr T
bcf994996e
fix(50079): show deprecated on JSX attributes ( #50084 )
2022-09-01 16:59:29 -07:00
Oleksandr T
4579245f36
fix(50427): allow convert function expressions ( #50430 )
2022-08-26 15:43:19 -07:00
Oleksandr T
bb3a7aec11
fix(50415): Language server debug failure - Did not expect GetAccessor to have an Identifier in its trivia ( #50470 )
...
* fix(50415): clone props for get/set accessors
* add additional tests
* create helpers to create name, body, modifiers, typeName
* cleanup
2022-08-26 14:33:23 -07:00
Oleksandr T
164dddc48e
feat(7481): Operator to ensure an expression is contextually typed by, and satisfies, some type ( #46827 )
...
* feat(7481): add explicit type compatibility check with 'satisfies' expression
* Add failing test for lack of intersectioned contextual type
* Implement the behavior
* Add test corresponding to the 'if'
* Add test based on defined scenarios
* remove isExpression in favor of using type casting
* move tests from compiler to conformance folder
* update baseline
* add missing contextFlags argument
* use asserted type
* accept baseline
Co-authored-by: Ryan Cavanaugh <ryanca@microsoft.com>
2022-08-26 10:05:52 -07:00
Andrew Branch
38076df346
Fix auto import crash due to difference in paths handling ( #50419 )
2022-08-25 13:02:48 -07:00
Oleksandr T
12eb519b3f
fix(50435): Duplicate seeming Code Actions for convert const to let ( #50442 )
...
* fix(50435): omit fix all in constToLet QF
* add FixAll action
2022-08-25 13:01:46 -07:00
Danay
a08b045d2b
Jsdoc property description ( #50269 )
...
* jsdocPropertyDescription
* jsdocPropertyDescription
* jsdocPropertyDescription
* Fixes #47933
* added additional test
* added additional example
* fixed bug
* changed function to only grab the literal type
* added additional condition for literals and symbols
* added additional test cases
* Update src/services/symbolDisplay.ts
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
* addressed PR review
* addressed new PR review
Co-authored-by: Danay Fernandez Alfonso <t-danayf@microsoft.com>
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
2022-08-25 11:57:32 -07:00
Oleksandr T
8d7ad8c3ae
fix(50375): Errors for missing enum-named properties should attempt to preserve names ( #50382 )
...
* fix(50375): preserve enum-named properties
* add AllowComputedPropertyEnums option
* use bit shifting
* rename AllowComputedPropertyEnum -> WriteComputedProps
* mark WriteComputedProps as internal
* mark symbolToNode as internal
2022-08-24 11:54:44 -07:00
Oleksandr T
44ce3cff70
fix(50224): Intellisense for strings within a type's Union doesn't work properly for JSX ( #50231 )
...
* fix(50224): show string literal completions in JsxAttributeInitializer
* add feedback changes
2022-08-23 14:59:10 -07:00
Daniel Rosenwasser
7bafbeae90
Add fourslash function for validating syntactic classification ( #50362 )
2022-08-18 11:28:08 -07:00
Andrew Branch
330e33cdda
Ignore related info in diagnostic deduplication ( #50309 )
...
* Ignore related info in diagnostic deduplication
* Add another test
2022-08-16 09:28:59 -07:00
Babak K. Shandiz
f24f74eb89
🔨 Fix missing "Implement interface" code fix for mapped types with implicit keyof T in their definition ( #49999 )
...
* ⚗️ Add test to verify code fix works when implementing a mapped type with indirect keyof
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* 🔨 Add property as implementation for symbols that has no declaration
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
diff --git a/src/services/codefixes/helpers.ts b/src/services/codefixes/helpers.ts
index 94b64e57..a4c11fd5 100644
--- a/src/services/codefixes/helpers.ts
+++ b/src/services/codefixes/helpers.ts
@@ -60,21 +60,19 @@ namespace ts.codefix {
isAmbient = false,
): void {
const declarations = symbol.getDeclarations();
- if (!(declarations && declarations.length)) {
- return undefined;
- }
+ const declaration = declarations ? declarations[0] : undefined;
const checker = context.program.getTypeChecker();
const scriptTarget = getEmitScriptTarget(context.program.getCompilerOptions());
- const declaration = declarations[0];
+ const kind = declaration?.kind ?? SyntaxKind.PropertySignature;
const name = getSynthesizedDeepClone(getNameOfDeclaration(declaration), /*includeTrivia*/ false) as PropertyName;
- const visibilityModifier = createVisibilityModifier(getEffectiveModifierFlags(declaration));
+ const visibilityModifier = createVisibilityModifier(declaration ? getEffectiveModifierFlags(declaration) : ModifierFlags.None);
const modifiers = visibilityModifier ? factory.createNodeArray([visibilityModifier]) : undefined;
const type = checker.getWidenedType(checker.getTypeOfSymbolAtLocation(symbol, enclosingDeclaration));
const optional = !!(symbol.flags & SymbolFlags.Optional);
const ambient = !!(enclosingDeclaration.flags & NodeFlags.Ambient) || isAmbient;
const quotePreference = getQuotePreference(sourceFile, preferences);
- switch (declaration.kind) {
+ switch (kind) {
case SyntaxKind.PropertySignature:
case SyntaxKind.PropertyDeclaration:
const flags = quotePreference === QuotePreference.Single ? NodeBuilderFlags.UseSingleQuotesForStringLiteralType : undefined;
@@ -88,13 +86,16 @@ namespace ts.codefix {
}
addClassElement(factory.createPropertyDeclaration(
modifiers,
- name,
+ declaration ? name : symbol.getName(),
optional && (preserveOptional & PreserveOptionalFlags.Property) ? factory.createToken(SyntaxKind.QuestionToken) : undefined,
typeNode,
/*initializer*/ undefined));
break;
case SyntaxKind.GetAccessor:
case SyntaxKind.SetAccessor: {
+ if (!declarations) {
+ break;
+ }
let typeNode = checker.typeToTypeNode(type, enclosingDeclaration, /*flags*/ undefined, getNoopSymbolTrackerWithResolver(context));
const allAccessors = getAllAccessorDeclarations(declarations, declaration as AccessorDeclaration);
const orderedAccessors = allAccessors.secondAccessor
@@ -138,6 +139,10 @@ namespace ts.codefix {
// If there is more than one overload but no implementation signature
// (eg: an abstract method or interface declaration), there is a 1-1
// correspondence of declarations and signatures.
+ if (!declarations) {
+ break;
+ }
+
const signatures = checker.getSignaturesOfType(type, SignatureKind.Call);
if (!some(signatures)) {
break;
* 🔨 Improve code readability
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
diff --git a/src/services/codefixes/helpers.ts b/src/services/codefixes/helpers.ts
index 2f5c8703ab..aea0206a8a 100644
--- a/src/services/codefixes/helpers.ts
+++ b/src/services/codefixes/helpers.ts
@@ -60,7 +60,7 @@ namespace ts.codefix {
isAmbient = false,
): void {
const declarations = symbol.getDeclarations();
- const declaration = declarations ? declarations[0] : undefined;
+ const declaration = declarations?.[0];
const checker = context.program.getTypeChecker();
const scriptTarget = getEmitScriptTarget(context.program.getCompilerOptions());
const kind = declaration?.kind ?? SyntaxKind.PropertySignature;
@@ -93,9 +93,7 @@ namespace ts.codefix {
break;
case SyntaxKind.GetAccessor:
case SyntaxKind.SetAccessor: {
- if (!declarations) {
- break;
- }
+ Debug.assertIsDefined(declarations);
let typeNode = checker.typeToTypeNode(type, enclosingDeclaration, /*flags*/ undefined, getNoopSymbolTrackerWithResolver(context));
const allAccessors = getAllAccessorDeclarations(declarations, declaration as AccessorDeclaration);
const orderedAccessors = allAccessors.secondAccessor
@@ -139,10 +137,7 @@ namespace ts.codefix {
// If there is more than one overload but no implementation signature
// (eg: an abstract method or interface declaration), there is a 1-1
// correspondence of declarations and signatures.
- if (!declarations) {
- break;
- }
-
+ Debug.assertIsDefined(declarations);
const signatures = type.isUnion() ? flatMap(type.types, t => t.getCallSignatures()) : type.getCallSignatures();
if (!some(signatures)) {
break;
* 📜 Add comment regarding mapped type children's missing declaration
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
Co-authored-by: Andrew Branch <andrew@wheream.io>
2022-08-16 09:27:29 -07:00
Oleksandr T
61d8a8d7f3
fix(49629): fix crash in find-all-refs when using module.exports/export= with arrays/primitives ( #50291 )
2022-08-15 15:14:26 -07:00
Andrew Branch
bc52ff6f4b
Make React import fix not block component import fix ( #50307 )
...
* Stop React import fix from blocking component import fixes
* Add additional promote-type-only test
2022-08-15 13:13:41 -07:00
Oleksandr T
f70cb769ef
feat(49928): Provide quick fix for a missing callback function ( #49930 )
...
* feat(49928): provide quick fix for a missing callback function
* remove addFunctionDeclarationFromSignature. fix formatting
* add tests
2022-08-09 15:28:03 -07:00
Oleksandr T
19e2a310c0
feat(49834): Suggestion: filter enum member ids from their own jsdocs ( #49843 )
...
* feat(49834): omit self-referenced enum declaration in JsDoc
* change code style
2022-08-09 15:02:45 -07:00
Oleksandr T
a44354af7c
fix(50188): omit QF on function arguments ( #50189 )
2022-08-04 17:52:09 -07:00