mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 16:38:05 -06:00
Do not lookup name of default property symbols from the symbols value declaration (#28711)
This commit is contained in:
parent
52a46c6793
commit
54bbf74f62
@ -9410,8 +9410,13 @@ namespace ts {
|
||||
if (!(getDeclarationModifierFlagsFromSymbol(prop) & ModifierFlags.NonPublicAccessibilityModifier)) {
|
||||
let type = getLateBoundSymbol(prop).nameType;
|
||||
if (!type && !isKnownSymbol(prop)) {
|
||||
const name = prop.valueDeclaration && getNameOfDeclaration(prop.valueDeclaration) as PropertyName;
|
||||
type = name && getLiteralTypeFromPropertyName(name) || getLiteralType(symbolName(prop));
|
||||
if (prop.escapedName === InternalSymbolName.Default) {
|
||||
type = getLiteralType("default");
|
||||
}
|
||||
else {
|
||||
const name = prop.valueDeclaration && getNameOfDeclaration(prop.valueDeclaration) as PropertyName;
|
||||
type = name && getLiteralTypeFromPropertyName(name) || getLiteralType(symbolName(prop));
|
||||
}
|
||||
}
|
||||
if (type && type.flags & include) {
|
||||
return type;
|
||||
@ -20873,6 +20878,7 @@ namespace ts {
|
||||
if (hasSyntheticDefault) {
|
||||
const memberTable = createSymbolTable();
|
||||
const newSymbol = createSymbol(SymbolFlags.Alias, InternalSymbolName.Default);
|
||||
newSymbol.nameType = getLiteralType("default");
|
||||
newSymbol.target = resolveSymbol(symbol);
|
||||
memberTable.set(InternalSymbolName.Default, newSymbol);
|
||||
const anonymousSymbol = createSymbol(SymbolFlags.TypeLiteral, InternalSymbolName.Type);
|
||||
|
||||
27
tests/baselines/reference/keyofModuleObjectHasCorrectKeys.js
Normal file
27
tests/baselines/reference/keyofModuleObjectHasCorrectKeys.js
Normal file
@ -0,0 +1,27 @@
|
||||
//// [tests/cases/compiler/keyofModuleObjectHasCorrectKeys.ts] ////
|
||||
|
||||
//// [example.ts]
|
||||
export default function add(a: number, b: number) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
//// [test.ts]
|
||||
import * as example from './example';
|
||||
|
||||
declare function test<T>(object: T, method: keyof T): void;
|
||||
|
||||
test(example, "default");
|
||||
|
||||
|
||||
//// [example.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
function add(a, b) {
|
||||
return a + b;
|
||||
}
|
||||
exports["default"] = add;
|
||||
//// [test.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var example = require("./example");
|
||||
test(example, "default");
|
||||
@ -0,0 +1,27 @@
|
||||
=== tests/cases/compiler/example.ts ===
|
||||
export default function add(a: number, b: number) {
|
||||
>add : Symbol(add, Decl(example.ts, 0, 0))
|
||||
>a : Symbol(a, Decl(example.ts, 0, 28))
|
||||
>b : Symbol(b, Decl(example.ts, 0, 38))
|
||||
|
||||
return a + b;
|
||||
>a : Symbol(a, Decl(example.ts, 0, 28))
|
||||
>b : Symbol(b, Decl(example.ts, 0, 38))
|
||||
}
|
||||
|
||||
=== tests/cases/compiler/test.ts ===
|
||||
import * as example from './example';
|
||||
>example : Symbol(example, Decl(test.ts, 0, 6))
|
||||
|
||||
declare function test<T>(object: T, method: keyof T): void;
|
||||
>test : Symbol(test, Decl(test.ts, 0, 37))
|
||||
>T : Symbol(T, Decl(test.ts, 2, 22))
|
||||
>object : Symbol(object, Decl(test.ts, 2, 25))
|
||||
>T : Symbol(T, Decl(test.ts, 2, 22))
|
||||
>method : Symbol(method, Decl(test.ts, 2, 35))
|
||||
>T : Symbol(T, Decl(test.ts, 2, 22))
|
||||
|
||||
test(example, "default");
|
||||
>test : Symbol(test, Decl(test.ts, 0, 37))
|
||||
>example : Symbol(example, Decl(test.ts, 0, 6))
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
=== tests/cases/compiler/example.ts ===
|
||||
export default function add(a: number, b: number) {
|
||||
>add : (a: number, b: number) => number
|
||||
>a : number
|
||||
>b : number
|
||||
|
||||
return a + b;
|
||||
>a + b : number
|
||||
>a : number
|
||||
>b : number
|
||||
}
|
||||
|
||||
=== tests/cases/compiler/test.ts ===
|
||||
import * as example from './example';
|
||||
>example : typeof example
|
||||
|
||||
declare function test<T>(object: T, method: keyof T): void;
|
||||
>test : <T>(object: T, method: keyof T) => void
|
||||
>object : T
|
||||
>method : keyof T
|
||||
|
||||
test(example, "default");
|
||||
>test(example, "default") : void
|
||||
>test : <T>(object: T, method: keyof T) => void
|
||||
>example : typeof example
|
||||
>"default" : "default"
|
||||
|
||||
11
tests/cases/compiler/keyofModuleObjectHasCorrectKeys.ts
Normal file
11
tests/cases/compiler/keyofModuleObjectHasCorrectKeys.ts
Normal file
@ -0,0 +1,11 @@
|
||||
// @filename: example.ts
|
||||
export default function add(a: number, b: number) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
// @filename: test.ts
|
||||
import * as example from './example';
|
||||
|
||||
declare function test<T>(object: T, method: keyof T): void;
|
||||
|
||||
test(example, "default");
|
||||
Loading…
x
Reference in New Issue
Block a user