@@ -616,6 +616,33 @@ public class ParseDiagnosticsGenerator: SyntaxAnyVisitor {
616616 return . visitChildren
617617 }
618618
619+ public override func visit( _ node: AvailabilityLabeledArgumentSyntax ) -> SyntaxVisitorContinueKind {
620+ if shouldSkip ( node) {
621+ return . skipChildren
622+ }
623+
624+ if case . string( let value) = node. value {
625+ let rawDelimiters : [ TokenSyntax ] = [ value. unexpectedBeforeOpenQuote, value. unexpectedAfterCloseQuote]
626+ . compactMap { $0? . onlyPresentToken ( where: { $0. tokenKind. isRawStringDelimiter } ) }
627+
628+ if !rawDelimiters. isEmpty {
629+ addDiagnostic (
630+ node. label,
631+ ForbiddenExtendedEscapingString ( token: node. label) ,
632+ fixIts: [
633+ FixIt (
634+ message: RemoveNodesFixIt ( rawDelimiters) ,
635+ changes: rawDelimiters. map { . makeMissing( $0) }
636+ )
637+ ] ,
638+ handledNodes: rawDelimiters. map { $0. id }
639+ )
640+ }
641+ }
642+
643+ return . visitChildren
644+ }
645+
619646 public override func visit( _ node: AvailabilityVersionRestrictionSyntax ) -> SyntaxVisitorContinueKind {
620647 if shouldSkip ( node) {
621648 return . skipChildren
@@ -1465,6 +1492,33 @@ public class ParseDiagnosticsGenerator: SyntaxAnyVisitor {
14651492 return . visitChildren
14661493 }
14671494
1495+ public override func visit( _ node: PoundSourceLocationSyntax ) -> SyntaxVisitorContinueKind {
1496+ if shouldSkip ( node) {
1497+ return . skipChildren
1498+ }
1499+
1500+ if let args = node. args, args. fileName. hasError {
1501+ var rawDelimiters : [ TokenSyntax ] = [ ]
1502+ if let unexpectedBeforeOpenQuote = args. fileName. unexpectedBeforeOpenQuote? . onlyPresentToken ( where: { $0. tokenKind. isRawStringDelimiter } ) {
1503+ rawDelimiters += [ unexpectedBeforeOpenQuote]
1504+ }
1505+
1506+ if let unexpectedAfterCloseQuote = args. fileName. unexpectedAfterCloseQuote? . onlyPresentToken ( where: { $0. tokenKind. isRawStringDelimiter } ) {
1507+ rawDelimiters += [ unexpectedAfterCloseQuote]
1508+ }
1509+
1510+ if !rawDelimiters. isEmpty {
1511+ addDiagnostic (
1512+ node,
1513+ ForbiddenExtendedEscapingString ( token: args. fileLabel) ,
1514+ handledNodes: rawDelimiters. map { $0. id }
1515+ )
1516+ }
1517+ }
1518+
1519+ return . visitChildren
1520+ }
1521+
14681522 public override func visit( _ node: SourceFileSyntax ) -> SyntaxVisitorContinueKind {
14691523 if shouldSkip ( node) {
14701524 return . skipChildren
0 commit comments