Skip to content

Commit 3caec2c

Browse files
Cherry pick PR 57887 into release-5.4 (#57898)
Co-authored-by: Wesley Wigham <wewigham@microsoft.com>
1 parent 896947e commit 3caec2c

File tree

160 files changed

+494
-384
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+494
-384
lines changed

src/compiler/checker.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6306,7 +6306,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
63066306
}
63076307
}
63086308

6309-
function isEntityNameVisible(entityName: EntityNameOrEntityNameExpression, enclosingDeclaration: Node): SymbolVisibilityResult {
6309+
function getMeaningOfEntityNameReference(entityName: EntityNameOrEntityNameExpression): SymbolFlags {
63106310
// get symbol of the first identifier of the entityName
63116311
let meaning: SymbolFlags;
63126312
if (
@@ -6319,7 +6319,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
63196319
}
63206320
else if (
63216321
entityName.kind === SyntaxKind.QualifiedName || entityName.kind === SyntaxKind.PropertyAccessExpression ||
6322-
entityName.parent.kind === SyntaxKind.ImportEqualsDeclaration
6322+
entityName.parent.kind === SyntaxKind.ImportEqualsDeclaration ||
6323+
(entityName.parent.kind === SyntaxKind.QualifiedName && (entityName.parent as QualifiedName).left === entityName) ||
6324+
(entityName.parent.kind === SyntaxKind.PropertyAccessExpression && (entityName.parent as PropertyAccessExpression).expression === entityName) ||
6325+
(entityName.parent.kind === SyntaxKind.ElementAccessExpression && (entityName.parent as ElementAccessExpression).expression === entityName)
63236326
) {
63246327
// Left identifier from type reference or TypeAlias
63256328
// Entity name of the import declaration
@@ -6329,7 +6332,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
63296332
// Type Reference or TypeAlias entity = Identifier
63306333
meaning = SymbolFlags.Type;
63316334
}
6335+
return meaning;
6336+
}
63326337

6338+
function isEntityNameVisible(entityName: EntityNameOrEntityNameExpression, enclosingDeclaration: Node): SymbolVisibilityResult {
6339+
const meaning = getMeaningOfEntityNameReference(entityName);
63336340
const firstIdentifier = getFirstIdentifier(entityName);
63346341
const symbol = resolveName(enclosingDeclaration, firstIdentifier.escapedText, meaning, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined, /*isUse*/ false);
63356342
if (symbol && symbol.flags & SymbolFlags.TypeParameter && meaning & SymbolFlags.Type) {
@@ -8512,13 +8519,14 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
85128519
introducesError = true;
85138520
return { introducesError, node };
85148521
}
8515-
const sym = resolveEntityName(leftmost, SymbolFlags.All, /*ignoreErrors*/ true, /*dontResolveAlias*/ true);
8522+
const meaning = getMeaningOfEntityNameReference(node);
8523+
const sym = resolveEntityName(leftmost, meaning, /*ignoreErrors*/ true, /*dontResolveAlias*/ true);
85168524
if (sym) {
8517-
if (isSymbolAccessible(sym, context.enclosingDeclaration, SymbolFlags.All, /*shouldComputeAliasesToMakeVisible*/ false).accessibility !== SymbolAccessibility.Accessible) {
8525+
if (isSymbolAccessible(sym, context.enclosingDeclaration, meaning, /*shouldComputeAliasesToMakeVisible*/ false).accessibility !== SymbolAccessibility.Accessible) {
85188526
introducesError = true;
85198527
}
85208528
else {
8521-
context.tracker.trackSymbol(sym, context.enclosingDeclaration, SymbolFlags.All);
8529+
context.tracker.trackSymbol(sym, context.enclosingDeclaration, meaning);
85228530
includePrivateSymbol?.(sym);
85238531
}
85248532
if (isIdentifier(node)) {

tests/baselines/reference/ParameterList5.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
=== ParameterList5.ts ===
44
function A(): (public B) => C {
5-
>A : () => (B: any) => C
5+
>A : () => (public B) => C
66
>B : any
77
}

tests/baselines/reference/annotatedThisPropertyInitializerDoesntNarrow.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// from webpack/lib/Compilation.js and filed at #26427
55
/** @param {{ [s: string]: number }} map */
66
function mappy(map) {}
7-
>mappy : (map: { [s: string]: number; }) => void
7+
>mappy : (map: { [s: string]: number;}) => void
88
>map : { [s: string]: number; }
99

1010
export class C {

tests/baselines/reference/anonterface.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module M {
88
>C : C
99

1010
m(fn:{ (n:number):string; },n2:number):string {
11-
>m : (fn: (n: number) => string, n2: number) => string
11+
>m : (fn: { (n: number): string;}, n2: number) => string
1212
>fn : (n: number) => string
1313
>n : number
1414
>n2 : number

tests/baselines/reference/anyAssignabilityInInheritance.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ var r3 = foo3(a); // any
168168
>a : any
169169

170170
declare function foo12(x: (x) => number): (x) => number;
171-
>foo12 : { (x: (x: any) => number): (x: any) => number; (x: any): any; }
171+
>foo12 : { (x: (x) => number): (x) => number; (x: any): any; }
172172
>x : (x: any) => number
173173
>x : any
174174
>x : any

tests/baselines/reference/arrayLiteralContextualType.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ function foo(animals: IAnimal[]) { }
3535
>animals : IAnimal[]
3636

3737
function bar(animals: { [n: number]: IAnimal }) { }
38-
>bar : (animals: { [n: number]: IAnimal; }) => void
38+
>bar : (animals: { [n: number]: IAnimal;}) => void
3939
>animals : { [n: number]: IAnimal; }
4040
>n : number
4141

tests/baselines/reference/assignmentCompatWithCallSignatures3.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ var a17: {
130130

131131
};
132132
var a18: {
133-
>a18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }
133+
>a18 : { (x: { (a: number): number; (a: string): string;}): any[]; (x: { (a: boolean): boolean; (a: Date): Date;}): any[]; }
134134

135135
(x: {
136136
>x : { (a: number): number; (a: string): string; }

tests/baselines/reference/assignmentCompatWithCallSignatures4.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ module Errors {
8181
>b : number
8282

8383
var a16: {
84-
>a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }
84+
>a16 : { (x: { (a: number): number; (a?: number): number;}): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean;}): boolean[]; }
8585

8686
(x: {
8787
>x : { (a: number): number; (a?: number): number; }

tests/baselines/reference/assignmentCompatWithConstructSignatures3.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ var a17: {
130130

131131
};
132132
var a18: {
133-
>a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }
133+
>a18 : { new (x: { new (a: number): number; new (a: string): string;}): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date;}): any[]; }
134134

135135
new (x: {
136136
>x : { new (a: number): number; new (a: string): string; }

tests/baselines/reference/assignmentCompatWithConstructSignatures4.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ module Errors {
8181
>b : number
8282

8383
var a16: {
84-
>a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }
84+
>a16 : { new (x: { new (a: number): number; new (a?: number): number;}): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean;}): boolean[]; }
8585

8686
new (x: {
8787
>x : { new (a: number): number; new (a?: number): number; }

0 commit comments

Comments
 (0)