@@ -19,7 +19,7 @@ public class ObjectiveCFocusedCodeFinder: KnownLanguageFocusedCodeFinder<
1919 ) {
2020 super. init ( maxFocusedCodeLineCount: maxFocusedCodeLineCount)
2121 }
22-
22+
2323 public func parseSyntaxTree( from document: Document ) -> ASTTree ? {
2424 let parser = ASTParser ( language: . objectiveC)
2525 return parser. parse ( document. content)
@@ -40,9 +40,9 @@ public class ObjectiveCFocusedCodeFinder: KnownLanguageFocusedCodeFinder<
4040 } ,
4141 range: range
4242 )
43-
43+
4444 let nodes = visitor. findScopeHierarchy ( )
45-
45+
4646 return . init( nodes: nodes, includes: visitor. includes, imports: visitor. imports)
4747 }
4848
@@ -230,7 +230,7 @@ public class ObjectiveCFocusedCodeFinder: KnownLanguageFocusedCodeFinder<
230230 _ node: ASTNode ,
231231 textProvider: @escaping TextProvider
232232 ) -> ( nodeInfo: NodeInfo ? , more: Bool ) {
233- parseSignatureBeforeBody ( node, textProvider: textProvider)
233+ parseSignatureBeforeBody ( node, fieldNameForName : " selector " , textProvider: textProvider)
234234 }
235235
236236 func parseFunctionDefinitionNode(
@@ -261,9 +261,10 @@ public class ObjectiveCFocusedCodeFinder: KnownLanguageFocusedCodeFinder<
261261extension ObjectiveCFocusedCodeFinder {
262262 func parseSignatureBeforeBody(
263263 _ node: ASTNode ,
264+ fieldNameForName: String = " name " ,
264265 textProvider: @escaping TextProvider
265266 ) -> ( nodeInfo: NodeInfo ? , more: Bool ) {
266- let name = node. contentOfChild ( withFieldName: " name " , textProvider: textProvider)
267+ let name = node. contentOfChild ( withFieldName: fieldNameForName , textProvider: textProvider)
267268 let (
268269 _,
269270 signatureRange,
@@ -303,30 +304,28 @@ extension ASTNode {
303304 return ( nil , range, pointRange)
304305 }
305306
306- let range = self . range. excluding ( postfixNode. range)
307- let pointRange = self . pointRange. excluding ( postfixNode. pointRange)
307+ let range = self . range. subtracting ( postfixNode. range)
308+ let pointRange = self . pointRange. subtracting ( postfixNode. pointRange)
308309 return ( postfixNode, range, pointRange)
309310 }
310311}
311312
312313extension NSRange {
313- func excluding ( _ range: NSRange ) -> NSRange {
314- let start = max ( location , range . location )
315- let end = min ( location + length , range . location + range. length )
314+ func subtracting ( _ range: NSRange ) -> NSRange {
315+ let start = lowerBound
316+ let end = Swift . max ( lowerBound , Swift . min ( upperBound , range. lowerBound ) )
316317 return NSRange ( location: start, length: end - start)
317318 }
318319}
319320
320321extension Range where Bound == Point {
321- func excluding( _ range: Range < Bound > ) -> Range < Bound > {
322- let start = Point (
323- row: Swift . max ( lowerBound. row, range. lowerBound. row) ,
324- column: Swift . max ( lowerBound. column, range. lowerBound. column)
325- )
326- let end = Point (
327- row: Swift . min ( upperBound. row, range. upperBound. row) ,
328- column: Swift . min ( upperBound. column, range. upperBound. column)
329- )
322+ func subtracting( _ range: Range < Bound > ) -> Range < Bound > {
323+ let start = lowerBound
324+ let end = if range. lowerBound >= upperBound {
325+ upperBound
326+ } else {
327+ Swift . max ( range. lowerBound, lowerBound)
328+ }
330329 return Range ( uncheckedBounds: ( start, end) )
331330 }
332331}
0 commit comments