diff --git a/DDMathParser.xcodeproj/project.pbxproj b/DDMathParser.xcodeproj/project.pbxproj index 11b803d..24100e6 100644 --- a/DDMathParser.xcodeproj/project.pbxproj +++ b/DDMathParser.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -502,34 +502,33 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0910; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1000; TargetAttributes = { 55113C031FC35AC7001E508D = { CreatedOnToolsVersion = 9.1; - DevelopmentTeam = 654LUM7646; ProvisioningStyle = Automatic; }; 559B3EF81B74063600000108 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = 654LUM7646; - LastSwiftMigration = 0800; + LastSwiftMigration = 1000; + ProvisioningStyle = Automatic; }; 559B3F011B74063600000108 = { CreatedOnToolsVersion = 7.0; - LastSwiftMigration = 0800; + LastSwiftMigration = 1000; }; }; }; buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "DDMathParser" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 10.0"; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + fr, + de, + ja, + en, ); mainGroup = 08FB7794FE84155DC02AAC07 /* DDMathParser */; projectDirPath = ""; @@ -690,12 +689,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; @@ -728,8 +729,9 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator watchsimulator watchos macosx appletvsimulator appletvos"; - SWIFT_VERSION = 4.0; - VALID_ARCHS = "i386 x86_64 armv6 armv7 armv7s arm64"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; @@ -745,12 +747,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; @@ -781,8 +785,8 @@ MACOSX_DEPLOYMENT_TARGET = 10.9; SDKROOT = macosx; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator watchsimulator watchos macosx appletvsimulator appletvos"; - SWIFT_VERSION = 4.0; - VALID_ARCHS = "i386 x86_64 armv6 armv7 armv7s arm64"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; @@ -814,14 +818,14 @@ "$(inherited)", ); INFOPLIST_FILE = Demo/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.davedelong.MathParser.Demo; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -846,13 +850,14 @@ DEVELOPMENT_TEAM = 654LUM7646; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Demo/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.davedelong.MathParser.Demo; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; }; name = Release; }; @@ -862,12 +867,13 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; - CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 654LUM7646; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -876,12 +882,16 @@ ); INFOPLIST_FILE = MathParser/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.davedelong.MathParser; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2,3,4"; }; name = Debug; @@ -892,22 +902,27 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; - CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 654LUM7646; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = MathParser/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.davedelong.MathParser; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2,3,4"; VALIDATE_PRODUCT = YES; }; @@ -927,14 +942,21 @@ ); INFOPLIST_FILE = MathParserTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/../Frameworks", + ); MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.davedelong.MathParserTests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx watchos watchsimulator"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; @@ -948,14 +970,21 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; INFOPLIST_FILE = MathParserTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/../Frameworks", + ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.davedelong.MathParserTests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx watchos watchsimulator"; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/DDMathParser.xcodeproj/xcshareddata/xcschemes/MathParser.xcscheme b/DDMathParser.xcodeproj/xcshareddata/xcschemes/MathParser.xcscheme index a8dd099..b6c9049 100644 --- a/DDMathParser.xcodeproj/xcshareddata/xcschemes/MathParser.xcscheme +++ b/DDMathParser.xcodeproj/xcshareddata/xcschemes/MathParser.xcscheme @@ -1,6 +1,6 @@ >) { diff --git a/MathParser/Expressionizer.swift b/MathParser/Expressionizer.swift index 40b28d1..f8b2267 100644 --- a/MathParser/Expressionizer.swift +++ b/MathParser/Expressionizer.swift @@ -8,7 +8,7 @@ import Foundation -fileprivate extension GroupedToken { +extension GroupedToken { fileprivate var groupedOperator: Operator? { guard case .operator(let o) = self.kind else { return nil } return o diff --git a/MathParser/Functions+Defaults.swift b/MathParser/Functions+Defaults.swift index 8e96da7..ba90ce3 100644 --- a/MathParser/Functions+Defaults.swift +++ b/MathParser/Functions+Defaults.swift @@ -8,7 +8,7 @@ import Foundation -public extension Function { +extension Function { // MARK: - Angle mode helpers @@ -837,6 +837,5 @@ public extension Function { return try state.evaluator.evaluate(state.arguments[2], substitutions: state.substitutions) } }) - } diff --git a/MathParser/Operator+Defaults.swift b/MathParser/Operator+Defaults.swift index fd9ca37..b77dec6 100644 --- a/MathParser/Operator+Defaults.swift +++ b/MathParser/Operator+Defaults.swift @@ -44,7 +44,7 @@ public enum BuiltInOperator: String { case cubeRoot = "cuberoot" } -public extension Operator { +extension Operator { public static let defaultPowerAssociativity: Associativity = { @@ -227,5 +227,5 @@ public extension Operator { self.init(builtInOperator: builtInOperator) self.precedence = precedence } - + } diff --git a/MathParser/OperatorSet.swift b/MathParser/OperatorSet.swift index 10323d0..069d07c 100644 --- a/MathParser/OperatorSet.swift +++ b/MathParser/OperatorSet.swift @@ -156,7 +156,7 @@ public final class OperatorSet { private var knownTokens: Set private func removeOperator(_ op: Operator) { - guard let index = operators.index(of: op) else { return } + guard let index = operators.firstIndex(of: op) else { return } operators.remove(at: index) operatorsDidChange() } diff --git a/MathParser/ResolvedToken.swift b/MathParser/ResolvedToken.swift index b949f68..70b2e11 100644 --- a/MathParser/ResolvedToken.swift +++ b/MathParser/ResolvedToken.swift @@ -21,7 +21,7 @@ public struct ResolvedToken { public let range: Range } -public extension ResolvedToken.Kind { +extension ResolvedToken.Kind { public var number: Double? { guard case .number(let o) = self else { return nil } diff --git a/MathParser/String.swift b/MathParser/String.swift index 0413e29..32252e6 100644 --- a/MathParser/String.swift +++ b/MathParser/String.swift @@ -8,11 +8,8 @@ import Foundation -public extension String { - +extension String { public func evaluate(using evaluator: Evaluator = .default, _ substitutions: Substitutions = [:]) throws -> Double { - let e = try Expression(string: self) - return try evaluator.evaluate(e, substitutions: substitutions) + return try evaluator.evaluate(Expression(string: self), substitutions: substitutions) } - }