[swift-users] Redeclaration of guard variable is ignored at top-level
Mark Lacey
mark.lacey at apple.com
Fri Jun 17 09:17:00 CDT 2016
> On Jun 16, 2016, at 10:18 PM, Martin R via swift-users <swift-users at swift.org> wrote:
>
> Hi,
>
> I wonder why the Swift compiler does not complain about the
> redeclaration of `number` after the guard-statement in top-level code:
>
> // main.swift
> import Swift
>
> guard let number = Int("1234") else { fatalError() }
> print(number) // Output: 1234
> let number = 5678
> print(number) // Output: 1234
>
> It looks as if the statement `let number = 5678` is completely ignored.
>
> However, doing the same inside a function causes a compiler error:
>
> func foo() {
> guard let number = Int("1234") else { fatalError() }
> print(number)
> let number = 5678 // error: definition conflicts with previous value
> }
>
> Tested with
> - Xcode 7.3.1, "Default" and "Snapshot 2016-06-06 (a)" toolchain
> - Xcode 8 beta.
>
> Am I overlooking something or is that a bug?
Hi Martin,
Yes, this looks like a bug. Can you open a report at bugs.swift.org <http://bugs.swift.org/>?
Mark
>
> Martin
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160617/8c03ba97/attachment.html>
More information about the swift-users
mailing list