Skip to content

Commit e99e6e2

Browse files
authored
fix(60186): Quick fix "add missing properties" fails with enums from other module (#60191)
1 parent 460be92 commit e99e6e2

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/services/codefixes/fixAddMissingMember.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,8 @@ function tryGetValueFromType(context: CodeFixContextBase, checker: TypeChecker,
681681
}
682682
if (type.flags & TypeFlags.EnumLike) {
683683
const enumMember = type.symbol.exports ? firstOrUndefinedIterator(type.symbol.exports.values()) : type.symbol;
684-
const name = checker.symbolToExpression(type.symbol.parent ? type.symbol.parent : type.symbol, SymbolFlags.Value, /*enclosingDeclaration*/ undefined, /*flags*/ NodeBuilderFlags.UseFullyQualifiedType);
684+
const symbol = type.symbol.parent && type.symbol.parent.flags & SymbolFlags.RegularEnum ? type.symbol.parent : type.symbol;
685+
const name = checker.symbolToExpression(symbol, SymbolFlags.Value, /*enclosingDeclaration*/ undefined, /*flags*/ NodeBuilderFlags.UseFullyQualifiedType);
685686
return enumMember === undefined || name === undefined ? factory.createNumericLiteral(0) : factory.createPropertyAccessExpression(name, checker.symbolToString(enumMember));
686687
}
687688
if (type.flags & TypeFlags.NumberLiteral) {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/// <reference path="fourslash.ts" />
2+
3+
// @filename: E.ts
4+
////export enum E {
5+
//// A,
6+
//// B,
7+
////}
8+
9+
// @filename: foo.ts
10+
////import { E } from "./E"
11+
////type T = {
12+
//// e: E,
13+
////}
14+
////[|const t: T = { }|]
15+
16+
goTo.file('foo.ts');
17+
verify.codeFix({
18+
index: 0,
19+
description: ts.Diagnostics.Add_missing_properties.message,
20+
newRangeContent:
21+
`const t: T = {
22+
e: E.A
23+
}`,
24+
});

0 commit comments

Comments
 (0)