Skip to content

feat(reflect): sealed type-kind read-back (BEP-066 s1, PR 5 — capstone) - #4334

Merged
antoniosarosi merged 2 commits into
antonio/s1-mint-identityfrom
antonio/s1-kinds-readback
Aug 7, 2026
Merged

feat(reflect): sealed type-kind read-back (BEP-066 s1, PR 5 — capstone)#4334
antoniosarosi merged 2 commits into
antonio/s1-mint-identityfrom
antonio/s1-kinds-readback

Conversation

@antoniosarosi

@antoniosarosi antoniosarosi commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

BEP-066 slice-1 stack, PR 5 of 5 — the capstone. Chained on #4331. With this green, the slice-1 stack is complete: the reflection read API (K/V/N rule families) is fully live.

What

  • Grammar carve-out: class/enum/interface/function legal as path segments after . across type parsing, expression paths, patterns, map entries, generic lookahead, AST lowering, and formatting — bare keywords still rejected.
  • The nine sealed kind classes (reflect.class.Typereflect.function.Type) + the closed baml.reflect.TypeKind union alias; identity-preserving kind() (K-5), all nine nullable as_*() (K-6 — never throw), as_type().
  • The one type-system fact: kind class <: type sealed edge in shared normalization; Object::Type reports its precise kind class while keeping the physical TYPE tag; implement … for type preserved by teaching impl resolution to follow the sealed edge (to_string() verified on all nine kinds).
  • Read-back (C-15): fields/values/member_types/element_type/params natives for all nine kinds; generic class fields substituted before read-back; function.Type has ordered params + return, no throws (K-11). New docstring + string-valued other columns on Class/Field/Enum/Variant; emit preserves aliases, descriptions, docstrings, and custom annotations (found + fixed + pinned a pre-existing hoist bug where the custom-attribute path consumed stream.*).
  • Kind classes non-constructible with a dedicated diagnostic.

Oracle coverage

Exhaustive nine-arm TypeKind match + missing-arm diagnostics · every as_* positive/null path · mint identity through kind().as_type() (I-2 × K-5) · non-throwing accessor contracts · full metadata read-back · conformance queries · recursive type walking · of_value precision.

Gates

Full corpus + parser + LSP (reviewed) + all-features baml_cli + tir + project green; fmt/clippy/rustdoc clean; snapshot accepts grouped in the commit (new type_kinds corpus + describe-listing growth).

Implemented by a Codex (gpt-5.6-sol) worker under stack-manager review. Both BEP-066 foundation stacks are now complete at 5/5.

Summary by CodeRabbit

  • New Features

    • Added comprehensive runtime reflection for classes, enums, unions, literals, arrays, maps, interfaces, primitives, and functions.
    • Type values now expose their kind and provide kind-specific views and nested type information.
    • Added access to fields, parameters, enum values, metadata, aliases, documentation, and custom annotations.
    • Added validation preventing direct construction of reflection-kind values.
    • Expanded support for keyword-based names in qualified paths.
  • Bug Fixes

    • Improved type alias handling, metadata propagation, and reflection type matching.

@antoniosarosi

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@vercel

vercel Bot commented Aug 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
beps Ready Ready Preview Aug 6, 2026 7:05am
promptfiddle2 Ready Ready Preview Aug 6, 2026 7:05am

Request Review

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7c63057a-05be-45fd-8975-5a99c58122c8

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds BEP-066 reflection type-kind views for nine runtime categories. It updates compiler parsing, type checking, metadata emission, code generation, VM accessors, runtime type classification, and test coverage.

Changes

Reflection contracts and metadata

Layer / File(s) Summary
Reflection contracts and type classification
baml_builtins2/baml_std/baml/ns_reflect/*, baml_builtins2/.../type_class.baml, baml_type/src/type_kind.rs
Defines TypeView, Meta, nine TypeKind variants, kind-specific views, and TypeValue cast methods.
Runtime metadata model
bex_vm_types/src/types/*, baml_compiler2_emit/src/lib.rs
Adds docstrings and custom metadata to classes, fields, enums, and variants. Emits and tests the structured metadata.
Generated binding support
baml_builtins2_codegen/src/codegen.rs, baml_builtins2/src/lib.rs
Registers reflection builtins and sanitizes nested namespace, dispatch, receiver, parameter, and VM value references in generated Rust code.

Compiler and runtime behavior

Layer / File(s) Summary
Qualified reflection paths
baml_compiler_parser/src/parser.rs, baml_compiler_syntax/src/ast.rs, baml_fmt/src/ast/*, baml_compiler2_ast/src/*
Allows declaration keywords after dots in paths while keeping them invalid as bare expression identifiers. Updates field-attribute hoisting and regression tests.
Type semantics and diagnostics
baml_compiler2_emit/src/emit.rs, baml_compiler2_mir/src/lower.rs, baml_compiler2_tir/src/*, baml_lsp2_actions/src/check.rs
Uses structural reflection-kind matching, expands aliased unions, maps Type values to the runtime type tag, and reports direct construction as a type mismatch.
VM reflection implementation
bex_vm/src/package_baml/type_kinds.rs, bex_vm/src/package_baml/type_class.rs, bex_vm/src/package_baml/resolve.rs, bex_vm/src/vm.rs
Classifies Object::Type values and exposes metadata, fields, enum values, composite members, function signatures, interface relationships, nullable casts, and identity conversions.

Validation

Layer / File(s) Summary
End-to-end reflection tests
baml_tests/tests/type_kinds.rs, baml_tests/projects/compiles/type_kinds/*
Tests all nine kinds, metadata readback, nested type traversal, casts, identity preservation, and intrinsic type operations.
Diagnostics and compatibility fixtures
baml_tests/projects/diagnostic_errors/type_kinds/*, baml_tests/baml_src/ns_reflect_type_of/*, bex_engine/*, bex_heap/*, bex_vm/tests/*
Tests non-exhaustive kind matching and non-constructibility. Updates existing class and enum fixtures with metadata defaults.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers: 2kai2kai2, rossirpaulo

Poem

A rabbit inspects each type in the burrow,
Nine little views emerge in a row.
Fields, maps, and unions all share what they know,
Metadata blooms where the annotations grow.
The VM hops neatly from kind into kind—
“A well-reflected world,” says the rabbit, “combined!”

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: sealed type-kind reflection read-back under BEP-066.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch antonio/s1-kinds-readback

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

⏭️ Performance benchmarks were skipped

Perf benchmarks (CodSpeed) are opt-in on pull requests — they no longer run on every push. They always run automatically after merge to canary/main.

To run them on this PR, do any of the following, then push a commit (or re-run CI):

  • Add RUN_CODSPEED=1 to the PR description, or
  • Include run-perf or /perf in the PR title or any commit message.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

Binary size checks passed

7 passed

Artifact Platform File Gzip Gated on Baseline Delta Status
baml-cli Linux 🔒 27.9 MB 11.9 MB file 27.4 MB +566.0 KB (+2.1%) OK
packed-program Linux 🔒 18.2 MB 7.5 MB file 17.7 MB +480.3 KB (+2.7%) OK
baml-cli macOS 🔒 21.7 MB 10.4 MB file 21.3 MB +445.3 KB (+2.1%) OK
packed-program macOS 🔒 14.2 MB 6.6 MB file 13.8 MB +376.2 KB (+2.7%) OK
baml-cli Windows 🔒 23.3 MB 10.6 MB file 23.0 MB +379.3 KB (+1.7%) OK
packed-program Windows 🔒 15.2 MB 6.7 MB file 14.8 MB +373.8 KB (+2.5%) OK
bridge_wasm WASM 17.1 MB 🔒 4.7 MB gzip 4.6 MB +53.3 KB (+1.2%) OK

🔒 = the size this artifact is GATED on (ceiling + delta). Binaries gate on file size (installed binary); WASM gates on gzip (download size). The other size is shown for information only.


Generated by cargo size-gate · workflow run

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (4)
baml_language/crates/bex_vm/src/package_baml/type_kinds.rs (2)

94-100: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove the unused $trait_name macro parameter.

impl_as_type! accepts $trait_name:ident but never expands it. The generated body is identical for all nine traits. Rust does not warn on an unused macro metavariable, so the argument at every call site suggests a per-trait specialization that does not exist.

Drop the parameter and update the nine call sites to impl_as_type!();.

♻️ Proposed change to the macro definition
 macro_rules! impl_as_type {
-    ($trait_name:ident) => {
+    () => {
         fn as_type(_vm: &BexVm, r#type: &Value) -> Value {
             *r#type
         }
     };
 }

Then update each call site, for example:

impl BamlClassReflectClassType for PackageBamlImpl {
    impl_as_type!();
    // ...
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/bex_vm/src/package_baml/type_kinds.rs` around lines 94 -
100, Remove the unused $trait_name parameter from the impl_as_type! macro
definition, then update all nine invocations to use impl_as_type!() without an
argument. Keep the generated as_type implementation unchanged.

33-57: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

Consider narrowing the heap clone to the data each caller needs.

reflected_class and reflected_enum deep-copy the whole definition object, including Vec<ClassField> and every per-field IndexMap. The meta callers at Line 131 and Line 164 read only four Option<String> values plus other, so they pay for the full field-vector copy on every call.

The clone resolves a real borrow conflict: the vm.get_object borrow must end before the TLAB allocations take &mut BexVm. You can keep that property and still avoid the field copy by extracting only the owned values inside the borrow scope, for example a meta-specific helper that returns (Option<String>, Option<String>, Option<String>, IndexMap<String, String>).

This is a reflection path, not the interpreter hot loop, so it is optional.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/bex_vm/src/package_baml/type_kinds.rs` around lines 33 -
57, Reduce cloning in the reflection metadata path by adding a helper that
extracts only the required owned class or enum metadata—three Option<String>
values and the other IndexMap—while the vm.get_object borrow is active. Update
the callers around reflected_class and reflected_enum metadata handling to use
this helper, ensuring the borrow ends before any mutable BexVm/TLAB allocations
and avoiding cloning ClassField vectors and per-field IndexMaps.
baml_language/crates/baml_type/src/normalize.rs (1)

772-774: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add runtime type subtype tests for reflection-kind classes.

type_kind.rs only covers is_type_kind_class recognizer rules. normalize.rs still lacks a unit test that exercises NormalTy::Class(baml.reflect.<kind>.Type) <: NormalTy::Type and keeps subtype checks on other reflection kinds/NormalTy::Type non-convertible.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/baml_type/src/normalize.rs` around lines 772 - 774, Add
unit tests in normalize.rs covering runtime subtype behavior for
NormalTy::Class(baml.reflect.<kind>.Type) against NormalTy::Type:
reflection-kind classes must convert to Type, while other reflection kinds and
NormalTy::Type itself remain non-convertible. Reuse the existing subtype-testing
helpers and representative reflection-kind symbols, and keep the production
match arm unchanged.

Source: Path instructions

baml_language/crates/baml_compiler2_tir/src/builder.rs (1)

6116-6125: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract the reflection-kind construction guard into one helper. Both sites run the identical check-and-report sequence against a different Ty value. Duplicating this logic risks the two call sites drifting apart if the diagnostic condition changes later.

  • baml_language/crates/baml_compiler2_tir/src/builder.rs#L6116-L6125: replace this block with a call to a new helper, e.g. self.report_if_reflection_kind_class(&ty, expr_id);.
  • baml_language/crates/baml_compiler2_tir/src/builder.rs#L6274-L6283: replace this block with self.report_if_reflection_kind_class(expected, expr_id);, using the same helper.
♻️ Proposed helper
+    fn report_if_reflection_kind_class(&mut self, ty: &Ty, expr_id: ExprId) {
+        if let Ty::Class(class_name, _, _) = ty
+            && is_type_kind_class(class_name)
+        {
+            self.context.report_simple(
+                TirTypeError::CannotConstructReflectionKind {
+                    class_name: class_name.clone(),
+                },
+                expr_id,
+            );
+        }
+    }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/baml_compiler2_tir/src/builder.rs` around lines 6116 -
6125, Extract the duplicated reflection-kind check and diagnostic reporting into
a shared helper such as report_if_reflection_kind_class in builder.rs. Update
the anchor site at baml_language/crates/baml_compiler2_tir/src/builder.rs lines
6116-6125 to call it with &ty, and update the sibling site at lines 6274-6283 to
call it with expected, preserving the existing expr_id and diagnostic behavior
at both sites.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@baml_language/crates/baml_compiler2_tir/src/builder.rs`:
- Around line 6116-6125: Extract the duplicated reflection-kind check and
diagnostic reporting into a shared helper such as
report_if_reflection_kind_class in builder.rs. Update the anchor site at
baml_language/crates/baml_compiler2_tir/src/builder.rs lines 6116-6125 to call
it with &ty, and update the sibling site at lines 6274-6283 to call it with
expected, preserving the existing expr_id and diagnostic behavior at both sites.

In `@baml_language/crates/baml_type/src/normalize.rs`:
- Around line 772-774: Add unit tests in normalize.rs covering runtime subtype
behavior for NormalTy::Class(baml.reflect.<kind>.Type) against NormalTy::Type:
reflection-kind classes must convert to Type, while other reflection kinds and
NormalTy::Type itself remain non-convertible. Reuse the existing subtype-testing
helpers and representative reflection-kind symbols, and keep the production
match arm unchanged.

In `@baml_language/crates/bex_vm/src/package_baml/type_kinds.rs`:
- Around line 94-100: Remove the unused $trait_name parameter from the
impl_as_type! macro definition, then update all nine invocations to use
impl_as_type!() without an argument. Keep the generated as_type implementation
unchanged.
- Around line 33-57: Reduce cloning in the reflection metadata path by adding a
helper that extracts only the required owned class or enum metadata—three
Option<String> values and the other IndexMap—while the vm.get_object borrow is
active. Update the callers around reflected_class and reflected_enum metadata
handling to use this helper, ensuring the borrow ends before any mutable
BexVm/TLAB allocations and avoiding cloning ClassField vectors and per-field
IndexMaps.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 75ea7948-483c-41d6-a668-58f948d02c6b

📥 Commits

Reviewing files that changed from the base of the PR and between 5304e45 and bf155f7.

⛔ Files ignored due to path filters (19)
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_command_tests__render_builtin_package_listing.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/reflect_type_of.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____03_ppir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____04_5_mir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____04_tir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____06_codegen.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/type_kinds/baml_tests__compiles__type_kinds__03_ppir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/type_kinds/baml_tests__compiles__type_kinds__04_5_mir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/type_kinds/baml_tests__compiles__type_kinds__04_tir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/type_kinds/baml_tests__compiles__type_kinds__05_diagnostics.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/type_kinds/baml_tests__compiles__type_kinds__06_codegen.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/type_kinds/baml_tests__compiles__type_kinds__10_formatter__main.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/diagnostic_errors/type_kinds/baml_tests__diagnostic_errors__type_kinds__03_ppir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/diagnostic_errors/type_kinds/baml_tests__diagnostic_errors__type_kinds__04_tir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/diagnostic_errors/type_kinds/baml_tests__diagnostic_errors__type_kinds__05_diagnostics.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/diagnostic_errors/type_kinds/baml_tests__diagnostic_errors__type_kinds__10_formatter__main.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/src/compiler2_tir/snapshots/baml_tests__compiler2_tir__phase5__snapshot_baml_package_items.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/tests/bytecode_format/snapshots/bytecode_format__bytecode_display_expanded.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/tests/bytecode_format/snapshots/bytecode_format__bytecode_display_expanded_unoptimized.snap is excluded by !**/*.snap
📒 Files selected for processing (46)
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_array/array.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_class/class.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_enum/enum.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_function/function.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_interface/interface.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_literal/literal.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_map/map.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_primitive/primitive.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/ns_union/union.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_reflect/reflect.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/type_class.baml
  • baml_language/crates/baml_builtins2/src/lib.rs
  • baml_language/crates/baml_builtins2_codegen/src/codegen.rs
  • baml_language/crates/baml_compiler2_ast/src/disambiguate.rs
  • baml_language/crates/baml_compiler2_ast/src/lib.rs
  • baml_language/crates/baml_compiler2_ast/src/lower_cst.rs
  • baml_language/crates/baml_compiler2_ast/src/lower_expr_body.rs
  • baml_language/crates/baml_compiler2_emit/src/emit.rs
  • baml_language/crates/baml_compiler2_emit/src/lib.rs
  • baml_language/crates/baml_compiler2_mir/src/lower.rs
  • baml_language/crates/baml_compiler2_tir/src/builder.rs
  • baml_language/crates/baml_compiler2_tir/src/infer_context.rs
  • baml_language/crates/baml_compiler_parser/src/parser.rs
  • baml_language/crates/baml_compiler_syntax/src/ast.rs
  • baml_language/crates/baml_fmt/src/ast/expressions.rs
  • baml_language/crates/baml_fmt/src/ast/types.rs
  • baml_language/crates/baml_lsp2_actions/src/check.rs
  • baml_language/crates/baml_tests/baml_src/ns_reflect_type_of/reflect_type_of.baml
  • baml_language/crates/baml_tests/projects/compiles/type_kinds/main.baml
  • baml_language/crates/baml_tests/projects/diagnostic_errors/type_kinds/main.baml
  • baml_language/crates/baml_tests/tests/type_kinds.rs
  • baml_language/crates/baml_type/src/lib.rs
  • baml_language/crates/baml_type/src/normalize.rs
  • baml_language/crates/baml_type/src/type_kind.rs
  • baml_language/crates/bex_engine/src/conversion.rs
  • baml_language/crates/bex_heap/src/gc.rs
  • baml_language/crates/bex_heap/src/tlab.rs
  • baml_language/crates/bex_vm/src/package_baml/mod.rs
  • baml_language/crates/bex_vm/src/package_baml/resolve.rs
  • baml_language/crates/bex_vm/src/package_baml/type_class.rs
  • baml_language/crates/bex_vm/src/package_baml/type_kinds.rs
  • baml_language/crates/bex_vm/src/vm.rs
  • baml_language/crates/bex_vm/tests/method_class_type_args.rs
  • baml_language/crates/bex_vm_types/src/link.rs
  • baml_language/crates/bex_vm_types/src/types/class.rs
  • baml_language/crates/bex_vm_types/src/types/enums.rs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant