mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-19 04:50:29 +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;
|
||||
DeclInfo *d = make_decl_info(c->scope, c->decl);
|
||||
d->decl_node = decl;
|
||||
d->comment = vd->comment;
|
||||
d->docs = vd->docs;
|
||||
d->entity = e;
|
||||
d->type_expr = vd->type;
|
||||
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);
|
||||
|
||||
d->decl_node = decl;
|
||||
d->comment = vd->comment;
|
||||
d->docs = vd->docs;
|
||||
d->attributes = vd->attributes;
|
||||
d->type_expr = vd->type;
|
||||
d->init_expr = init;
|
||||
|
||||
@@ -141,6 +141,9 @@ struct DeclInfo {
|
||||
bool is_using;
|
||||
bool where_clauses_evaluated;
|
||||
|
||||
CommentGroup *comment;
|
||||
CommentGroup *docs;
|
||||
|
||||
PtrSet<Entity *> deps;
|
||||
PtrSet<Type *> type_info_deps;
|
||||
Array<BlockLabel> labels;
|
||||
|
||||
38
src/docs.cpp
38
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>");
|
||||
}
|
||||
@@ -314,6 +294,18 @@ void generate_documentation(Checker *c) {
|
||||
|
||||
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) {
|
||||
print_doc_package(info, pkgs[i]);
|
||||
}
|
||||
|
||||
18
src/main.cpp
18
src/main.cpp
@@ -599,6 +599,8 @@ enum BuildFlagKind {
|
||||
BuildFlag_GoToDefinitions,
|
||||
|
||||
BuildFlag_Package,
|
||||
BuildFlag_All,
|
||||
BuildFlag_AllPackages,
|
||||
|
||||
#if defined(GB_SYSTEM_WINDOWS)
|
||||
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_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)
|
||||
@@ -1204,6 +1208,13 @@ bool parse_build_flags(Array<String> args) {
|
||||
array_add(&build_context.doc_packages, value.value_string);
|
||||
}
|
||||
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)
|
||||
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.kind == QueryDataSet_Invalid) {
|
||||
|
||||
Reference in New Issue
Block a user