Skip to content

Commit 9e4ce85

Browse files
committed
Update to Swift 5
1 parent dbf0819 commit 9e4ce85

File tree

11 files changed

+92
-52
lines changed

11 files changed

+92
-52
lines changed

Spreadsheet/Spreadsheet.xcodeproj/project.pbxproj

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
archiveVersion = 1;
44
classes = {
55
};
6-
objectVersion = 46;
6+
objectVersion = 63;
77
objects = {
88

99
/* Begin PBXBuildFile section */
@@ -118,9 +118,10 @@
118118
83E6F36D1962FCDD0030D82A /* Project object */ = {
119119
isa = PBXProject;
120120
attributes = {
121+
BuildIndependentTargetsInParallel = YES;
121122
LastSwiftMigration = 0700;
122123
LastSwiftUpdateCheck = 0700;
123-
LastUpgradeCheck = 0800;
124+
LastUpgradeCheck = 1530;
124125
ORGANIZATIONNAME = "Unsigned Integer";
125126
TargetAttributes = {
126127
83E6F3741962FCDD0030D82A = {
@@ -130,8 +131,8 @@
130131
};
131132
};
132133
buildConfigurationList = 83E6F3701962FCDD0030D82A /* Build configuration list for PBXProject "Spreadsheet" */;
133-
compatibilityVersion = "Xcode 3.2";
134-
developmentRegion = English;
134+
compatibilityVersion = "Xcode 15.3";
135+
developmentRegion = en;
135136
hasScannedForEncodings = 0;
136137
knownRegions = (
137138
en,
@@ -196,21 +197,32 @@
196197
CLANG_CXX_LIBRARY = "libc++";
197198
CLANG_ENABLE_MODULES = YES;
198199
CLANG_ENABLE_OBJC_ARC = YES;
200+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
199201
CLANG_WARN_BOOL_CONVERSION = YES;
202+
CLANG_WARN_COMMA = YES;
200203
CLANG_WARN_CONSTANT_CONVERSION = YES;
204+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
201205
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
202206
CLANG_WARN_EMPTY_BODY = YES;
203207
CLANG_WARN_ENUM_CONVERSION = YES;
204208
CLANG_WARN_INFINITE_RECURSION = YES;
205209
CLANG_WARN_INT_CONVERSION = YES;
210+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
211+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
212+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
206213
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
214+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
215+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
216+
CLANG_WARN_STRICT_PROTOTYPES = YES;
207217
CLANG_WARN_SUSPICIOUS_MOVE = YES;
208218
CLANG_WARN_UNREACHABLE_CODE = YES;
209219
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
210220
CODE_SIGN_IDENTITY = "-";
211221
COPY_PHASE_STRIP = NO;
222+
DEAD_CODE_STRIPPING = YES;
212223
ENABLE_STRICT_OBJC_MSGSEND = YES;
213224
ENABLE_TESTABILITY = YES;
225+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
214226
GCC_C_LANGUAGE_STANDARD = gnu99;
215227
GCC_DYNAMIC_NO_PIC = NO;
216228
GCC_NO_COMMON_BLOCKS = YES;
@@ -226,7 +238,7 @@
226238
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
227239
GCC_WARN_UNUSED_FUNCTION = YES;
228240
GCC_WARN_UNUSED_VARIABLE = YES;
229-
MACOSX_DEPLOYMENT_TARGET = 10.9;
241+
MACOSX_DEPLOYMENT_TARGET = 14.4;
230242
METAL_ENABLE_DEBUG_INFO = YES;
231243
ONLY_ACTIVE_ARCH = YES;
232244
SDKROOT = macosx;
@@ -242,22 +254,33 @@
242254
CLANG_CXX_LIBRARY = "libc++";
243255
CLANG_ENABLE_MODULES = YES;
244256
CLANG_ENABLE_OBJC_ARC = YES;
257+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
245258
CLANG_WARN_BOOL_CONVERSION = YES;
259+
CLANG_WARN_COMMA = YES;
246260
CLANG_WARN_CONSTANT_CONVERSION = YES;
261+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
247262
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
248263
CLANG_WARN_EMPTY_BODY = YES;
249264
CLANG_WARN_ENUM_CONVERSION = YES;
250265
CLANG_WARN_INFINITE_RECURSION = YES;
251266
CLANG_WARN_INT_CONVERSION = YES;
267+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
268+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
269+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
252270
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
271+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
272+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
273+
CLANG_WARN_STRICT_PROTOTYPES = YES;
253274
CLANG_WARN_SUSPICIOUS_MOVE = YES;
254275
CLANG_WARN_UNREACHABLE_CODE = YES;
255276
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
256277
CODE_SIGN_IDENTITY = "-";
257278
COPY_PHASE_STRIP = YES;
279+
DEAD_CODE_STRIPPING = YES;
258280
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
259281
ENABLE_NS_ASSERTIONS = NO;
260282
ENABLE_STRICT_OBJC_MSGSEND = YES;
283+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
261284
GCC_C_LANGUAGE_STANDARD = gnu99;
262285
GCC_NO_COMMON_BLOCKS = YES;
263286
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -266,9 +289,10 @@
266289
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
267290
GCC_WARN_UNUSED_FUNCTION = YES;
268291
GCC_WARN_UNUSED_VARIABLE = YES;
269-
MACOSX_DEPLOYMENT_TARGET = 10.9;
292+
MACOSX_DEPLOYMENT_TARGET = 14.4;
270293
METAL_ENABLE_DEBUG_INFO = NO;
271294
SDKROOT = macosx;
295+
SWIFT_COMPILATION_MODE = wholemodule;
272296
};
273297
name = Release;
274298
};
@@ -277,17 +301,22 @@
277301
buildSettings = {
278302
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
279303
COMBINE_HIDPI_IMAGES = YES;
304+
DEAD_CODE_STRIPPING = YES;
280305
INFOPLIST_FILE = Spreadsheet/Info.plist;
281-
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
306+
LD_RUNPATH_SEARCH_PATHS = (
307+
"$(inherited)",
308+
"@executable_path/../Frameworks",
309+
);
282310
LIBRARY_SEARCH_PATHS = (
283311
"$(inherited)",
284312
"$(PROJECT_DIR)",
285313
"$(PROJECT_DIR)/Spreadsheet",
286314
);
315+
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
287316
PRODUCT_BUNDLE_IDENTIFIER = "com.unsignedinteger.${PRODUCT_NAME:rfc1034identifier}";
288317
PRODUCT_NAME = "$(TARGET_NAME)";
289318
SWIFT_INCLUDE_PATHS = "/Users/chris/Desktop/fpinswift/test-projects/Parsing/Parsing";
290-
SWIFT_VERSION = 3.0;
319+
SWIFT_VERSION = 5.0;
291320
};
292321
name = Debug;
293322
};
@@ -296,17 +325,22 @@
296325
buildSettings = {
297326
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
298327
COMBINE_HIDPI_IMAGES = YES;
328+
DEAD_CODE_STRIPPING = YES;
299329
INFOPLIST_FILE = Spreadsheet/Info.plist;
300-
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
330+
LD_RUNPATH_SEARCH_PATHS = (
331+
"$(inherited)",
332+
"@executable_path/../Frameworks",
333+
);
301334
LIBRARY_SEARCH_PATHS = (
302335
"$(inherited)",
303336
"$(PROJECT_DIR)",
304337
"$(PROJECT_DIR)/Spreadsheet",
305338
);
339+
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
306340
PRODUCT_BUNDLE_IDENTIFIER = "com.unsignedinteger.${PRODUCT_NAME:rfc1034identifier}";
307341
PRODUCT_NAME = "$(TARGET_NAME)";
308342
SWIFT_INCLUDE_PATHS = "/Users/chris/Desktop/fpinswift/test-projects/Parsing/Parsing";
309-
SWIFT_VERSION = 3.0;
343+
SWIFT_VERSION = 5.0;
310344
};
311345
name = Release;
312346
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEDidComputeMac32BitWarning</key>
6+
<true/>
7+
</dict>
8+
</plist>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>SchemeUserState</key>
6+
<dict>
7+
<key>Spreadsheet.xcscheme_^#shared#^_</key>
8+
<dict>
9+
<key>orderHint</key>
10+
<integer>0</integer>
11+
</dict>
12+
</dict>
13+
</dict>
14+
</plist>

Spreadsheet/Spreadsheet/AppDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Cocoa
22

33
class AppDelegate: NSObject, NSApplicationDelegate {
4-
var controller : SheetWindowController?
4+
var controller: SheetWindowController?
55

66
func applicationDidFinishLaunching(_ aNotification: Notification) {
77
controller = SheetWindowController(windowNibName: "Sheet")

Spreadsheet/Spreadsheet/Expression.swift

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ extension Expression {
4545
}
4646

4747

48-
4948
enum Result {
5049
case int(Int)
5150
case list([Result])
@@ -67,7 +66,7 @@ extension Expression {
6766
case let .infix(l, op, r):
6867
return self.evaluateArithmetic(context: context)
6968
?? self.evaluateList(context: context)
70-
?? .error("Invalid operator \(op) for operands \(l, r)")
69+
?? .error("Invalid operator \(op) for operands \(l) and \(r)")
7170
default:
7271
return .error("Couldn't evaluate expression \(self)")
7372
}
@@ -117,17 +116,13 @@ extension Expression {
117116
func lift(_ op: @escaping (Int, Int) -> Int) -> ((Result, Result) -> Result) {
118117
return { lhs, rhs in
119118
guard case let (.int(x), .int(y)) = (lhs, rhs) else {
120-
return .error("Invalid operands \(lhs, rhs) for integer operator")
119+
return .error("Invalid operands \(lhs) and \(rhs) for integer operator")
121120
}
122121
return .int(op(x, y))
123122
}
124123
}
125124

126125

127126
func evaluate(expressions: [Expression?]) -> [Result] {
128-
return expressions.map { $0?.evaluate(context: expressions) ?? .error("Invalid expression \($0)") }
127+
return expressions.map { $0?.evaluate(context: expressions) ?? .error("Invalid expression \(String(describing: $0))") }
129128
}
130-
131-
132-
133-

Spreadsheet/Spreadsheet/Helpers.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,3 @@ func curry<A, B, C>(_ f: @escaping (A, B) -> C) -> (A) -> (B) -> C {
1515
func curry<A, B, C, D>(_ f: @escaping (A, B, C) -> D) -> (A) -> (B) -> (C) -> D {
1616
return { a in { b in { c in f(a, b, c) } } }
1717
}
18-
19-
20-

Spreadsheet/Spreadsheet/Sheet.xib

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="16A323" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
2+
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
33
<dependencies>
4-
<deployment identifier="macosx"/>
5-
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
4+
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22689"/>
5+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
66
</dependencies>
77
<objects>
88
<customObject id="-2" userLabel="File's Owner" customClass="SheetWindowController" customModule="Spreadsheet" customModuleProvider="target">
@@ -15,31 +15,30 @@
1515
</customObject>
1616
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
1717
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
18-
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g">
18+
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g">
1919
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
2020
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
2121
<rect key="contentRect" x="196" y="240" width="480" height="270"/>
22-
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
22+
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
2323
<view key="contentView" id="EiT-Mj-1SZ">
2424
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
2525
<autoresizingMask key="autoresizingMask"/>
2626
<subviews>
2727
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MDU-7b-iiu">
2828
<rect key="frame" x="-1" y="-1" width="482" height="272"/>
2929
<clipView key="contentView" id="WIZ-QX-jWP">
30-
<rect key="frame" x="1" y="0.0" width="480" height="271"/>
30+
<rect key="frame" x="1" y="1" width="480" height="270"/>
3131
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
3232
<subviews>
3333
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" headerView="zov-EZ-1uS" id="8J6-bs-qMg">
34-
<rect key="frame" x="0.0" y="0.0" width="480" height="248"/>
35-
<autoresizingMask key="autoresizingMask"/>
34+
<rect key="frame" x="0.0" y="0.0" width="480" height="247"/>
35+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
3636
<size key="intercellSpacing" width="3" height="2"/>
3737
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
3838
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
3939
<tableColumns>
4040
<tableColumn identifier="AutomaticTableColumnIdentifier.0" width="435" minWidth="40" maxWidth="1000" id="2dg-Kn-uYF">
4141
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
42-
<font key="font" metaFont="smallSystem"/>
4342
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
4443
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
4544
</tableHeaderCell>
@@ -58,15 +57,15 @@
5857
</tableView>
5958
</subviews>
6059
</clipView>
61-
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="21z-0P-1x4">
60+
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="21z-0P-1x4">
6261
<rect key="frame" x="1" y="119" width="223" height="15"/>
6362
<autoresizingMask key="autoresizingMask"/>
6463
</scroller>
65-
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="b53-qG-4Ur">
64+
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="b53-qG-4Ur">
6665
<rect key="frame" x="224" y="17" width="15" height="102"/>
6766
<autoresizingMask key="autoresizingMask"/>
6867
</scroller>
69-
<tableHeaderView key="headerView" id="zov-EZ-1uS">
68+
<tableHeaderView key="headerView" wantsLayer="YES" id="zov-EZ-1uS">
7069
<rect key="frame" x="0.0" y="0.0" width="480" height="23"/>
7170
<autoresizingMask key="autoresizingMask"/>
7271
</tableHeaderView>
@@ -79,6 +78,7 @@
7978
<constraint firstItem="MDU-7b-iiu" firstAttribute="top" secondItem="EiT-Mj-1SZ" secondAttribute="top" constant="-1" id="eMb-Zn-ObC"/>
8079
</constraints>
8180
</view>
81+
<point key="canvasLocation" x="38" y="144"/>
8282
</window>
8383
<customObject id="P07-pr-pZt" customClass="SpreadsheetDatasource" customModule="Spreadsheet" customModuleProvider="target"/>
8484
<customObject id="63s-dY-RP4" customClass="SpreadsheetDelegate" customModule="Spreadsheet" customModuleProvider="target"/>

Spreadsheet/Spreadsheet/SheetWindowController.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class SheetWindowController: NSWindowController {
77

88
override func windowDidLoad() {
99
delegate?.editedRowDelegate = dataSource
10-
NotificationCenter.default.addObserver(self, selector: NSSelectorFromString("endEditing:"), name: NSNotification.Name.NSControlTextDidEndEditing, object: nil)
10+
NotificationCenter.default.addObserver(self, selector: NSSelectorFromString("endEditing:"), name: NSControl.textDidEndEditingNotification, object: nil)
1111
}
1212

1313
func endEditing(_ note: Notification) {
@@ -17,7 +17,7 @@ class SheetWindowController: NSWindowController {
1717
}
1818

1919

20-
protocol EditedRow: class {
20+
protocol EditedRow: AnyObject {
2121
var editedRow: Int? { get set }
2222
}
2323

@@ -44,7 +44,7 @@ class SpreadsheetDatasource: NSObject, NSTableViewDataSource, EditedRow {
4444
}
4545

4646
func parseAndEvaluate() {
47-
let expressions = formulas.map { Expression.parser.parse($0.characters)?.0 }
47+
let expressions = formulas.map { formula in Expression.parser.parse(formula[...])?.0 }
4848
results = evaluate(expressions: expressions)
4949
}
5050

Spreadsheet/Spreadsheet/main.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@
88

99
import Cocoa
1010

11-
NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)
11+
_ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)

0 commit comments

Comments
 (0)