aboutsummaryrefslogtreecommitdiff
path: root/src/docs.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-11-17 15:13:38 +0000
committergingerBill <bill@gingerbill.org>2020-11-17 15:13:38 +0000
commita0fbc563173318821af945c76d8417cf599abdbd (patch)
tree5575805ea4db9d5102158057654017c39fb214d6 /src/docs.cpp
parentd90fc18bef8300da0fc6102d57b9e970bd7fe935 (diff)
Improve flags for `odin doc`
Diffstat (limited to 'src/docs.cpp')
-rw-r--r--src/docs.cpp38
1 files changed, 15 insertions, 23 deletions
diff --git a/src/docs.cpp b/src/docs.cpp
index 76d8c5433..f65b07746 100644
--- a/src/docs.cpp
+++ b/src/docs.cpp
@@ -209,6 +209,8 @@ void print_doc_package(CheckerInfo *info, AstPackage *pkg) {
Ast *type_expr = nullptr;
Ast *init_expr = nullptr;
Ast *decl_node = nullptr;
+ CommentGroup *comment = nullptr;
+ CommentGroup *docs = nullptr;
if (e->decl_info != nullptr) {
type_expr = e->decl_info->type_expr;
init_expr = e->decl_info->init_expr;
@@ -236,29 +238,7 @@ void print_doc_package(CheckerInfo *info, AstPackage *pkg) {
gb_printf(";\n");
- if (decl_node && (true || (build_context.cmd_doc_flags & CmdDocFlag_All))) {
- CommentGroup *docs = nullptr;
- CommentGroup *comment = nullptr;
- switch (decl_node->kind) {
- case_ast_node(vd, ValueDecl, decl_node);
- docs = vd->docs;
- comment = vd->comment;
- case_end;
-
- case_ast_node(id, ImportDecl, decl_node);
- docs = id->docs;
- comment = id->comment;
- case_end;
-
- case_ast_node(fl, ForeignImportDecl, decl_node);
- docs = fl->docs;
- comment = fl->comment;
- case_end;
-
- case_ast_node(fb, ForeignBlockDecl, decl_node);
- docs = fb->docs;
- case_end;
- }
+ if (build_context.cmd_doc_flags & CmdDocFlag_All) {
if (comment) {
// gb_printf(" <comment>");
}
@@ -317,6 +297,18 @@ void generate_documentation(Checker *c) {
for_array(i, pkgs) {
print_doc_package(info, pkgs[i]);
}
+ } else if (build_context.cmd_doc_flags & CmdDocFlag_AllPackages) {
+ auto pkgs = array_make<AstPackage *>(permanent_allocator(), 0, info->packages.entries.count);
+ for_array(i, info->packages.entries) {
+ AstPackage *pkg = info->packages.entries[i].value;
+ array_add(&pkgs, pkg);
+ }
+
+ gb_sort_array(pkgs.data, pkgs.count, cmp_ast_package_by_name);
+
+ for_array(i, pkgs) {
+ print_doc_package(info, pkgs[i]);
+ }
} else {
GB_ASSERT(info->init_scope->flags & ScopeFlag_Pkg);
AstPackage *pkg = info->init_scope->pkg;