diff --git a/CommandLineTool/main.swift b/CommandLineTool/main.swift index 92859be2..719ca473 100644 --- a/CommandLineTool/main.swift +++ b/CommandLineTool/main.swift @@ -2,7 +2,7 @@ // SwiftFormat // main.swift // -// Version 0.5 +// Version 0.5.1 // // Created by Nick Lockwood on 12/08/2016. // Copyright 2016 Charcoal Design @@ -33,7 +33,7 @@ import Foundation -let version = "0.5" +let version = "0.5.1" func processInput(inputURL: NSURL, andWriteToOutput outputURL: NSURL, withOptions options: FormattingOptions) -> Int { let manager = NSFileManager.defaultManager() diff --git a/CommandLineTool/swiftformat b/CommandLineTool/swiftformat index 12619556..e03f483c 100755 Binary files a/CommandLineTool/swiftformat and b/CommandLineTool/swiftformat differ diff --git a/LICENCE.md b/LICENCE.md index 8a6cd294..1ceb37ab 100755 --- a/LICENCE.md +++ b/LICENCE.md @@ -1,6 +1,6 @@ SwiftFormat -Version 0.5, August 25th, 2016 +Version 0.5.1, August 25th, 2016 Copyright (c) 2016 Nick Lockwood diff --git a/README.md b/README.md index b6c80ff9..f07459a8 100644 --- a/README.md +++ b/README.md @@ -322,6 +322,11 @@ With a syntax tree in place, it should become possible to add much more sophisti Release notes ---------------- +Version 0.5.1 + +- Fixed critical bug where double unwrap (e.g. `foo??.bar()`) was not handled correctly +- Fixed bug where `case let .SomeEnum` was not handled correctly + Version 0.5 - swiftformat command-line tool now supports reading from stdin/writing to stdout diff --git a/SwiftFormat/Formatter.swift b/SwiftFormat/Formatter.swift index 21d506a3..ff759116 100644 --- a/SwiftFormat/Formatter.swift +++ b/SwiftFormat/Formatter.swift @@ -2,7 +2,7 @@ // SwiftFormat // Formatter.swift // -// Version 0.5 +// Version 0.5.1 // // Created by Nick Lockwood on 12/08/2016. // Copyright 2016 Charcoal Design @@ -416,7 +416,7 @@ public func spaceAroundOperators(formatter: Formatter) { return false } } - + func isUnwrapOperatorSequence(token: Token) -> Bool { for c in token.string.characters { if c != "?" && c != "!" { @@ -502,7 +502,7 @@ public func spaceAroundOperators(formatter: Formatter) { (previousNonWhitespaceToken.type != .Operator || (previousNonWhitespaceToken.string == "?" && scopeStack.last?.string != "?") || (previousNonWhitespaceToken.string != "?" && - isUnwrapOperatorSequence(previousNonWhitespaceToken))) && + isUnwrapOperatorSequence(previousNonWhitespaceToken))) && (previousNonWhitespaceToken.type != .Identifier || !spaceAfter(previousNonWhitespaceToken.string)) { if previousTokenWasWhitespace { diff --git a/SwiftFormat/SwiftFormat.h b/SwiftFormat/SwiftFormat.h index a4fdfd17..37762ce1 100644 --- a/SwiftFormat/SwiftFormat.h +++ b/SwiftFormat/SwiftFormat.h @@ -2,7 +2,7 @@ // SwiftFormat // SwiftFormat.h // -// Version 0.5 +// Version 0.5.1 // // Created by Nick Lockwood on 12/08/2016. // Copyright 2016 Charcoal Design diff --git a/SwiftFormat/SwiftFormat.swift b/SwiftFormat/SwiftFormat.swift index 97a0b49a..506be0b0 100644 --- a/SwiftFormat/SwiftFormat.swift +++ b/SwiftFormat/SwiftFormat.swift @@ -2,7 +2,7 @@ // SwiftFormat // SwiftFormat.swift // -// Version 0.5 +// Version 0.5.1 // // Created by Nick Lockwood on 12/08/2016. // Copyright 2016 Charcoal Design diff --git a/SwiftFormat/Tokenizer.swift b/SwiftFormat/Tokenizer.swift index 50144894..01c1ea8e 100644 --- a/SwiftFormat/Tokenizer.swift +++ b/SwiftFormat/Tokenizer.swift @@ -2,7 +2,7 @@ // SwiftFormat // Tokenizer.swift // -// Version 0.5 +// Version 0.5.1 // // Created by Nick Lockwood on 11/08/2016. // Copyright 2016 Charcoal Design diff --git a/SwiftFormatTests/FormatterTests.swift b/SwiftFormatTests/FormatterTests.swift index d388c87f..05ab62e4 100644 --- a/SwiftFormatTests/FormatterTests.swift +++ b/SwiftFormatTests/FormatterTests.swift @@ -2,7 +2,7 @@ // SwiftFormat // FormatterTests.swift // -// Version 0.5 +// Version 0.5.1 // // Created by Nick Lockwood on 12/08/2016. // Copyright 2016 Charcoal Design @@ -383,7 +383,7 @@ class FormatterTests: XCTestCase { let output = "foo?.bar" XCTAssertEqual(format(input, rules: [spaceAroundOperators]), output) } - + func testNoSpaceAroundMultipleOptionalChaining() { let input = "foo??!?!.bar" let output = "foo??!?!.bar" @@ -401,7 +401,7 @@ class FormatterTests: XCTestCase { let output = "foo?.bar" XCTAssertEqual(format(input, rules: [spaceAroundOperators]), output) } - + func testNoSpaceBetweenMultipleOptionalChaining() { let input = "foo??! .bar" let output = "foo??!.bar" @@ -419,7 +419,7 @@ class FormatterTests: XCTestCase { let output = "foo?\n .bar" XCTAssertEqual(format(input, rules: [spaceAroundOperators]), output) } - + func testSplitLineMultipleOptionalChaining() { let input = "foo??!\n .bar" let output = "foo??!\n .bar" diff --git a/SwiftFormatTests/TokenizerTests.swift b/SwiftFormatTests/TokenizerTests.swift index 83d1feb7..70263112 100644 --- a/SwiftFormatTests/TokenizerTests.swift +++ b/SwiftFormatTests/TokenizerTests.swift @@ -2,7 +2,7 @@ // SwiftFormat // TokenizerTests.swift // -// Version 0.5 +// Version 0.5.1 // // Created by Nick Lockwood on 12/08/2016. // Copyright 2016 Charcoal Design @@ -466,18 +466,18 @@ class TokenizerTests: XCTestCase { ] XCTAssertEqualArrays(tokenize(input), output) } - + func testOperatorMayContainDotIfStartsWithDot() { let input = ".*.." let output = [Token(.Operator, ".*..")] XCTAssertEqualArrays(tokenize(input), output) } - + func testOperatorMayNotContainDotUnlessStartsWithDot() { let input = "*.." let output = [ Token(.Operator, "*"), - Token(.Operator, "..") + Token(.Operator, ".."), ] XCTAssertEqualArrays(tokenize(input), output) }