Commit d15a71afc9
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) {