@@ -1655,34 +1655,29 @@ namespace ts {
1655
1655
if (declaration === undefined) return Debug.fail("Declaration to checkResolvedBlockScopedVariable is undefined");
1656
1656
1657
1657
if (!(declaration.flags & NodeFlags.Ambient) && !isBlockScopedNameDeclaredBeforeUse(declaration, errorLocation)) {
1658
- let err ;
1658
+ let diagnosticMessage ;
1659
1659
const declarationName = declarationNameToString(getNameOfDeclaration(declaration));
1660
1660
if (result.flags & SymbolFlags.BlockScopedVariable) {
1661
- err = error(errorLocation, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationName);
1661
+ diagnosticMessage = error(errorLocation, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationName);
1662
1662
}
1663
1663
else if (result.flags & SymbolFlags.Class) {
1664
- err = error(errorLocation, Diagnostics.Class_0_used_before_its_declaration, declarationName);
1664
+ diagnosticMessage = error(errorLocation, Diagnostics.Class_0_used_before_its_declaration, declarationName);
1665
1665
}
1666
1666
else if (result.flags & SymbolFlags.RegularEnum) {
1667
- err = error(errorLocation, Diagnostics.Enum_0_used_before_its_declaration, declarationName);
1667
+ diagnosticMessage = error(errorLocation, Diagnostics.Enum_0_used_before_its_declaration, declarationName);
1668
1668
}
1669
1669
else {
1670
1670
Debug.assert(!!(result.flags & SymbolFlags.ConstEnum));
1671
1671
}
1672
1672
1673
- if (err) {
1674
- placeRelatedSpanOnLaterDeclaration(declarationName, declaration, err);
1673
+ if (diagnosticMessage) {
1674
+ addRelatedInfo(diagnosticMessage,
1675
+ createDiagnosticForNode(declaration, Diagnostics._0_was_declared_here, declarationName)
1676
+ );
1675
1677
}
1676
1678
}
1677
1679
}
1678
1680
1679
- function placeRelatedSpanOnLaterDeclaration(declarationName: string, declarationLocation: Declaration, diagnostic: Diagnostic) {
1680
- Debug.assert(!diagnostic.relatedInformation);
1681
- diagnostic.relatedInformation = [
1682
- createDiagnosticForNode(declarationLocation, Diagnostics._0_was_declared_here, declarationName)
1683
- ];
1684
- }
1685
-
1686
1681
/* Starting from 'initial' node walk up the parent chain until 'stopAt' node is reached.
1687
1682
* If at any point current node is equal to 'parent' node - return true.
1688
1683
* Return false if 'stopAt' node is reached or isFunctionLike(current) === true.
@@ -17476,22 +17471,24 @@ namespace ts {
17476
17471
return;
17477
17472
}
17478
17473
17479
- let err ;
17474
+ let diagnosticMessage ;
17480
17475
const declarationName = idText(right);
17481
17476
if (isInPropertyInitializer(node) &&
17482
17477
!isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right)
17483
17478
&& !isPropertyDeclaredInAncestorClass(prop)) {
17484
- err = error(right, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationName);
17479
+ diagnosticMessage = error(right, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationName);
17485
17480
}
17486
17481
else if (valueDeclaration.kind === SyntaxKind.ClassDeclaration &&
17487
17482
node.parent.kind !== SyntaxKind.TypeReference &&
17488
17483
!(valueDeclaration.flags & NodeFlags.Ambient) &&
17489
17484
!isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right)) {
17490
- err = error(right, Diagnostics.Class_0_used_before_its_declaration, declarationName);
17485
+ diagnosticMessage = error(right, Diagnostics.Class_0_used_before_its_declaration, declarationName);
17491
17486
}
17492
17487
17493
- if (err) {
17494
- placeRelatedSpanOnLaterDeclaration(declarationName, valueDeclaration, err);
17488
+ if (diagnosticMessage) {
17489
+ addRelatedInfo(diagnosticMessage,
17490
+ createDiagnosticForNode(valueDeclaration, Diagnostics._0_was_declared_here, declarationName)
17491
+ );
17495
17492
}
17496
17493
}
17497
17494
0 commit comments