Skip to content

Commit ef1c19d

Browse files
authored
Release/0.5.2 (#87)
* Issue #81 log unrequired targets instead of failing. * Issue #81 PIF workspace sort
1 parent cdc00c7 commit ef1c19d

45 files changed

Lines changed: 223 additions & 117 deletions

File tree

Some content is hidden

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

.github/workflows/build.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ on:
44
pull_request:
55
paths:
66
- '**.swift'
7+
workflow_dispatch:
78

89
jobs:
910
build:
1011
runs-on: macos-latest
1112
steps:
13+
- uses: maxim-lobanov/setup-xcode@v1
14+
with:
15+
xcode-version: '16.2.0' # Specify the desired Xcode version
16+
1217
- uses: actions/checkout@v4
1318

1419
- name: 🔨 Build
1520
run: |
16-
sudo xcode-select -s /Applications/Xcode_15.4.app/
17-
swift build
21+
swift build
22+
swift test

PIF/Package.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ let package = Package(
2929
name: "PIFSupportTests",
3030
dependencies: ["PIFSupport"]
3131
),
32+
.testTarget(
33+
name: "PIFTests",
34+
dependencies: ["PIFSupport"],
35+
path: "PIF/Tests/PIFTests"
36+
),
3237
.executableTarget(
3338
name: "pif-parser",
3439
dependencies: [

PIF/Sources/PIFSupport/PIF.swift

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public enum PIF {
8787

8888
public required init(from decoder: Decoder) throws {
8989
guard let cachePath = decoder.userInfo[.pifCachePath] as? URL else {
90-
throw Error.userInfoError("decoder's userInfo doesn't container required key .cachePath, or that value isn't a URL")
90+
throw Error.userInfoError("decoder's userInfo doesn't contain the required key .cachePath, or that value isn't a URL")
9191
}
9292

9393
let container = try decoder.container(keyedBy: CodingKeys.self)
@@ -162,20 +162,19 @@ public enum PIF {
162162
}
163163
}
164164

165-
targets = try targetContents
166-
.map { targetData -> BaseTarget in
167-
let pifDecoder = PIFDecoder(cache: cachePath)
168-
let untypedTarget = try pifDecoder.decode(PIF.TypedObject.self, from: targetData)
169-
switch untypedTarget.type {
170-
case "aggregate":
171-
return try pifDecoder.decode(PIF.AggregateTarget.self, from: targetData)
172-
case "standard", "packageProduct":
173-
return try pifDecoder.decode(PIF.Target.self, from: targetData)
174-
default:
175-
throw Error.decodingError("Target type unknown: \(untypedTarget)")
176-
}
165+
targets = try targetContents.compactMap { targetData in
166+
let pifDecoder = PIFDecoder(cache: cachePath)
167+
let untypedTarget = try pifDecoder.decode(PIF.TypedObject.self, from: targetData)
168+
switch untypedTarget.type {
169+
case "aggregate":
170+
return try pifDecoder.decode(PIF.AggregateTarget.self, from: targetData)
171+
case "standard", "packageProduct":
172+
return try pifDecoder.decode(PIF.Target.self, from: targetData)
173+
default:
174+
logger.debug("Ignoring target \(untypedTarget) of type: \(untypedTarget.type ?? "<nil>")")
175+
return nil
177176
}
178-
177+
}
179178
self.groupTree = try container.decode(Group.self, forKey: .groupTree)
180179
}
181180
}
@@ -306,7 +305,7 @@ public enum PIF {
306305
case FileReference.type:
307306
return try childrenContainer.decode(FileReference.self)
308307
default:
309-
logger.debug("unknown reference type: \(child.type ?? "<nil>")")
308+
logger.debug("Ignoring reference type: \(child.type ?? "<nil>")")
310309
return nil
311310
}
312311
}
@@ -510,7 +509,7 @@ public enum PIF {
510509
case ResourcesBuildPhase.type:
511510
return try container.decode(ResourcesBuildPhase.self)
512511
default:
513-
logger.debug("unknown build phase: \(type)")
512+
logger.debug("Ignoring build phase: \(type)")
514513
return nil
515514
// TODO: we should probably handle these:
516515
/*

PIF/Sources/PIFSupport/PIFSupport.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class PIFCacheParser {
2828
/// Finds the most recent workspace in the cache
2929
/// - Throws: a `workspaceNotFound` error when a workspace is not found
3030
/// - Returns: the path to the most recent workspace file
31-
private static func workspacePath(in cachePath: URL) throws -> URL {
31+
internal static func workspacePath(in cachePath: URL) throws -> URL {
3232
let workspaces = try FileManager.default.contentsOfDirectory(
3333
at: cachePath.appendingPathComponent("workspace"),
3434
includingPropertiesForKeys: nil
@@ -49,7 +49,7 @@ public class PIFCacheParser {
4949

5050
// If multiple workspaces exist, it's because the something in the project changed between builds. Sort workspaces by the most recent.
5151
return workspaces
52-
.sorted(using: KeyPathComparator(\.modificationDate))
52+
.sorted(using: KeyPathComparator(\.modificationDate, order: .reverse))
5353
.first!
5454
.workspace
5555
}

PIF/Tests/PIFTests/PIFTests.swift

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
1-
import XCTest
2-
@testable import PIF
1+
import Foundation
2+
import Testing
3+
@testable import PIFSupport
34

4-
final class PIFTests: XCTestCase {
5-
func testExample() throws {
6-
// XCTest Documentation
7-
// https://developer.apple.com/documentation/xctest
5+
struct PIFTests {
6+
private let testBundlePath: URL
87

9-
// Defining Test Cases and Test Methods
10-
// https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods
8+
init() throws {
9+
10+
let fileManager = FileManager.default
11+
let basePath = URL(fileURLWithPath: #file.replacingOccurrences(of: "PIFTests/PIFTests.swift", with: ""))
12+
testBundlePath = basePath.appendingPathComponent("Resources/PIFCache")
13+
14+
try #require(fileManager.fileExists(atPath: testBundlePath.path()))
15+
}
16+
17+
@Test("validate PIF name") func name() throws {
18+
let expectedWorkspace: URL = URL(string: "\(testBundlePath.absoluteString)workspace/WORKSPACE@v11_hash=d3da8d031e363802ae5f57500452c641_subobjects=1ba277b88fb5c402e35936acc0a7292f-json")!
19+
try #expect(PIFCacheParser.workspacePath(in: testBundlePath) == expectedWorkspace )
1120
}
1221
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"appPreferencesBuildSettings":{},"buildConfigurations":[{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++20","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_USER_SCRIPT_SANDBOXING":"YES","GCC_C_LANGUAGE_STANDARD":"gnu17","GCC_DYNAMIC_NO_PIC":"NO","GCC_NO_COMMON_BLOCKS":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 $(inherited)","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"18.2","LOCALIZATION_PREFERS_STRING_CATALOGS":"YES","MTL_ENABLE_DEBUG_INFO":"INCLUDE_SOURCE","MTL_FAST_MATH":"YES","ONLY_ACTIVE_ARCH":"YES","SDKROOT":"iphoneos","SWIFT_ACTIVE_COMPILATION_CONDITIONS":"DEBUG $(inherited)","SWIFT_OPTIMIZATION_LEVEL":"-Onone"},"guid":"40c83c43d7503d5791623703167045f780a0982106550cd543d7ccb9e06b53e1","name":"Debug"},{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++20","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf-with-dsym","ENABLE_NS_ASSERTIONS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_USER_SCRIPT_SANDBOXING":"YES","GCC_C_LANGUAGE_STANDARD":"gnu17","GCC_NO_COMMON_BLOCKS":"YES","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"18.2","LOCALIZATION_PREFERS_STRING_CATALOGS":"YES","MTL_ENABLE_DEBUG_INFO":"NO","MTL_FAST_MATH":"YES","SDKROOT":"iphoneos","SWIFT_COMPILATION_MODE":"wholemodule","VALIDATE_PRODUCT":"YES"},"guid":"40c83c43d7503d5791623703167045f7af90a3f474a8df2874184a21ed42cfe4","name":"Release"}],"classPrefix":"","defaultConfigurationName":"Release","developmentRegion":"en","groupTree":{"children":[{"children":[{"children":[{"fileType":"folder.assetcatalog","guid":"40c83c43d7503d5791623703167045f7056d9720edd4394b93dfb4b9a10a3015","path":"Preview Assets.xcassets","sourceTree":"<group>","type":"file"}],"guid":"40c83c43d7503d5791623703167045f72a8abd318f47629cfafa7c387b5f002e","name":"Preview Content","path":"Preview Content","sourceTree":"<group>","type":"group"},{"fileType":"folder.assetcatalog","guid":"40c83c43d7503d5791623703167045f7b50839ef8b6c5d84a03619a43c954e57","path":"Assets.xcassets","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f7c077c1653f39b7ea4607a41e45c24c4b","path":"ContentView.swift","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f756c01a944785f90baa34079ca4ef2403","path":"Experimental1App.swift","sourceTree":"<group>","type":"file"},{"fileType":"text.plist.xml","guid":"40c83c43d7503d5791623703167045f78b0ecbfefafa95b5ce50ce77e4cfc3ea","path":"Info.plist","sourceTree":"<group>","type":"file"}],"guid":"40c83c43d7503d5791623703167045f7e10bf3e4a860e991a2994515d69eded2","name":"Experimental1","path":"Experimental1","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f7ad2436b655782b8a994e474362587f04","path":"Experimental1Tests.swift","sourceTree":"<group>","type":"file"}],"guid":"40c83c43d7503d5791623703167045f7f08e2577bb0064600500fcc222cc2ca8","name":"Experimental1Tests","path":"Experimental1Tests","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f73271c135ac874b32da1a2ebd3a877f6b","path":"Experimental1UITests.swift","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f72e70d1c1c15b832fa57628ee6dc9e6e1","path":"Experimental1UITestsLaunchTests.swift","sourceTree":"<group>","type":"file"}],"guid":"40c83c43d7503d5791623703167045f77b87828a84e79482307b74fdda8282ae","name":"Experimental1UITests","path":"Experimental1UITests","sourceTree":"<group>","type":"group"},{"guid":"40c83c43d7503d5791623703167045f7d4299e185c2822b8594c01d59d6eaa83","name":"Products","path":"","sourceTree":"<group>","type":"group"}],"guid":"40c83c43d7503d5791623703167045f77e4d2e30828b3469bbdeea3847af508e","name":"Experimental1","path":"","sourceTree":"<group>","type":"group"},"guid":"40c83c43d7503d5791623703167045f7","path":"/Users/ddresser/p/swift/tests/exper1/Experimental1/Experimental1.xcodeproj","projectDirectory":"/Users/ddresser/p/swift/tests/exper1/Experimental1","targets":["TARGET@v11_hash=1b09f1228422548667247b4bbfd7d7a0","TARGET@v11_hash=da1b9a22f2a4c7636ed36f335d41ea15","TARGET@v11_hash=b6a6bb4e39dafedcbaadb2fcb2f670a7","TARGET@v11_hash=3da7c1fe52778e3bbaa9d65c8509c5e3"]}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"appPreferencesBuildSettings":{},"buildConfigurations":[{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++20","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_USER_SCRIPT_SANDBOXING":"YES","GCC_C_LANGUAGE_STANDARD":"gnu17","GCC_DYNAMIC_NO_PIC":"NO","GCC_NO_COMMON_BLOCKS":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 $(inherited)","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"18.2","LOCALIZATION_PREFERS_STRING_CATALOGS":"YES","MTL_ENABLE_DEBUG_INFO":"INCLUDE_SOURCE","MTL_FAST_MATH":"YES","ONLY_ACTIVE_ARCH":"YES","SDKROOT":"iphoneos","SWIFT_ACTIVE_COMPILATION_CONDITIONS":"DEBUG $(inherited)","SWIFT_OPTIMIZATION_LEVEL":"-Onone"},"guid":"40c83c43d7503d5791623703167045f780a0982106550cd543d7ccb9e06b53e1","name":"Debug"},{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++20","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf-with-dsym","ENABLE_NS_ASSERTIONS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_USER_SCRIPT_SANDBOXING":"YES","GCC_C_LANGUAGE_STANDARD":"gnu17","GCC_NO_COMMON_BLOCKS":"YES","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"18.2","LOCALIZATION_PREFERS_STRING_CATALOGS":"YES","MTL_ENABLE_DEBUG_INFO":"NO","MTL_FAST_MATH":"YES","SDKROOT":"iphoneos","SWIFT_COMPILATION_MODE":"wholemodule","VALIDATE_PRODUCT":"YES"},"guid":"40c83c43d7503d5791623703167045f7af90a3f474a8df2874184a21ed42cfe4","name":"Release"}],"classPrefix":"","defaultConfigurationName":"Release","developmentRegion":"en","groupTree":{"children":[{"children":[{"children":[{"fileType":"folder.assetcatalog","guid":"40c83c43d7503d5791623703167045f744c6928199d9fde8676f14967c7d8375","path":"Preview Assets.xcassets","sourceTree":"<group>","type":"file"}],"guid":"40c83c43d7503d5791623703167045f7dcf6ee988acfe2ce8dfd8446f294e1a8","name":"Preview Content","path":"Preview Content","sourceTree":"<group>","type":"group"},{"fileType":"folder.assetcatalog","guid":"40c83c43d7503d5791623703167045f7c114fa6d0d78bcac0178d072b4629008","path":"Assets.xcassets","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f798c2d734ae82bc0397e5de6ff758ec6c","path":"ContentView.swift","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f760e58953e7d47afa3825c674d6bc6db1","path":"Experimental1App.swift","sourceTree":"<group>","type":"file"},{"fileType":"text.plist.xml","guid":"40c83c43d7503d5791623703167045f75b50c8e99d15e541cb40f80ab4c6365c","path":"Info.plist","sourceTree":"<group>","type":"file"}],"guid":"40c83c43d7503d5791623703167045f7e10bf3e4a860e991a2994515d69eded2","name":"Experimental1","path":"Experimental1","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f7f3da02d07815c2edca45c9206ab6ab64","path":"Experimental1Tests.swift","sourceTree":"<group>","type":"file"}],"guid":"40c83c43d7503d5791623703167045f7f08e2577bb0064600500fcc222cc2ca8","name":"Experimental1Tests","path":"Experimental1Tests","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f73642f3563630f0c571118093ef27def1","path":"Experimental1UITests.swift","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.swift","guid":"40c83c43d7503d5791623703167045f7c75aae2a5c5f09a22266769821390a3d","path":"Experimental1UITestsLaunchTests.swift","sourceTree":"<group>","type":"file"}],"guid":"40c83c43d7503d5791623703167045f77b87828a84e79482307b74fdda8282ae","name":"Experimental1UITests","path":"Experimental1UITests","sourceTree":"<group>","type":"group"},{"guid":"40c83c43d7503d5791623703167045f7d4299e185c2822b8594c01d59d6eaa83","name":"Products","path":"","sourceTree":"<group>","type":"group"}],"guid":"40c83c43d7503d5791623703167045f77e4d2e30828b3469bbdeea3847af508e","name":"Experimental1","path":"","sourceTree":"<group>","type":"group"},"guid":"40c83c43d7503d5791623703167045f7","path":"/Users/ddresser/p/swift/tests/exper1/Experimental1/Experimental1.xcodeproj","projectDirectory":"/Users/ddresser/p/swift/tests/exper1/Experimental1","targets":["TARGET@v11_hash=b1a558917364c1e5e55c87d2cf020cad","TARGET@v11_hash=2eff751499d3dae5ca516b7b74bcd9bf","TARGET@v11_hash=91a961c85a260f33eed319c0f69a5bc0","TARGET@v11_hash=3da7c1fe52778e3bbaa9d65c8509c5e3"]}

0 commit comments

Comments
 (0)