gccrs: ast: dump TypeAlias
authorJakub Dupak <dev@jakubdupak.com>
Fri, 14 Oct 2022 10:38:19 +0000 (12:38 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 21 Feb 2023 11:36:34 +0000 (12:36 +0100)
gcc/rust/ChangeLog:

* ast/rust-ast-dump.cc (Dump::visit): Add code for dumping type aliases.

Signed-off-by: Jakub Dupak <dev@jakubdupak.com>
gcc/rust/ast/rust-ast-dump.cc

index 8caad98..fdcd975 100644 (file)
@@ -836,7 +836,6 @@ Dump::visit (Function &function)
 {
   emit_visibility (function.get_visibility ());
   stream << "fn " << function.get_function_name ();
-
   if (function.has_generics ())
     emit_generic_params (function.get_generic_params ());
 
@@ -872,7 +871,24 @@ Dump::visit (Function &function)
 
 void
 Dump::visit (TypeAlias &type_alias)
-{}
+{
+  // Syntax:
+  // Visibility? type IDENTIFIER GenericParams? WhereClause? = Type;
+
+  // Note: Associated types are handled by `AST::TraitItemType`.
+
+  if (type_alias.has_visibility ())
+    emit_visibility (type_alias.get_visibility ());
+  stream << "type " << type_alias.get_new_type_name ();
+  if (type_alias.has_generics ())
+    emit_generic_params (type_alias.get_generic_params ());
+  if (type_alias.has_where_clause ())
+    {
+    } // FIXME: WhereClause
+  stream << " = ";
+  type_alias.get_type_aliased ()->accept_vis (*this);
+  stream << ";\n";
+}
 
 void
 Dump::visit (StructStruct &struct_item)