File tree Expand file tree Collapse file tree 3 files changed +75
-0
lines changed
validation-test/compiler_crashers_2_fixed Expand file tree Collapse file tree 3 files changed +75
-0
lines changed Original file line number Diff line number Diff line change
1
+ protocol Snapshotting {
2
+ associatedtype NativeType : NativeInserting where NativeType. SnapshotType == Self
3
+ associatedtype ChangeType : SnapshotChange where ChangeType. SnapshotType == Self
4
+ }
5
+
6
+ protocol NativeInserting {
7
+ associatedtype SnapshotType : Snapshotting where SnapshotType. NativeType == Self
8
+ }
9
+
10
+ protocol SnapshotProperties : OptionSet where RawValue == Int {
11
+ static var all : Self { get }
12
+ }
13
+
14
+ protocol SnapshotChange {
15
+ associatedtype SnapshotType : Snapshotting where SnapshotType. ChangeType == Self
16
+ associatedtype PropertiesType : SnapshotProperties
17
+ }
Original file line number Diff line number Diff line change
1
+ // RUN: %target-swift-frontend -emit-ir -primary-file %S/Inputs/sr11153_2_other.swift -primary-file %s
2
+ // RUN: %target-swift-frontend -emit-ir %S/Inputs/sr11153_2_other.swift %s
3
+
4
+ class WatchRegistry {
5
+ func single< S: Snapshotting > ( objectType: S . Type ) throws -> Watch < S >
6
+ {
7
+ return try Watch< S> . singleObject( objectType: S . self, properties: S . ChangeType. PropertiesType. all)
8
+ }
9
+ }
10
+
11
+ class Watch < SnapshotType : Snapshotting > {
12
+ static func singleObject( objectType: SnapshotType . Type , properties: SnapshotType . ChangeType . PropertiesType ) throws -> Watch < SnapshotType > {
13
+ fatalError ( )
14
+ }
15
+ }
Original file line number Diff line number Diff line change
1
+ // RUN: %target-swift-frontend -emit-ir %s
2
+
3
+ public protocol SomeProto {
4
+ associatedtype ThingType
5
+ func getThing( ) -> ThingType
6
+ }
7
+
8
+ public protocol SpecialThing : RandomAccessCollection {
9
+ }
10
+
11
+ public protocol Castable {
12
+ associatedtype Source
13
+ static func cast( from: Source ) -> Self
14
+ }
15
+
16
+ public struct ThingGetter < P: SomeProto , T> {
17
+ public let thing : P
18
+ }
19
+
20
+ extension ThingGetter where P. ThingType: SpecialThing , T: Castable , P. ThingType. Iterator. Element == T . Source {
21
+
22
+ public func getView( ) -> ThingView {
23
+ return ThingView ( thing: thing. getThing ( ) )
24
+ }
25
+
26
+ public struct ThingView : SpecialThing {
27
+ let thing : P . ThingType
28
+
29
+ public typealias Index = P . ThingType . Index
30
+ public var startIndex : Index { return thing. startIndex }
31
+ public var endIndex : Index { return thing. startIndex }
32
+ public var count : Int { return thing. count }
33
+ public func index( after i: Index ) -> Index {
34
+ return thing. index ( after: i)
35
+ }
36
+ public func index( before i: Index ) -> Index {
37
+ return thing. index ( before: i)
38
+ }
39
+ public subscript( i: Index ) -> T {
40
+ return T . cast ( from: thing [ i] )
41
+ }
42
+ }
43
+ }
You can’t perform that action at this time.
0 commit comments