diff --git a/lib/std/special/docs/index.html b/lib/std/special/docs/index.html
index 05cbc3fb9..0239788a8 100644
--- a/lib/std/special/docs/index.html
+++ b/lib/std/special/docs/index.html
@@ -275,6 +275,11 @@
No Results Found
Press escape to exit search and then '?' to see more options.
+
Types
diff --git a/lib/std/special/docs/main.js b/lib/std/special/docs/main.js
index ccd43c398..f2a17cf7c 100644
--- a/lib/std/special/docs/main.js
+++ b/lib/std/special/docs/main.js
@@ -8,6 +8,8 @@
var domListTypes = document.getElementById("listTypes");
var domSectFns = document.getElementById("sectFns");
var domListFns = document.getElementById("listFns");
+ var domSectFields = document.getElementById("sectFields");
+ var domListFields = document.getElementById("listFields");
var domFnProto = document.getElementById("fnProto");
var domFnProtoCode = document.getElementById("fnProtoCode");
var domFnDocs = document.getElementById("fnDocs");
@@ -94,6 +96,7 @@
domSectPkgs.classList.add("hidden");
domSectTypes.classList.add("hidden");
domSectFns.classList.add("hidden");
+ domSectFields.classList.add("hidden");
domSectSearchResults.classList.add("hidden");
domSectSearchNoResults.classList.add("hidden");
domSectInfo.classList.add("hidden");
@@ -545,6 +548,19 @@
}
domSectFns.classList.remove("hidden");
}
+
+ if (container.fields.length !== 0) {
+ resizeDomList(domListFields, container.fields.length, '');
+ for (var i = 0; i < container.fields.length; i += 1) {
+ var liDom = domListFields.children[i];
+ var field = container.fields[i];
+
+ var protoHtml = escapeHtml(field.name) + ": ";
+ protoHtml += typeIndexName(field.type, true, true);
+ liDom.innerHTML = protoHtml;
+ }
+ domSectFields.classList.remove("hidden");
+ }
}
function operatorCompare(a, b) {
diff --git a/src/dump_analysis.cpp b/src/dump_analysis.cpp
index a41edffa8..78f69d60a 100644
--- a/src/dump_analysis.cpp
+++ b/src/dump_analysis.cpp
@@ -732,6 +732,23 @@ static void anal_dump_pointer_attrs(AnalDumpCtx *ctx, ZigType *ty) {
anal_dump_type_ref(ctx, ty->data.pointer.child_type);
}
+static void anal_dump_struct_field(AnalDumpCtx *ctx, const TypeStructField *struct_field) {
+ JsonWriter *jw = &ctx->jw;
+
+ jw_begin_object(jw);
+
+ jw_object_field(jw, "name");
+ jw_string(jw, buf_ptr(struct_field->name));
+
+ jw_object_field(jw, "type");
+ anal_dump_type_ref(ctx, struct_field->type_entry);
+
+ jw_object_field(jw, "src");
+ anal_dump_node_ref(ctx, struct_field->decl_node);
+
+ jw_end_object(jw);
+}
+
static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
JsonWriter *jw = &ctx->jw;
jw_array_elem(jw);
@@ -794,6 +811,17 @@ static void anal_dump_type(AnalDumpCtx *ctx, ZigType *ty) {
jw_end_array(jw);
}
+ {
+ jw_object_field(jw, "fields");
+ jw_begin_array(jw);
+
+ for(size_t i = 0; i < ty->data.structure.src_field_count; i += 1) {
+ jw_array_elem(jw);
+ anal_dump_struct_field(ctx, &ty->data.structure.fields[i]);
+ }
+ jw_end_array(jw);
+ }
+
if (ty->data.structure.root_struct != nullptr) {
Buf *path_buf = ty->data.structure.root_struct->path;