authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-10 10:34:44-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2019-10-10 10:34:44-04:00
logb9d63551de3518001c992ec799a67c2e726d4f5b
treea1ffe18e54f132ceb13a8bd07cae79303c5f3c30
parent3464351d1e0a1e840d0b1a6267d0a5bf4113cfcc
parente34e3344d4ac5c50a008905fe5cba25629cafa1c
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #3420 from FireFox317/generated-docs-improvements

Generated docs: add parameter names to functions

2 files changed, 60 insertions(+), 23 deletions(-)

lib/std/special/docs/main.js+17-4
......@@ -554,6 +554,16 @@
554554 if (i != 0) {
555555 payloadHtml += ', ';
556556 }
557
558 if (fnDecl != null && zigAnalysis.astNodes[fnDecl.src].fields != null) {
559 var paramDeclIndex = zigAnalysis.astNodes[fnDecl.src].fields[i];
560 var paramName = zigAnalysis.astNodes[paramDeclIndex].name;
561
562 if (paramName != null) {
563 payloadHtml += paramName + ': ';
564 }
565 }
566
557567 var argTypeIndex = typeObj.args[i];
558568 if (argTypeIndex != null) {
559569 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
......@@ -776,14 +786,17 @@
776786
777787 if (container.fields != null && container.fields.length !== 0) {
778788 resizeDomList(domListFields, container.fields.length, '<div></div>');
789
790 var containerNode = zigAnalysis.astNodes[container.src];
779791 for (var i = 0; i < container.fields.length; i += 1) {
780 var field = container.fields[i];
792 var fieldTypeIndex = container.fields[i];
793 var fieldNode = zigAnalysis.astNodes[containerNode.fields[i]];
781794 var divDom = domListFields.children[i];
782795
783 var html = '<pre>' + escapeHtml(field.name) + ": " +
784 typeIndexName(field.type, true, true) + ',</pre>';
796 var html = '<pre>' + escapeHtml(fieldNode.name) + ": " +
797 typeIndexName(fieldTypeIndex, true, true) + ',</pre>';
785798
786 var docs = zigAnalysis.astNodes[field.src].docs;
799 var docs = fieldNode.docs;
787800 if (docs != null) {
788801 html += markdown(docs);
789802 }
src/dump_analysis.cpp+43-19
......@@ -732,23 +732,6 @@ static void anal_dump_pointer_attrs(AnalDumpCtx *ctx, ZigType *ty) {
732732 anal_dump_type_ref(ctx, ty->data.pointer.child_type);
733733}
734734
735static void anal_dump_struct_field(AnalDumpCtx *ctx, const TypeStructField *struct_field) {
736 JsonWriter *jw = &ctx->jw;
737
738 jw_begin_object(jw);
739
740 jw_object_field(jw, "name");
741 jw_string(jw, buf_ptr(struct_field->name));
742
743 jw_object_field(jw, "type");
744 anal_dump_type_ref(ctx, struct_field->type_entry);
745
746 jw_object_field(jw, "src");
747 anal_dump_node_ref(ctx, struct_field->decl_node);
748
749 jw_end_object(jw);
750}
751
752735static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
753736 JsonWriter *jw = &ctx->jw;
754737 jw_array_elem(jw);
......@@ -811,13 +794,16 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
811794 jw_end_array(jw);
812795 }
813796
797 jw_object_field(jw, "src");
798 anal_dump_node_ref(ctx, ty->data.structure.decl_node);
799
814800 if (ty->data.structure.src_field_count != 0) {
815801 jw_object_field(jw, "fields");
816802 jw_begin_array(jw);
817803
818804 for(size_t i = 0; i < ty->data.structure.src_field_count; i += 1) {
819805 jw_array_elem(jw);
820 anal_dump_struct_field(ctx, &ty->data.structure.fields[i]);
806 anal_dump_type_ref(ctx, ty->data.structure.fields[i].type_entry);
821807 }
822808 jw_end_array(jw);
823809 }
......@@ -827,7 +813,6 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
827813
828814 jw_object_field(jw, "file");
829815 anal_dump_file_ref(ctx, path_buf);
830
831816 }
832817 break;
833818 }
......@@ -974,6 +959,45 @@ static void anal_dump_node(AnalDumpCtx *ctx, const AstNode *node) {
974959 jw_string(jw, buf_ptr(doc_comments_buf));
975960 }
976961
962 const Buf *name_buf;
963 switch (node->type) {
964 case NodeTypeStructField:
965 name_buf = node->data.struct_field.name;
966 break;
967 case NodeTypeParamDecl:
968 name_buf = node->data.param_decl.name;
969 break;
970 default:
971 name_buf = nullptr;
972 break;
973 }
974 if (name_buf != nullptr) {
975 jw_object_field(jw, "name");
976 jw_string(jw, buf_ptr(name_buf));
977 }
978
979 const ZigList<AstNode *> *fieldNodes;
980 switch (node->type) {
981 case NodeTypeContainerDecl:
982 fieldNodes = &node->data.container_decl.fields;
983 break;
984 case NodeTypeFnProto:
985 fieldNodes = &node->data.fn_proto.params;
986 break;
987 default:
988 fieldNodes = nullptr;
989 break;
990 }
991 if (fieldNodes != nullptr) {
992 jw_object_field(jw, "fields");
993 jw_begin_array(jw);
994 for (size_t i = 0; i < fieldNodes->length; i += 1) {
995 jw_array_elem(jw);
996 anal_dump_node_ref(ctx, fieldNodes->at(i));
997 }
998 jw_end_array(jw);
999 }
1000
9771001 jw_end_object(jw);
9781002}
9791003