1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
// RUN: %target-typecheck-verify-swift
// https://github.com/apple/swift/issues/47739
do {
func foo(_ x: Int) -> Int? { return 1 }
func fn() {
let a = foo(c) // expected-error {{use of local variable 'c' before its declaration}}
guard let b = a else { return }
let c = b // expected-note {{'c' declared here}}
}
}
// https://github.com/apple/swift/issues/49275
var foo: Int?
test: do {
guard let bar = foo else {
break test
}
let foo = String(bar) // expected-warning {{initialization of immutable value 'foo' was never used; consider replacing with assignment to '_' or removing it}}
}
// https://github.com/apple/swift/issues/50200
class C {
var variable: Int?
func f() {
guard let _ = variable else { return }
let variable = 1 // expected-warning {{initialization of immutable value 'variable' was never used; consider replacing with assignment to '_' or removing it}}
}
}
// https://github.com/apple/swift/issues/50059
do {
let app = app2 // expected-error {{use of local variable 'app2' before its declaration}}
let app2 = app // expected-note {{'app2' declared here}}
}
// https://github.com/apple/swift/issues/50968
func test_circular() {
let obj = x // expected-error {{use of local variable 'x' before its declaration}}
let _ = obj.prop, x // expected-note {{'x' declared here}} expected-error {{type annotation missing in pattern}}
}
//===----------------------------------------------------------------------===//
// Nested scope
//===----------------------------------------------------------------------===//
func nested_scope_1() {
do {
do {
let _ = x // expected-error {{use of local variable 'x' before its declaration}}
let x = 111 // expected-note {{'x' declared here}}
}
let x = 11
}
let x = 1
}
func nested_scope_2() {
do {
let x = 11
do {
let _ = x
let x = 111 // expected-warning {{initialization of immutable value 'x' was never used; consider replacing with assignment to '_' or removing it}}
}
}
let x = 1 // expected-warning {{initialization of immutable value 'x' was never used; consider replacing with assignment to '_' or removing it}}
}
func nested_scope_3() {
let x = 1
do {
do {
let _ = x
let x = 111 // expected-warning {{initialization of immutable value 'x' was never used; consider replacing with assignment to '_' or removing it}}
}
let x = 11 // expected-warning {{initialization of immutable value 'x' was never used; consider replacing with assignment to '_' or removing it}}
}
}
//===----------------------------------------------------------------------===//
// Type scope
//===----------------------------------------------------------------------===//
class Ty {
var v : Int?
func fn() {
let _ = v
let v = 1 // expected-warning {{initialization of immutable value 'v' was never used; consider replacing with assignment to '_' or removing it}}
}
}
//===----------------------------------------------------------------------===//
// File scope
//===----------------------------------------------------------------------===//
let g = 0
func file_scope_1() {
let _ = g
let g = 1 // expected-warning {{initialization of immutable value 'g' was never used; consider replacing with assignment to '_' or removing it}}
}
func file_scope_2() {
let _ = gg // expected-error {{use of local variable 'gg' before its declaration}}
let gg = 1 // expected-note {{'gg' declared here}}
}
//===----------------------------------------------------------------------===//
// Module scope
//===----------------------------------------------------------------------===//
func module_scope_1() {
let _ = print // Legal use of func print declared in Swift Standard Library
let print = "something" // expected-warning {{initialization of immutable value 'print' was never used; consider replacing with assignment to '_' or removing it}}
}
func module_scope_2() {
let _ = another_print // expected-error {{use of local variable 'another_print' before its declaration}}
let another_print = "something" // expected-note {{'another_print' declared here}}
}
|