mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 16:54:52 +00:00
parent
6cbb732b59
commit
d15a71afc9
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user