File: rdar51908331.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 (145 lines) | stat: -rw-r--r-- 6,344 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
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// RUN: %target-typecheck-verify-swift
// RUN: %target-swift-frontend -typecheck %s -debug-generic-signatures 2>&1 | %FileCheck %s

// Performance test case reduced from https://github.com/plx/HDXLSIMDSupport.

// CHECK-LABEL: .PA@
// CHECK-NEXT: Requirement signature: <Self where Self : PB, Self : PC, Self : PD>
protocol PA: PB, PC, PD {}

// CHECK-LABEL: .PB@
// CHECK-NEXT: Requirement signature: <Self where Self : PE, Self == Self.[PF]A1, Self.[PG]A2 == Self.[PG]A4>
protocol PB: PE where A2 == A3, A4 == A2, A5 == A6, A1 == Self {}

// CHECK-LABEL: .PC@
// CHECK-NEXT: Requirement signature: <Self where Self : PG, Self.[PG]A3 == Self.[PH]A7.[PI]A8, Self.[PG]A5 == (Self.[PG]A2, Self.[PG]A2)>
protocol PC: PG where A5 == (A2, A2), A3 == A7.A8 {}

// CHECK-LABEL: .PD@
// CHECK-NEXT: Requirement signature: <Self where Self : PG, Self.[PG]A2 == Self.[PH]A7.[PI]A8, Self.[PG]A6 == (Self.[PG]A3, Self.[PG]A3)>
protocol PD: PG where A6 == (A3, A3), A2 == A7.A8 {}

// CHECK-LABEL: .PE@
// CHECK-NEXT: Requirement signature: <Self where Self : PF, Self == Self.[PF]A1.[PF]A1>
protocol PE: PF where A1.A1 == Self {}

// CHECK-LABEL: .PF@
// CHECK-NEXT: Requirement signature: <Self where Self : PG, Self.[PF]A1 : PF, Self.[PG]A2 == Self.[PF]A1.[PG]A3, Self.[PG]A3 == Self.[PF]A1.[PG]A2, Self.[PG]A5 == Self.[PF]A1.[PG]A6, Self.[PG]A6 == Self.[PF]A1.[PG]A5>
protocol PF: PG {
  associatedtype A1: PF where A1.A7 == A7, A1.A2 == A3, A1.A3 == A2, A1.A5 == A6, A1.A6 == A5
}

// CHECK-LABEL: .PG@
// CHECK-NEXT: Requirement signature: <Self where Self : PH, Self.[PG]A2 : PJ, Self.[PG]A3 : PJ, Self.[PG]A4 : PJ, Self.[PH]A7 : BinaryFloatingPoint, Self.[PH]A7 : PI, Self.[PH]A7 == Self.[PG]A2.[PH]A7, Self.[PG]A2.[PH]A7 == Self.[PG]A3.[PH]A7, Self.[PG]A3.[PH]A7 == Self.[PG]A4.[PH]A7>
protocol PG: PH where A7: PI, A7: BinaryFloatingPoint {
  associatedtype A2: PJ where A2.A7 == A7
  associatedtype A3: PJ where A3.A7 == A7
  associatedtype A4: PJ where A4.A7 == A7
  associatedtype A5
  associatedtype A6
}

// CHECK-LABEL: .PH@
// CHECK-NEXT: Requirement signature: <Self where Self.[PH]A7 : SIMDScalar>
protocol PH {
  associatedtype A7: SIMDScalar
}

// CHECK-LABEL: .PI@
// CHECK-NEXT: Requirement signature: <Self where Self == Self.[PI]A10.[PH]A7, Self.[PI]A10 == Self.[PI]A11.[PN]A10, Self.[PI]A11 == Self.[PI]A12.[PM]A11, Self.[PI]A12 == Self.[PI]A13.[PL]A12, Self.[PI]A13 == Self.[PI]A14.[PK]A13, Self.[PI]A14 : PK, Self.[PI]A8 == Self.[PI]A10.[PO]A8, Self.[PI]A9 == Self.[PI]A10.[PO]A9, Self.[PI]A10.[PO]A8 == Self.[PI]A9.[PP]A8>
protocol PI {
// expected-warning@-1 {{protocol 'PI' should be declared to refine 'Decodable' due to a same-type constraint on 'Self'}}
// expected-warning@-2 {{protocol 'PI' should be declared to refine 'Encodable' due to a same-type constraint on 'Self'}}
// expected-warning@-3 {{protocol 'PI' should be declared to refine 'Hashable' due to a same-type constraint on 'Self'}}
// expected-warning@-4 {{protocol 'PI' should be declared to refine 'SIMDScalar' due to a same-type constraint on 'Self'}}
  associatedtype A8 where A8.A7 == Self
  associatedtype A9 where A9.A7 == Self, A9.A8 == A8
  associatedtype A10 where A10.A7 == Self, A10.A8 == A8, A10.A9 == A9
  associatedtype A11 where A11.A7 == Self, A11.A10 == A10
  associatedtype A12 where A12.A7 == Self, A12.A11 == A11
  associatedtype A13 where A13.A7 == Self, A13.A12 == A12
  associatedtype A14: PK where A14.A7 == Self, A14.A13 == A13
}

// CHECK-LABEL: .PJ@
// CHECK-NEXT: Requirement signature: <Self where Self : SIMD, Self : PH, Self.[PH]A7 == Self.[SIMDStorage]Scalar>
protocol PJ: SIMD, PH where Scalar == A7 {}

// CHECK-LABEL: .PK@
// CHECK-NEXT: Requirement signature: <Self where Self : SIMD, Self : PH, Self.[PK]A13 : PL, Self.[PH]A7 == Self.[SIMDStorage]Scalar, Self.[SIMDStorage]Scalar == Self.[PK]A13.[PH]A7>
protocol PK: SIMD, PH where Scalar == A7 {
  associatedtype A13: PL where A13.Scalar == Scalar
}

// CHECK-LABEL: .PL@
// CHECK-NEXT: Requirement signature: <Self where Self : SIMD, Self : PH, Self.[PL]A12 : PM, Self.[PH]A7 == Self.[SIMDStorage]Scalar, Self.[SIMDStorage]Scalar == Self.[PL]A12.[PH]A7>
protocol PL: SIMD, PH where Scalar == A7 {
  associatedtype A12: PM where A12.Scalar == Scalar
}

// CHECK-LABEL: .PM@
// CHECK-NEXT: Requirement signature: <Self where Self : SIMD, Self : PH, Self.[PM]A11 : PN, Self.[PH]A7 == Self.[SIMDStorage]Scalar, Self.[SIMDStorage]Scalar == Self.[PM]A11.[PH]A7>
protocol PM: SIMD, PH where Scalar == A7 {
  associatedtype A11: PN where A11.Scalar == Scalar
}

// CHECK-LABEL: .PN@
// CHECK-NEXT: Requirement signature: <Self where Self : SIMD, Self : PH, Self.[PN]A10 : PO, Self.[PH]A7 == Self.[SIMDStorage]Scalar, Self.[SIMDStorage]Scalar == Self.[PN]A10.[PH]A7>
protocol PN: SIMD, PH where Scalar == A7 {
  associatedtype A10: PO where A10.Scalar == Scalar
}

// CHECK-LABEL: .PO@
// CHECK-NEXT: Requirement signature: <Self where Self : SIMD, Self : PH, Self.[PH]A7 == Self.[SIMDStorage]Scalar, Self.[PO]A8 : PQ, Self.[PO]A9 : PP, Self.[SIMDStorage]Scalar == Self.[PO]A8.[PH]A7, Self.[PO]A8.[PH]A7 == Self.[PO]A9.[PH]A7>
protocol PO: SIMD, PH where Scalar == A7 {
  associatedtype A8: PQ where A8.Scalar == Scalar
  associatedtype A9: PP where A9.Scalar == Scalar
}

// CHECK-LABEL: .PP@
// CHECK-NEXT: Requirement signature: <Self where Self : SIMD, Self : PH, Self.[PH]A7 == Self.[SIMDStorage]Scalar, Self.[PP]A8 : PQ, Self.[SIMDStorage]Scalar == Self.[PP]A8.[PH]A7>
protocol PP: SIMD, PH where Scalar == A7 {
  associatedtype A8: PQ where A8.Scalar == Scalar
}

// CHECK-LABEL: .PQ@
// CHECK-NEXT: Requirement signature: <Self where Self : SIMD, Self : PH, Self.[PH]A7 == Self.[SIMDStorage]Scalar>
protocol PQ: SIMD, PH where Scalar == A7 {}

func sameType<T>(_: T, _: T) {}

func testPI1<T : PI>(_: T) {
  sameType(T.A8.A7.self, T.self)
}

func testPI2<T : PI>(_: T) {
  sameType(T.A10.A7.self, T.self)
}

func testPI3<T : PI>(_: T) {
  sameType(T.A11.A7.self, T.self)
}

func testPI4<T : PI>(_: T) {
  sameType(T.A12.A7.self, T.self)
}

func testPI5<T : PI>(_: T) {
  sameType(T.A13.A7.self, T.self)
}

func testPI6<T : PI>(_: T) {
  sameType(T.A14.A7.self, T.self)
}

func testPF1<T : PF>(_: T) {
  sameType(T.A1.A7.self, T.A7.self)
}

func testPB1<T : PB>(_: T) {
  sameType(T.A2.self, T.A3.self)
}

func testPB2<T : PB>(_: T) {
  sameType(T.A5.self, T.A6.self)
}