authorgravatar for s-ol@users.noreply.github.coms-ol <s-ol@users.noreply.github.com> 2020-10-14 18:32:45+02:00
committergravatar for s-ol@users.noreply.github.coms-ol <s-ol@users.noreply.github.com> 2020-10-23 15:44:32+02:00
log300b617140167d5023edb5d3cc33762bcde4d753
treeee1136029f2208376b2b9bc167928bbfb2b84fa1
parentbf982cd4e9c22944cbf9cd0d6b2695af64fb5c27

generated docs: add FnFrame type support

See #3404

2 files changed, 36 insertions(+), 0 deletions(-)

lib/std/special/docs/main.js+19
...@@ -726,6 +726,25 @@...@@ -726,6 +726,25 @@
726 payloadHtml += token('var', tokenKinds.Keyword, wantHtml);726 payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
727 }727 }
728 return payloadHtml;728 return payloadHtml;
729 case typeKinds.Frame:
730 var name = '@Frame(';
731 var fnObj = zigAnalysis.fns[typeObj.fn];
732 var declPath = fnObj.decl && getCanonDeclPath(fnObj.decl);
733 var fnName = typeObj.fnName;
734 if (wantHtml) {
735 name += '<span class="tok-fn">';
736 if (declPath) {
737 name += '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">'
738 + escapeHtml(fnName) + '</a>';
739 } else {
740 name += escapeHtml(fnName);
741 }
742 name += '</span>';
743 } else {
744 name += fnName;
745 }
746 name += ')';
747 return name;
729 case typeKinds.AnyFrame:748 case typeKinds.AnyFrame:
730 var name = token('anyframe', tokenKinds.Keyword, wantHtml);749 var name = token('anyframe', tokenKinds.Keyword, wantHtml);
731 if (typeObj.result) {750 if (typeObj.result) {
src/stage1/dump_analysis.cpp+17
...@@ -352,6 +352,7 @@ struct AnalDumpCtx {...@@ -352,6 +352,7 @@ struct AnalDumpCtx {
352352
353 ZigList<ZigFn *> fn_list;353 ZigList<ZigFn *> fn_list;
354 HashMap<const ZigFn *, uint32_t, fn_ptr_hash, fn_ptr_eql> fn_map;354 HashMap<const ZigFn *, uint32_t, fn_ptr_hash, fn_ptr_eql> fn_map;
355 HashMap<const ZigFn *, uint32_t, fn_ptr_hash, fn_ptr_eql> fn_decl_map;
355356
356 ZigList<AstNode *> node_list;357 ZigList<AstNode *> node_list;
357 HashMap<const AstNode *, uint32_t, node_ptr_hash, node_ptr_eql> node_map;358 HashMap<const AstNode *, uint32_t, node_ptr_hash, node_ptr_eql> node_map;
...@@ -491,6 +492,7 @@ static uint32_t anal_dump_get_decl_id(AnalDumpCtx *ctx, Tld *tld) {...@@ -491,6 +492,7 @@ static uint32_t anal_dump_get_decl_id(AnalDumpCtx *ctx, Tld *tld) {
491492
492 if (fn != nullptr) {493 if (fn != nullptr) {
493 (void)anal_dump_get_type_id(ctx, fn->type_entry);494 (void)anal_dump_get_type_id(ctx, fn->type_entry);
495 ctx->fn_decl_map.put_unique(fn, decl_id);
494 }496 }
495 break;497 break;
496 }498 }
...@@ -1061,6 +1063,14 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {...@@ -1061,6 +1063,14 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
1061 }1063 }
1062 break;1064 break;
1063 }1065 }
1066 case ZigTypeIdFnFrame: {
1067 jw_object_field(jw, "fnName");
1068 jw_string(jw, buf_ptr(&ty->data.frame.fn->symbol_name));
1069
1070 jw_object_field(jw, "fn");
1071 anal_dump_fn_ref(ctx, ty->data.frame.fn);
1072 break;
1073 }
1064 case ZigTypeIdInvalid:1074 case ZigTypeIdInvalid:
1065 zig_unreachable();1075 zig_unreachable();
1066 default:1076 default:
...@@ -1186,6 +1196,12 @@ static void anal_dump_fn(AnalDumpCtx *ctx, ZigFn *fn) {...@@ -1186,6 +1196,12 @@ static void anal_dump_fn(AnalDumpCtx *ctx, ZigFn *fn) {
1186 jw_object_field(jw, "type");1196 jw_object_field(jw, "type");
1187 anal_dump_type_ref(ctx, fn->type_entry);1197 anal_dump_type_ref(ctx, fn->type_entry);
11881198
1199 auto entry = ctx->fn_decl_map.maybe_get(fn);
1200 if (entry != nullptr) {
1201 jw_object_field(jw, "decl");
1202 jw_int(jw, entry->value);
1203 }
1204
1189 jw_end_object(jw);1205 jw_end_object(jw);
1190}1206}
11911207
...@@ -1200,6 +1216,7 @@ void zig_print_analysis_dump(CodeGen *g, FILE *f, const char *one_indent, const...@@ -1200,6 +1216,7 @@ void zig_print_analysis_dump(CodeGen *g, FILE *f, const char *one_indent, const
1200 ctx.decl_map.init(16);1216 ctx.decl_map.init(16);
1201 ctx.node_map.init(16);1217 ctx.node_map.init(16);
1202 ctx.fn_map.init(16);1218 ctx.fn_map.init(16);
1219 ctx.fn_decl_map.init(16);
1203 ctx.err_map.init(16);1220 ctx.err_map.init(16);
12041221
1205 jw_begin_object(jw);1222 jw_begin_object(jw);