diff --git a/Commands/DeleteFromSidebarCommand.swift b/Commands/DeleteFromSidebarCommand.swift index 583dc5edc..7047c8578 100644 --- a/Commands/DeleteFromSidebarCommand.swift +++ b/Commands/DeleteFromSidebarCommand.swift @@ -36,7 +36,7 @@ final class DeleteFromSidebarCommand: UndoableCommand { self.undoActionName = actionName self.undoManager = undoManager - let itemSpecifiers = nodesToDelete.flatMap{ SidebarItemSpecifier(node: $0) } + let itemSpecifiers = nodesToDelete.compactMap{ SidebarItemSpecifier(node: $0) } guard !itemSpecifiers.isEmpty else { return nil } diff --git a/Evergreen.xcodeproj/project.pbxproj b/Evergreen.xcodeproj/project.pbxproj index ba0674228..eb330c638 100644 --- a/Evergreen.xcodeproj/project.pbxproj +++ b/Evergreen.xcodeproj/project.pbxproj @@ -1279,7 +1279,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software"; TargetAttributes = { 849C645F1ED37A5D003D8FC0 = { diff --git a/Evergreen/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift b/Evergreen/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift index b8ac2678f..e2a9ba3d1 100644 --- a/Evergreen/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift +++ b/Evergreen/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift @@ -19,7 +19,7 @@ final class MainWindowKeyboardHandler: KeyboardDelegate { let f = Bundle.main.path(forResource: "GlobalKeyboardShortcuts", ofType: "plist")! let rawShortcuts = NSArray(contentsOfFile: f)! as! [[String: Any]] - self.globalShortcuts = Set(rawShortcuts.flatMap { KeyboardShortcut(dictionary: $0) }) + self.globalShortcuts = Set(rawShortcuts.compactMap { KeyboardShortcut(dictionary: $0) }) } func keydown(_ event: NSEvent, in view: NSView) -> Bool { diff --git a/Evergreen/MainWindow/MainWindowController.swift b/Evergreen/MainWindow/MainWindowController.swift index 0a0b6b37a..fbbbfdcdb 100644 --- a/Evergreen/MainWindow/MainWindowController.swift +++ b/Evergreen/MainWindow/MainWindowController.swift @@ -332,7 +332,7 @@ extension MainWindowController: NSSharingServicePickerDelegate { func sharingServicePicker(_ sharingServicePicker: NSSharingServicePicker, sharingServicesForItems items: [Any], proposedSharingServices proposedServices: [NSSharingService]) -> [NSSharingService] { - let sendToServices = appDelegate.sendToCommands.flatMap { (sendToCommand) -> NSSharingService? in + let sendToServices = appDelegate.sendToCommands.compactMap { (sendToCommand) -> NSSharingService? in guard let object = items.first else { return nil diff --git a/Evergreen/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift b/Evergreen/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift index e048db67a..0e993314a 100644 --- a/Evergreen/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift +++ b/Evergreen/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift @@ -19,7 +19,7 @@ import RSCore let f = Bundle.main.path(forResource: "SidebarKeyboardShortcuts", ofType: "plist")! let rawShortcuts = NSArray(contentsOfFile: f)! as! [[String: Any]] - self.shortcuts = Set(rawShortcuts.flatMap { KeyboardShortcut(dictionary: $0) }) + self.shortcuts = Set(rawShortcuts.compactMap { KeyboardShortcut(dictionary: $0) }) super.init() } diff --git a/Evergreen/MainWindow/Timeline/ArticleArray.swift b/Evergreen/MainWindow/Timeline/ArticleArray.swift index 531ea2247..2c30fa99d 100644 --- a/Evergreen/MainWindow/Timeline/ArticleArray.swift +++ b/Evergreen/MainWindow/Timeline/ArticleArray.swift @@ -45,7 +45,7 @@ extension Array where Element == Article { func articlesForIndexes(_ indexes: IndexSet) -> Set
{ - return Set(indexes.flatMap{ (oneIndex) -> Article? in + return Set(indexes.compactMap{ (oneIndex) -> Article? in return articleAtRow(oneIndex) }) } diff --git a/Evergreen/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift b/Evergreen/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift index 39ca4b3b3..d15d0be50 100644 --- a/Evergreen/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift +++ b/Evergreen/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift @@ -21,7 +21,7 @@ import RSCore let f = Bundle.main.path(forResource: "TimelineKeyboardShortcuts", ofType: "plist")! let rawShortcuts = NSArray(contentsOfFile: f)! as! [[String: Any]] - self.shortcuts = Set(rawShortcuts.flatMap { KeyboardShortcut(dictionary: $0) }) + self.shortcuts = Set(rawShortcuts.compactMap { KeyboardShortcut(dictionary: $0) }) super.init() } diff --git a/Evergreen/Scriptability/Account+Scriptability.swift b/Evergreen/Scriptability/Account+Scriptability.swift index 47723de6c..bd2c7cbf0 100644 --- a/Evergreen/Scriptability/Account+Scriptability.swift +++ b/Evergreen/Scriptability/Account+Scriptability.swift @@ -50,13 +50,13 @@ class ScriptableAccount: NSObject, UniqueIdScriptingObject, ScriptingObjectConta @objc(feeds) var feeds:NSArray { - let feeds = account.children.flatMap { $0 as? Feed } + let feeds = account.children.compactMap { $0 as? Feed } return feeds.map { ScriptableFeed($0, container:self) } as NSArray } @objc(folders) var folders:NSArray { - let folders = account.children.flatMap { $0 as? Folder } + let folders = account.children.compactMap { $0 as? Folder } return folders.map { ScriptableFolder($0, container:self) } as NSArray } diff --git a/Evergreen/Scriptability/NSApplication+Scriptability.swift b/Evergreen/Scriptability/NSApplication+Scriptability.swift index 9ecc48ee0..1fc26d668 100644 --- a/Evergreen/Scriptability/NSApplication+Scriptability.swift +++ b/Evergreen/Scriptability/NSApplication+Scriptability.swift @@ -36,7 +36,7 @@ extension NSApplication : ScriptingObjectContainer { let accounts = AccountManager.shared.accounts let emptyFeeds:[Feed] = [] let feeds = accounts.reduce(emptyFeeds) { (result, nthAccount) -> [Feed] in - let accountFeeds = nthAccount.children.flatMap { $0 as? Feed } + let accountFeeds = nthAccount.children.compactMap { $0 as? Feed } return result + accountFeeds } return feeds.map { ScriptableFeed($0, container:self) } as NSArray diff --git a/Frameworks/Account/Account.swift b/Frameworks/Account/Account.swift index b5abd4bf1..4f723d5aa 100644 --- a/Frameworks/Account/Account.swift +++ b/Frameworks/Account/Account.swift @@ -462,7 +462,7 @@ extension Account { func objects(with diskObjects: [[String: Any]]) -> [AnyObject] { - return diskObjects.flatMap { object(with: $0) } + return diskObjects.compactMap { object(with: $0) } } } @@ -508,7 +508,7 @@ private extension Account { func diskDictionary() -> NSDictionary { - let diskObjects = children.flatMap { (object) -> [String: Any]? in + let diskObjects = children.compactMap { (object) -> [String: Any]? in if let folder = object as? Folder { return folder.dictionary @@ -650,7 +650,7 @@ private extension Account { func noteStatusesForArticlesDidChange(_ articles: Set
) { - let feeds = Set(articles.flatMap { $0.feed }) + let feeds = Set(articles.compactMap { $0.feed }) let statuses = Set(articles.map { $0.status }) // .UnreadCountDidChange notification will get sent to Folder and Account objects, diff --git a/Frameworks/Account/Account.xcodeproj/project.pbxproj b/Frameworks/Account/Account.xcodeproj/project.pbxproj index af2182fd3..e3b97b18b 100644 --- a/Frameworks/Account/Account.xcodeproj/project.pbxproj +++ b/Frameworks/Account/Account.xcodeproj/project.pbxproj @@ -316,7 +316,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0900; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software, LLC"; TargetAttributes = { 848934F51F62484F00CEBD24 = { @@ -505,6 +505,7 @@ 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; @@ -512,6 +513,7 @@ 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_RANGE_LOOP_ANALYSIS = YES; @@ -565,6 +567,7 @@ 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; @@ -572,6 +575,7 @@ 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_RANGE_LOOP_ANALYSIS = YES; @@ -597,6 +601,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -607,6 +612,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; @@ -631,6 +637,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; @@ -654,6 +661,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = M8L2WTLA8W; @@ -669,6 +677,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = M8L2WTLA8W; diff --git a/Frameworks/Account/Feedbin/FeedbinArticle.swift b/Frameworks/Account/Feedbin/FeedbinArticle.swift index cbd2c64bf..0305b59f1 100644 --- a/Frameworks/Account/Feedbin/FeedbinArticle.swift +++ b/Frameworks/Account/Feedbin/FeedbinArticle.swift @@ -90,7 +90,7 @@ struct FeedbinArticle { static func articles(with array: JSONArray) -> [FeedbinArticle]? { - let articlesArray = array.flatMap { FeedbinArticle(jsonDictionary: $0) } + let articlesArray = array.compactMap { FeedbinArticle(jsonDictionary: $0) } return articlesArray.isEmpty ? nil : articlesArray } } diff --git a/Frameworks/Account/Feedbin/FeedbinSubscription.swift b/Frameworks/Account/Feedbin/FeedbinSubscription.swift index c4678bcc8..0c76374b0 100644 --- a/Frameworks/Account/Feedbin/FeedbinSubscription.swift +++ b/Frameworks/Account/Feedbin/FeedbinSubscription.swift @@ -64,7 +64,7 @@ struct FeedbinSubscription { static func subscriptions(with array: JSONArray) -> [FeedbinSubscription]? { - let subs = array.flatMap { FeedbinSubscription(dictionary: $0) } + let subs = array.compactMap { FeedbinSubscription(dictionary: $0) } return subs.isEmpty ? nil : subs } } diff --git a/Frameworks/Account/Folder.swift b/Frameworks/Account/Folder.swift index f454eb2e9..442ada83f 100644 --- a/Frameworks/Account/Folder.swift +++ b/Frameworks/Account/Folder.swift @@ -107,7 +107,7 @@ public final class Folder: DisplayNameProvider, Container, UnreadCountProvider, d[Key.unreadCount] = unreadCount } - let childObjects = children.flatMap { (child) -> [String: Any]? in + let childObjects = children.compactMap { (child) -> [String: Any]? in if let feed = child as? Feed { return feed.dictionary diff --git a/Frameworks/DB5/DB5.xcodeproj/project.pbxproj b/Frameworks/DB5/DB5.xcodeproj/project.pbxproj index 2515d3c45..a097758f7 100644 --- a/Frameworks/DB5/DB5.xcodeproj/project.pbxproj +++ b/Frameworks/DB5/DB5.xcodeproj/project.pbxproj @@ -148,7 +148,7 @@ 84F22BC81B52DC2E000060CE /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software, LLC"; TargetAttributes = { 84F22BD01B52DC2E000060CE = { @@ -237,12 +237,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -290,12 +292,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -328,6 +332,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -348,6 +353,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -367,6 +373,7 @@ 84F22BE91B52DC2E000060CE /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = DB5Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; @@ -379,6 +386,7 @@ 84F22BEA1B52DC2E000060CE /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = DB5Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; diff --git a/Frameworks/Data/Author.swift b/Frameworks/Data/Author.swift index d75ddb1a7..df25a8741 100644 --- a/Frameworks/Data/Author.swift +++ b/Frameworks/Data/Author.swift @@ -84,7 +84,7 @@ public struct Author: Hashable { static func authorsWithDiskArray(_ diskArray: [[String: Any]]) -> Set? { - let authors = diskArray.flatMap { Author(dictionary: $0) } + let authors = diskArray.compactMap { Author(dictionary: $0) } return authors.isEmpty ? nil : Set(authors) } } diff --git a/Frameworks/Data/Data.xcodeproj/project.pbxproj b/Frameworks/Data/Data.xcodeproj/project.pbxproj index 80c4cb50d..d1164a22a 100644 --- a/Frameworks/Data/Data.xcodeproj/project.pbxproj +++ b/Frameworks/Data/Data.xcodeproj/project.pbxproj @@ -199,7 +199,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software"; TargetAttributes = { 844BEE5A1F0AB3C8004AB7CD = { @@ -328,6 +328,7 @@ 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; @@ -335,6 +336,7 @@ 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_RANGE_LOOP_ANALYSIS = YES; @@ -389,6 +391,7 @@ 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; @@ -396,6 +399,7 @@ 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_RANGE_LOOP_ANALYSIS = YES; @@ -420,6 +424,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 4.0; @@ -432,6 +437,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -454,6 +460,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -475,6 +482,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 9C84TZ7Q6Z; INFOPLIST_FILE = DataTests/Info.plist; @@ -488,6 +496,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 9C84TZ7Q6Z; INFOPLIST_FILE = DataTests/Info.plist; diff --git a/Frameworks/Database/Database.xcodeproj/project.pbxproj b/Frameworks/Database/Database.xcodeproj/project.pbxproj index 51f6e6342..f8bb2e4ff 100644 --- a/Frameworks/Database/Database.xcodeproj/project.pbxproj +++ b/Frameworks/Database/Database.xcodeproj/project.pbxproj @@ -325,7 +325,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software"; TargetAttributes = { 844BEE361F0AB3AA004AB7CD = { @@ -526,6 +526,7 @@ 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; @@ -533,6 +534,7 @@ 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_RANGE_LOOP_ANALYSIS = YES; @@ -587,6 +589,7 @@ 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; @@ -594,6 +597,7 @@ 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_RANGE_LOOP_ANALYSIS = YES; @@ -618,6 +622,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 4.0; @@ -630,6 +635,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -652,6 +658,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -673,6 +680,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 9C84TZ7Q6Z; INFOPLIST_FILE = DatabaseTests/Info.plist; @@ -686,6 +694,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 9C84TZ7Q6Z; INFOPLIST_FILE = DatabaseTests/Info.plist; diff --git a/Frameworks/Database/Extensions/Article+Database.swift b/Frameworks/Database/Extensions/Article+Database.swift index 082014821..bd61718f1 100644 --- a/Frameworks/Database/Extensions/Article+Database.swift +++ b/Frameworks/Database/Extensions/Article+Database.swift @@ -159,7 +159,7 @@ extension Set where Element == Article { func databaseDictionaries() -> [NSDictionary]? { - return self.flatMap { $0.databaseDictionary() } + return self.compactMap { $0.databaseDictionary() } } } diff --git a/Frameworks/Database/Extensions/Attachment+Database.swift b/Frameworks/Database/Extensions/Attachment+Database.swift index b84f0aae8..134cc14a3 100644 --- a/Frameworks/Database/Extensions/Attachment+Database.swift +++ b/Frameworks/Database/Extensions/Attachment+Database.swift @@ -39,7 +39,7 @@ extension Attachment { return nil } - let attachments = parsedAttachments.flatMap{ Attachment(parsedAttachment: $0) } + let attachments = parsedAttachments.compactMap{ Attachment(parsedAttachment: $0) } return attachments.isEmpty ? nil : Set(attachments) } @@ -91,11 +91,11 @@ extension Set where Element == Attachment { func databaseDictionaries() -> [NSDictionary] { - return self.flatMap { $0.databaseDictionary() } + return self.compactMap { $0.databaseDictionary() } } func databaseObjects() -> [DatabaseObject] { - return self.flatMap { $0 as DatabaseObject } + return self.compactMap { $0 as DatabaseObject } } } diff --git a/Frameworks/Database/Extensions/Author+Database.swift b/Frameworks/Database/Extensions/Author+Database.swift index 984aa9d6d..f28b4be4c 100644 --- a/Frameworks/Database/Extensions/Author+Database.swift +++ b/Frameworks/Database/Extensions/Author+Database.swift @@ -37,7 +37,7 @@ extension Author { return nil } - let authors = Set(parsedAuthors.flatMap { Author(parsedAuthor: $0) }) + let authors = Set(parsedAuthors.compactMap { Author(parsedAuthor: $0) }) return authors.isEmpty ? nil: authors } } diff --git a/Frameworks/RSCore/RSCore.xcodeproj/project.pbxproj b/Frameworks/RSCore/RSCore.xcodeproj/project.pbxproj index 8829542f2..b036c6a16 100755 --- a/Frameworks/RSCore/RSCore.xcodeproj/project.pbxproj +++ b/Frameworks/RSCore/RSCore.xcodeproj/project.pbxproj @@ -624,7 +624,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software, LLC"; TargetAttributes = { 842DD7BB1E14993900E061EB = { @@ -820,6 +820,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -849,6 +850,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -1011,6 +1013,7 @@ MTL_ENABLE_DEBUG_INFO = NO; RUN_CLANG_STATIC_ANALYZER = YES; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_TREAT_WARNINGS_AS_ERRORS = YES; @@ -1028,6 +1031,7 @@ CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES; CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1051,6 +1055,7 @@ CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES; CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1070,6 +1075,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(DEVELOPER_FRAMEWORKS_DIR)", @@ -1090,6 +1096,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(DEVELOPER_FRAMEWORKS_DIR)", diff --git a/Frameworks/RSCore/RSCore/NSOutlineView+Extensions.swift b/Frameworks/RSCore/RSCore/NSOutlineView+Extensions.swift index 94d0c1ef1..3150606fc 100755 --- a/Frameworks/RSCore/RSCore/NSOutlineView+Extensions.swift +++ b/Frameworks/RSCore/RSCore/NSOutlineView+Extensions.swift @@ -17,7 +17,7 @@ public extension NSOutlineView { return [AnyObject]() } - return selectedRowIndexes.flatMap { (oneIndex) -> AnyObject? in + return selectedRowIndexes.compactMap { (oneIndex) -> AnyObject? in return item(atRow: oneIndex) as AnyObject } } diff --git a/Frameworks/RSDatabase/DatabaseTable.swift b/Frameworks/RSDatabase/DatabaseTable.swift index d7ea0df15..723bb7135 100644 --- a/Frameworks/RSDatabase/DatabaseTable.swift +++ b/Frameworks/RSDatabase/DatabaseTable.swift @@ -95,7 +95,7 @@ public extension DatabaseTable { public extension FMResultSet { - public func flatMap(_ callback: (_ row: FMResultSet) -> T?) -> [T] { + public func compactMap(_ callback: (_ row: FMResultSet) -> T?) -> [T] { var objects = [T]() while next() { @@ -109,7 +109,7 @@ public extension FMResultSet { public func mapToSet(_ callback: (_ row: FMResultSet) -> T?) -> Set { - return Set(flatMap(callback)) + return Set(compactMap(callback)) } } diff --git a/Frameworks/RSDatabase/FMDB/fmdb-master/src/fmdb/FMDatabase.m b/Frameworks/RSDatabase/FMDB/fmdb-master/src/fmdb/FMDatabase.m index cd7bf8676..685f11e08 100755 --- a/Frameworks/RSDatabase/FMDB/fmdb-master/src/fmdb/FMDatabase.m +++ b/Frameworks/RSDatabase/FMDB/fmdb-master/src/fmdb/FMDatabase.m @@ -47,11 +47,6 @@ return self; } -- (void)finalize { - [self close]; - [super finalize]; -} - - (void)dealloc { [self close]; FMDBRelease(_openResultSets); @@ -1398,11 +1393,6 @@ void FMDBBlockSQLiteCallBackFunction(sqlite3_context *context, int argc, sqlite3 @synthesize useCount=_useCount; @synthesize inUse=_inUse; -- (void)finalize { - [self close]; - [super finalize]; -} - - (void)dealloc { [self close]; FMDBRelease(_query); diff --git a/Frameworks/RSDatabase/FMDB/fmdb-master/src/fmdb/FMResultSet.m b/Frameworks/RSDatabase/FMDB/fmdb-master/src/fmdb/FMResultSet.m index e1949fd06..24848f7c5 100755 --- a/Frameworks/RSDatabase/FMDB/fmdb-master/src/fmdb/FMResultSet.m +++ b/Frameworks/RSDatabase/FMDB/fmdb-master/src/fmdb/FMResultSet.m @@ -25,11 +25,6 @@ return FMDBReturnAutoreleased(rs); } -- (void)finalize { - [self close]; - [super finalize]; -} - - (void)dealloc { [self close]; diff --git a/Frameworks/RSDatabase/RSDatabase.xcodeproj/project.pbxproj b/Frameworks/RSDatabase/RSDatabase.xcodeproj/project.pbxproj index 339637232..6b4768de7 100755 --- a/Frameworks/RSDatabase/RSDatabase.xcodeproj/project.pbxproj +++ b/Frameworks/RSDatabase/RSDatabase.xcodeproj/project.pbxproj @@ -307,7 +307,7 @@ 84F22C4C1B52E0D9000060CE /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software, LLC"; TargetAttributes = { 8400ABF61E0CFBD800AA7C57 = { @@ -430,6 +430,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -457,6 +458,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -494,12 +496,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -550,12 +554,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -579,6 +585,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 4.0; @@ -591,6 +598,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -612,6 +620,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -632,6 +641,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = RSDatabaseTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; @@ -645,6 +655,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = RSDatabaseTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; diff --git a/Frameworks/RSDatabase/RSDatabase/DatabaseObject.swift b/Frameworks/RSDatabase/RSDatabase/DatabaseObject.swift index 0686c128a..2f6718776 100644 --- a/Frameworks/RSDatabase/RSDatabase/DatabaseObject.swift +++ b/Frameworks/RSDatabase/RSDatabase/DatabaseObject.swift @@ -53,7 +53,7 @@ extension Array where Element == DatabaseObject { func databaseDictionaries() -> [NSDictionary]? { - let dictionaries = self.flatMap{ $0.databaseDictionary() } + let dictionaries = self.compactMap{ $0.databaseDictionary() } return dictionaries.isEmpty ? nil : dictionaries } } diff --git a/Frameworks/RSDatabase/Related Objects/DatabaseRelatedObjectsTable.swift b/Frameworks/RSDatabase/Related Objects/DatabaseRelatedObjectsTable.swift index b53dee538..a2c897508 100644 --- a/Frameworks/RSDatabase/Related Objects/DatabaseRelatedObjectsTable.swift +++ b/Frameworks/RSDatabase/Related Objects/DatabaseRelatedObjectsTable.swift @@ -60,7 +60,7 @@ public extension DatabaseRelatedObjectsTable { func objectsWithResultSet(_ resultSet: FMResultSet) -> [DatabaseObject] { - return resultSet.flatMap(objectWithRow) + return resultSet.compactMap(objectWithRow) } func save(_ objects: [DatabaseObject], in database: FMDatabase) { diff --git a/Frameworks/RSDatabase/Related Objects/RelatedObjectsMap.swift b/Frameworks/RSDatabase/Related Objects/RelatedObjectsMap.swift index 3bf76a925..bc75e4926 100644 --- a/Frameworks/RSDatabase/Related Objects/RelatedObjectsMap.swift +++ b/Frameworks/RSDatabase/Related Objects/RelatedObjectsMap.swift @@ -23,7 +23,7 @@ public struct RelatedObjectsMap { for objectID in relatedObjectIDsMap.objectIDs() { if let relatedObjectIDs = relatedObjectIDsMap[objectID] { - let relatedObjects = relatedObjectIDs.flatMap{ relatedObjectsDictionary[$0] } + let relatedObjects = relatedObjectIDs.compactMap{ relatedObjectsDictionary[$0] } if !relatedObjects.isEmpty { d[objectID] = relatedObjects } diff --git a/Frameworks/RSFeedFinder/RSFeedFinder.xcodeproj/project.pbxproj b/Frameworks/RSFeedFinder/RSFeedFinder.xcodeproj/project.pbxproj index 1669108b8..2f18d02a7 100644 --- a/Frameworks/RSFeedFinder/RSFeedFinder.xcodeproj/project.pbxproj +++ b/Frameworks/RSFeedFinder/RSFeedFinder.xcodeproj/project.pbxproj @@ -189,7 +189,7 @@ 84BAAE161C8E6B3B009F5239 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software"; TargetAttributes = { 84BAAE1E1C8E6B3B009F5239 = { @@ -285,12 +285,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -341,12 +343,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -371,6 +375,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 4.0; @@ -383,6 +388,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -403,6 +409,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -422,6 +429,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = RSFeedFinderTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; @@ -435,6 +443,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = RSFeedFinderTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; diff --git a/Frameworks/RSParser/Feeds/JSON/JSONFeedParser.swift b/Frameworks/RSParser/Feeds/JSON/JSONFeedParser.swift index 7bfeb39a4..b1546b0e8 100644 --- a/Frameworks/RSParser/Feeds/JSON/JSONFeedParser.swift +++ b/Frameworks/RSParser/Feeds/JSON/JSONFeedParser.swift @@ -103,7 +103,7 @@ private extension JSONFeedParser { return nil } - let hubs = hubsArray.flatMap { (hubDictionary) -> ParsedHub? in + let hubs = hubsArray.compactMap { (hubDictionary) -> ParsedHub? in guard let hubURL = hubDictionary[Key.url] as? String, let hubType = hubDictionary[Key.type] as? String else { return nil } @@ -114,7 +114,7 @@ private extension JSONFeedParser { static func parseItems(_ itemsArray: JSONArray, _ feedURL: String) -> Set { - return Set(itemsArray.flatMap { (oneItemDictionary) -> ParsedItem? in + return Set(itemsArray.compactMap { (oneItemDictionary) -> ParsedItem? in return parseItem(oneItemDictionary, feedURL) }) } @@ -180,7 +180,7 @@ private extension JSONFeedParser { guard let attachmentsArray = itemDictionary[Key.attachments] as? JSONArray else { return nil } - return Set(attachmentsArray.flatMap { parseAttachment($0) }) + return Set(attachmentsArray.compactMap { parseAttachment($0) }) } static func parseAttachment(_ attachmentObject: JSONDictionary) -> ParsedAttachment? { diff --git a/Frameworks/RSParser/Feeds/JSON/RSSInJSONParser.swift b/Frameworks/RSParser/Feeds/JSON/RSSInJSONParser.swift index 8debc2a66..2bf595d47 100644 --- a/Frameworks/RSParser/Feeds/JSON/RSSInJSONParser.swift +++ b/Frameworks/RSParser/Feeds/JSON/RSSInJSONParser.swift @@ -60,7 +60,7 @@ private extension RSSInJSONParser { static func parseItems(_ itemsObject: JSONArray, _ feedURL: String) -> Set { - return Set(itemsObject.flatMap{ (oneItemDictionary) -> ParsedItem? in + return Set(itemsObject.compactMap{ (oneItemDictionary) -> ParsedItem? in return parsedItemWithDictionary(oneItemDictionary, feedURL) }) @@ -150,7 +150,7 @@ private extension RSSInJSONParser { return nil } else if let categoryArray = itemDictionary["category"] as? JSONArray { - return Set(categoryArray.flatMap{ $0["#value"] as? String }) + return Set(categoryArray.compactMap{ $0["#value"] as? String }) } return nil } diff --git a/Frameworks/RSParser/Feeds/XML/RSParsedFeedTransformer.swift b/Frameworks/RSParser/Feeds/XML/RSParsedFeedTransformer.swift index 05c9c0eee..2a4cbc458 100644 --- a/Frameworks/RSParser/Feeds/XML/RSParsedFeedTransformer.swift +++ b/Frameworks/RSParser/Feeds/XML/RSParsedFeedTransformer.swift @@ -52,7 +52,7 @@ private extension RSParsedFeedTransformer { return nil } - let transformedAuthors = authors.flatMap { (author) -> ParsedAuthor? in + let transformedAuthors = authors.compactMap { (author) -> ParsedAuthor? in return ParsedAuthor(name: author.name, url: author.url, avatarURL: nil, emailAddress: author.emailAddress) } @@ -65,7 +65,7 @@ private extension RSParsedFeedTransformer { return nil } - let attachments = enclosures.flatMap { (enclosure) -> ParsedAttachment? in + let attachments = enclosures.compactMap { (enclosure) -> ParsedAttachment? in let sizeInBytes = enclosure.length > 0 ? enclosure.length : nil return ParsedAttachment(url: enclosure.url, mimeType: enclosure.mimeType, title: nil, sizeInBytes: sizeInBytes, durationInSeconds: nil) diff --git a/Frameworks/RSParser/RSParser.xcodeproj/project.pbxproj b/Frameworks/RSParser/RSParser.xcodeproj/project.pbxproj index f97c93ce2..ca86404f4 100644 --- a/Frameworks/RSParser/RSParser.xcodeproj/project.pbxproj +++ b/Frameworks/RSParser/RSParser.xcodeproj/project.pbxproj @@ -541,7 +541,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0900; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software, LLC"; TargetAttributes = { 84FF5F831EFA285800C15A01 = { @@ -846,6 +846,7 @@ MTL_ENABLE_DEBUG_INFO = NO; RUN_CLANG_STATIC_ANALYZER = YES; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_TREAT_WARNINGS_AS_ERRORS = YES; @@ -859,6 +860,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -883,6 +885,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -907,6 +910,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = M8L2WTLA8W; INFOPLIST_FILE = RSParserTests/Info.plist; @@ -923,6 +927,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = M8L2WTLA8W; INFOPLIST_FILE = RSParserTests/Info.plist; diff --git a/Frameworks/RSParser/SAX/RSSAXParser.m b/Frameworks/RSParser/SAX/RSSAXParser.m index fe79e0c97..9de3e88d4 100755 --- a/Frameworks/RSParser/SAX/RSSAXParser.m +++ b/Frameworks/RSParser/SAX/RSSAXParser.m @@ -6,6 +6,7 @@ // Copyright (c) 2015 Ranchero Software, LLC. All rights reserved. // +#import #import #import #import diff --git a/Frameworks/RSTextDrawing/RSTextDrawing.xcodeproj/project.pbxproj b/Frameworks/RSTextDrawing/RSTextDrawing.xcodeproj/project.pbxproj index c22f2094c..e45ce85be 100644 --- a/Frameworks/RSTextDrawing/RSTextDrawing.xcodeproj/project.pbxproj +++ b/Frameworks/RSTextDrawing/RSTextDrawing.xcodeproj/project.pbxproj @@ -178,7 +178,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software"; TargetAttributes = { 8439D9FA1C8937C800E5E4B4 = { @@ -270,12 +270,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -324,12 +326,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -363,6 +367,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -384,6 +389,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -403,6 +409,7 @@ 8439DA131C8937C800E5E4B4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = RSTextDrawingTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; @@ -415,6 +422,7 @@ 8439DA141C8937C800E5E4B4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = RSTextDrawingTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; diff --git a/Frameworks/RSTree/RSTree.xcodeproj/project.pbxproj b/Frameworks/RSTree/RSTree.xcodeproj/project.pbxproj index 2d5b25c8e..30533f757 100644 --- a/Frameworks/RSTree/RSTree.xcodeproj/project.pbxproj +++ b/Frameworks/RSTree/RSTree.xcodeproj/project.pbxproj @@ -150,7 +150,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software, LLC"; TargetAttributes = { 842A0BE01CFCB9BC00BF746C = { @@ -243,12 +243,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -301,12 +303,14 @@ 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_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_RANGE_LOOP_ANALYSIS = YES; @@ -331,6 +335,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 4.0; @@ -343,6 +348,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -363,6 +369,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -375,6 +382,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.ranchero.RSTree; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; }; name = Release; @@ -382,6 +390,7 @@ 842A0BF91CFCB9BC00BF746C /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = RSTreeTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; @@ -393,6 +402,7 @@ 842A0BFA1CFCB9BC00BF746C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = RSTreeTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; diff --git a/Frameworks/RSWeb/RSWeb.xcodeproj/project.pbxproj b/Frameworks/RSWeb/RSWeb.xcodeproj/project.pbxproj index a88e9cbe1..d082e7398 100755 --- a/Frameworks/RSWeb/RSWeb.xcodeproj/project.pbxproj +++ b/Frameworks/RSWeb/RSWeb.xcodeproj/project.pbxproj @@ -299,7 +299,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Ranchero Software"; TargetAttributes = { 849C08B51E0CAC85006B03FA = { @@ -590,6 +590,7 @@ MTL_ENABLE_DEBUG_INFO = NO; RUN_CLANG_STATIC_ANALYZER = YES; SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_TREAT_WARNINGS_AS_ERRORS = YES; @@ -603,6 +604,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -625,6 +627,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -646,6 +649,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 9C84TZ7Q6Z; INFOPLIST_FILE = RSWebTests/Info.plist; @@ -659,6 +663,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 9C84TZ7Q6Z; INFOPLIST_FILE = RSWebTests/Info.plist; @@ -672,6 +677,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; @@ -696,6 +702,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; diff --git a/Importers/DefaultFeedsImporter.swift b/Importers/DefaultFeedsImporter.swift index 3af6bdaed..2d57a93ce 100644 --- a/Importers/DefaultFeedsImporter.swift +++ b/Importers/DefaultFeedsImporter.swift @@ -56,7 +56,7 @@ struct FeedsImporter { private static func feeds(with feedDictionaries: [DiskFeedDictionary], accountID: String) -> Set { - let feedArray = feedDictionaries.flatMap { Feed(accountID: accountID, dictionary: $0) } + let feedArray = feedDictionaries.compactMap { Feed(accountID: accountID, dictionary: $0) } return Set(feedArray) } } diff --git a/test.html b/test.html new file mode 100644 index 000000000..d7df51ef0 --- /dev/null +++ b/test.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + +
Print page 1 of 1
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Click on the Column Headings to sort accordingly.
+ Click on the Parcel ID to view the parcel detail.
  +
+
Parcel IDLocationOwnerBuilt
+ Type +
Total Value + Beds
+ Baths
Lot size
+ Fin area
LUC
+ Description
NHoodSale date
+ Sale price
Book Page
006.0-0005-0003.030  + FREEMAN STPITCHEL STUART +
GOODMAN JULIA
1914
+ Old Style +  
$615,4005
+ 3
5,502 +
2,472
101
+ One Family
18/19/1998
+ $299,000
28988-522
+ + + + + + + + +
Print page 1 of 1
+ + + + + + + + + diff --git a/xcconfig/Evergreen_project.xcconfig b/xcconfig/Evergreen_project.xcconfig index 21c28c3fd..a982e1b19 100644 --- a/xcconfig/Evergreen_project.xcconfig +++ b/xcconfig/Evergreen_project.xcconfig @@ -8,8 +8,10 @@ CLANG_CXX_LANGUAGE_STANDARD = gnu++0x CLANG_CXX_LIBRARY = libc++ CLANG_ENABLE_MODULES = YES CLANG_ENABLE_OBJC_ARC = YES +CLANG_ENABLE_OBJC_WEAK = YES ENABLE_STRICT_OBJC_MSGSEND = YES CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES +CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES CLANG_WARN_DOCUMENTATION_COMMENTS = YES CLANG_WARN_EMPTY_BODY = YES CLANG_WARN_BOOL_CONVERSION = YES @@ -33,6 +35,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES CLANG_WARN_OBJC_LITERAL_CONVERSION = YES GCC_WARN_UNDECLARED_SELECTOR = YES CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES CLANG_ANALYZER_NONNULL = YES SWIFT_SWIFT3_OBJC_INFERENCE = Off SWIFT_VERSION = 4.0