Fix signal @convention(c) missing -> Void return type
This commit is contained in:
parent
27edea19af
commit
39f0d97269
2 changed files with 21 additions and 2 deletions
|
|
@ -27,7 +27,7 @@ extension CodeGenerator {
|
|||
let detailClause = signal.isDetailed ? ", \"\(signal.name)\"" : ""
|
||||
|
||||
if signal.parameters.isEmpty {
|
||||
let callbackReturn = inhibit ? " -> gboolean" : ""
|
||||
let callbackReturn = inhibit ? " -> gboolean" : " -> Void"
|
||||
let handlerCall = inhibit ? "let result = stored(); return result ? 1 : 0" : "stored()"
|
||||
return """
|
||||
public func connect\(signalName)(_ handler: @escaping () -> \(handlerReturnType)) -> Int {
|
||||
|
|
@ -48,7 +48,7 @@ extension CodeGenerator {
|
|||
let extractionExprs = signal.parameters.enumerated().map { i, p in
|
||||
cSignalParameterExtraction(index: i, type: p.type)
|
||||
}.joined(separator: ", ")
|
||||
let callbackReturn = inhibit ? " -> gboolean" : ""
|
||||
let callbackReturn = inhibit ? " -> gboolean" : " -> Void"
|
||||
let handlerCall = inhibit
|
||||
? "let result = stored(\(extractionExprs)); return result ? 1 : 0"
|
||||
: "stored(\(extractionExprs))"
|
||||
|
|
|
|||
|
|
@ -20,3 +20,22 @@ func testSignalWithParams() {
|
|||
#expect(connection.contains("_: Int32"))
|
||||
#expect(connection.contains("g_signal_connect_data"))
|
||||
}
|
||||
|
||||
@Test("Non-inhibit signal generates correct @convention(c) with -> Void")
|
||||
func testNonInhibitSignalConnection() {
|
||||
let signal = Signal(name: "clicked", parameters: [], returnType: .void)
|
||||
let code = CodeGenerator.generateSignalConnection(signal: signal, inhibit: false)
|
||||
#expect(code.contains("-> Void"))
|
||||
#expect(code.contains("@convention(c) (UnsafeMutableRawPointer?, UnsafeMutableRawPointer?) -> Void"))
|
||||
}
|
||||
|
||||
@Test("Parameterized non-inhibit signal generates correct @convention(c)")
|
||||
func testParameterizedNonInhibitSignalConnection() {
|
||||
let signal = Signal(name: "size-allocate", parameters: [
|
||||
Parameter(name: "width", type: .int32),
|
||||
Parameter(name: "height", type: .int32),
|
||||
], returnType: .void)
|
||||
let code = CodeGenerator.generateSignalConnection(signal: signal, inhibit: false)
|
||||
#expect(code.contains("-> Void"))
|
||||
#expect(code.contains("@convention(c) (UnsafeMutableRawPointer?, UnsafeMutableRawPointer?, UnsafeMutableRawPointer?) -> Void"))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue