Skip to content

Commit e3c947f

Browse files
committed
Just dont reassign valueDeclaration
1 parent 338f3c0 commit e3c947f

2 files changed

Lines changed: 4 additions & 7 deletions

File tree

src/compiler/checker.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13230,7 +13230,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1323013230
* @param lateSymbols The late-bound symbols of the parent.
1323113231
* @param decl The member to bind.
1323213232
*/
13233-
function lateBindMember(parent: Symbol, earlySymbols: SymbolTable | undefined, lateSymbols: Map<__String, TransientSymbol>, decl: LateBoundDeclaration | LateBoundBinaryExpressionDeclaration, isFromAssignmentDeclarationMember = false) {
13233+
function lateBindMember(parent: Symbol, earlySymbols: SymbolTable | undefined, lateSymbols: Map<__String, TransientSymbol>, decl: LateBoundDeclaration | LateBoundBinaryExpressionDeclaration) {
1323413234
Debug.assert(!!decl.symbol, "The member is expected to have a symbol.");
1323513235
const links = getNodeLinks(decl);
1323613236
if (!links.resolvedSymbol) {
@@ -13245,13 +13245,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1324513245

1324613246
// Get or add a late-bound symbol for the member. This allows us to merge late-bound accessor declarations.
1324713247
let lateSymbol = lateSymbols.get(memberName);
13248-
if (isFromAssignmentDeclarationMember && lateSymbol) {
13249-
return links.resolvedSymbol = lateSymbol;
13250-
}
1325113248
if (!lateSymbol) lateSymbols.set(memberName, lateSymbol = createSymbol(SymbolFlags.None, memberName, CheckFlags.Late));
1325213249

1325313250
// Report an error if there's a symbol declaration with the same name and conflicting flags.
13254-
const earlySymbol = earlySymbols?.get(memberName);
13251+
const earlySymbol = earlySymbols && earlySymbols.get(memberName);
1325513252
// Duplicate property declarations of classes are checked in checkClassForDuplicateDeclarations.
1325613253
if (!(parent.flags & SymbolFlags.Class) && lateSymbol.flags & getExcludedSymbolFlags(symbolFlags)) {
1325713254
// If we have an existing early-bound member, combine its declarations so that we can
@@ -13343,7 +13340,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1334313340
|| assignmentKind === AssignmentDeclarationKind.Prototype; // A straight `Prototype` assignment probably can never have a computed name
1334413341
if (isStatic === !isInstanceMember) {
1334513342
if (hasLateBindableName(member)) {
13346-
lateBindMember(symbol, earlySymbols, lateSymbols, member, /*isFromAssignmentDeclarationMember*/ true);
13343+
lateBindMember(symbol, earlySymbols, lateSymbols, member);
1334713344
}
1334813345
}
1334913346
}

tests/baselines/reference/lateBoundMethodNameAssigmentJS.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export class MyClass {
1414

1515
//// [lateBoundMethodNameAssigmentJS.d.ts]
1616
export class MyClass {
17-
[_symbol](): Promise<void>;
17+
[_symbol]: () => Promise<void>;
1818
}
1919
declare const _symbol: unique symbol;
2020
export {};

0 commit comments

Comments
 (0)