Skip to content

Commit 559f6ec

Browse files
authored
Merge pull request #21 from manucodin/develop
Fixes duplicated parameter labels
2 parents 472e4a6 + 68c5243 commit 559f6ec

File tree

5 files changed

+508
-20
lines changed

5 files changed

+508
-20
lines changed

Sources/SwiftMockGenerator/Generators/Implementations/DummyGenerator.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,12 +312,16 @@ public class DummyGenerator: MockGeneratorProtocol {
312312

313313
private func generateParameterList(_ parameters: [ParameterElement]) -> String {
314314
return parameters.map { parameter in
315-
let externalName = parameter.externalName ?? parameter.internalName
316315
let inoutKeyword = parameter.isInout ? "inout " : ""
317316
let variadicMarker = parameter.isVariadic ? "..." : ""
318317
let defaultValueClause = parameter.defaultValue.map { " = \($0)" } ?? ""
319318

320-
return "\(externalName) \(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
319+
// If externalName exists, use it; otherwise use internal name without duplication
320+
if let externalName = parameter.externalName {
321+
return "\(externalName) \(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
322+
} else {
323+
return "\(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
324+
}
321325
}.joined(separator: ", ")
322326
}
323327

Sources/SwiftMockGenerator/Generators/Implementations/SpyGenerator.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,12 +412,16 @@ public class SpyGenerator: MockGeneratorProtocol {
412412

413413
private func generateParameterList(_ parameters: [ParameterElement]) -> String {
414414
return parameters.map { parameter in
415-
let externalName = parameter.externalName ?? parameter.internalName
416415
let inoutKeyword = parameter.isInout ? "inout " : ""
417416
let variadicMarker = parameter.isVariadic ? "..." : ""
418417
let defaultValueClause = parameter.defaultValue.map { " = \($0)" } ?? ""
419418

420-
return "\(externalName) \(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
419+
// If externalName exists, use it; otherwise use internal name without duplication
420+
if let externalName = parameter.externalName {
421+
return "\(externalName) \(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
422+
} else {
423+
return "\(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
424+
}
421425
}.joined(separator: ", ")
422426
}
423427

Sources/SwiftMockGenerator/Generators/Implementations/StubGenerator.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,12 +363,16 @@ public class StubGenerator: MockGeneratorProtocol {
363363

364364
private func generateParameterList(_ parameters: [ParameterElement]) -> String {
365365
return parameters.map { parameter in
366-
let externalName = parameter.externalName ?? parameter.internalName
367366
let inoutKeyword = parameter.isInout ? "inout " : ""
368367
let variadicMarker = parameter.isVariadic ? "..." : ""
369368
let defaultValueClause = parameter.defaultValue.map { " = \($0)" } ?? ""
370369

371-
return "\(externalName) \(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
370+
// If externalName exists, use it; otherwise use internal name without duplication
371+
if let externalName = parameter.externalName {
372+
return "\(externalName) \(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
373+
} else {
374+
return "\(parameter.internalName): \(inoutKeyword)\(parameter.type)\(variadicMarker)\(defaultValueClause)"
375+
}
372376
}.joined(separator: ", ")
373377
}
374378

Sources/SwiftMockGenerator/Parser/SyntaxParser.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,12 +294,15 @@ public class AnnotationVisitor: SyntaxVisitor {
294294

295295
private func parseParameterClause(_ clause: FunctionParameterClauseSyntax) -> [ParameterElement] {
296296
return clause.parameters.map { parameter in
297-
let externalName = parameter.firstName.text
297+
let firstName = parameter.firstName.text
298298
let internalName = parameter.secondName?.text ?? parameter.firstName.text
299299
let type = parameter.type.description.trimmingCharacters(in: .whitespaces)
300300

301+
// External name is only different if there's a second name or the first name is not empty
302+
let externalName = parameter.secondName != nil ? firstName : nil
303+
301304
return ParameterElement(
302-
externalName: externalName == internalName ? nil : externalName,
305+
externalName: externalName,
303306
internalName: internalName,
304307
type: type,
305308
defaultValue: nil,

0 commit comments

Comments
 (0)