mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Fix class name reference in class expr (#44877)
This commit is contained in:
parent
62f9155a9d
commit
8b496ed34c
@ -24354,7 +24354,7 @@ namespace ts {
|
||||
let container = getThisContainer(node, /*includeArrowFunctions*/ false);
|
||||
while (container.kind !== SyntaxKind.SourceFile) {
|
||||
if (container.parent === declaration) {
|
||||
if (container.kind === SyntaxKind.PropertyDeclaration && isStatic(container)) {
|
||||
if (isPropertyDeclaration(container) && isStatic(container) || isClassStaticBlockDeclaration(container)) {
|
||||
getNodeLinks(declaration).flags |= NodeCheckFlags.ClassWithConstructorReference;
|
||||
getNodeLinks(node).flags |= NodeCheckFlags.ConstructorReferenceInClass;
|
||||
}
|
||||
|
||||
41
tests/baselines/reference/classStaticBlock27.js
Normal file
41
tests/baselines/reference/classStaticBlock27.js
Normal file
@ -0,0 +1,41 @@
|
||||
//// [classStaticBlock27.ts]
|
||||
// https://github.com/microsoft/TypeScript/issues/44872
|
||||
|
||||
void class Foo {
|
||||
static prop = 1
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
Foo.prop++;
|
||||
}
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
Foo.prop++;
|
||||
}
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
Foo.prop++;
|
||||
}
|
||||
}
|
||||
|
||||
//// [classStaticBlock27.js]
|
||||
// https://github.com/microsoft/TypeScript/issues/44872
|
||||
var _a;
|
||||
void (_a = /** @class */ (function () {
|
||||
function Foo() {
|
||||
}
|
||||
return Foo;
|
||||
}()),
|
||||
_a.prop = 1,
|
||||
(function () {
|
||||
console.log(_a.prop);
|
||||
_a.prop++;
|
||||
})(),
|
||||
(function () {
|
||||
console.log(_a.prop);
|
||||
_a.prop++;
|
||||
})(),
|
||||
(function () {
|
||||
console.log(_a.prop);
|
||||
_a.prop++;
|
||||
})(),
|
||||
_a);
|
||||
52
tests/baselines/reference/classStaticBlock27.symbols
Normal file
52
tests/baselines/reference/classStaticBlock27.symbols
Normal file
@ -0,0 +1,52 @@
|
||||
=== tests/cases/conformance/classes/classStaticBlock/classStaticBlock27.ts ===
|
||||
// https://github.com/microsoft/TypeScript/issues/44872
|
||||
|
||||
void class Foo {
|
||||
>Foo : Symbol(Foo, Decl(classStaticBlock27.ts, 2, 4))
|
||||
|
||||
static prop = 1
|
||||
>prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
||||
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
||||
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
||||
>Foo.prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
>Foo : Symbol(Foo, Decl(classStaticBlock27.ts, 2, 4))
|
||||
>prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
|
||||
Foo.prop++;
|
||||
>Foo.prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
>Foo : Symbol(Foo, Decl(classStaticBlock27.ts, 2, 4))
|
||||
>prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
}
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
||||
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
||||
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
||||
>Foo.prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
>Foo : Symbol(Foo, Decl(classStaticBlock27.ts, 2, 4))
|
||||
>prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
|
||||
Foo.prop++;
|
||||
>Foo.prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
>Foo : Symbol(Foo, Decl(classStaticBlock27.ts, 2, 4))
|
||||
>prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
}
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
||||
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
||||
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
||||
>Foo.prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
>Foo : Symbol(Foo, Decl(classStaticBlock27.ts, 2, 4))
|
||||
>prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
|
||||
Foo.prop++;
|
||||
>Foo.prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
>Foo : Symbol(Foo, Decl(classStaticBlock27.ts, 2, 4))
|
||||
>prop : Symbol(Foo.prop, Decl(classStaticBlock27.ts, 2, 16))
|
||||
}
|
||||
}
|
||||
61
tests/baselines/reference/classStaticBlock27.types
Normal file
61
tests/baselines/reference/classStaticBlock27.types
Normal file
@ -0,0 +1,61 @@
|
||||
=== tests/cases/conformance/classes/classStaticBlock/classStaticBlock27.ts ===
|
||||
// https://github.com/microsoft/TypeScript/issues/44872
|
||||
|
||||
void class Foo {
|
||||
>void class Foo { static prop = 1 static { console.log(Foo.prop); Foo.prop++; } static { console.log(Foo.prop); Foo.prop++; } static { console.log(Foo.prop); Foo.prop++; }} : undefined
|
||||
>class Foo { static prop = 1 static { console.log(Foo.prop); Foo.prop++; } static { console.log(Foo.prop); Foo.prop++; } static { console.log(Foo.prop); Foo.prop++; }} : typeof Foo
|
||||
>Foo : typeof Foo
|
||||
|
||||
static prop = 1
|
||||
>prop : number
|
||||
>1 : 1
|
||||
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
>console.log(Foo.prop) : void
|
||||
>console.log : (...data: any[]) => void
|
||||
>console : Console
|
||||
>log : (...data: any[]) => void
|
||||
>Foo.prop : number
|
||||
>Foo : typeof Foo
|
||||
>prop : number
|
||||
|
||||
Foo.prop++;
|
||||
>Foo.prop++ : number
|
||||
>Foo.prop : number
|
||||
>Foo : typeof Foo
|
||||
>prop : number
|
||||
}
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
>console.log(Foo.prop) : void
|
||||
>console.log : (...data: any[]) => void
|
||||
>console : Console
|
||||
>log : (...data: any[]) => void
|
||||
>Foo.prop : number
|
||||
>Foo : typeof Foo
|
||||
>prop : number
|
||||
|
||||
Foo.prop++;
|
||||
>Foo.prop++ : number
|
||||
>Foo.prop : number
|
||||
>Foo : typeof Foo
|
||||
>prop : number
|
||||
}
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
>console.log(Foo.prop) : void
|
||||
>console.log : (...data: any[]) => void
|
||||
>console : Console
|
||||
>log : (...data: any[]) => void
|
||||
>Foo.prop : number
|
||||
>Foo : typeof Foo
|
||||
>prop : number
|
||||
|
||||
Foo.prop++;
|
||||
>Foo.prop++ : number
|
||||
>Foo.prop : number
|
||||
>Foo : typeof Foo
|
||||
>prop : number
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
// https://github.com/microsoft/TypeScript/issues/44872
|
||||
|
||||
void class Foo {
|
||||
static prop = 1
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
Foo.prop++;
|
||||
}
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
Foo.prop++;
|
||||
}
|
||||
static {
|
||||
console.log(Foo.prop);
|
||||
Foo.prop++;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user