Skip to content

Commit 97299cc

Browse files
committed
cdecl lowering: move indirect returns after self
This is meant to match the existing thunk generation.
1 parent cebc48e commit 97299cc

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

Sources/JExtractSwift/CDeclLowering/Swift2JavaTranslator+FunctionLowering.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@ extension Swift2JavaTranslator {
113113
contentsOf: loweredParameters.flatMap { $0.cdeclParameters }
114114
)
115115

116+
// Lower self.
117+
if let loweredSelf {
118+
allLoweredParameters.append(loweredSelf)
119+
cdeclLoweredParameters.append(contentsOf: loweredSelf.cdeclParameters)
120+
}
121+
122+
// Lower indirect results.
116123
let cdeclResult: SwiftResult
117124
if indirectResult {
118125
cdeclLoweredParameters.append(
@@ -128,11 +135,6 @@ extension Swift2JavaTranslator {
128135
fatalError("Improper lowering of result for \(signature)")
129136
}
130137

131-
if let loweredSelf {
132-
allLoweredParameters.append(loweredSelf)
133-
cdeclLoweredParameters.append(contentsOf: loweredSelf.cdeclParameters)
134-
}
135-
136138
let cdeclSignature = SwiftFunctionSignature(
137139
selfParameter: nil,
138140
parameters: cdeclLoweredParameters,

Tests/JExtractSwiftTests/FunctionLoweringTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ final class FunctionLoweringTests {
7878
enclosingType: "Point",
7979
expectedCDecl: """
8080
@_cdecl("c_shifted")
81-
func c_shifted(_ delta_0: Double, _ delta_1: Double, _ _result: UnsafeMutableRawPointer, _ self: UnsafeRawPointer) {
81+
func c_shifted(_ delta_0: Double, _ delta_1: Double, _ self: UnsafeRawPointer, _ _result: UnsafeMutableRawPointer) {
8282
_result.assumingMemoryBound(to: Point.self).pointee = self.assumingMemoryBound(to: Point.self).pointee.shifted(by: (delta_0, delta_1))
8383
}
8484
""",
85-
expectedCFunction: "void c_shifted(double delta_0, double delta_1, void* _result, void const* self)"
85+
expectedCFunction: "void c_shifted(double delta_0, double delta_1, void const* self, void* _result)"
8686
)
8787
}
8888

0 commit comments

Comments
 (0)