File: di-loadable-by-addr-scope.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 (106 lines) | stat: -rw-r--r-- 3,516 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
// Make sure we don't crash when verifying.
// RUN: %target-swift-frontend -emit-ir %s -Onone -sil-verify-all \
// RUN:   -Xllvm -sil-print-debuginfo -o - 2>&1 | %FileCheck %s

// CHECK: define hidden swiftcc {{.*}} @"$s4main18DependencyResolverC14resolveSubtree_9excludings11AnySequenceVyAA20VersionAssignmentSetVy9ContainerQzGGAK_SDyAJ_10IdentifierQZShyAA0I0VGGtF"

public struct Version {
    public let major: Int
    public let minor: Int
    public let patch: Int
    public let prereleaseIdentifiers: [String]
    public let buildMetadataIdentifiers: [String]
    public init(
        _ major: Int,
        _ minor: Int,
        _ patch: Int,
        prereleaseIdentifiers: [String] = [],
        buildMetadataIdentifiers: [String] = []
    ) {
        self.major = major
        self.minor = minor
        self.patch = patch
        self.prereleaseIdentifiers = prereleaseIdentifiers
        self.buildMetadataIdentifiers = buildMetadataIdentifiers
    }
}
extension Version: Hashable {
    static public func == (lhs: Version, rhs: Version) -> Bool {
        return lhs.major == rhs.major &&
               lhs.buildMetadataIdentifiers == rhs.buildMetadataIdentifiers
    }
    public func hash(into hasher: inout Hasher) {
        hasher.combine(major)
        hasher.combine(buildMetadataIdentifiers)
    }
}

public protocol PackageContainerIdentifier: Hashable { }
public protocol PackageContainer {
    associatedtype Identifier: PackageContainerIdentifier
    var identifier: Identifier { get }
}
public protocol PackageContainerProvider {
    associatedtype Container: PackageContainer
    func getContainer(
    )
}
public struct PackageContainerConstraint<T: PackageContainerIdentifier> {
    public enum Requirement: Hashable {
    }
}

public enum BoundVersion {
    case version(Version)
}

struct VersionAssignmentSet<C: PackageContainer> {
    typealias Container = C
    typealias Identifier = Container.Identifier
    fileprivate var assignments: [Identifier: (container: Container, binding: BoundVersion)]
    init() {
        assignments = [:]
    }
    subscript(identifier: Identifier) -> BoundVersion? {
        get {
            return assignments[identifier]?.binding
        }
    }
    subscript(container: Container) -> BoundVersion? {
        get {
            return self[container.identifier]
        }
        set {
        }
    }
}
public class DependencyResolver<P: PackageContainerProvider> {
    public typealias Provider = P
    public typealias Container = Provider.Container
    public typealias Identifier = Container.Identifier
    public typealias Constraint = PackageContainerConstraint<Identifier>
    typealias AssignmentSet = VersionAssignmentSet<Container>
    public let provider: Provider
    private let isPrefetchingEnabled: Bool
    private let skipUpdate: Bool
    public init(
        _ provider: Provider,
        isPrefetchingEnabled: Bool = false,
        skipUpdate: Bool = false
    ) {
        self.provider = provider
        self.isPrefetchingEnabled = isPrefetchingEnabled
        self.skipUpdate = skipUpdate
    }
    func resolveSubtree(
        _ container: Container,
        excluding allExclusions: [Identifier: Set<Version>]
    ) -> AnySequence<AssignmentSet> {
        func merge(constraints: [Constraint], binding: BoundVersion) -> AnySequence<AssignmentSet> {
            var assignment = AssignmentSet()
            assignment[container] = binding
            return AnySequence([])
        }
        return AnySequence([])
    }
}