From 207f74bc6cc284721d8a6974e0b2e005479d0889 Mon Sep 17 00:00:00 2001 From: "Henrik G. Olsson" Date: Tue, 17 Dec 2024 11:39:32 +0100 Subject: [PATCH] Add missing colon in _SwiftifyImport function call --- .../SwiftMacros/SwiftifyImportMacro.swift | 7 ++- .../CountedBy/NamedParams.swift | 58 +++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 test/Macros/SwiftifyImport/CountedBy/NamedParams.swift diff --git a/lib/Macros/Sources/SwiftMacros/SwiftifyImportMacro.swift b/lib/Macros/Sources/SwiftMacros/SwiftifyImportMacro.swift index e534d9de47fce..0862b1a2285dc 100644 --- a/lib/Macros/Sources/SwiftMacros/SwiftifyImportMacro.swift +++ b/lib/Macros/Sources/SwiftMacros/SwiftifyImportMacro.swift @@ -235,8 +235,8 @@ struct FunctionCallBuilder: BoundsCheckedThunkBuilder { return pointerArgs[i] ?? ExprSyntax(declref) } let labels: [TokenSyntax?] = base.signature.parameterClause.parameters.map { param in - let firstName = param.firstName - if firstName.trimmed.text == "_" { + let firstName = param.firstName.trimmed + if firstName.text == "_" { return nil } return firstName @@ -247,7 +247,8 @@ struct FunctionCallBuilder: BoundsCheckedThunkBuilder { if i < args.count - 1 { comma = .commaToken() } - return LabeledExprSyntax(label: label, expression: arg, trailingComma: comma) + let colon: TokenSyntax? = label != nil ? .colonToken() : nil + return LabeledExprSyntax(label: label, colon: colon, expression: arg, trailingComma: comma) } return ExprSyntax( FunctionCallExprSyntax( diff --git a/test/Macros/SwiftifyImport/CountedBy/NamedParams.swift b/test/Macros/SwiftifyImport/CountedBy/NamedParams.swift new file mode 100644 index 0000000000000..a8197a4b02664 --- /dev/null +++ b/test/Macros/SwiftifyImport/CountedBy/NamedParams.swift @@ -0,0 +1,58 @@ +// REQUIRES: swift_swift_parser + +// RUN: %target-swift-frontend %s -swift-version 5 -module-name main -disable-availability-checking -typecheck -plugin-path %swift-plugin-dir -dump-macro-expansions 2>&1 | %FileCheck --match-full-lines %s + +@_SwiftifyImport(.countedBy(pointer: 1, count: "len")) +func ptrNamed(ptr: UnsafePointer, _ len: CInt) { +} + +@_SwiftifyImport(.countedBy(pointer: 1, count: "len")) +func ptrNamedOther(buf ptr: UnsafePointer, _ len: CInt) { +} + +@_SwiftifyImport(.countedBy(pointer: 1, count: "len")) +func lenNamed(_ ptr: UnsafePointer, len: CInt) { +} + +@_SwiftifyImport(.countedBy(pointer: 1, count: "len")) +func lenNamedOther(_ ptr: UnsafePointer, count len: CInt) { +} + +@_SwiftifyImport(.countedBy(pointer: 1, count: "len")) +func allNamed(ptr: UnsafePointer, len: CInt) { +} + +@_SwiftifyImport(.countedBy(pointer: 1, count: "len")) +func allNamedOther(buf ptr: UnsafePointer, count len: CInt) { +} + +// CHECK: @_alwaysEmitIntoClient +// CHECK-NEXT: func ptrNamed(ptr: UnsafeBufferPointer) { +// CHECK-NEXT: return ptrNamed(ptr: ptr.baseAddress!, CInt(exactly: ptr.count)!) +// CHECK-NEXT: } + +// CHECK: @_alwaysEmitIntoClient +// CHECK-NEXT: func ptrNamedOther(buf ptr: UnsafeBufferPointer) { +// CHECK-NEXT: return ptrNamedOther(buf: ptr.baseAddress!, CInt(exactly: ptr.count)!) +// CHECK-NEXT: } + +// CHECK: @_alwaysEmitIntoClient +// CHECK-NEXT: func lenNamed(_ ptr: UnsafeBufferPointer) { +// CHECK-NEXT: return lenNamed(ptr.baseAddress!, len: CInt(exactly: ptr.count)!) +// CHECK-NEXT: } + +// CHECK: @_alwaysEmitIntoClient +// CHECK-NEXT: func lenNamedOther(_ ptr: UnsafeBufferPointer) { +// CHECK-NEXT: return lenNamedOther(ptr.baseAddress!, count: CInt(exactly: ptr.count)!) +// CHECK-NEXT: } + +// CHECK: @_alwaysEmitIntoClient +// CHECK-NEXT: func allNamed(ptr: UnsafeBufferPointer) { +// CHECK-NEXT: return allNamed(ptr: ptr.baseAddress!, len: CInt(exactly: ptr.count)!) +// CHECK-NEXT: } + +// CHECK: @_alwaysEmitIntoClient +// CHECK-NEXT: func allNamedOther(buf ptr: UnsafeBufferPointer) { +// CHECK-NEXT: return allNamedOther(buf: ptr.baseAddress!, count: CInt(exactly: ptr.count)!) +// CHECK-NEXT: } +