|
@@ -59,6 +59,18 @@ walk :: proc(v: ^Visitor, node: ^Node) {
|
|
}
|
|
}
|
|
|
|
|
|
switch n in &node.derived {
|
|
switch n in &node.derived {
|
|
|
|
+ case File:
|
|
|
|
+ if n.docs != nil {
|
|
|
|
+ walk(v, n.docs);
|
|
|
|
+ }
|
|
|
|
+ walk_stmt_list(v, n.decls[:]);
|
|
|
|
+ case Package:
|
|
|
|
+ for _, f in n.files {
|
|
|
|
+ walk(v, f);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ case Comment_Group:
|
|
|
|
+ // empty
|
|
case Bad_Expr:
|
|
case Bad_Expr:
|
|
case Ident:
|
|
case Ident:
|
|
case Implicit:
|
|
case Implicit:
|
|
@@ -252,29 +264,59 @@ walk :: proc(v: ^Visitor, node: ^Node) {
|
|
|
|
|
|
case Bad_Decl:
|
|
case Bad_Decl:
|
|
case Value_Decl:
|
|
case Value_Decl:
|
|
|
|
+ if n.docs != nil {
|
|
|
|
+ walk(v, n.docs);
|
|
|
|
+ }
|
|
walk_attribute_list(v, n.attributes[:]);
|
|
walk_attribute_list(v, n.attributes[:]);
|
|
walk_expr_list(v, n.names);
|
|
walk_expr_list(v, n.names);
|
|
if n.type != nil {
|
|
if n.type != nil {
|
|
walk(v, n.type);
|
|
walk(v, n.type);
|
|
}
|
|
}
|
|
walk_expr_list(v, n.values);
|
|
walk_expr_list(v, n.values);
|
|
|
|
+ if n.comment != nil {
|
|
|
|
+ walk(v, n.comment);
|
|
|
|
+ }
|
|
case Package_Decl:
|
|
case Package_Decl:
|
|
|
|
+ if n.docs != nil {
|
|
|
|
+ walk(v, n.docs);
|
|
|
|
+ }
|
|
|
|
+ if n.comment != nil {
|
|
|
|
+ walk(v, n.comment);
|
|
|
|
+ }
|
|
case Import_Decl:
|
|
case Import_Decl:
|
|
|
|
+ if n.docs != nil {
|
|
|
|
+ walk(v, n.docs);
|
|
|
|
+ }
|
|
|
|
+ if n.comment != nil {
|
|
|
|
+ walk(v, n.comment);
|
|
|
|
+ }
|
|
case Foreign_Block_Decl:
|
|
case Foreign_Block_Decl:
|
|
|
|
+ if n.docs != nil {
|
|
|
|
+ walk(v, n.docs);
|
|
|
|
+ }
|
|
walk_attribute_list(v, n.attributes[:]);
|
|
walk_attribute_list(v, n.attributes[:]);
|
|
if n.foreign_library != nil {
|
|
if n.foreign_library != nil {
|
|
walk(v, n.foreign_library);
|
|
walk(v, n.foreign_library);
|
|
}
|
|
}
|
|
walk(v, n.body);
|
|
walk(v, n.body);
|
|
case Foreign_Import_Decl:
|
|
case Foreign_Import_Decl:
|
|
|
|
+ if n.docs != nil {
|
|
|
|
+ walk(v, n.docs);
|
|
|
|
+ }
|
|
walk_attribute_list(v, n.attributes[:]);
|
|
walk_attribute_list(v, n.attributes[:]);
|
|
walk(v, n.name);
|
|
walk(v, n.name);
|
|
|
|
+ if n.comment != nil {
|
|
|
|
+ walk(v, n.comment);
|
|
|
|
+ }
|
|
|
|
|
|
case Proc_Group:
|
|
case Proc_Group:
|
|
walk_expr_list(v, n.args);
|
|
walk_expr_list(v, n.args);
|
|
case Attribute:
|
|
case Attribute:
|
|
walk_expr_list(v, n.elems);
|
|
walk_expr_list(v, n.elems);
|
|
case Field:
|
|
case Field:
|
|
|
|
+ if n.docs != nil {
|
|
|
|
+ walk(v, n.docs);
|
|
|
|
+ }
|
|
walk_expr_list(v, n.names);
|
|
walk_expr_list(v, n.names);
|
|
if n.type != nil {
|
|
if n.type != nil {
|
|
walk(v, n.type);
|
|
walk(v, n.type);
|
|
@@ -282,6 +324,9 @@ walk :: proc(v: ^Visitor, node: ^Node) {
|
|
if n.default_value != nil {
|
|
if n.default_value != nil {
|
|
walk(v, n.default_value);
|
|
walk(v, n.default_value);
|
|
}
|
|
}
|
|
|
|
+ if n.comment != nil {
|
|
|
|
+ walk(v, n.comment);
|
|
|
|
+ }
|
|
case Field_List:
|
|
case Field_List:
|
|
for x in n.list {
|
|
for x in n.list {
|
|
walk(v, x);
|
|
walk(v, x);
|