@@ -56,6 +56,9 @@ extension WorkspaceItem {
5656}
5757
5858public final class Workspace : WorkspaceReference {
59+ enum Error : Swift . Error {
60+ case invalid
61+ }
5962 let url : URL
6063 public var referenceURL : URL ? { return url. deletingLastPathComponent ( ) }
6164 public let fileWrapper : FileWrapper
@@ -83,31 +86,22 @@ public final class Workspace: WorkspaceReference {
8386 }
8487 }
8588
86- public init ? ( url: URL ) {
89+ public init ( url: URL ) throws {
8790 self . url = url
88- do {
89- self . fileWrapper = try FileWrapper ( url: url, options: [ ] )
90- } catch {
91- return nil
92- }
91+ self . fileWrapper = try FileWrapper ( url: url, options: [ ] )
9392 if fileWrapper. isDirectory == false {
9493 //throw
9594 }
9695
97- guard let workspaceData = fileWrapper. fileWrappers ? [ " contents.xcworkspacedata " ] , workspaceData. isRegularFile else {
98- // throw
99- return nil
96+ guard let workspaceData = fileWrapper. fileWrappers ? [ " contents.xcworkspacedata " ] , workspaceData. isRegularFile,
97+ let data = workspaceData . regularFileContents else {
98+ throw Error . invalid
10099 }
101100
102- guard let data = workspaceData. regularFileContents else { return nil }
103-
104- do {
105- let document = try XMLDocument ( data: data, options: [ ] )
106- guard let children = document. rootElement ( ) ? . children as? [ XMLElement ] else { return nil }
107- self . references = children. flatMap {
108- childOf ( element: $0, parent: self )
109- }
110- } catch {
101+ let document = try XMLDocument ( data: data, options: [ ] )
102+ guard let children = document. rootElement ( ) ? . children as? [ XMLElement ] else { throw Error . invalid }
103+ self . references = children. flatMap {
104+ childOf ( element: $0, parent: self )
111105 }
112106 }
113107
0 commit comments