Skip to content

Commit d030651

Browse files
committed
Deduplicating default implementations
1 parent d38f6a2 commit d030651

19 files changed

+192
-70
lines changed

Package.resolved

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ReferencePackages/UpdatedPackage/Sources/ReferencePackage/ReferencePackage.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@ public protocol CustomProtocol<CustomAssociatedType, AnotherAssociatedType>: Par
3838
func function() -> CustomAssociatedType
3939
}
4040

41+
public protocol ProtocolWithDefaultImplementation {
42+
func function() -> String
43+
}
44+
45+
extension ProtocolWithDefaultImplementation {
46+
public func function() -> String {
47+
fatalError()
48+
}
49+
}
50+
4151
public struct CustomStruct<T: Strideable>: CustomProtocol {
4252
public typealias CustomAssociatedType = Int
4353
public typealias AnotherAssociatedType = Double

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ class SwiftInterfaceActor: SwiftInterfaceExtendableElement {
3636

3737
var consolidatableName: String { name }
3838

39-
var description: String { compileDescription() }
39+
func description(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
40+
compileDescription(incl: tokens)
41+
}
4042

4143
var typeName: String { name }
4244

@@ -75,10 +77,14 @@ extension SwiftInterfaceActor {
7577

7678
private extension SwiftInterfaceActor {
7779

78-
func compileDescription() -> String {
80+
func compileDescription(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
7981
var description = ""
80-
description.append(attributes.joined(separator: "\n"), with: "")
81-
description.append(modifiers.joined(separator: " "), with: "\n")
82+
if tokens.contains(.attributes) {
83+
description.append(attributes.joined(separator: "\n"), with: "")
84+
}
85+
if tokens.contains(.modifiers) {
86+
description.append(modifiers.joined(separator: " "), with: "\n")
87+
}
8288
if modifiers.isEmpty && !attributes.isEmpty { description.append("\n") }
8389
description.append("actor", with: modifiers.isEmpty ? "" : " ")
8490
description.append(name, with: " ")

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ class SwiftInterfaceAssociatedType: SwiftInterfaceElement {
3737

3838
var consolidatableName: String { name }
3939

40-
var description: String { compileDescription() }
40+
func description(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
41+
compileDescription(incl: tokens)
42+
}
4143

4244
init(
4345
attributes: [String],
@@ -72,10 +74,14 @@ extension SwiftInterfaceAssociatedType {
7274

7375
private extension SwiftInterfaceAssociatedType {
7476

75-
func compileDescription() -> String {
77+
func compileDescription(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
7678
var description = ""
77-
description.append(attributes.joined(separator: "\n"), with: "")
78-
description.append(modifiers.joined(separator: " "), with: "\n")
79+
if tokens.contains(.attributes) {
80+
description.append(attributes.joined(separator: "\n"), with: "")
81+
}
82+
if tokens.contains(.modifiers) {
83+
description.append(modifiers.joined(separator: " "), with: "\n")
84+
}
7985
if modifiers.isEmpty && !attributes.isEmpty { description.append("\n") }
8086
description.append("associatedtype", with: modifiers.isEmpty ? "" : " ")
8187
description.append(name, with: " ")

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ class SwiftInterfaceClass: SwiftInterfaceExtendableElement {
3636

3737
var consolidatableName: String { name }
3838

39-
var description: String { compileDescription() }
39+
func description(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
40+
compileDescription(incl: tokens)
41+
}
4042

4143
var typeName: String { name }
4244

@@ -75,10 +77,14 @@ extension SwiftInterfaceClass {
7577

7678
private extension SwiftInterfaceClass {
7779

78-
func compileDescription() -> String {
80+
func compileDescription(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
7981
var description = ""
80-
description.append(attributes.joined(separator: "\n"), with: "")
81-
description.append(modifiers.joined(separator: " "), with: "\n")
82+
if tokens.contains(.attributes) {
83+
description.append(attributes.joined(separator: "\n"), with: "")
84+
}
85+
if tokens.contains(.modifiers) {
86+
description.append(modifiers.joined(separator: " "), with: "\n")
87+
}
8288
if modifiers.isEmpty && !attributes.isEmpty { description.append("\n") }
8389
description.append("class", with: modifiers.isEmpty ? "" : " ")
8490
description.append(name, with: " ")

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ class SwiftInterfaceEnum: SwiftInterfaceExtendableElement {
3434

3535
var consolidatableName: String { name }
3636

37-
var description: String { compileDescription() }
37+
func description(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
38+
compileDescription(incl: tokens)
39+
}
3840

3941
var typeName: String { name }
4042

@@ -73,10 +75,14 @@ extension SwiftInterfaceEnum {
7375

7476
private extension SwiftInterfaceEnum {
7577

76-
func compileDescription() -> String {
78+
func compileDescription(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
7779
var description = ""
78-
description.append(attributes.joined(separator: "\n"), with: "")
79-
description.append(modifiers.joined(separator: " "), with: "\n")
80+
if tokens.contains(.attributes) {
81+
description.append(attributes.joined(separator: "\n"), with: "")
82+
}
83+
if tokens.contains(.modifiers) {
84+
description.append(modifiers.joined(separator: " "), with: "\n")
85+
}
8086
if modifiers.isEmpty && !attributes.isEmpty { description.append("\n") }
8187
description.append("enum", with: modifiers.isEmpty ? "" : " ")
8288
description.append(name, with: " ")

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ class SwiftInterfaceEnumCase: SwiftInterfaceElement {
6464

6565
var consolidatableName: String { name }
6666

67-
var description: String { compileDescription() }
67+
func description(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
68+
compileDescription(incl: tokens)
69+
}
6870

6971
init(
7072
attributes: [String],
@@ -101,10 +103,14 @@ private extension SwiftInterfaceEnumCase {
101103
return formattedParameterDescription(for: parameters.map(\.description))
102104
}
103105

104-
func compileDescription() -> String {
106+
func compileDescription(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
105107
var description = ""
106-
description.append(attributes.joined(separator: "\n"), with: "")
107-
description.append(modifiers.joined(separator: " "), with: "\n")
108+
if tokens.contains(.attributes) {
109+
description.append(attributes.joined(separator: "\n"), with: "")
110+
}
111+
if tokens.contains(.modifiers) {
112+
description.append(modifiers.joined(separator: " "), with: "\n")
113+
}
108114
if modifiers.isEmpty && !attributes.isEmpty { description.append("\n") }
109115
description.append("case", with: modifiers.isEmpty ? "" : " ")
110116
description.append(name, with: " ")

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ class SwiftInterfaceExtension: SwiftInterfaceElement {
3434

3535
var consolidatableName: String { extendedType }
3636

37-
var description: String {
38-
compileDescription()
37+
func description(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
38+
compileDescription(incl: tokens)
3939
}
4040

4141
init(
@@ -70,10 +70,14 @@ extension SwiftInterfaceExtension {
7070

7171
private extension SwiftInterfaceExtension {
7272

73-
func compileDescription() -> String {
73+
func compileDescription(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
7474
var description = ""
75-
description.append(attributes.joined(separator: "\n"), with: "")
76-
description.append(modifiers.joined(separator: " "), with: "\n")
75+
if tokens.contains(.attributes) {
76+
description.append(attributes.joined(separator: "\n"), with: "")
77+
}
78+
if tokens.contains(.modifiers) {
79+
description.append(modifiers.joined(separator: " "), with: "\n")
80+
}
7781
if modifiers.isEmpty && !attributes.isEmpty { description.append("\n") }
7882
description.append("extension", with: modifiers.isEmpty ? "" : " ")
7983
description.append(extendedType, with: " ")

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ class SwiftInterfaceFunction: SwiftInterfaceElement {
8181

8282
var consolidatableName: String { name }
8383

84-
var description: String { compileDescription() }
84+
func description(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
85+
compileDescription(incl: tokens)
86+
}
8587

8688
init(
8789
attributes: [String],
@@ -126,10 +128,14 @@ private extension SwiftInterfaceFunction {
126128
formattedParameterDescription(for: parameters.map(\.description))
127129
}
128130

129-
func compileDescription() -> String {
131+
func compileDescription(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
130132
var description = ""
131-
description.append(attributes.joined(separator: "\n"), with: "")
132-
description.append(modifiers.joined(separator: " "), with: "\n")
133+
if tokens.contains(.attributes) {
134+
description.append(attributes.joined(separator: "\n"), with: "")
135+
}
136+
if tokens.contains(.modifiers) {
137+
description.append(modifiers.joined(separator: " "), with: "\n")
138+
}
133139
if modifiers.isEmpty && !attributes.isEmpty { description.append("\n") }
134140
description.append("func", with: modifiers.isEmpty ? "" : " ")
135141
description.append(name, with: " ")

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ class SwiftInterfaceInitializer: SwiftInterfaceElement {
4040

4141
var consolidatableName: String { "init" }
4242

43-
var description: String {
44-
compileDescription()
43+
func description(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
44+
compileDescription(incl: tokens)
4545
}
4646

4747
init(
@@ -85,10 +85,14 @@ private extension SwiftInterfaceInitializer {
8585
formattedParameterDescription(for: parameters.map(\.description))
8686
}
8787

88-
func compileDescription() -> String {
88+
func compileDescription(incl tokens: Set<SwiftInterfaceElementDescriptionToken>) -> String {
8989
var description = ""
90-
description.append(attributes.joined(separator: "\n"), with: "")
91-
description.append(modifiers.joined(separator: " "), with: "\n")
90+
if tokens.contains(.attributes) {
91+
description.append(attributes.joined(separator: "\n"), with: "")
92+
}
93+
if tokens.contains(.modifiers) {
94+
description.append(modifiers.joined(separator: " "), with: "\n")
95+
}
9296
if modifiers.isEmpty && !attributes.isEmpty { description.append("\n") }
9397
description.append("init", with: modifiers.isEmpty ? "" : " ")
9498
description.append(optionalMark, with: "")

0 commit comments

Comments
 (0)