types

package
v0.15.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2023 License: Apache-2.0, BSD-3-Clause Imports: 25 Imported by: 422

Documentation

Overview

Package types contains the types, traits, and utilities common to all components of expression handling.

Index

Constants

View Source
const (
	False = Bool(false)
	True  = Bool(true)
)

Boolean constants

View Source
const (
	// IntZero is the zero-value for Int
	IntZero   = Int(0)
	IntOne    = Int(1)
	IntNegOne = Int(-1)
)

Int constants used for comparison results.

Variables

View Source
var (
	// NullType singleton.
	NullType = NewTypeValue("null_type")
	// NullValue singleton.
	NullValue = Null(structpb.NullValue_NULL_VALUE)
)
View Source
var (
	// OptionalType indicates the runtime type of an optional value.
	OptionalType = NewTypeValue("optional")

	// OptionalNone is a sentinel value which is used to indicate an empty optional value.
	OptionalNone = &Optional{}
)
View Source
var (
	// BoolType singleton.
	BoolType = NewTypeValue("bool",
		traits.ComparerType,
		traits.NegatorType)
)
View Source
var (
	// BytesType singleton.
	BytesType = NewTypeValue("bytes",
		traits.AdderType,
		traits.ComparerType,
		traits.SizerType)
)
View Source
var (
	// DefaultTypeAdapter adapts canonical CEL types from their equivalent Go values.
	DefaultTypeAdapter = &defaultTypeAdapter{}
)
View Source
var (
	// DurationType singleton.
	DurationType = NewTypeValue("google.protobuf.Duration",
		traits.AdderType,
		traits.ComparerType,
		traits.NegatorType,
		traits.ReceiverType,
		traits.SubtractorType)
)
View Source
var (
	// ErrType singleton.
	ErrType = NewTypeValue("error")
)
View Source
var (
	// IteratorType singleton.
	IteratorType = NewTypeValue("iterator", traits.IteratorType)
)
View Source
var (
	// MapType singleton.
	MapType = NewTypeValue("map",
		traits.ContainerType,
		traits.IndexerType,
		traits.IterableType,
		traits.SizerType)
)
View Source
var (
	// StringType singleton.
	StringType = NewTypeValue("string",
		traits.AdderType,
		traits.ComparerType,
		traits.MatcherType,
		traits.ReceiverType,
		traits.SizerType)
)
View Source
var (
	// TimestampType singleton.
	TimestampType = NewTypeValue("google.protobuf.Timestamp",
		traits.AdderType,
		traits.ComparerType,
		traits.ReceiverType,
		traits.SubtractorType)
)
View Source
var (
	// TypeType is the type of a TypeValue.
	TypeType = NewTypeValue("type")
)
View Source
var (
	// UnknownType singleton.
	UnknownType = NewTypeValue("unknown")
)

Functions

func Equal added in v0.10.0

func Equal(lhs ref.Val, rhs ref.Val) ref.Val

Equal returns whether the two ref.Value are heterogeneously equivalent.

func IndexOrError added in v0.13.0

func IndexOrError(index ref.Val) (int, error)

IndexOrError converts an input index value into either a lossless integer index or an error.

func IsBool

func IsBool(elem ref.Val) bool

IsBool returns whether the input ref.Val or ref.Type is equal to BoolType.

func IsError

func IsError(val ref.Val) bool

IsError returns whether the input element ref.Type or ref.Val is equal to the ErrType singleton.

func IsPrimitiveType added in v0.3.0

func IsPrimitiveType(val ref.Val) bool

IsPrimitiveType returns whether the input element ref.Val is a primitive type. Note, primitive types do not include well-known types such as Duration and Timestamp.

func IsUnknown

func IsUnknown(val ref.Val) bool

IsUnknown returns whether the element ref.Type or ref.Val is equal to the UnknownType singleton.

func IsUnknownOrError

func IsUnknownOrError(val ref.Val) bool

IsUnknownOrError returns whether the input element ref.Val is an ErrType or UnknownType.

func MaybeNoSuchOverloadErr added in v0.4.0

func MaybeNoSuchOverloadErr(val ref.Val) ref.Val

MaybeNoSuchOverloadErr returns the error or unknown if the input ref.Val is one of these types, else a new no such overload error.

func NewDynamicList

func NewDynamicList(adapter ref.TypeAdapter, value any) traits.Lister

NewDynamicList returns a traits.Lister with heterogenous elements. value should be an array of "native" types, i.e. any type that NativeToValue() can convert to a ref.Val.

func NewDynamicMap

func NewDynamicMap(adapter ref.TypeAdapter, value any) traits.Mapper

NewDynamicMap returns a traits.Mapper value with dynamic key, value pairs.

func NewEmptyRegistry added in v0.4.0

func NewEmptyRegistry() ref.TypeRegistry

NewEmptyRegistry returns a registry which is completely unconfigured.

func NewErr

func NewErr(format string, args ...any) ref.Val

NewErr creates a new Err described by the format string and args. TODO: Audit the use of this function and standardize the error messages and codes.

func NewJSONList

func NewJSONList(adapter ref.TypeAdapter, l *structpb.ListValue) traits.Lister

NewJSONList returns a traits.Lister based on structpb.ListValue instance.

func NewJSONStruct

func NewJSONStruct(adapter ref.TypeAdapter, value *structpb.Struct) traits.Mapper

NewJSONStruct creates a traits.Mapper implementation backed by a JSON struct that has been encoded in protocol buffer form.

The `adapter` argument provides type adaptation capabilities from proto to CEL.

func NewMutableList added in v0.10.0

func NewMutableList(adapter ref.TypeAdapter) traits.MutableLister

NewMutableList creates a new mutable list whose internal state can be modified.

func NewObject

func NewObject(adapter ref.TypeAdapter,
	typeDesc *pb.TypeDescription,
	typeValue *TypeValue,
	value proto.Message) ref.Val

NewObject returns an object based on a proto.Message value which handles conversion between protobuf type values and expression type values. Objects support indexing and iteration.

Note: the type value is pulled from the list of registered types within the type provider. If the proto type is not registered within the type provider, then this will result in an error within the type adapter / provider.

func NewProtoList added in v0.7.0

func NewProtoList(adapter ref.TypeAdapter, list protoreflect.List) traits.Lister

NewProtoList returns a traits.Lister based on a pb.List instance.

func NewProtoMap added in v0.7.0

func NewProtoMap(adapter ref.TypeAdapter, value *pb.Map) traits.Mapper

NewProtoMap returns a specialized traits.Mapper for handling protobuf map values.

func NewRefValList added in v0.7.0

func NewRefValList(adapter ref.TypeAdapter, elems []ref.Val) traits.Lister

NewRefValList returns a traits.Lister with ref.Val elements.

This type specialization is used with list literals within CEL expressions.

func NewRefValMap added in v0.7.0

func NewRefValMap(adapter ref.TypeAdapter, value map[ref.Val]ref.Val) traits.Mapper

NewRefValMap returns a specialized traits.Mapper with CEL valued keys and values.

func NewRegistry added in v0.2.0

func NewRegistry(types ...proto.Message) (ref.TypeRegistry, error)

NewRegistry accepts a list of proto message instances and returns a type provider which can create new instances of the provided message or any message that proto depends upon in its FileDescriptor.

func NewStringInterfaceMap added in v0.7.0

func NewStringInterfaceMap(adapter ref.TypeAdapter, value map[string]any) traits.Mapper

NewStringInterfaceMap returns a specialized traits.Mapper with string keys and interface values.

func NewStringList

func NewStringList(adapter ref.TypeAdapter, elems []string) traits.Lister

NewStringList returns a traits.Lister containing only strings.

func NewStringStringMap

func NewStringStringMap(adapter ref.TypeAdapter, value map[string]string) traits.Mapper

NewStringStringMap returns a specialized traits.Mapper with string keys and values.

func NoSuchOverloadErr added in v0.4.0

func NoSuchOverloadErr() ref.Val

NoSuchOverloadErr returns a new types.Err instance with a no such overload message.

func UnsupportedRefValConversionErr added in v0.7.0

func UnsupportedRefValConversionErr(val any) ref.Val

UnsupportedRefValConversionErr returns a types.NewErr instance with a no such conversion message that indicates that the native value could not be converted to a CEL ref.Val.

func ValOrErr

func ValOrErr(val ref.Val, format string, args ...any) ref.Val

ValOrErr either returns the existing error or creates a new one. TODO: Audit the use of this function and standardize the error messages and codes.

func WrapErr added in v0.14.0

func WrapErr(err error) ref.Val

WrapErr wraps an existing Go error value into a CEL Err value.

Types

type Bool

type Bool bool

Bool type that implements ref.Val and supports comparison and negation.

func (Bool) Compare

func (b Bool) Compare(other ref.Val) ref.Val

Compare implements the traits.Comparer interface method.

func (Bool) ConvertToNative

func (b Bool) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements the ref.Val interface method.

func (Bool) ConvertToType

func (b Bool) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements the ref.Val interface method.

func (Bool) Equal

func (b Bool) Equal(other ref.Val) ref.Val

Equal implements the ref.Val interface method.

func (Bool) IsZeroValue added in v0.13.0

func (b Bool) IsZeroValue() bool

IsZeroValue returns true if the boolean value is false.

func (Bool) Negate

func (b Bool) Negate() ref.Val

Negate implements the traits.Negater interface method.

func (Bool) Type

func (b Bool) Type() ref.Type

Type implements the ref.Val interface method.

func (Bool) Value

func (b Bool) Value() any

Value implements the ref.Val interface method.

type Bytes

type Bytes []byte

Bytes type that implements ref.Val and supports add, compare, and size operations.

func (Bytes) Add

func (b Bytes) Add(other ref.Val) ref.Val

Add implements traits.Adder interface method by concatenating byte sequences.

func (Bytes) Compare

func (b Bytes) Compare(other ref.Val) ref.Val

Compare implements traits.Comparer interface method by lexicographic ordering.

func (Bytes) ConvertToNative

func (b Bytes) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements the ref.Val interface method.

func (Bytes) ConvertToType

func (b Bytes) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements the ref.Val interface method.

func (Bytes) Equal

func (b Bytes) Equal(other ref.Val) ref.Val

Equal implements the ref.Val interface method.

func (Bytes) IsZeroValue added in v0.13.0

func (b Bytes) IsZeroValue() bool

IsZeroValue returns true if the byte array is empty.

func (Bytes) Size

func (b Bytes) Size() ref.Val

Size implements the traits.Sizer interface method.

func (Bytes) Type

func (b Bytes) Type() ref.Type

Type implements the ref.Val interface method.

func (Bytes) Value

func (b Bytes) Value() any

Value implements the ref.Val interface method.

type Double

type Double float64

Double type that implements ref.Val, comparison, and mathematical operations.

func (Double) Add

func (d Double) Add(other ref.Val) ref.Val

Add implements traits.Adder.Add.

func (Double) Compare

func (d Double) Compare(other ref.Val) ref.Val

Compare implements traits.Comparer.Compare.

func (Double) ConvertToNative

func (d Double) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (Double) ConvertToType

func (d Double) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (Double) Divide

func (d Double) Divide(other ref.Val) ref.Val

Divide implements traits.Divider.Divide.

func (Double) Equal

func (d Double) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (Double) IsZeroValue added in v0.13.0

func (d Double) IsZeroValue() bool

IsZeroValue returns true if double value is 0.0

func (Double) Multiply

func (d Double) Multiply(other ref.Val) ref.Val

Multiply implements traits.Multiplier.Multiply.

func (Double) Negate

func (d Double) Negate() ref.Val

Negate implements traits.Negater.Negate.

func (Double) Subtract

func (d Double) Subtract(subtrahend ref.Val) ref.Val

Subtract implements traits.Subtractor.Subtract.

func (Double) Type

func (d Double) Type() ref.Type

Type implements ref.Val.Type.

func (Double) Value

func (d Double) Value() any

Value implements ref.Val.Value.

type Duration

type Duration struct {
	time.Duration
}

Duration type that implements ref.Val and supports add, compare, negate, and subtract operators. This type is also a receiver which means it can participate in dispatch to receiver functions.

func (Duration) Add

func (d Duration) Add(other ref.Val) ref.Val

Add implements traits.Adder.Add.

func (Duration) Compare

func (d Duration) Compare(other ref.Val) ref.Val

Compare implements traits.Comparer.Compare.

func (Duration) ConvertToNative

func (d Duration) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (Duration) ConvertToType

func (d Duration) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (Duration) Equal

func (d Duration) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (Duration) IsZeroValue added in v0.13.0

func (d Duration) IsZeroValue() bool

IsZeroValue returns true if the duration value is zero

func (Duration) Negate

func (d Duration) Negate() ref.Val

Negate implements traits.Negater.Negate.

func (Duration) Receive

func (d Duration) Receive(function string, overload string, args []ref.Val) ref.Val

Receive implements traits.Receiver.Receive.

func (Duration) Subtract

func (d Duration) Subtract(subtrahend ref.Val) ref.Val

Subtract implements traits.Subtractor.Subtract.

func (Duration) Type

func (d Duration) Type() ref.Type

Type implements ref.Val.Type.

func (Duration) Value

func (d Duration) Value() any

Value implements ref.Val.Value.

type Err

type Err struct {
	// contains filtered or unexported fields
}

Err type which extends the built-in go error and implements ref.Val.

func (*Err) ConvertToNative

func (e *Err) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (*Err) ConvertToType

func (e *Err) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (*Err) Equal

func (e *Err) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (*Err) Is added in v0.13.0

func (e *Err) Is(target error) bool

Is implements errors.Is.

func (*Err) String

func (e *Err) String() string

String implements fmt.Stringer.

func (*Err) Type

func (e *Err) Type() ref.Type

Type implements ref.Val.Type.

func (*Err) Value

func (e *Err) Value() any

Value implements ref.Val.Value.

type Error added in v0.14.0

type Error interface {
	error
	ref.Val
}

Error interface which allows types types.Err values to be treated as error values.

type Int

type Int int64

Int type that implements ref.Val as well as comparison and math operators.

func (Int) Add

func (i Int) Add(other ref.Val) ref.Val

Add implements traits.Adder.Add.

func (Int) Compare

func (i Int) Compare(other ref.Val) ref.Val

Compare implements traits.Comparer.Compare.

func (Int) ConvertToNative

func (i Int) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (Int) ConvertToType

func (i Int) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (Int) Divide

func (i Int) Divide(other ref.Val) ref.Val

Divide implements traits.Divider.Divide.

func (Int) Equal

func (i Int) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (Int) IsZeroValue added in v0.13.0

func (i Int) IsZeroValue() bool

IsZeroValue returns true if integer is equal to 0

func (Int) Modulo

func (i Int) Modulo(other ref.Val) ref.Val

Modulo implements traits.Modder.Modulo.

func (Int) Multiply

func (i Int) Multiply(other ref.Val) ref.Val

Multiply implements traits.Multiplier.Multiply.

func (Int) Negate

func (i Int) Negate() ref.Val

Negate implements traits.Negater.Negate.

func (Int) Subtract

func (i Int) Subtract(subtrahend ref.Val) ref.Val

Subtract implements traits.Subtractor.Subtract.

func (Int) Type

func (i Int) Type() ref.Type

Type implements ref.Val.Type.

func (Int) Value

func (i Int) Value() any

Value implements ref.Val.Value.

type Null

type Null structpb.NullValue

Null type implementation.

func (Null) ConvertToNative

func (n Null) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (Null) ConvertToType

func (n Null) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (Null) Equal

func (n Null) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (Null) IsZeroValue added in v0.13.0

func (n Null) IsZeroValue() bool

IsZeroValue returns true as null always represents an absent value.

func (Null) Type

func (n Null) Type() ref.Type

Type implements ref.Val.Type.

func (Null) Value

func (n Null) Value() any

Value implements ref.Val.Value.

type Optional added in v0.13.0

type Optional struct {
	// contains filtered or unexported fields
}

Optional value which points to a value if non-empty.

func OptionalOf added in v0.13.0

func OptionalOf(value ref.Val) *Optional

OptionalOf returns an optional value which wraps a concrete CEL value.

func (*Optional) ConvertToNative added in v0.13.0

func (o *Optional) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements the ref.Val interface method.

func (*Optional) ConvertToType added in v0.13.0

func (o *Optional) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements the ref.Val interface method.

func (*Optional) Equal added in v0.13.0

func (o *Optional) Equal(other ref.Val) ref.Val

Equal determines whether the values contained by two optional values are equal.

func (*Optional) GetValue added in v0.13.0

func (o *Optional) GetValue() ref.Val

GetValue returns the wrapped value contained in the optional.

func (*Optional) HasValue added in v0.13.0

func (o *Optional) HasValue() bool

HasValue returns true if the optional has a value.

func (*Optional) String added in v0.13.0

func (o *Optional) String() string

func (*Optional) Type added in v0.13.0

func (o *Optional) Type() ref.Type

Type implements the ref.Val interface method.

func (*Optional) Value added in v0.13.0

func (o *Optional) Value() any

Value returns the underlying 'Value()' of the wrapped value, if present.

type String

type String string

String type implementation which supports addition, comparison, matching, and size functions.

func (String) Add

func (s String) Add(other ref.Val) ref.Val

Add implements traits.Adder.Add.

func (String) Compare

func (s String) Compare(other ref.Val) ref.Val

Compare implements traits.Comparer.Compare.

func (String) ConvertToNative

func (s String) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (String) ConvertToType

func (s String) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (String) Equal

func (s String) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (String) IsZeroValue added in v0.13.0

func (s String) IsZeroValue() bool

IsZeroValue returns true if the string is empty.

func (String) Match

func (s String) Match(pattern ref.Val) ref.Val

Match implements traits.Matcher.Match.

func (String) Receive

func (s String) Receive(function string, overload string, args []ref.Val) ref.Val

Receive implements traits.Receiver.Receive.

func (String) Size

func (s String) Size() ref.Val

Size implements traits.Sizer.Size.

func (String) Type

func (s String) Type() ref.Type

Type implements ref.Val.Type.

func (String) Value

func (s String) Value() any

Value implements ref.Val.Value.

type Timestamp

type Timestamp struct {
	time.Time
}

Timestamp type implementation which supports add, compare, and subtract operations. Timestamps are also capable of participating in dynamic function dispatch to instance methods.

func (Timestamp) Add

func (t Timestamp) Add(other ref.Val) ref.Val

Add implements traits.Adder.Add.

func (Timestamp) Compare

func (t Timestamp) Compare(other ref.Val) ref.Val

Compare implements traits.Comparer.Compare.

func (Timestamp) ConvertToNative

func (t Timestamp) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (Timestamp) ConvertToType

func (t Timestamp) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (Timestamp) Equal

func (t Timestamp) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (Timestamp) IsZeroValue added in v0.13.0

func (t Timestamp) IsZeroValue() bool

IsZeroValue returns true if the timestamp is epoch 0.

func (Timestamp) Receive

func (t Timestamp) Receive(function string, overload string, args []ref.Val) ref.Val

Receive implements traits.Receiver.Receive.

func (Timestamp) Subtract

func (t Timestamp) Subtract(subtrahend ref.Val) ref.Val

Subtract implements traits.Subtractor.Subtract.

func (Timestamp) Type

func (t Timestamp) Type() ref.Type

Type implements ref.Val.Type.

func (Timestamp) Value

func (t Timestamp) Value() any

Value implements ref.Val.Value.

type TypeValue

type TypeValue struct {
	// contains filtered or unexported fields
}

TypeValue is an instance of a Value that describes a value's type.

func NewObjectTypeValue

func NewObjectTypeValue(name string) *TypeValue

NewObjectTypeValue returns a *TypeValue based on the input name, which is annotated with the traits relevant to all objects.

func NewTypeValue

func NewTypeValue(name string, traits ...int) *TypeValue

NewTypeValue returns *TypeValue which is both a ref.Type and ref.Val.

func (*TypeValue) ConvertToNative

func (t *TypeValue) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (*TypeValue) ConvertToType

func (t *TypeValue) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (*TypeValue) Equal

func (t *TypeValue) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (*TypeValue) HasTrait

func (t *TypeValue) HasTrait(trait int) bool

HasTrait indicates whether the type supports the given trait. Trait codes are defined in the traits package, e.g. see traits.AdderType.

func (*TypeValue) String

func (t *TypeValue) String() string

String implements fmt.Stringer.

func (*TypeValue) Type

func (t *TypeValue) Type() ref.Type

Type implements ref.Val.Type.

func (*TypeValue) TypeName

func (t *TypeValue) TypeName() string

TypeName gives the type's name as a string.

func (*TypeValue) Value

func (t *TypeValue) Value() any

Value implements ref.Val.Value.

type Uint

type Uint uint64

Uint type implementation which supports comparison and math operators.

func (Uint) Add

func (i Uint) Add(other ref.Val) ref.Val

Add implements traits.Adder.Add.

func (Uint) Compare

func (i Uint) Compare(other ref.Val) ref.Val

Compare implements traits.Comparer.Compare.

func (Uint) ConvertToNative

func (i Uint) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (Uint) ConvertToType

func (i Uint) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType implements ref.Val.ConvertToType.

func (Uint) Divide

func (i Uint) Divide(other ref.Val) ref.Val

Divide implements traits.Divider.Divide.

func (Uint) Equal

func (i Uint) Equal(other ref.Val) ref.Val

Equal implements ref.Val.Equal.

func (Uint) IsZeroValue added in v0.13.0

func (i Uint) IsZeroValue() bool

IsZeroValue returns true if the uint is zero.

func (Uint) Modulo

func (i Uint) Modulo(other ref.Val) ref.Val

Modulo implements traits.Modder.Modulo.

func (Uint) Multiply

func (i Uint) Multiply(other ref.Val) ref.Val

Multiply implements traits.Multiplier.Multiply.

func (Uint) Subtract

func (i Uint) Subtract(subtrahend ref.Val) ref.Val

Subtract implements traits.Subtractor.Subtract.

func (Uint) Type

func (i Uint) Type() ref.Type

Type implements ref.Val.Type.

func (Uint) Value

func (i Uint) Value() any

Value implements ref.Val.Value.

type Unknown

type Unknown []int64

Unknown type implementation which collects expression ids which caused the current value to become unknown.

func (Unknown) ConvertToNative

func (u Unknown) ConvertToNative(typeDesc reflect.Type) (any, error)

ConvertToNative implements ref.Val.ConvertToNative.

func (Unknown) ConvertToType

func (u Unknown) ConvertToType(typeVal ref.Type) ref.Val

ConvertToType is an identity function since unknown values cannot be modified.

func (Unknown) Equal

func (u Unknown) Equal(other ref.Val) ref.Val

Equal is an identity function since unknown values cannot be modified.

func (Unknown) Type

func (u Unknown) Type() ref.Type

Type implements ref.Val.Type.

func (Unknown) Value

func (u Unknown) Value() any

Value implements ref.Val.Value.

Directories

Path Synopsis
Package pb reflects over protocol buffer descriptors to generate objects that simplify type, enum, and field lookup.
Package pb reflects over protocol buffer descriptors to generate objects that simplify type, enum, and field lookup.
Package ref contains the reference interfaces used throughout the types components.
Package ref contains the reference interfaces used throughout the types components.
Package traits defines interfaces that a type may implement to participate in operator overloads and function dispatch.
Package traits defines interfaces that a type may implement to participate in operator overloads and function dispatch.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL