File: ambiguity_diagnostics.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (50 lines) | stat: -rw-r--r-- 1,438 bytes parent folder | download
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
// RUN: %target-typecheck-verify-swift -swift-version 5 -disable-availability-checking

protocol View {
}

extension View {
  func title<S>(_ title: S) -> some View where S : StringProtocol {
    EmptyView()
  }

  func title(_ titleKey: LocalizedString) -> some View {
    EmptyView()
  }
}

extension View {
  func background<T: ShapeStyle>(_: T) -> some View {
    EmptyView()
  }
}

struct EmptyView : View {}

struct Text : View {
  init(_: String) {}
}

protocol ShapeStyle {
}

struct AnyShapeStyle : ShapeStyle {}
struct AnyGradient : ShapeStyle {}

struct LocalizedString : ExpressibleByStringLiteral, ExpressibleByExtendedGraphemeClusterLiteral {
  init(extendedGraphemeClusterLiteral value: String) {}
  init(stringLiteral: String) {}
}

func test() {
  func __findValue(_: String, fallback: LocalizedString) -> LocalizedString { fatalError() }
  func __findValue<T: ExpressibleByStringLiteral>(_: String, fallback: T) -> T { fatalError() }
  func __findValue<T: ExpressibleByExtendedGraphemeClusterLiteral>(_: String, fallback: T) -> T { fatalError() }

  func ambiguitySource() -> AnyShapeStyle { fatalError() } // expected-note {{found this candidate}}
  func ambiguitySource() -> AnyGradient { fatalError() }   // expected-note {{found this candidate}}

  Text("Test")
    .title(__findValue("someKey", fallback: "<unknown>"))
    .background(ambiguitySource()) // expected-error {{ambiguous use of 'ambiguitySource()'}}
}