@@ -64,19 +64,22 @@ extension Swift2JavaTranslator {
64
64
)
65
65
66
66
// If the result type doesn't lower to either empty (void) or a single
67
- // primitive result, make it indirect.
67
+ // result, make it indirect.
68
68
let indirectResult : Bool
69
- if !( loweredResult. javaFFMParameters. count == 0 ||
70
- ( loweredResult. javaFFMParameters. count == 1 &&
71
- loweredResult. javaFFMParameters [ 0 ] . isPrimitive) ) {
69
+ if loweredResult. cdeclParameters. count == 0 {
70
+ // void result type
71
+ indirectResult = false
72
+ } else if loweredResult. cdeclParameters. count == 1 ,
73
+ loweredResult. cdeclParameters [ 0 ] . isPrimitive {
74
+ // Primitive result type
75
+ indirectResult = false
76
+ } else {
72
77
loweredResult = try lowerParameter (
73
78
signature. result. type,
74
79
convention: . inout,
75
80
parameterName: " _result "
76
81
)
77
82
indirectResult = true
78
- } else {
79
- indirectResult = false
80
83
}
81
84
82
85
// Collect all of the lowered parameters for the @_cdecl function.
@@ -146,8 +149,7 @@ extension Swift2JavaTranslator {
146
149
)
147
150
)
148
151
)
149
- ] ,
150
- javaFFMParameters: [ . SwiftPointer]
152
+ ]
151
153
)
152
154
153
155
case . nominal( let nominal) :
@@ -190,8 +192,7 @@ extension Swift2JavaTranslator {
190
192
)
191
193
)
192
194
)
193
- ] ,
194
- javaFFMParameters: [ . SwiftPointer]
195
+ ]
195
196
)
196
197
197
198
case . tuple( let tuple) :
@@ -201,8 +202,7 @@ extension Swift2JavaTranslator {
201
202
}
202
203
return LoweredParameters (
203
204
cdeclToOriginal: . tuplify( loweredElements. map { $0. cdeclToOriginal } ) ,
204
- cdeclParameters: loweredElements. flatMap { $0. cdeclParameters } ,
205
- javaFFMParameters: loweredElements. flatMap { $0. javaFFMParameters }
205
+ cdeclParameters: loweredElements. flatMap { $0. cdeclParameters }
206
206
)
207
207
}
208
208
}
@@ -217,6 +217,9 @@ extension Swift2JavaTranslator {
217
217
218
218
// Swift types that map directly to Java primitive types.
219
219
if let primitiveType = JavaType ( swiftTypeName: nominalName) {
220
+ // FIXME: Should be using C types here, not Java types.
221
+ _ = primitiveType
222
+
220
223
// We cannot handle inout on primitive types.
221
224
if convention == . inout {
222
225
throw LoweringError . inoutNotSupported ( type)
@@ -228,11 +231,9 @@ extension Swift2JavaTranslator {
228
231
SwiftParameter (
229
232
convention: convention,
230
233
parameterName: parameterName,
231
- type: type
234
+ type: type,
235
+ isPrimitive: true
232
236
)
233
- ] ,
234
- javaFFMParameters: [
235
- ForeignValueLayout ( javaType: primitiveType) !
236
237
]
237
238
)
238
239
}
@@ -251,11 +252,9 @@ extension Swift2JavaTranslator {
251
252
SwiftParameter (
252
253
convention: convention,
253
254
parameterName: parameterName,
254
- type: type
255
+ type: type,
256
+ isPrimitive: true
255
257
)
256
- ] ,
257
- javaFFMParameters: [
258
- . SwiftInt
259
258
]
260
259
)
261
260
}
@@ -351,8 +350,7 @@ extension Swift2JavaTranslator {
351
350
352
351
return LoweredParameters (
353
352
cdeclToOriginal: cdeclToOriginal,
354
- cdeclParameters: lowered. map ( \. 0 ) ,
355
- javaFFMParameters: lowered. map ( \. 1 )
353
+ cdeclParameters: lowered. map ( \. 0 )
356
354
)
357
355
}
358
356
}
@@ -405,12 +403,6 @@ struct LoweredParameters: Equatable {
405
403
406
404
/// The lowering of the parameters at the C level in Swift.
407
405
var cdeclParameters : [ SwiftParameter ]
408
-
409
- /// The lowering of the parameters at the C level as expressed for Java's
410
- /// foreign function and memory interface.
411
- ///
412
- /// The elements in this array match up with those of 'cdeclParameters'.
413
- var javaFFMParameters : [ ForeignValueLayout ]
414
406
}
415
407
416
408
extension LoweredParameters {
0 commit comments