cl-ast: Remove Option-like "*Kind"s

This commit is contained in:
2025-03-11 23:32:58 -05:00
parent 2fc847fff2
commit fdf076c272
12 changed files with 105 additions and 190 deletions

View File

@@ -99,10 +99,10 @@ fn cat_member(
}
fn cat_enum<'a>(table: &mut Table<'a>, node: Handle, e: &'a Enum) -> CatResult<()> {
let Enum { name: _, kind } = e;
let Enum { name: _, variants: kind } = e;
let kind = match kind {
EnumKind::NoVariants => TypeKind::Adt(Adt::Enum(vec![])),
EnumKind::Variants(variants) => {
None => TypeKind::Adt(Adt::Enum(vec![])),
Some(variants) => {
let mut out_vars = vec![];
for v in variants {
out_vars.push(cat_variant(table, node, v)?)

View File

@@ -97,7 +97,9 @@ impl<'a> Visit<'a> for Populator<'_, 'a> {
self.inner.set_source(Source::Module(m));
self.set_name(*name);
self.visit_module_kind(kind);
if let Some(file) = kind {
self.visit_file(file);
}
}
fn visit_function(&mut self, f: &'a cl_ast::Function) {
@@ -121,11 +123,13 @@ impl<'a> Visit<'a> for Populator<'_, 'a> {
}
fn visit_enum(&mut self, e: &'a cl_ast::Enum) {
let cl_ast::Enum { name, kind } = e;
let cl_ast::Enum { name, variants } = e;
self.inner.set_source(Source::Enum(e));
self.set_name(*name);
self.visit_enum_kind(kind);
if let Some(variants) = variants {
variants.iter().for_each(|v| self.visit_variant(v));
}
}
fn visit_impl(&mut self, i: &'a cl_ast::Impl) {