go: cuelang.org/go/internal/core/subsume Index | Files

package subsume

import "cuelang.org/go/internal/core/subsume"

Package subsume defines various subsumption relations.


Package Files

structural.go subsume.go value.go vertex.go


var API = Profile{
    IgnoreClosedness: true,

API is subsumption used for APIs.

var CUE = Profile{}
var Final = Profile{
    Final:    true,
    Defaults: true,

Final checks subsumption interpreting the subsumed value as data.

var FinalOpen = Profile{
    Final:            true,
    Defaults:         true,
    IgnoreClosedness: true,

FinalOpen exists as an artifact of the old API. One should probably not use this.

func Value Uses

func Value(ctx *adt.OpContext, a, b adt.Value) errors.Error

Value subsumes two values based on their logical (evaluated) values.

type Profile Uses

type Profile struct {
    // Final indicates subsumption should only consider fields that are relevant
    // to data mode, and ignore definitions, hidden fields, pattern constraints
    // and additional constraints.
    Final bool

    // Defaults indicate that default values should be used for the subsumed
    // value.
    Defaults bool

    // Ignore optional fields.
    IgnoreOptional bool

    // IgnoreClosedness ignores closedness of structs and is used for comparing
    // APIs.
    IgnoreClosedness bool

Profile configures the type of subsumption. One should typically use one of the preconfigured profiles.

func (*Profile) Check Uses

func (p *Profile) Check(ctx *adt.OpContext, a, b adt.Value) bool

Check reports whether b is an instance of a.

func (*Profile) Value Uses

func (p *Profile) Value(ctx *adt.OpContext, a, b adt.Value) errors.Error

Package subsume imports 6 packages (graph) and is imported by 3 packages. Updated 2021-01-26. Refresh now. Tools for package owners.