Skip to content

Commit a18d9b4

Browse files
authored
Fix formatting and extra lines (#11)
* Fix formatting and extra lines * Update project indentation * Fix tests failing do to removal of extra line * Update code formatting
1 parent acdc634 commit a18d9b4

File tree

4 files changed

+85
-96
lines changed

4 files changed

+85
-96
lines changed

Sources/MockedClient/main.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import Mocked
44
protocol ExampleProtocol: Sendable {
55
associatedtype ItemType: Codable
66
associatedtype ItemValue: Equatable
7-
7+
88
var name: String { get set }
99
var count: Int { get }
1010
var isEnabled: Bool { get set }
11-
11+
1212
func fetchItem(withID id: Int) async throws -> ItemType
1313
func saveItem(_ item: ItemType) throws -> Bool
14-
14+
1515
func processAllItems() async
1616
func reset()
1717
func optionalItem() -> ItemType?

Sources/MockedMacros/MockedMacro.swift

+45-50
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ public struct MockedMacro: PeerMacro {
2727
)
2828
return []
2929
}
30-
30+
3131
// Check for access level argument (e.g., @Mocked(.public))
3232
var accessLevel: String = "internal"
33-
33+
3434
if case let .argumentList(argumentList) = node.arguments {
3535
// Process each argument in the list
3636
for argument in argumentList {
@@ -70,59 +70,56 @@ public struct MockedMacro: PeerMacro {
7070
}
7171

7272
let mockClassName = "Mocked\(protocolDecl.name.text)"
73-
73+
7474
let members = protocolDecl.memberBlock.members
75-
75+
7676
// Variables
77-
77+
7878
let variables: [Variable] = variableBuilder(members: members)
79-
79+
8080
let variablesDefinitions: String = variableDefinitions(variables: variables, accessLevel: accessLevel)
8181
let variablesInitDefinitions: String = variablesInitDefinitions(variables: variables)
8282
let variablesInitAssignments: String = variablesInitAssignments(variables: variables)
83-
83+
8484
// Functions
85-
86-
let functions: [Function] = functionBuilder(
87-
protocolDecl: protocolDecl,
88-
members: members
89-
)
90-
85+
86+
let functions: [Function] = functionBuilder(protocolDecl: protocolDecl, members: members)
87+
9188
let functionVariableDefinitions: String = functionVariableDefinitions(functions: functions)
9289
let functionVariableInitDefinitions: String = functionVariableInitDefinitions(functions: functions)
9390
let functionVariableInitAssignments: String = functionVariableInitAssignments(functions: functions)
9491
let functionImplementations: String = functionImplementations(functions: functions, accessLevel: accessLevel)
95-
92+
9693
// Check if the protocol conforms to AnyObject
97-
let requiresClassConformance = protocolDecl.inheritanceClause?.inheritedTypes.contains(where: {
98-
$0.type.description.trimmingCharacters(in: .whitespacesAndNewlines) == "AnyObject"
99-
}) ?? false
100-
94+
let requiresClassConformance = protocolDecl.inheritanceClause?.inheritedTypes.contains(
95+
where: { $0.type.description.trimmingCharacters(in: .whitespacesAndNewlines) == "AnyObject" }
96+
) ?? false
97+
10198
let objectType: String = requiresClassConformance ? "class" : "struct"
102-
99+
103100
// Check for associated types in the protocol
104101
var associatedTypes: [String] = []
105-
102+
106103
for member in protocolDecl.memberBlock.members {
107104
if let associatedTypeDecl = member.decl.as(AssociatedTypeDeclSyntax.self) {
108105
let name = associatedTypeDecl.name.text
109106
let constraint = associatedTypeDecl.inheritanceClause?.description.trimmingCharacters(in: .whitespacesAndNewlines)
110-
107+
111108
if let constraint {
112109
associatedTypes.append("\(name)\(constraint)")
113110
} else {
114111
associatedTypes.append(name)
115112
}
116113
}
117114
}
118-
115+
119116
// Construct generic type parameters if there are associated types
120117
let genericValues = if associatedTypes.isEmpty {
121118
""
122119
} else {
123120
"<" + associatedTypes.joined(separator: ", ") + ">"
124121
}
125-
122+
126123
return [
127124
"""
128125
/// Mocked version of \(raw: protocolDecl.name.text)
@@ -144,24 +141,23 @@ public struct MockedMacro: PeerMacro {
144141
\(raw: variablesInitAssignments)
145142
\(raw: functionVariableInitAssignments)
146143
}
147-
148-
144+
149145
// MARK: - \(raw: mockClassName) Functions
150146
151147
\(raw: functionImplementations)
152148
}
153149
"""
154150
]
155151
}
156-
152+
157153
// MARK: - Variable helpers
158-
154+
159155
private static func variableBuilder(members: MemberBlockItemListSyntax) -> [Variable] {
160156
members.compactMap { member in
161157
guard
162158
let variable = member.decl.as(VariableDeclSyntax.self)
163159
else { return nil }
164-
160+
165161
guard let binding = variable.bindings.first else {
166162
return nil
167163
}
@@ -170,18 +166,18 @@ public struct MockedMacro: PeerMacro {
170166
else {
171167
fatalError("\(String(describing: binding.initializer?.syntaxNodeType))")
172168
}
173-
169+
174170
let name = binding.pattern
175171
let type = typeAnnotation.description.trimmingCharacters(in: .whitespacesAndNewlines)
176-
172+
177173
return Variable(
178174
firstName: "\(name)",
179175
secondName: nil,
180176
type: type
181177
)
182178
}
183179
}
184-
180+
185181
private static func variableDefinitions(
186182
variables: [Variable],
187183
accessLevel: String
@@ -198,50 +194,50 @@ public struct MockedMacro: PeerMacro {
198194
}
199195
.joined(separator: "\n")
200196
}
201-
197+
202198
private static func variablesInitDefinitions(
203199
variables: [Variable]
204200
) -> String {
205201
variables
206202
.map { "\($0.declaration)," }
207203
.joined(separator: "\n")
208204
}
209-
205+
210206
private static func variablesInitAssignments(
211207
variables: [Variable]
212208
) -> String {
213209
variables
214210
.map { "self.\($0.name) = \($0.name)" }
215211
.joined(separator: "\n")
216212
}
217-
213+
218214
// MARK: - Function helpers
219-
215+
220216
private static func functionBuilder(
221217
protocolDecl: ProtocolDeclSyntax,
222218
members: MemberBlockItemListSyntax
223219
) -> [Function] {
224220
let inheritsSendable = protocolDecl.inheritanceClause?.inheritedTypes.contains { inheritedType in
225221
inheritedType.type.description.trimmingCharacters(in: .whitespacesAndNewlines) == "Sendable"
226222
} ?? false
227-
223+
228224
return members.compactMap { member in
229225
guard
230226
let function = member.decl.as(FunctionDeclSyntax.self)
231227
else { return nil }
232-
228+
233229
let name = function.name.text
234230
var parameters: [Variable] = []
235231
let returnType = function.signature.returnClause?.type ?? "Void"
236-
232+
237233
let isAsync = function.signature.effectSpecifiers?.asyncSpecifier != nil
238234
let canThrow = function.signature.effectSpecifiers?.throwsClause?.throwsSpecifier != nil
239-
235+
240236
for parameter in function.signature.parameterClause.parameters {
241237
let parameterFirstName = parameter.firstName.text
242238
let parameterSecondName = parameter.secondName?.text
243239
let parameterType = parameter.type.description.trimmingCharacters(in: .whitespacesAndNewlines)
244-
240+
245241
parameters.append(
246242
Variable(
247243
firstName: parameterFirstName,
@@ -250,7 +246,7 @@ public struct MockedMacro: PeerMacro {
250246
)
251247
)
252248
}
253-
249+
254250
return Function(
255251
name: "\(name)",
256252
parameters: parameters,
@@ -261,31 +257,31 @@ public struct MockedMacro: PeerMacro {
261257
)
262258
}
263259
}
264-
260+
265261
private static func functionVariableDefinitions(
266262
functions: [Function]
267263
) -> String {
268264
functions
269265
.map { "private let \($0.overrideClosure)" }
270266
.joined(separator: "\n")
271267
}
272-
268+
273269
private static func functionVariableInitDefinitions(
274270
functions: [Function]
275271
) -> String {
276272
functions
277273
.map { "\($0.closure) = nil" }
278274
.joined(separator: ",\n")
279275
}
280-
276+
281277
private static func functionVariableInitAssignments(
282278
functions: [Function]
283279
) -> String {
284280
functions
285281
.map { "self.\($0.overrideName) = \($0.uniqueName)" }
286282
.joined(separator: "\n")
287283
}
288-
284+
289285
private static func functionImplementations(
290286
functions: [Function],
291287
accessLevel: String
@@ -299,8 +295,7 @@ public struct MockedMacro: PeerMacro {
299295
let parameterUsage: String = function.parameters
300296
.map(\.usageName)
301297
.joined(separator: ", ")
302-
303-
298+
304299
let effectSignature: String = if function.canThrow && function.isAsync {
305300
"async throws "
306301
} else if function.canThrow {
@@ -310,7 +305,7 @@ public struct MockedMacro: PeerMacro {
310305
} else {
311306
""
312307
}
313-
308+
314309
let callSignature: String = if function.canThrow && function.isAsync {
315310
"try await "
316311
} else if function.canThrow {
@@ -320,15 +315,15 @@ public struct MockedMacro: PeerMacro {
320315
} else {
321316
""
322317
}
323-
318+
324319
let accessLevel: String = if accessLevel.contains("public") {
325320
"public"
326321
} else if accessLevel.contains("package") {
327322
"package"
328323
} else {
329324
"internal"
330325
}
331-
326+
332327
if parameters.isEmpty {
333328
return """
334329
\(accessLevel) func \(function.name)() \(effectSignature)-> \(function.returnType ?? "Void") {

Sources/MockedMacros/Types/Variable.swift

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,34 @@ struct Variable {
22
let firstName: String
33
let secondName: String?
44
let type: String
5-
5+
66
var name: String {
77
guard
88
let secondName,
99
firstName == "_"
1010
else {
1111
return firstName
1212
}
13-
13+
1414
return secondName
1515
}
16-
16+
1717
var parameterName: String {
1818
guard let secondName else {
1919
return firstName
2020
}
21-
21+
2222
return "\(firstName) \(secondName)"
2323
}
24-
24+
2525
var usageName: String {
2626
guard let secondName else {
2727
return firstName
2828
}
2929

3030
return secondName
3131
}
32-
32+
3333
var declaration: String {
3434
"\(name): \(type)"
3535
}

0 commit comments

Comments
 (0)