What about requiring `let` before each binding and `case` before each pattern?
guard case let x = a, case let y = b, let z = c, x == y else { … } Now `let z = c` can only be a let-binding and not a pattern matching clause. -Thorsten > Am 28.05.2016 um 19:32 schrieb Chris Lattner via swift-evolution > <swift-evolution@swift.org>: > > >> On May 28, 2016, at 1:10 AM, David Hart via swift-evolution >> <swift-evolution@swift.org> wrote: >> >> Yet another alternative: would it be possible to disallow commas as variable >> declaration separators and use them for condition clause separators again: >> >> let a = 4, b = 8 // becomes illegal and requires to separate them on two >> lines >> >> if a > 4, let c = foo(), let d = bar(), c != d { // now comma is not >> ambiguous anymore >> } > > The ambiguity is between “case” and “let” conditions, specifically because > “case” takes a pattern, and “let” is a valid pattern: > > guard (pattern1) = expr1, let x = expr2 else > > can be: > > guard (pattern1) = expr1, let (x) = expr2 else > > or: > > guard (pattern1) = expr1, (let x) = expr2 else > > -Chris > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution