Commit d15a71afc9

Andrew Kelley <andrew@ziglang.org>
2019-10-10 21:42:40
generated docs: clean up type names and param names
closes #3410
1 parent 6cbb732
Changed files (1)
lib
std
special
docs
lib/std/special/docs/main.js
@@ -43,6 +43,7 @@
 
     var typeKinds = indexTypeKinds();
     var typeTypeId = findTypeTypeId();
+    var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };
 
     // for each package, is an array with packages to get to this one
     var canonPkgPaths = computeCanonicalPackagePaths();
@@ -378,21 +379,38 @@
 
     function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
         var typeObj = zigAnalysis.types[typeIndex];
+        var declNameOk = declCanRepresentTypeKind(typeObj.kind);
         if (wantLink) {
             var declIndex = getCanonTypeDecl(typeIndex);
             var declPath = getCanonDeclPath(declIndex);
-            var haveLink = declPath != null;
-            var typeNameHtml = typeName(typeObj, true, !haveLink, fnDecl, linkFnNameDecl);
-            if (haveLink) {
-                return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + typeNameHtml + '</a>';
+            if (declPath == null) {
+                return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl);
+            }
+            var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
+                declPath.declNames[declPath.declNames.length - 1] :
+                typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
+            if (wantLink && wantHtml) {
+                return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>';
             } else {
-                return typeNameHtml;
+                return name;
             }
         } else {
             return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
         }
     }
 
+    function shouldSkipParamName(typeIndex, paramName) {
+        var typeObj = zigAnalysis.types[typeIndex];
+        if (typeObj.kind === typeKinds.Pointer && getPtrSize(typeObj) === pointerSizeEnum.One) {
+            typeIndex = typeObj.elem;
+        }
+        return typeIndexName(typeIndex, false, true).toLowerCase() === paramName;
+    }
+
+    function getPtrSize(typeObj) {
+        return (typeObj.len == null) ? pointerSizeEnum.One : typeObj.len;
+    }
+
     function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) {
         switch (typeObj.kind) {
             case typeKinds.Array:
@@ -408,17 +426,17 @@
             case typeKinds.Pointer:
                 var name = "";
                 switch (typeObj.len) {
-                    case 0:
+                    case pointerSizeEnum.One:
                     default:
                         name += "*";
                         break;
-                    case 1:
+                    case pointerSizeEnum.Many:
                         name += "[*]";
                         break;
-                    case 2:
+                    case pointerSizeEnum.Slice:
                         name += "[]";
                         break;
-                    case 3:
+                    case pointerSizeEnum.C:
                         name += "[*c]";
                         break;
                 }
@@ -562,16 +580,20 @@
                             payloadHtml += ', ';
                         }
 
+                        var argTypeIndex = typeObj.args[i];
+
                         if (fnDecl != null && zigAnalysis.astNodes[fnDecl.src].fields != null) {
                             var paramDeclIndex = zigAnalysis.astNodes[fnDecl.src].fields[i];
                             var paramName = zigAnalysis.astNodes[paramDeclIndex].name;
 
                             if (paramName != null) {
-                                payloadHtml += paramName + ': ';
+                                // skip if it matches the type name
+                                if (argTypeIndex == null || !shouldSkipParamName(argTypeIndex, paramName)) {
+                                    payloadHtml += paramName + ': ';
+                                }
                             }
                         }
 
-                        var argTypeIndex = typeObj.args[i];
                         if (argTypeIndex != null) {
                             payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
                         } else if (wantHtml) {