cl-ast: Add syntax support for generics
This commit is contained in:
@@ -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) => {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user