cl-ast: Add syntax support for generics

This commit is contained in:
2025-04-22 07:22:44 -04:00
parent 681fbc88d3
commit 8ff17fd475
14 changed files with 124 additions and 36 deletions

View File

@@ -66,7 +66,8 @@ fn cat_alias(table: &mut Table, node: Handle, a: &Alias) -> CatResult<()> {
fn cat_struct(table: &mut Table, node: Handle, s: &Struct) -> CatResult<()> {
let parent = parent(table, node);
let Struct { name: _, kind } = s;
let Struct { name: _, gens: _, kind } = s;
// TODO: Generics
let kind = match kind {
StructKind::Empty => TypeKind::Adt(Adt::UnitStruct),
StructKind::Tuple(types) => {
@@ -99,7 +100,8 @@ fn cat_member(
}
fn cat_enum<'a>(table: &mut Table<'a>, node: Handle, e: &'a Enum) -> CatResult<()> {
let Enum { name: _, variants: kind } = e;
let Enum { name: _, gens: _, variants: kind } = e;
// TODO: Genereics
let kind = match kind {
None => TypeKind::Adt(Adt::Enum(vec![])),
Some(variants) => {

View File

@@ -105,7 +105,8 @@ impl<'a> Visit<'a> for Populator<'_, 'a> {
}
fn visit_function(&mut self, f: &'a cl_ast::Function) {
let cl_ast::Function { name, sign, bind, body } = f;
let cl_ast::Function { name, gens: _, sign, bind, body } = f;
// TODO: populate generics?
self.inner.set_source(Source::Function(f));
self.set_name(*name);
@@ -118,7 +119,8 @@ impl<'a> Visit<'a> for Populator<'_, 'a> {
}
fn visit_struct(&mut self, s: &'a cl_ast::Struct) {
let cl_ast::Struct { name, kind } = s;
let cl_ast::Struct { name, gens: _, kind } = s;
// TODO: populate generics?
self.inner.set_source(Source::Struct(s));
self.set_name(*name);
@@ -126,7 +128,8 @@ impl<'a> Visit<'a> for Populator<'_, 'a> {
}
fn visit_enum(&mut self, e: &'a cl_ast::Enum) {
let cl_ast::Enum { name, variants } = e;
let cl_ast::Enum { name, gens: _, variants } = e;
// TODO: populate generics?
self.inner.set_source(Source::Enum(e));
self.set_name(*name);