Cause

    Every incompatibility has a cause to explain its presence in the derivation graph. Only the root incompatibility uses .root. All other incompatibilities are either obtained from dependency constraints, decided upon in decision making or derived during unit propagation or conflict resolution. Using this information we can build up a derivation graph by following the tree of causes. All leaf nodes are external dependencies and all internal nodes are derived incompatibilities.

    Incompatibility.swift:92
    indirect enum Cause

    An example graph could look like this:

    ┌────────────────────────────┐ ┌────────────────────────────┐
    {foo ^1.0.0, not bar ^2.0.0} {bar ^2.0.0, not baz ^3.0.0}
    └─────────────┬──────────────┘ └──────────────┬─────────────┘
                        ┌────────────────────────┘
                        
    ┌─────────────┴──────┴───────┐ ┌────────────────────────────┐
    {foo ^1.0.0, not baz ^3.0.0} {root 1.0.0, not foo ^1.0.0}
    └─────────────┬──────────────┘ └──────────────┬─────────────┘
                     ┌───────────────────────────┘
                     
            ┌─────┴───┴──┐
            {root 1.0.0}
            └────────────┘

    Cases

    Other members in extension

    Type members

    Instance members

    Citizens in PackageGraph

    Conformances

    Types

    Instance members

    Type features