Skip to content

Commit f87ea98

Browse files
authored
Merge pull request #17 from MxIris-Reverse-Engineering/optimize/generic-refactor
Bug fixes and some optimizations
2 parents dbc2a32 + 7e3d4ab commit f87ea98

File tree

129 files changed

+2148
-5551
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+2148
-5551
lines changed

Package.swift

Lines changed: 56 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,24 @@ let package = Package(
134134
.target(
135135
name: "Utilities"
136136
),
137-
137+
138138
.target(
139139
name: "MachOExtensions",
140140
dependencies: [
141141
.MachOKit,
142142
"MachOMacro",
143+
.product(name: "AssociatedObject", package: "AssociatedObject"),
144+
]
145+
),
146+
147+
.target(
148+
name: "MachOCaches",
149+
dependencies: [
150+
.MachOKit,
151+
"MachOExtensions",
152+
"MachOMacro",
153+
"Utilities",
154+
.product(name: "AssociatedObject", package: "AssociatedObject"),
143155
]
144156
),
145157

@@ -153,59 +165,75 @@ let package = Package(
153165
.product(name: "AssociatedObject", package: "AssociatedObject"),
154166
]
155167
),
156-
168+
169+
.target(
170+
name: "MachOResolving",
171+
dependencies: [
172+
.MachOKit,
173+
"MachOExtensions",
174+
"MachOReading",
175+
]
176+
),
177+
157178
.target(
158179
name: "MachOSymbols",
159180
dependencies: [
160181
.MachOKit,
161182
"MachOReading",
183+
"MachOResolving",
162184
"MachOMacro",
163185
"Demangle",
164186
"Utilities",
187+
"MachOCaches",
165188
.product(name: "OrderedCollections", package: "swift-collections"),
166189
]
167190
),
168-
191+
169192
.target(
170193
name: "MachOPointer",
171194
dependencies: [
172195
.MachOKit,
173196
"MachOReading",
197+
"MachOResolving",
174198
"MachOMacro",
175199
]
176200
),
177201

178202
.target(
179-
name: "MachOFoundation",
203+
name: "MachOSymbolPointer",
180204
dependencies: [
181205
.MachOKit,
182206
"MachOReading",
183-
"MachOExtensions",
207+
"MachOResolving",
184208
"MachOMacro",
185209
"MachOPointer",
186210
"MachOSymbols",
187211
]
188212
),
189213

190214
.target(
191-
name: "MachOSwiftSection",
215+
name: "MachOFoundation",
192216
dependencies: [
193217
.MachOKit,
194-
"Demangle",
195-
"MachOFoundation",
218+
"MachOReading",
219+
"MachOExtensions",
196220
"MachOMacro",
197-
.product(name: "MemberwiseInit", package: "swift-memberwise-init-macro")
221+
"MachOPointer",
222+
"MachOSymbols",
223+
"MachOResolving",
224+
"MachOSymbolPointer",
198225
]
199226
),
200227

201228
.target(
202-
name: "MachOTestingSupport",
229+
name: "MachOSwiftSection",
203230
dependencies: [
204231
.MachOKit,
205-
"MachOExtensions",
206-
"SwiftDump",
207-
],
208-
swiftSettings: testSettings
232+
"Demangle",
233+
"MachOFoundation",
234+
"MachOMacro",
235+
.product(name: "MemberwiseInit", package: "swift-memberwise-init-macro"),
236+
]
209237
),
210238

211239
.target(
@@ -228,6 +256,8 @@ let package = Package(
228256
]
229257
),
230258

259+
// MARK: - Macros
260+
231261
.target(
232262
name: "MachOMacro",
233263
dependencies: [
@@ -245,6 +275,18 @@ let package = Package(
245275
]
246276
),
247277

278+
// MARK: - Testing
279+
280+
.target(
281+
name: "MachOTestingSupport",
282+
dependencies: [
283+
.MachOKit,
284+
"MachOExtensions",
285+
"SwiftDump",
286+
],
287+
swiftSettings: testSettings
288+
),
289+
248290
.testTarget(
249291
name: "DemangleTests",
250292
dependencies: [

Sources/Demangle/Enums/SwiftSymbolParseError.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ public enum SwiftSymbolParseError: Error, Sendable {
2525
case unimplementedFeature
2626

2727
case requiredNonOptional
28+
29+
case invalidSwiftMangledName
2830
}

Sources/Demangle/Interface.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ package func demangleAsNode<C: Collection>(_ mangled: C, isType: Bool = false, s
2121
demangler.symbolicReferenceResolver = symbolicReferenceResolver
2222
if isType {
2323
return try demangler.demangleType()
24-
} else if getManglingPrefixLength(mangled) != 0 {
24+
} else if Demangler.getManglingPrefixLength(mangled) != 0 {
2525
return try demangler.demangleSymbol()
2626
} else {
27-
return try demangler.demangleSwift3TopLevelSymbol()
27+
throw SwiftSymbolParseError.invalidSwiftMangledName
2828
}
2929
}

Sources/Demangle/Main/DemangleOptions.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public struct DemangleOptions: OptionSet, Codable, Sendable {
2626
public static let showModuleInDependentMemberType = DemangleOptions(rawValue: 1 << 21)
2727

2828
package static let removeWeakPrefix = DemangleOptions(rawValue: 1 << 22)
29+
package static let removeBoundGeneric = DemangleOptions(rawValue: 1 << 23)
30+
2931

3032
public init(rawValue: Int) {
3133
self.rawValue = rawValue
@@ -67,6 +69,13 @@ public struct DemangleOptions: OptionSet, Codable, Sendable {
6769
options.remove(.displayExtensionContexts)
6870
options.remove(.showPrivateDiscriminators)
6971
options.remove(.showModuleInDependentMemberType)
72+
options.remove(.displayUnmangledSuffix)
73+
return options
74+
}()
75+
76+
public static let interfaceType: DemangleOptions = {
77+
var options = DemangleOptions.interface
78+
options.insert(.removeBoundGeneric)
7079
return options
7180
}()
7281

0 commit comments

Comments
 (0)