@@ -33,13 +33,12 @@ struct FuncSignature {
3333 name = string. substring ( with: nameResult. range ( at: 1 ) )
3434
3535 let paramsRange = try string. paramsRange ( )
36- let rawParams = string . substring ( with : paramsRange)
36+ let rawParams = String ( string [ paramsRange] )
3737 let paramsString = rawParams. paramsStrings
3838 params = paramsString. map { paramString in
3939 try ? FuncParam ( string: paramString. trimed)
4040 } . flatMap { $0 }
41-
42- let stringAfterLastParam = string. substring ( from: string. index ( string. startIndex, offsetBy: paramsRange. toRange ( ) !. upperBound) )
41+ let stringAfterLastParam = String ( string [ paramsRange. upperBound... ] )
4342
4443 guard let returnTypeResult = " ->(.*)$ " . firstMatch ( in: stringAfterLastParam) else {
4544 returnType = SwiftType . Void
@@ -51,12 +50,12 @@ struct FuncSignature {
5150}
5251
5352private extension String {
54- func paramsRange( ) throws -> NSRange {
53+ func paramsRange( ) throws -> Range < String . Index > {
5554 var startParenthesisCount = 0
5655 var endParenthesisCount = 0
5756 var paramsStartIndex : Int !
5857 var paramsEndIndex : Int !
59- characters . enumerated ( ) . forEach { index, char in
58+ enumerated ( ) . forEach { index, char in
6059 if char == " ( " {
6160 startParenthesisCount += 1
6261 if paramsStartIndex == nil {
@@ -73,18 +72,20 @@ private extension String {
7372 }
7473 }
7574
76- guard var startIndex = paramsStartIndex, let endIndex = paramsEndIndex else {
75+ guard var startIntIndex = paramsStartIndex, let endIntIndex = paramsEndIndex else {
7776 throw NSError . sourceInvalid
7877 }
79- startIndex += 1
80- return NSRange ( location: startIndex, length: endIndex- startIndex)
78+ startIntIndex += 1
79+ let startIndex = index ( self . startIndex, offsetBy: startIntIndex)
80+ let endIndex = index ( self . startIndex, offsetBy: endIntIndex)
81+ return startIndex..< endIndex
8182 }
8283
8384 var paramsStrings : [ String ] {
8485 var parenthesisDiff = 0
8586 var paramEnd = 0
8687 var paramsString = [ String] ( )
87- characters . enumerated ( ) . forEach { index, character in
88+ enumerated ( ) . forEach { index, character in
8889 if character == " ( " {
8990 parenthesisDiff += 1
9091 }
@@ -95,11 +96,11 @@ private extension String {
9596 let start = self . index ( startIndex, offsetBy: paramEnd)
9697 let end = self . index ( startIndex, offsetBy: index)
9798 paramEnd = index + 1
98- paramsString. append ( substring ( with : Range ( uncheckedBounds : ( lower : start, upper : end) ) ) )
99+ paramsString. append ( String ( self [ start..< end] ) )
99100 }
100101 }
101102 let lastStart = index ( startIndex, offsetBy: paramEnd)
102- paramsString. append ( substring ( with : Range ( uncheckedBounds : ( lower : lastStart, upper : endIndex) ) ) )
103+ paramsString. append ( String ( self [ lastStart..< endIndex] ) )
103104 return paramsString. filter { !$0. isEmpty }
104105 }
105106}
0 commit comments