@@ -41,14 +41,6 @@ extension Swift2JavaTranslator {
41
41
_ signature: SwiftFunctionSignature
42
42
) throws -> LoweredFunctionSignature {
43
43
// Lower all of the parameters.
44
- let loweredSelf = try signature. selfParameter. map { selfParameter in
45
- try lowerParameter (
46
- selfParameter. type,
47
- convention: selfParameter. convention,
48
- parameterName: selfParameter. parameterName ?? " self "
49
- )
50
- }
51
-
52
44
let loweredParameters = try signature. parameters. enumerated ( ) . map { ( index, param) in
53
45
try lowerParameter (
54
46
param. type,
@@ -83,13 +75,17 @@ extension Swift2JavaTranslator {
83
75
indirectResult = true
84
76
}
85
77
78
+ let loweredSelf = try signature. selfParameter. map { selfParameter in
79
+ try lowerParameter (
80
+ selfParameter. type,
81
+ convention: selfParameter. convention,
82
+ parameterName: selfParameter. parameterName ?? " self "
83
+ )
84
+ }
85
+
86
86
// Collect all of the lowered parameters for the @_cdecl function.
87
87
var allLoweredParameters : [ LoweredParameters ] = [ ]
88
88
var cdeclLoweredParameters : [ SwiftParameter ] = [ ]
89
- if let loweredSelf {
90
- allLoweredParameters. append ( loweredSelf)
91
- cdeclLoweredParameters. append ( contentsOf: loweredSelf. cdeclParameters)
92
- }
93
89
allLoweredParameters. append ( contentsOf: loweredParameters)
94
90
cdeclLoweredParameters. append (
95
91
contentsOf: loweredParameters. flatMap { $0. cdeclParameters }
@@ -110,6 +106,11 @@ extension Swift2JavaTranslator {
110
106
fatalError ( " Improper lowering of result for \( signature) " )
111
107
}
112
108
109
+ if let loweredSelf {
110
+ allLoweredParameters. append ( loweredSelf)
111
+ cdeclLoweredParameters. append ( contentsOf: loweredSelf. cdeclParameters)
112
+ }
113
+
113
114
let cdeclSignature = SwiftFunctionSignature (
114
115
isStaticOrClass: false ,
115
116
selfParameter: nil ,
@@ -532,9 +533,10 @@ extension LoweredFunctionSignature {
532
533
// Lower "self", if there is one.
533
534
let parametersToLower : ArraySlice < LoweredParameters >
534
535
let cdeclToOriginalSelf : ExprSyntax ?
535
- if let originalSelfParam = original. selfParameter {
536
- cdeclToOriginalSelf = parameters [ 0 ] . cdeclToOriginalArgumentExpr ( isSelf: true , value: originalSelfParam. parameterName ?? " self " )
537
- parametersToLower = parameters [ 1 ... ]
536
+ if let originalSelfParam = original. selfParameter,
537
+ let selfParameter = parameters. last {
538
+ cdeclToOriginalSelf = selfParameter. cdeclToOriginalArgumentExpr ( isSelf: true , value: originalSelfParam. parameterName ?? " self " )
539
+ parametersToLower = parameters. dropLast ( )
538
540
} else {
539
541
cdeclToOriginalSelf = nil
540
542
parametersToLower = parameters [ ... ]
0 commit comments