Skip to content

Commit 77f4fb1

Browse files
committed
Consolidating changes on function/enum parameters
1 parent 1f786b8 commit 77f4fb1

14 files changed

+211
-150
lines changed

Sources/PublicModules/PADSwiftInterfaceDiff/SwiftInterfaceParser/DeclSyntax+SwiftInterface/EnumCaseDeclSyntax+SwiftInterface.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ extension EnumCaseDeclSyntax {
2222
name: $0.name.trimmedDescription,
2323
parameters: $0.parameterClause?.parameters.map {
2424
.init(
25+
attributes: [],
2526
firstName: $0.firstName?.trimmedDescription,
2627
secondName: $0.secondName?.trimmedDescription,
2728
type: $0.type.trimmedDescription,

Sources/PublicModules/PADSwiftInterfaceDiff/SwiftInterfaceParser/DeclSyntax+SwiftInterface/FunctionDeclSyntax+SwiftInterface.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ extension FunctionDeclSyntax {
2323
}
2424
}
2525

26-
let parameters: [SwiftInterfaceFunction.Parameter] = self.signature.parameterClause.parameters.map {
26+
let parameters: [SwiftInterfaceElementParameter] = self.signature.parameterClause.parameters.map {
2727
.init(
2828
attributes: $0.attributes.sanitizedList,
2929
firstName: $0.firstName.trimmedDescription,

Sources/PublicModules/PADSwiftInterfaceDiff/SwiftInterfaceParser/DeclSyntax+SwiftInterface/InitializerDeclSyntax+SwiftInterface.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ extension InitializerDeclSyntax {
2323
}
2424
}
2525

26-
let parameters: [SwiftInterfaceFunction.Parameter] = self.signature.parameterClause.parameters.map {
26+
let parameters: [SwiftInterfaceElementParameter] = self.signature.parameterClause.parameters.map {
2727
.init(
2828
attributes: $0.attributes.sanitizedList,
2929
firstName: $0.firstName.trimmedDescription,

Sources/PublicModules/PADSwiftInterfaceDiff/SwiftInterfaceParser/DeclSyntax+SwiftInterface/SubscriptDeclSyntax+SwiftInterface.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ extension SubscriptDeclSyntax {
1212

1313
func toInterfaceElement() -> SwiftInterfaceSubscript {
1414

15-
let parameters: [SwiftInterfaceSubscript.Parameter] = self.parameterClause.parameters.map {
15+
let parameters: [SwiftInterfaceElementParameter] = self.parameterClause.parameters.map {
1616
.init(
17+
attributes: $0.attributes.sanitizedList,
1718
firstName: $0.firstName.trimmedDescription,
1819
secondName: $0.secondName?.trimmedDescription,
1920
type: $0.type.trimmedDescription,

Sources/PublicModules/PADSwiftInterfaceDiff/SwiftInterfaceParser/SwiftInterfaceElement+Declaration/SwiftInterfaceElement+EnumCase.swift

Lines changed: 3 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,6 @@
66

77
import Foundation
88

9-
extension SwiftInterfaceEnumCase {
10-
11-
struct Parameter {
12-
13-
let firstName: String?
14-
15-
let secondName: String?
16-
17-
let type: String
18-
19-
let defaultValue: String?
20-
21-
var description: String {
22-
var description = [
23-
firstName,
24-
secondName
25-
].compactMap { $0 }.joined(separator: " ")
26-
27-
if description.isEmpty {
28-
description += "\(type)"
29-
} else {
30-
description += ": \(type)"
31-
}
32-
33-
if let defaultValue {
34-
description += " = \(defaultValue)"
35-
}
36-
37-
return description
38-
}
39-
}
40-
}
41-
429
class SwiftInterfaceEnumCase: SwiftInterfaceElement {
4310

4411
/// e.g. @discardableResult, @MainActor, @objc, @_spi(...), ...
@@ -49,7 +16,7 @@ class SwiftInterfaceEnumCase: SwiftInterfaceElement {
4916

5017
let name: String
5118

52-
let parameters: [Parameter]?
19+
let parameters: [SwiftInterfaceElementParameter]?
5320

5421
let rawValue: String?
5522

@@ -72,7 +39,7 @@ class SwiftInterfaceEnumCase: SwiftInterfaceElement {
7239
attributes: [String],
7340
modifiers: [String],
7441
name: String,
75-
parameters: [Parameter]?,
42+
parameters: [SwiftInterfaceElementParameter]?,
7643
rawValue: String?
7744
) {
7845
self.attributes = attributes
@@ -90,7 +57,7 @@ extension SwiftInterfaceEnumCase {
9057
guard let other = otherElement as? Self else { return [] }
9158
changes += diffDescription(propertyType: "attribute", oldValues: other.attributes, newValues: attributes)
9259
changes += diffDescription(propertyType: "modifier", oldValues: other.modifiers, newValues: modifiers)
93-
changes += diffDescription(propertyType: "parameter", oldValues: other.parameters?.map(\.description), newValues: parameters?.map(\.description))
60+
changes += diffDescription(oldParameters: other.parameters, newParameters: parameters)
9461
changes += diffDescription(propertyType: "raw value", oldValue: other.rawValue, newValue: rawValue)
9562
return changes.compactMap { $0 }
9663
}

Sources/PublicModules/PADSwiftInterfaceDiff/SwiftInterfaceParser/SwiftInterfaceElement+Declaration/SwiftInterfaceElement+Function.swift

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,45 +6,6 @@
66

77
import Foundation
88

9-
extension SwiftInterfaceFunction {
10-
11-
struct Parameter {
12-
13-
/// e.g. @discardableResult, @MainActor, @objc, @_spi(...), ...
14-
let attributes: [String]
15-
16-
let firstName: String
17-
18-
/// optional second "internal" name - can be ignored
19-
let secondName: String?
20-
21-
let type: String
22-
23-
let defaultValue: String?
24-
25-
var description: String {
26-
let names = [
27-
firstName,
28-
secondName
29-
].compactMap { $0 }
30-
31-
var description = (attributes + names).joined(separator: " ")
32-
33-
if description.isEmpty {
34-
description += "\(type)"
35-
} else {
36-
description += ": \(type)"
37-
}
38-
39-
if let defaultValue {
40-
description += " = \(defaultValue)"
41-
}
42-
43-
return description
44-
}
45-
}
46-
}
47-
489
class SwiftInterfaceFunction: SwiftInterfaceElement {
4910

5011
/// e.g. @discardableResult, @MainActor, @objc, @_spi(...), ...
@@ -55,7 +16,7 @@ class SwiftInterfaceFunction: SwiftInterfaceElement {
5516
/// e.g. <T>
5617
let genericParameterDescription: String?
5718

58-
let parameters: [Parameter]
19+
let parameters: [SwiftInterfaceElementParameter]
5920

6021
/// e.g. async, throws, rethrows
6122
let effectSpecifiers: [String]
@@ -76,7 +37,7 @@ class SwiftInterfaceFunction: SwiftInterfaceElement {
7637
var parent: (any SwiftInterfaceElement)?
7738

7839
var diffableSignature: String {
79-
"\(name)(\(parameters.map { "\($0.firstName):" }.joined()))"
40+
"\(name)(\(parameters.map(\.valueForDiffableSignature).joined()))"
8041
}
8142

8243
var consolidatableName: String { name }
@@ -90,7 +51,7 @@ class SwiftInterfaceFunction: SwiftInterfaceElement {
9051
modifiers: [String],
9152
name: String,
9253
genericParameterDescription: String?,
93-
parameters: [Parameter],
54+
parameters: [SwiftInterfaceElementParameter],
9455
effectSpecifiers: [String],
9556
returnType: String?,
9657
genericWhereClauseDescription: String?
@@ -114,7 +75,7 @@ extension SwiftInterfaceFunction {
11475
changes += diffDescription(propertyType: "attribute", oldValues: other.attributes, newValues: attributes)
11576
changes += diffDescription(propertyType: "modifier", oldValues: other.modifiers, newValues: modifiers)
11677
changes += diffDescription(propertyType: "generic parameter description", oldValue: other.genericParameterDescription, newValue: genericParameterDescription)
117-
changes += diffDescription(propertyType: "parameter", oldValues: other.parameters.map(\.description), newValues: parameters.map(\.description)) // TODO: Maybe have a better way to show changes
78+
changes += diffDescription(oldParameters: other.parameters, newParameters: parameters)
11879
changes += diffDescription(propertyType: "effect", oldValues: other.effectSpecifiers, newValues: effectSpecifiers)
11980
changes += diffDescription(propertyType: "return type", oldValue: other.returnType, newValue: returnType)
12081
changes += diffDescription(propertyType: "generic where clause", oldValue: other.genericWhereClauseDescription, newValue: genericWhereClauseDescription)

Sources/PublicModules/PADSwiftInterfaceDiff/SwiftInterfaceParser/SwiftInterfaceElement+Declaration/SwiftInterfaceElement+Initializer.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class SwiftInterfaceInitializer: SwiftInterfaceElement {
1616
/// e.g. <T>
1717
let genericParameterDescription: String?
1818

19-
let parameters: [SwiftInterfaceFunction.Parameter]
19+
let parameters: [SwiftInterfaceElementParameter]
2020

2121
/// e.g. async, throws, rethrows
2222
let effectSpecifiers: [String]
@@ -35,7 +35,7 @@ class SwiftInterfaceInitializer: SwiftInterfaceElement {
3535
var parent: (any SwiftInterfaceElement)?
3636

3737
var diffableSignature: String {
38-
"init(\(parameters.map { "\($0.firstName):" }.joined()))"
38+
"init(\(parameters.map { $0.valueForDiffableSignature }.joined()))"
3939
}
4040

4141
var consolidatableName: String { "init" }
@@ -49,7 +49,7 @@ class SwiftInterfaceInitializer: SwiftInterfaceElement {
4949
modifiers: [String],
5050
optionalMark: String?,
5151
genericParameterDescription: String?,
52-
parameters: [SwiftInterfaceFunction.Parameter],
52+
parameters: [SwiftInterfaceElementParameter],
5353
effectSpecifiers: [String],
5454
genericWhereClauseDescription: String?
5555
) {
@@ -72,7 +72,7 @@ extension SwiftInterfaceInitializer {
7272
changes += diffDescription(propertyType: "modifier", oldValues: other.modifiers, newValues: modifiers)
7373
changes += diffDescription(propertyType: "optional mark", oldValue: other.optionalMark, newValue: optionalMark)
7474
changes += diffDescription(propertyType: "generic parameter description", oldValue: other.genericParameterDescription, newValue: genericParameterDescription)
75-
changes += diffDescription(propertyType: "parameter", oldValues: other.parameters.map(\.description), newValues: parameters.map(\.description)) // TODO: Maybe have a better way to show changes
75+
changes += diffDescription(oldParameters: other.parameters, newParameters: parameters)
7676
changes += diffDescription(propertyType: "effect", oldValues: other.effectSpecifiers, newValues: effectSpecifiers)
7777
changes += diffDescription(propertyType: "generic where clause", oldValue: other.genericWhereClauseDescription, newValue: genericWhereClauseDescription)
7878
return changes.compactMap { $0 }

Sources/PublicModules/PADSwiftInterfaceDiff/SwiftInterfaceParser/SwiftInterfaceElement+Declaration/SwiftInterfaceElement+Subscript.swift

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,6 @@
66

77
import Foundation
88

9-
extension SwiftInterfaceSubscript {
10-
11-
struct Parameter {
12-
13-
let firstName: String
14-
15-
/// optional second "internal" name - can be ignored
16-
let secondName: String?
17-
18-
let type: String
19-
20-
let defaultValue: String?
21-
22-
var description: String {
23-
var description = [
24-
firstName,
25-
secondName
26-
].compactMap { $0 }.joined(separator: " ")
27-
28-
if description.isEmpty {
29-
description += "\(type)"
30-
} else {
31-
description += ": \(type)"
32-
}
33-
34-
if let defaultValue {
35-
description += " = \(defaultValue)"
36-
}
37-
38-
return description
39-
}
40-
}
41-
}
42-
439
class SwiftInterfaceSubscript: SwiftInterfaceElement {
4410

4511
let name: String = "subscript"
@@ -53,7 +19,7 @@ class SwiftInterfaceSubscript: SwiftInterfaceElement {
5319
/// e.g. <T>
5420
let genericParameterDescription: String?
5521

56-
let parameters: [Parameter]
22+
let parameters: [SwiftInterfaceElementParameter]
5723

5824
let returnType: String
5925

@@ -69,7 +35,7 @@ class SwiftInterfaceSubscript: SwiftInterfaceElement {
6935
var parent: (any SwiftInterfaceElement)?
7036

7137
var diffableSignature: String {
72-
"\(name)(\(parameters.map { "\($0.firstName):" }.joined()))"
38+
"\(name)(\(parameters.map(\.valueForDiffableSignature).joined()))"
7339
}
7440

7541
var consolidatableName: String { name }
@@ -82,7 +48,7 @@ class SwiftInterfaceSubscript: SwiftInterfaceElement {
8248
attributes: [String],
8349
modifiers: [String],
8450
genericParameterDescription: String?,
85-
parameters: [Parameter],
51+
parameters: [SwiftInterfaceElementParameter],
8652
returnType: String,
8753
genericWhereClauseDescription: String?,
8854
accessors: String?
@@ -105,7 +71,7 @@ extension SwiftInterfaceSubscript {
10571
changes += diffDescription(propertyType: "attribute", oldValues: other.attributes, newValues: attributes)
10672
changes += diffDescription(propertyType: "modifier", oldValues: other.modifiers, newValues: modifiers)
10773
changes += diffDescription(propertyType: "generic parameter description", oldValue: other.genericParameterDescription, newValue: genericParameterDescription)
108-
changes += diffDescription(propertyType: "parameter", oldValues: other.parameters.map(\.description), newValues: parameters.map(\.description)) // TODO: Maybe have a better way to show changes
74+
changes += diffDescription(oldParameters: other.parameters, newParameters: parameters)
10975
changes += diffDescription(propertyType: "return type", oldValue: other.returnType, newValue: returnType)
11076
changes += diffDescription(propertyType: "generic where clause", oldValue: other.genericWhereClauseDescription, newValue: genericWhereClauseDescription)
11177
changes += diffDescription(propertyType: "accessors", oldValue: other.accessors, newValue: accessors)

0 commit comments

Comments
 (0)