I compiled swift for Debian (LLVM f63b283c71, Clang 41ac4c4262, Swift 7cb2c9bbba) and get a strange error/warning-pair with for let/var in
:
%> cat l.swift
import Foundation
func f(_ data: Data) -> Void {
for let x in data {
print("\(x)")
}
}
%> swift l.swift
l.swift:4:8: error: 'let' pattern cannot appear nested in an already immutable context
for let x in data {
^
If it is an immutable context, then why not allow let
? But ok, let’s use var
:
%> cat v.swift
import Foundation
func f(_ data: Data) -> Void {
for var x in data {
print("\(x)")
}
}
%> swift v.swift
v.swift:4:12: warning: variable 'x' was never mutated; consider changing to 'let' constant
for var x in data {
~~~~^
There is no warning for var
in REPL:
%> swift
Welcome to Swift version 5.0-dev (LLVM f63b283c71, Clang 41ac4c4262, Swift 7cb2c9bbba).
Type :help for assistance.
1> import Foundation
2.
3. func f(_ data: Data) -> Void {
4. for var x in data {
5. print("\(x)")
6. }
7. }
8>