reflect.Enum

An enum-kind view of a `type` value. Users never construct this class.

Reference version

Signature

class reflect.Enum

An enum-kind view of a type value. Users never construct this class.

Source:<builtin>/reflect/kinds.bamlbytes 4552–6661

Fields

_ty

reflect.Type

The wrapped type value. Private by invariant: reflection natives are its only readers, and each kind method panics if the held type no longer classifies as this view's kind.

Static methods

function

get_value

(value: unknown) -> string throws reflect.errors.InvalidArgument

Recover the source variant name from a runtime or static enum value.

Throws

  • reflect.errors.InvalidArgument if value is not an enum value. The parameter is unknown by design — the check is a runtime one, so a caller that passes a non-enum gets an error value rather than a panic.
function

new

(
name: string,
values: (string | reflect.enum.Value)[]
) -> reflect.Enum throws reflect.errors.CompilationError

Mint a fresh runtime enum definition. Every evaluation has distinct type identity even when its name and rows are byte-identical.

function

value

(
name: string,
alias: string | null = …,
description: string | null = …,
docstring: string | null = …,
other: map<string, string> | null = …
) -> reflect.enum.Value throws never

Construct one enum row with optional schema metadata.

Instance methods

function

metadata

(self) -> reflect.Meta throws never

The enum declaration's own schema metadata.

function

name

(self) -> string throws never

The enum's name, rendered like to_string: Color, shape.Kind.

function

values

(self) -> reflect.enum.Value[] throws never

The enum's variants, in declaration order.

Implementations

reflect.AnyClass for T

Instance methods

function

attributes

(self) -> reflect.Meta throws never

The class declaration's schema metadata, or empty metadata when the runtime type is not a class.

function

find

<T>(self, name: string) -> T | null throws reflect.errors.TypeMismatch

Read the field called name as T, or null if this value's class declares no such field. A present field holding null also reads as null; use has_field or get<T?> to tell the two apart.

Throws

  • reflect.errors.TypeMismatch if the field's value is not a T.
function

find_field

(self, name: string) -> reflect.class.Field | null throws never

A value-bound handle to the field called name, or null if this value's class declares no such field.

function

get

<T>(self, name: string) -> T throws reflect.errors.NotFound | reflect.errors.TypeMismatch

Read the field called name as T. Read a nullable field with a nullable T (get<int?>). find returns null for a missing field instead of throwing.

Throws

  • reflect.errors.NotFound if this value's class declares no field called name.
  • reflect.errors.TypeMismatch if the field's value is not a T.
function

get_field

(self, name: string) -> reflect.class.Field throws reflect.errors.NotFound

A value-bound handle to the field called name. find_field returns null instead of throwing.

Throws

  • reflect.errors.NotFound if this value's class declares no field called name.
function

has_field

(self, name: string) -> bool throws never

Whether this value's runtime class declares a field called name. false when the runtime type is not a class.

function

list_fields

(self) -> reflect.class.Field[] throws never

Reflected fields bound to this value for Field.value<T>().

function

name

(self) -> string throws never

The rendered name of this value's concrete runtime type.

function

type

(self) -> reflect.Type throws never

This value's concrete runtime type.

Source:<builtin>/reflect/reflect.bamlbytes 14431–14461

reflect.TypeView for reflect.Enum

Instance methods

function

array

(self) -> reflect.Array throws never

Construct an array type whose element is this type.

function

implemented_by

(self, other: reflect.TypeView) -> bool throws never

Reverse of implements: iface.implemented_by(t) is the same as t.implements(iface). false when this type is not an interface, or when other is not a concrete type.

function

implements

(self, other: reflect.TypeView) -> bool throws never

True iff this type nominally implements the interface other. Any concrete type can: a class, an enum, a primitive, a list, a map, ... other pins the interface's associated types (an omitted one takes its default), and only an implementation with exactly those matches: see reflect.Type.implements. false when other is not an interface, or when this type is not a concrete type.

function

kind

(self) -> reflect.TypeKind throws never

Returns the precise kind view of this type value.

function

meta

(
self,
alias: string | null = …,
description: string | null = …,
docstring: string | null = …,
other: map<string, string> | null = …
) -> reflect.WithMeta<reflect.Type> throws never

Pair this type value with schema metadata without changing its identity.

function

optional

(self) -> reflect.Union throws never

Construct the canonical union of this type and null.

function

to_baml

(self) -> string throws reflect.errors.CompilationError

Render deterministic canonical BAML source for this definition. Non-equivalent declarations with the same display name are rejected.

Source:<builtin>/reflect/kinds.bamlbytes 5963–6133