@@ -120,7 +120,7 @@ enum IgnoreDirective: CustomStringConvertible {
120120  /// because Windows did not have full support for regex literals until Swift 5.10.
121121  fileprivate  func  makeRegex( )  ->  RegexExpression  { 
122122    let  pattern  =  #"^\s*\/\/\s*"#  +  description +  #"(?:\s*:\s*(?<ruleNames>.+))?$"# 
123-     return  try ! Regex ( pattern) 
123+     return  try ! Regex ( pattern) . matchingSemantics ( . unicodeScalar ) 
124124  } 
125125} 
126126
@@ -142,14 +142,14 @@ fileprivate class RuleStatusCollectionVisitor: SyntaxVisitor {
142142    case  subset( ruleNames:  [ String ] ) 
143143  } 
144144
145-   /// Computes source locations and ranges for syntax nodes in a source file.
146-   private  let  sourceLocationConverter :  SourceLocationConverter 
147- 
148145  /// Cached regex object for ignoring rules at the node.
149-   private  let  ignoreRegex :  IgnoreDirective . RegexExpression 
146+   private  static   let  ignoreRegex :  IgnoreDirective . RegexExpression   =   IgnoreDirective . node . makeRegex ( ) 
150147
151148  /// Cached regex object for ignoring rules at the file.
152-   private  let  ignoreFileRegex :  IgnoreDirective . RegexExpression 
149+   private  static  let  ignoreFileRegex :  IgnoreDirective . RegexExpression  =  IgnoreDirective . file. makeRegex ( ) 
150+ 
151+   /// Computes source locations and ranges for syntax nodes in a source file.
152+   private  let  sourceLocationConverter :  SourceLocationConverter 
153153
154154  /// Stores the source ranges in which all rules are ignored.
155155  var  allRulesIgnoredRanges :  [ SourceRange ]  =  [ ] 
@@ -158,9 +158,6 @@ fileprivate class RuleStatusCollectionVisitor: SyntaxVisitor {
158158  var  ruleMap :  [ String :  [ SourceRange ] ]  =  [ : ] 
159159
160160  init ( sourceLocationConverter:  SourceLocationConverter )  { 
161-     ignoreRegex =  IgnoreDirective . node. makeRegex ( ) 
162-     ignoreFileRegex =  IgnoreDirective . file. makeRegex ( ) 
163- 
164161    self . sourceLocationConverter =  sourceLocationConverter
165162    super. init ( viewMode:  . sourceAccurate) 
166163  } 
@@ -176,23 +173,23 @@ fileprivate class RuleStatusCollectionVisitor: SyntaxVisitor {
176173      afterLeadingTrivia:  false , 
177174      afterTrailingTrivia:  true 
178175    ) 
179-     return  appendRuleStatus ( from:  firstToken,  of:  sourceRange,  using:  ignoreFileRegex) 
176+     return  appendRuleStatus ( from:  firstToken,  of:  sourceRange,  using:  Self . ignoreFileRegex) 
180177  } 
181178
182179  override func  visit( _ node:  CodeBlockItemSyntax )  ->  SyntaxVisitorContinueKind  { 
183180    guard  let  firstToken =  node. firstToken ( viewMode:  . sourceAccurate)  else  { 
184181      return  . visitChildren
185182    } 
186183    let  sourceRange  =  node. sourceRange ( converter:  sourceLocationConverter) 
187-     return  appendRuleStatus ( from:  firstToken,  of:  sourceRange,  using:  ignoreRegex) 
184+     return  appendRuleStatus ( from:  firstToken,  of:  sourceRange,  using:  Self . ignoreRegex) 
188185  } 
189186
190187  override func  visit( _ node:  MemberBlockItemSyntax )  ->  SyntaxVisitorContinueKind  { 
191188    guard  let  firstToken =  node. firstToken ( viewMode:  . sourceAccurate)  else  { 
192189      return  . visitChildren
193190    } 
194191    let  sourceRange  =  node. sourceRange ( converter:  sourceLocationConverter) 
195-     return  appendRuleStatus ( from:  firstToken,  of:  sourceRange,  using:  ignoreRegex) 
192+     return  appendRuleStatus ( from:  firstToken,  of:  sourceRange,  using:  Self . ignoreRegex) 
196193  } 
197194
198195  // MARK: - Helper Methods
0 commit comments