Skip to content

Commit e8329d2

Browse files
committedFeb 19, 2025·
Parse: Avoid including DiagnosticsParse.h in Parser.h.
This prevents the include of DiagnosticsParse.h from leaking into `.cpp` files in libraries besides Parse.

File tree

9 files changed

+31
-24
lines changed

9 files changed

+31
-24
lines changed
 

‎include/swift/Parse/Parser.h

+1-24
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
#include "swift/AST/ASTContext.h"
2121
#include "swift/AST/ASTNode.h"
22-
#include "swift/AST/DiagnosticsParse.h"
2322
#include "swift/AST/Expr.h"
2423
#include "swift/AST/LayoutConstraint.h"
2524
#include "swift/AST/LifetimeDependence.h"
@@ -543,29 +542,7 @@ class Parser {
543542
/// diagnose it if not permitted in this mode.
544543
/// \param diagnoseDollarPrefix Whether to diagnose dollar-prefixed
545544
/// identifiers in addition to a standalone '$'.
546-
void diagnoseDollarIdentifier(const Token &tok,
547-
bool diagnoseDollarPrefix) {
548-
assert(tok.getText()[0] == '$');
549-
550-
// If '$' is not guarded by backticks, offer
551-
// to replace it with '`$`'.
552-
if (Tok.getRawText() == "$") {
553-
diagnose(Tok.getLoc(), diag::standalone_dollar_identifier)
554-
.fixItReplace(Tok.getLoc(), "`$`");
555-
return;
556-
}
557-
558-
if (!diagnoseDollarPrefix)
559-
return;
560-
561-
if (tok.getText().size() == 1 || Context.LangOpts.EnableDollarIdentifiers ||
562-
isInSILMode() || L->isSwiftInterface() ||
563-
isInMacroExpansion(tok.getLoc()))
564-
return;
565-
566-
diagnose(tok.getLoc(), diag::dollar_identifier_decl,
567-
Context.getIdentifier(tok.getText()));
568-
}
545+
void diagnoseDollarIdentifier(const Token &tok, bool diagnoseDollarPrefix);
569546

570547
/// Retrieve the location just past the end of the previous
571548
/// source location.

‎lib/Parse/ParseIfConfig.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "swift/AST/ASTBridging.h"
2020
#include "swift/AST/ASTVisitor.h"
2121
#include "swift/AST/DiagnosticSuppression.h"
22+
#include "swift/AST/DiagnosticsParse.h"
2223
#include "swift/Basic/Assertions.h"
2324
#include "swift/Basic/Defer.h"
2425
#include "swift/Basic/LangOptions.h"

‎lib/Parse/ParsePattern.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "swift/Parse/Parser.h"
1818

1919
#include "swift/AST/ASTWalker.h"
20+
#include "swift/AST/DiagnosticsParse.h"
2021
#include "swift/AST/GenericParamList.h"
2122
#include "swift/AST/Initializer.h"
2223
#include "swift/AST/Module.h"

‎lib/Parse/ParseRequests.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "swift/AST/AvailabilitySpec.h"
2020
#include "swift/AST/Decl.h"
2121
#include "swift/AST/DeclContext.h"
22+
#include "swift/AST/DiagnosticsParse.h"
2223
#include "swift/AST/Module.h"
2324
#include "swift/AST/SourceFile.h"
2425
#include "swift/AST/TypeRepr.h"

‎lib/Parse/ParseStmt.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "swift/AST/Attr.h"
1919
#include "swift/AST/AvailabilitySpec.h"
2020
#include "swift/AST/Decl.h"
21+
#include "swift/AST/DiagnosticsParse.h"
2122
#include "swift/AST/FileUnit.h"
2223
#include "swift/Basic/Assertions.h"
2324
#include "swift/Basic/Defer.h"

‎lib/Parse/ParseType.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include "swift/AST/ASTWalker.h"
1818
#include "swift/AST/Attr.h"
19+
#include "swift/AST/DiagnosticsParse.h"
1920
#include "swift/AST/GenericParamList.h"
2021
#include "swift/AST/SourceFile.h" // only for isMacroSignatureFile
2122
#include "swift/AST/TypeRepr.h"

‎lib/Parse/Parser.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,29 @@ SourceLoc Parser::getEndOfPreviousLoc() const {
576576
return Lexer::getLocForEndOfToken(SourceMgr, PreviousLoc);
577577
}
578578

579+
void Parser::diagnoseDollarIdentifier(const Token &tok,
580+
bool diagnoseDollarPrefix) {
581+
assert(tok.getText()[0] == '$');
582+
583+
// If '$' is not guarded by backticks, offer to replace it with '`$`'.
584+
if (Tok.getRawText() == "$") {
585+
diagnose(Tok.getLoc(), diag::standalone_dollar_identifier)
586+
.fixItReplace(Tok.getLoc(), "`$`");
587+
return;
588+
}
589+
590+
if (!diagnoseDollarPrefix)
591+
return;
592+
593+
if (tok.getText().size() == 1 || Context.LangOpts.EnableDollarIdentifiers ||
594+
isInSILMode() || L->isSwiftInterface() ||
595+
isInMacroExpansion(tok.getLoc()))
596+
return;
597+
598+
diagnose(tok.getLoc(), diag::dollar_identifier_decl,
599+
Context.getIdentifier(tok.getText()));
600+
}
601+
579602
SourceLoc Parser::consumeAttributeLParen() {
580603
SourceLoc LastTokenEndLoc = getEndOfPreviousLoc();
581604
if (LastTokenEndLoc != Tok.getLoc() && !isInSILMode()) {

‎lib/SIL/Parser/SILParser.h

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
#include "SILParserState.h"
1717

18+
#include "swift/AST/DiagnosticsParse.h"
1819
#include "swift/Parse/Parser.h"
1920
#include "swift/SIL/SILCoverageMap.h"
2021
#include "swift/Sema/SILTypeResolutionContext.h"

‎lib/Sema/TypeCheckMacros.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "swift/AST/ASTNode.h"
2626
#include "swift/AST/ASTPrinter.h"
2727
#include "swift/AST/DiagnosticsFrontend.h"
28+
#include "swift/AST/DiagnosticsParse.h"
2829
#include "swift/AST/Expr.h"
2930
#include "swift/AST/FreestandingMacroExpansion.h"
3031
#include "swift/AST/MacroDefinition.h"

0 commit comments

Comments
 (0)
Please sign in to comment.