mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Improve flags for odin doc
This commit is contained in:
@@ -3116,6 +3116,8 @@ void check_collect_value_decl(CheckerContext *c, Ast *decl) {
|
|||||||
Ast *init_expr = value;
|
Ast *init_expr = value;
|
||||||
DeclInfo *d = make_decl_info(c->scope, c->decl);
|
DeclInfo *d = make_decl_info(c->scope, c->decl);
|
||||||
d->decl_node = decl;
|
d->decl_node = decl;
|
||||||
|
d->comment = vd->comment;
|
||||||
|
d->docs = vd->docs;
|
||||||
d->entity = e;
|
d->entity = e;
|
||||||
d->type_expr = vd->type;
|
d->type_expr = vd->type;
|
||||||
d->init_expr = init_expr;
|
d->init_expr = init_expr;
|
||||||
@@ -3147,6 +3149,8 @@ void check_collect_value_decl(CheckerContext *c, Ast *decl) {
|
|||||||
DeclInfo *d = make_decl_info(c->scope, c->decl);
|
DeclInfo *d = make_decl_info(c->scope, c->decl);
|
||||||
|
|
||||||
d->decl_node = decl;
|
d->decl_node = decl;
|
||||||
|
d->comment = vd->comment;
|
||||||
|
d->docs = vd->docs;
|
||||||
d->attributes = vd->attributes;
|
d->attributes = vd->attributes;
|
||||||
d->type_expr = vd->type;
|
d->type_expr = vd->type;
|
||||||
d->init_expr = init;
|
d->init_expr = init;
|
||||||
|
|||||||
@@ -141,6 +141,9 @@ struct DeclInfo {
|
|||||||
bool is_using;
|
bool is_using;
|
||||||
bool where_clauses_evaluated;
|
bool where_clauses_evaluated;
|
||||||
|
|
||||||
|
CommentGroup *comment;
|
||||||
|
CommentGroup *docs;
|
||||||
|
|
||||||
PtrSet<Entity *> deps;
|
PtrSet<Entity *> deps;
|
||||||
PtrSet<Type *> type_info_deps;
|
PtrSet<Type *> type_info_deps;
|
||||||
Array<BlockLabel> labels;
|
Array<BlockLabel> labels;
|
||||||
|
|||||||
+15
-23
@@ -209,6 +209,8 @@ void print_doc_package(CheckerInfo *info, AstPackage *pkg) {
|
|||||||
Ast *type_expr = nullptr;
|
Ast *type_expr = nullptr;
|
||||||
Ast *init_expr = nullptr;
|
Ast *init_expr = nullptr;
|
||||||
Ast *decl_node = nullptr;
|
Ast *decl_node = nullptr;
|
||||||
|
CommentGroup *comment = nullptr;
|
||||||
|
CommentGroup *docs = nullptr;
|
||||||
if (e->decl_info != nullptr) {
|
if (e->decl_info != nullptr) {
|
||||||
type_expr = e->decl_info->type_expr;
|
type_expr = e->decl_info->type_expr;
|
||||||
init_expr = e->decl_info->init_expr;
|
init_expr = e->decl_info->init_expr;
|
||||||
@@ -236,29 +238,7 @@ void print_doc_package(CheckerInfo *info, AstPackage *pkg) {
|
|||||||
gb_printf(";\n");
|
gb_printf(";\n");
|
||||||
|
|
||||||
|
|
||||||
if (decl_node && (true || (build_context.cmd_doc_flags & CmdDocFlag_All))) {
|
if (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 (comment) {
|
if (comment) {
|
||||||
// gb_printf(" <comment>");
|
// gb_printf(" <comment>");
|
||||||
}
|
}
|
||||||
@@ -314,6 +294,18 @@ void generate_documentation(Checker *c) {
|
|||||||
|
|
||||||
gb_sort_array(pkgs.data, pkgs.count, cmp_ast_package_by_name);
|
gb_sort_array(pkgs.data, pkgs.count, cmp_ast_package_by_name);
|
||||||
|
|
||||||
|
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) {
|
for_array(i, pkgs) {
|
||||||
print_doc_package(info, pkgs[i]);
|
print_doc_package(info, pkgs[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-1
@@ -599,6 +599,8 @@ enum BuildFlagKind {
|
|||||||
BuildFlag_GoToDefinitions,
|
BuildFlag_GoToDefinitions,
|
||||||
|
|
||||||
BuildFlag_Package,
|
BuildFlag_Package,
|
||||||
|
BuildFlag_All,
|
||||||
|
BuildFlag_AllPackages,
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
BuildFlag_IgnoreVsSearch,
|
BuildFlag_IgnoreVsSearch,
|
||||||
@@ -706,7 +708,9 @@ bool parse_build_flags(Array<String> args) {
|
|||||||
add_flag(&build_flags, BuildFlag_GlobalDefinitions, str_lit("global-definitions"), BuildFlagParam_None, Command_query);
|
add_flag(&build_flags, BuildFlag_GlobalDefinitions, str_lit("global-definitions"), BuildFlagParam_None, Command_query);
|
||||||
add_flag(&build_flags, BuildFlag_GoToDefinitions, str_lit("go-to-definitions"), BuildFlagParam_None, Command_query);
|
add_flag(&build_flags, BuildFlag_GoToDefinitions, str_lit("go-to-definitions"), BuildFlagParam_None, Command_query);
|
||||||
|
|
||||||
add_flag(&build_flags, BuildFlag_Package, str_lit("package"), BuildFlagParam_String, Command_doc, true);
|
add_flag(&build_flags, BuildFlag_Package, str_lit("package"), BuildFlagParam_String, Command_doc, true);
|
||||||
|
add_flag(&build_flags, BuildFlag_All, str_lit("all"), BuildFlagParam_None, Command_doc);
|
||||||
|
add_flag(&build_flags, BuildFlag_AllPackages, str_lit("all-packages"), BuildFlagParam_None, Command_doc);
|
||||||
|
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
@@ -1204,6 +1208,13 @@ bool parse_build_flags(Array<String> args) {
|
|||||||
array_add(&build_context.doc_packages, value.value_string);
|
array_add(&build_context.doc_packages, value.value_string);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case BuildFlag_All:
|
||||||
|
build_context.cmd_doc_flags |= CmdDocFlag_All;
|
||||||
|
break;
|
||||||
|
case BuildFlag_AllPackages:
|
||||||
|
build_context.cmd_doc_flags |= CmdDocFlag_AllPackages;
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
case BuildFlag_IgnoreVsSearch:
|
case BuildFlag_IgnoreVsSearch:
|
||||||
@@ -1297,6 +1308,11 @@ bool parse_build_flags(Array<String> args) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (build_context.doc_packages.count > 0 && set_flags[BuildFlag_AllPackages]) {
|
||||||
|
gb_printf_err("'odin doc' does not allow both flags together '-all-packages' and '-package' together");;
|
||||||
|
bad_flags = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (build_context.query_data_set_settings.ok) {
|
if (build_context.query_data_set_settings.ok) {
|
||||||
if (build_context.query_data_set_settings.kind == QueryDataSet_Invalid) {
|
if (build_context.query_data_set_settings.kind == QueryDataSet_Invalid) {
|
||||||
|
|||||||
Reference in New Issue
Block a user