-
Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathunknowable.swift
48 lines (39 loc) · 1.53 KB
/
unknowable.swift
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
// RUN: %target-typecheck-verify-swift
//===----------------------------------------------------------------------===//
// Refer to members of literals
//===----------------------------------------------------------------------===//
func testLiteralMembers() {
_ = 0._value
Int(0._value) // expected-warning{{unused}}
}
//===----------------------------------------------------------------------===//
// Overloading with literals
//===----------------------------------------------------------------------===//
func ovlLitA(_: Int32) -> Int32 {}
func ovlLitA(_: Int64) -> Int64 {}
func ovlLitB(_: Int32) -> Int32 {} // expected-note{{}}
func ovlLitB(_: Int64) -> Int64 {} // expected-note{{}}
func testLiteralOverloadingovlLitB() {
var y32 : Int32 = ovlLitA(ovlLitB(0))
var y64 : Int64 = ovlLitA(ovlLitB(0))
var y /*: Int*/ = ovlLitA(ovlLitB(0)) // expected-error{{ambiguous use of 'ovlLitB'}}
}
func literalOverloadSameReturn(_ i: Int) -> Int {}
func literalOverloadSameReturn(_ i: Int32) -> Int {}
func literalOverload2() {
var _ : Int = literalOverloadSameReturn(literalOverloadSameReturn(1))
}
//===----------------------------------------------------------------------===//
// Literals and protocols
//===----------------------------------------------------------------------===//
protocol CanWibble {
func wibble()
}
extension Int : CanWibble {
func wibble() {}
}
func doWibble(_: CanWibble) {}
func testWibble() {
doWibble(1)
doWibble(3.14) // expected-error{{argument type 'Double' does not conform to expected type 'CanWibble'}}
}