Skip to content

Commit f7dfc7f

Browse files
Merge pull request #25359 from Microsoft/useBeforeDeclareRelatedSpans
Related error spans on "used before declared" error messages
2 parents dc2dc8d + f675798 commit f7dfc7f

File tree

50 files changed

+145
-8
lines changed

Some content is hidden

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

50 files changed

+145
-8
lines changed

src/compiler/checker.ts

+26-7
Original file line numberDiff line numberDiff line change
@@ -1655,14 +1655,25 @@ namespace ts {
16551655
if (declaration === undefined) return Debug.fail("Declaration to checkResolvedBlockScopedVariable is undefined");
16561656

16571657
if (!(declaration.flags & NodeFlags.Ambient) && !isBlockScopedNameDeclaredBeforeUse(declaration, errorLocation)) {
1658+
let diagnosticMessage;
1659+
const declarationName = declarationNameToString(getNameOfDeclaration(declaration));
16581660
if (result.flags & SymbolFlags.BlockScopedVariable) {
1659-
error(errorLocation, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationNameToString(getNameOfDeclaration(declaration)));
1661+
diagnosticMessage = error(errorLocation, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationName);
16601662
}
16611663
else if (result.flags & SymbolFlags.Class) {
1662-
error(errorLocation, Diagnostics.Class_0_used_before_its_declaration, declarationNameToString(getNameOfDeclaration(declaration)));
1664+
diagnosticMessage = error(errorLocation, Diagnostics.Class_0_used_before_its_declaration, declarationName);
16631665
}
16641666
else if (result.flags & SymbolFlags.RegularEnum) {
1665-
error(errorLocation, Diagnostics.Enum_0_used_before_its_declaration, declarationNameToString(getNameOfDeclaration(declaration)));
1667+
diagnosticMessage = error(errorLocation, Diagnostics.Enum_0_used_before_its_declaration, declarationName);
1668+
}
1669+
else {
1670+
Debug.assert(!!(result.flags & SymbolFlags.ConstEnum));
1671+
}
1672+
1673+
if (diagnosticMessage) {
1674+
addRelatedInfo(diagnosticMessage,
1675+
createDiagnosticForNode(declaration, Diagnostics._0_was_declared_here, declarationName)
1676+
);
16661677
}
16671678
}
16681679
}
@@ -17460,16 +17471,24 @@ namespace ts {
1746017471
return;
1746117472
}
1746217473

17474+
let diagnosticMessage;
17475+
const declarationName = idText(right);
1746317476
if (isInPropertyInitializer(node) &&
1746417477
!isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right)
1746517478
&& !isPropertyDeclaredInAncestorClass(prop)) {
17466-
error(right, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, idText(right));
17479+
diagnosticMessage = error(right, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationName);
1746717480
}
1746817481
else if (valueDeclaration.kind === SyntaxKind.ClassDeclaration &&
1746917482
node.parent.kind !== SyntaxKind.TypeReference &&
1747017483
!(valueDeclaration.flags & NodeFlags.Ambient) &&
1747117484
!isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right)) {
17472-
error(right, Diagnostics.Class_0_used_before_its_declaration, idText(right));
17485+
diagnosticMessage = error(right, Diagnostics.Class_0_used_before_its_declaration, declarationName);
17486+
}
17487+
17488+
if (diagnosticMessage) {
17489+
addRelatedInfo(diagnosticMessage,
17490+
createDiagnosticForNode(valueDeclaration, Diagnostics._0_was_declared_here, declarationName)
17491+
);
1747317492
}
1747417493
}
1747517494

@@ -19083,8 +19102,8 @@ namespace ts {
1908319102
if (importNode && !isImportCall(importNode)) {
1908419103
const sigs = getSignaturesOfType(getTypeOfSymbol(getSymbolLinks(apparentType.symbol).target!), kind);
1908519104
if (!sigs || !sigs.length) return;
19086-
diagnostic.relatedInformation = diagnostic.relatedInformation || [];
19087-
diagnostic.relatedInformation.push(createDiagnosticForNode(importNode, Diagnostics.Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead));
19105+
Debug.assert(!diagnostic.relatedInformation);
19106+
diagnostic.relatedInformation = [createDiagnosticForNode(importNode, Diagnostics.Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead)];
1908819107
}
1908919108
}
1909019109

src/compiler/diagnosticMessages.json

+4
Original file line numberDiff line numberDiff line change
@@ -2397,6 +2397,10 @@
23972397
"category": "Error",
23982398
"code": 2727
23992399
},
2400+
"'{0}' was declared here.": {
2401+
"category": "Error",
2402+
"code": 2728
2403+
},
24002404

24012405
"Import declaration '{0}' is using private name '{1}'.": {
24022406
"category": "Error",

tests/baselines/reference/ES5For-of17.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ tests/cases/conformance/statements/for-ofStatements/ES5For-of17.ts(3,20): error
77
for (let v of [v]) {
88
~
99
!!! error TS2448: Block-scoped variable 'v' used before its declaration.
10+
!!! related TS2728 tests/cases/conformance/statements/for-ofStatements/ES5For-of17.ts:3:14: 'v' was declared here.
1011
var x = v;
1112
v++;
1213
}

tests/baselines/reference/ES5For-of20.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ tests/cases/conformance/statements/for-ofStatements/ES5For-of20.ts(4,15): error
88
for (let v of [v]) {
99
~
1010
!!! error TS2448: Block-scoped variable 'v' used before its declaration.
11+
!!! related TS2728 tests/cases/conformance/statements/for-ofStatements/ES5For-of20.ts:3:14: 'v' was declared here.
1112
const v;
1213
~
1314
!!! error TS1155: 'const' declarations must be initialized.

tests/baselines/reference/ModuleAndClassWithSameNameAndCommonRoot.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ tests/cases/conformance/internalModules/DeclarationMerging/simple.ts(2,31): erro
3232
export var Instance = new A();
3333
~
3434
!!! error TS2449: Class 'A' used before its declaration.
35+
!!! related TS2728 tests/cases/conformance/internalModules/DeclarationMerging/simple.ts:6:7: 'A' was declared here.
3536
}
3637

3738
// duplicate identifier

tests/baselines/reference/api/tsserverlibrary.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -5418,6 +5418,7 @@ declare namespace ts {
54185418
Class_name_cannot_be_Object_when_targeting_ES5_with_module_0: DiagnosticMessage;
54195419
Cannot_find_lib_definition_for_0: DiagnosticMessage;
54205420
Cannot_find_lib_definition_for_0_Did_you_mean_1: DiagnosticMessage;
5421+
_0_was_declared_here: DiagnosticMessage;
54215422
Import_declaration_0_is_using_private_name_1: DiagnosticMessage;
54225423
Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: DiagnosticMessage;
54235424
Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: DiagnosticMessage;

tests/baselines/reference/blockScopedBindingUsedBeforeDef.errors.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@ tests/cases/compiler/blockScopedBindingUsedBeforeDef.ts(8,7): error TS2448: Bloc
88
for (let {[a]: a} of [{ }]) continue;
99
~
1010
!!! error TS2448: Block-scoped variable 'a' used before its declaration.
11+
!!! related TS2728 tests/cases/compiler/blockScopedBindingUsedBeforeDef.ts:2:16: 'a' was declared here.
1112

1213
// 2:
1314
for (let {[a]: a} = { }; false; ) continue;
1415
~
1516
!!! error TS2448: Block-scoped variable 'a' used before its declaration.
17+
!!! related TS2728 tests/cases/compiler/blockScopedBindingUsedBeforeDef.ts:5:16: 'a' was declared here.
1618

1719
// 3:
1820
let {[b]: b} = { };
1921
~
20-
!!! error TS2448: Block-scoped variable 'b' used before its declaration.
22+
!!! error TS2448: Block-scoped variable 'b' used before its declaration.
23+
!!! related TS2728 tests/cases/compiler/blockScopedBindingUsedBeforeDef.ts:8:11: 'b' was declared here.

tests/baselines/reference/blockScopedVariablesUseBeforeDef.errors.txt

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ tests/cases/compiler/blockScopedVariablesUseBeforeDef.ts(100,12): error TS2448:
99
let a = x;
1010
~
1111
!!! error TS2448: Block-scoped variable 'x' used before its declaration.
12+
!!! related TS2728 tests/cases/compiler/blockScopedVariablesUseBeforeDef.ts:3:9: 'x' was declared here.
1213
let x;
1314
}
1415

@@ -67,6 +68,7 @@ tests/cases/compiler/blockScopedVariablesUseBeforeDef.ts(100,12): error TS2448:
6768
static a = x;
6869
~
6970
!!! error TS2448: Block-scoped variable 'x' used before its declaration.
71+
!!! related TS2728 tests/cases/compiler/blockScopedVariablesUseBeforeDef.ts:60:9: 'x' was declared here.
7072
}
7173
let x;
7274
}
@@ -76,6 +78,7 @@ tests/cases/compiler/blockScopedVariablesUseBeforeDef.ts(100,12): error TS2448:
7678
static a = x;
7779
~
7880
!!! error TS2448: Block-scoped variable 'x' used before its declaration.
81+
!!! related TS2728 tests/cases/compiler/blockScopedVariablesUseBeforeDef.ts:67:9: 'x' was declared here.
7982
}
8083
let x;
8184
}
@@ -113,6 +116,7 @@ tests/cases/compiler/blockScopedVariablesUseBeforeDef.ts(100,12): error TS2448:
113116
a: x
114117
~
115118
!!! error TS2448: Block-scoped variable 'x' used before its declaration.
119+
!!! related TS2728 tests/cases/compiler/blockScopedVariablesUseBeforeDef.ts:102:9: 'x' was declared here.
116120
}
117121
let x
118122
}

tests/baselines/reference/circularImportAlias.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ tests/cases/conformance/internalModules/importDeclarations/circularImportAlias.t
99
export class D extends a.C {
1010
~
1111
!!! error TS2449: Class 'C' used before its declaration.
12+
!!! related TS2728 tests/cases/conformance/internalModules/importDeclarations/circularImportAlias.ts:11:18: 'C' was declared here.
1213
id: number;
1314
}
1415
}

tests/baselines/reference/classAbstractInstantiations2.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
4545
var x : any = C;
4646
~
4747
!!! error TS2449: Class 'C' used before its declaration.
48+
!!! related TS2728 tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts:26:7: 'C' was declared here.
4849
new x; // okay -- undefined behavior at runtime
4950

5051
class C extends B { } // error -- not declared abstract

tests/baselines/reference/classDeclarationShouldBeOutOfScopeInComputedNames.errors.txt

+4
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,18 @@ tests/cases/compiler/classDeclarationShouldBeOutOfScopeInComputedNames.ts(8,6):
1212
static readonly [A.p1] = 0;
1313
~
1414
!!! error TS2449: Class 'A' used before its declaration.
15+
!!! related TS2728 tests/cases/compiler/classDeclarationShouldBeOutOfScopeInComputedNames.ts:1:7: 'A' was declared here.
1516
static [A.p2]() { return 0 };
1617
~
1718
!!! error TS2449: Class 'A' used before its declaration.
19+
!!! related TS2728 tests/cases/compiler/classDeclarationShouldBeOutOfScopeInComputedNames.ts:1:7: 'A' was declared here.
1820
[A.p1]() { }
1921
~
2022
!!! error TS2449: Class 'A' used before its declaration.
23+
!!! related TS2728 tests/cases/compiler/classDeclarationShouldBeOutOfScopeInComputedNames.ts:1:7: 'A' was declared here.
2124
[A.p2] = 0
2225
~
2326
!!! error TS2449: Class 'A' used before its declaration.
27+
!!! related TS2728 tests/cases/compiler/classDeclarationShouldBeOutOfScopeInComputedNames.ts:1:7: 'A' was declared here.
2428
}
2529

tests/baselines/reference/classExtendsItselfIndirectly.errors.txt

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla
1414
!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression.
1515
~
1616
!!! error TS2449: Class 'E' used before its declaration.
17+
!!! related TS2728 tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts:5:7: 'E' was declared here.
1718

1819
class D extends C { bar: string; }
1920
~
@@ -28,6 +29,7 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla
2829
!!! error TS2506: 'C2' is referenced directly or indirectly in its own base expression.
2930
~~
3031
!!! error TS2449: Class 'E2' used before its declaration.
32+
!!! related TS2728 tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts:11:7: 'E2' was declared here.
3133

3234
class D2<T> extends C2<T> { bar: T; }
3335
~~

tests/baselines/reference/classExtendsItselfIndirectly2.errors.txt

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla
1414
!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression.
1515
~
1616
!!! error TS2449: Class 'E' used before its declaration.
17+
!!! related TS2728 tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts:9:18: 'E' was declared here.
1718

1819
module M {
1920
export class D extends C { bar: string; }
@@ -34,6 +35,7 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla
3435
!!! error TS2506: 'C2' is referenced directly or indirectly in its own base expression.
3536
~~
3637
!!! error TS2449: Class 'E2' used before its declaration.
38+
!!! related TS2728 tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts:20:22: 'E2' was declared here.
3739

3840
module P {
3941
export class D2<T> extends C2<T> { bar: T; }

tests/baselines/reference/classInheritence.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ tests/cases/compiler/classInheritence.ts(2,7): error TS2506: 'A' is referenced d
66
class B extends A { }
77
~
88
!!! error TS2449: Class 'A' used before its declaration.
9+
!!! related TS2728 tests/cases/compiler/classInheritence.ts:2:7: 'A' was declared here.
910
class A extends A { }
1011
~
1112
!!! error TS2506: 'A' is referenced directly or indirectly in its own base expression.

tests/baselines/reference/classMergedWithInterfaceMultipleBasesNoError.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ tests/cases/compiler/classMergedWithInterfaceMultipleBasesNoError.ts(8,30): erro
1212
readonly observer = this.handleIntersection;
1313
~~~~~~~~~~~~~~~~~~
1414
!!! error TS2448: Block-scoped variable 'handleIntersection' used before its declaration.
15+
!!! related TS2728 tests/cases/compiler/classMergedWithInterfaceMultipleBasesNoError.ts:9:14: 'handleIntersection' was declared here.
1516
readonly handleIntersection = () => { }
1617
}

tests/baselines/reference/classOrder2.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ tests/cases/compiler/classOrder2.ts(1,17): error TS2449: Class 'B' used before i
55
class A extends B {
66
~
77
!!! error TS2449: Class 'B' used before its declaration.
8+
!!! related TS2728 tests/cases/compiler/classOrder2.ts:7:7: 'B' was declared here.
89

910
foo() { this.bar(); }
1011

tests/baselines/reference/classSideInheritance2.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ tests/cases/compiler/classSideInheritance2.ts(7,23): error TS2449: Class 'TextBa
1111
class SubText extends TextBase {
1212
~~~~~~~~
1313
!!! error TS2449: Class 'TextBase' used before its declaration.
14+
!!! related TS2728 tests/cases/compiler/classSideInheritance2.ts:14:7: 'TextBase' was declared here.
1415

1516
constructor(text: IText, span: TextSpan) {
1617
super();

tests/baselines/reference/classStaticInitializersUsePropertiesBeforeDeclaration.errors.txt

+5
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,21 @@ tests/cases/compiler/classStaticInitializersUsePropertiesBeforeDeclaration.ts(4,
1010
static enumMember = Enum.A;
1111
~~~~
1212
!!! error TS2450: Enum 'Enum' used before its declaration.
13+
!!! related TS2728 tests/cases/compiler/classStaticInitializersUsePropertiesBeforeDeclaration.ts:7:6: 'Enum' was declared here.
1314
~
1415
!!! error TS2448: Block-scoped variable 'A' used before its declaration.
16+
!!! related TS2728 tests/cases/compiler/classStaticInitializersUsePropertiesBeforeDeclaration.ts:8:5: 'A' was declared here.
1517
static objLiteralMember = ObjLiteral.A;
1618
~~~~~~~~~~
1719
!!! error TS2448: Block-scoped variable 'ObjLiteral' used before its declaration.
20+
!!! related TS2728 tests/cases/compiler/classStaticInitializersUsePropertiesBeforeDeclaration.ts:11:7: 'ObjLiteral' was declared here.
1821
~
1922
!!! error TS2448: Block-scoped variable 'A' used before its declaration.
23+
!!! related TS2728 tests/cases/compiler/classStaticInitializersUsePropertiesBeforeDeclaration.ts:12:5: 'A' was declared here.
2024
static namespaceMember = Namespace.A;
2125
~
2226
!!! error TS2448: Block-scoped variable 'A' used before its declaration.
27+
!!! related TS2728 tests/cases/compiler/classStaticInitializersUsePropertiesBeforeDeclaration.ts:16:16: 'A' was declared here.
2328
}
2429

2530
enum Enum {

tests/baselines/reference/complexClassRelationships.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ tests/cases/compiler/complexClassRelationships.ts(2,23): error TS2449: Class 'Ba
66
class Derived extends Base {
77
~~~~
88
!!! error TS2449: Class 'Base' used before its declaration.
9+
!!! related TS2728 tests/cases/compiler/complexClassRelationships.ts:13:7: 'Base' was declared here.
910
public static createEmpty(): Derived {
1011
var item = new Derived();
1112
return item;

tests/baselines/reference/computedPropertyNamesWithStaticProperty.errors.txt

+3
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@ tests/cases/conformance/es6/computedProperties/computedPropertyNamesWithStaticPr
99
get [C.staticProp]() {
1010
~
1111
!!! error TS2449: Class 'C' used before its declaration.
12+
!!! related TS2728 tests/cases/conformance/es6/computedProperties/computedPropertyNamesWithStaticProperty.ts:1:7: 'C' was declared here.
1213
return "hello";
1314
}
1415
set [C.staticProp](x: string) {
1516
~
1617
!!! error TS2449: Class 'C' used before its declaration.
18+
!!! related TS2728 tests/cases/conformance/es6/computedProperties/computedPropertyNamesWithStaticProperty.ts:1:7: 'C' was declared here.
1719
var y = x;
1820
}
1921
[C.staticProp]() { }
2022
~
2123
!!! error TS2449: Class 'C' used before its declaration.
24+
!!! related TS2728 tests/cases/conformance/es6/computedProperties/computedPropertyNamesWithStaticProperty.ts:1:7: 'C' was declared here.
2225
}

tests/baselines/reference/constDeclarations-useBeforeDefinition.errors.txt

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ tests/cases/compiler/constDeclarations-useBeforeDefinition.ts(8,5): error TS2448
77
c1;
88
~~
99
!!! error TS2448: Block-scoped variable 'c1' used before its declaration.
10+
!!! related TS2728 tests/cases/compiler/constDeclarations-useBeforeDefinition.ts:3:11: 'c1' was declared here.
1011
const c1 = 0;
1112
}
1213

@@ -15,6 +16,7 @@ tests/cases/compiler/constDeclarations-useBeforeDefinition.ts(8,5): error TS2448
1516
v1;
1617
~~
1718
!!! error TS2448: Block-scoped variable 'v1' used before its declaration.
19+
!!! related TS2728 tests/cases/compiler/constDeclarations-useBeforeDefinition.ts:9:11: 'v1' was declared here.
1820
const v1 = 0;
1921
}
2022

tests/baselines/reference/constDeclarations-useBeforeDefinition2.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ tests/cases/compiler/file1.ts(1,1): error TS2448: Block-scoped variable 'c' used
55
c;
66
~
77
!!! error TS2448: Block-scoped variable 'c' used before its declaration.
8+
!!! related TS2728 tests/cases/compiler/file2.ts:1:7: 'c' was declared here.
89

910
==== tests/cases/compiler/file2.ts (0 errors) ====
1011
const c = 0;

tests/baselines/reference/derivedClasses.errors.txt

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ tests/cases/compiler/derivedClasses.ts(1,19): error TS2449: Class 'Color' used b
55
class Red extends Color {
66
~~~~~
77
!!! error TS2449: Class 'Color' used before its declaration.
8+
!!! related TS2728 tests/cases/compiler/derivedClasses.ts:8:7: 'Color' was declared here.
89
public shade() {
910
var getHue = () => { return this.hue(); };
1011
return getHue() + " red";

tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.errors.txt

+2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAss
99
const [c, d = c, e = e] = [1]; // error for e = e
1010
~
1111
!!! error TS2448: Block-scoped variable 'e' used before its declaration.
12+
!!! related TS2728 tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment3.ts:2:18: 'e' was declared here.
1213
const [f, g = f, h = i, i = f] = [1]; // error for h = i
1314
~
1415
!!! error TS2448: Block-scoped variable 'i' used before its declaration.
16+
!!! related TS2728 tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment3.ts:3:25: 'i' was declared here.
1517

1618
(function ([a, b = a]) { // ok
1719
})([1]);

0 commit comments

Comments
 (0)