diff --git a/.travis.yml b/.travis.yml index 92406172..86399718 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,16 @@ matrix: include: + - os: osx + osx_image: xcode9.2 + env: SWIFT_VERSION=4.0.3 - os: osx osx_image: xcode9.4 env: SWIFT_VERSION=4.1 - os: osx osx_image: xcode10 env: SWIFT_VERSION=4.2 + - os: linux + env: SWIFT_VERSION=4.0.3 - os: linux env: SWIFT_VERSION=4.1 - os: linux diff --git a/Package.swift b/Package.swift index 2dd69776..b5fb3049 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:4.1 +// swift-tools-version:4.0 import PackageDescription let package = Package( diff --git a/Sources/_SwiftSupport.swift b/Sources/_SwiftSupport.swift new file mode 100644 index 00000000..53336597 --- /dev/null +++ b/Sources/_SwiftSupport.swift @@ -0,0 +1,38 @@ +import Foundation + +#if !swift(>=4.1) + public extension Sequence { + func compactMap(_ transform: (Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult] { + return try flatMap(transform) + } + } +#endif + +#if !swift(>=4.1) + public extension Collection { + func index(_ i: Self.Index, offsetBy n: Int) -> Self.Index { + let indexDistance = Self.IndexDistance(n) + return index(i, offsetBy: indexDistance) + } + } +#endif + +#if !swift(>=4.1) +public extension TemplateSyntaxError { + public static func ==(lhs: TemplateSyntaxError, rhs: TemplateSyntaxError) -> Bool { + return lhs.reason == rhs.reason && + lhs.description == rhs.description && + lhs.token == rhs.token && + lhs.stackTrace == rhs.stackTrace && + lhs.templateName == rhs.templateName + } +} +#endif + +#if !swift(>=4.1) +public extension Variable { + public static func ==(lhs: Variable, rhs: Variable) -> Bool { + return lhs.variable == rhs.variable + } +} +#endif