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 @@...@@ -554,6 +554,16 @@
554 if (i != 0) {554 if (i != 0) {
555 payloadHtml += ', ';555 payloadHtml += ', ';
556 }556 }
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
557 var argTypeIndex = typeObj.args[i];567 var argTypeIndex = typeObj.args[i];
558 if (argTypeIndex != null) {568 if (argTypeIndex != null) {
559 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);569 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
...@@ -776,14 +786,17 @@...@@ -776,14 +786,17 @@
776786
777 if (container.fields != null && container.fields.length !== 0) {787 if (container.fields != null && container.fields.length !== 0) {
778 resizeDomList(domListFields, container.fields.length, '<div></div>');788 resizeDomList(domListFields, container.fields.length, '<div></div>');
789
790 var containerNode = zigAnalysis.astNodes[container.src];
779 for (var i = 0; i < container.fields.length; i += 1) {791 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]];
781 var divDom = domListFields.children[i];794 var divDom = domListFields.children[i];
782795
783 var html = '<pre>' + escapeHtml(field.name) + ": " +796 var html = '<pre>' + escapeHtml(fieldNode.name) + ": " +
784 typeIndexName(field.type, true, true) + ',</pre>';797 typeIndexName(fieldTypeIndex, true, true) + ',</pre>';
785798
786 var docs = zigAnalysis.astNodes[field.src].docs;799 var docs = fieldNode.docs;
787 if (docs != null) {800 if (docs != null) {
788 html += markdown(docs);801 html += markdown(docs);
789 }802 }
src/dump_analysis.cpp+43-19
...@@ -732,23 +732,6 @@ static void anal_dump_pointer_attrs(AnalDumpCtx *ctx, ZigType *ty) {...@@ -732,23 +732,6 @@ static void anal_dump_pointer_attrs(AnalDumpCtx *ctx, ZigType *ty) {
732 anal_dump_type_ref(ctx, ty->data.pointer.child_type);732 anal_dump_type_ref(ctx, ty->data.pointer.child_type);
733}733}
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
752static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {735static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
753 JsonWriter *jw = &ctx->jw;736 JsonWriter *jw = &ctx->jw;
754 jw_array_elem(jw);737 jw_array_elem(jw);
...@@ -811,13 +794,16 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {...@@ -811,13 +794,16 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
811 jw_end_array(jw);794 jw_end_array(jw);
812 }795 }
813796
797 jw_object_field(jw, "src");
798 anal_dump_node_ref(ctx, ty->data.structure.decl_node);
799
814 if (ty->data.structure.src_field_count != 0) {800 if (ty->data.structure.src_field_count != 0) {
815 jw_object_field(jw, "fields");801 jw_object_field(jw, "fields");
816 jw_begin_array(jw);802 jw_begin_array(jw);
817803
818 for(size_t i = 0; i < ty->data.structure.src_field_count; i += 1) {804 for(size_t i = 0; i < ty->data.structure.src_field_count; i += 1) {
819 jw_array_elem(jw);805 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);
821 }807 }
822 jw_end_array(jw);808 jw_end_array(jw);
823 }809 }
...@@ -827,7 +813,6 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {...@@ -827,7 +813,6 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
827813
828 jw_object_field(jw, "file");814 jw_object_field(jw, "file");
829 anal_dump_file_ref(ctx, path_buf);815 anal_dump_file_ref(ctx, path_buf);
830
831 }816 }
832 break;817 break;
833 }818 }
...@@ -974,6 +959,45 @@ static void anal_dump_node(AnalDumpCtx *ctx, const AstNode *node) {...@@ -974,6 +959,45 @@ static void anal_dump_node(AnalDumpCtx *ctx, const AstNode *node) {
974 jw_string(jw, buf_ptr(doc_comments_buf));959 jw_string(jw, buf_ptr(doc_comments_buf));
975 }960 }
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
977 jw_end_object(jw);1001 jw_end_object(jw);
978}1002}
9791003