@@ -474,20 +474,14 @@ extension PathHierarchy.PathParser {
474474 return PathComponent ( full: String ( original) , name: name, disambiguation: . typeSignature( parameterTypes: parameterTypes, returnTypes: nil ) )
475475 } else if scanner. hasPrefix ( " -> " ) {
476476 _ = scanner. take ( 2 )
477- let returnTypes = scanner. scanArguments ( ) // The return types (tuple or not) can be parsed the same as the arguments
477+ let returnTypes = scanner. scanReturnTypes ( )
478478 return PathComponent ( full: String ( original) , name: name, disambiguation: . typeSignature( parameterTypes: parameterTypes, returnTypes: returnTypes) )
479479 }
480480 } else if let parameterStartRange = possibleDisambiguationText. range ( of: " -> " ) {
481481 let name = original [ ..< parameterStartRange. lowerBound]
482482 var scanner = StringScanner ( original [ parameterStartRange. upperBound... ] )
483483
484- let returnTypes : [ Substring ]
485- if scanner. peek ( ) == " ( " {
486- _ = scanner. take ( ) // the leading parenthesis
487- returnTypes = scanner. scanArguments ( ) // The return types (tuple or not) can be parsed the same as the arguments
488- } else {
489- returnTypes = [ scanner. takeAll ( ) ]
490- }
484+ let returnTypes = scanner. scanReturnTypes ( )
491485 return PathComponent ( full: String ( original) , name: name, disambiguation: . typeSignature( parameterTypes: nil , returnTypes: returnTypes) )
492486 }
493487
@@ -541,6 +535,15 @@ private struct StringScanner {
541535
542536 // MARK: Parsing argument types by scanning
543537
538+ mutating func scanReturnTypes( ) -> [ Substring ] {
539+ if peek ( ) == " ( " {
540+ _ = take ( ) // the leading parenthesis
541+ return scanArguments ( ) // The return types (tuple or not) can be parsed the same as the arguments
542+ } else {
543+ return [ takeAll ( ) ]
544+ }
545+ }
546+
544547 mutating func scanArguments( ) -> [ Substring ] {
545548 guard peek ( ) != " ) " else {
546549 _ = take ( ) // drop the ")"
0 commit comments