Commit 253e7e112e
Changed files (1)
lib
docs
lib/docs/main.js
@@ -149,8 +149,9 @@
while(i < 1000) {
i += 1;
- if ("declRef" in value) {
- value = zigAnalysis.decls[value.declRef].value;
+ if ("declPath" in value) {
+ console.assert(value.declPath.length == 1); // only support declRefs for now
+ value = zigAnalysis.decls[value.declPath[0]].value;
continue;
}
@@ -169,8 +170,9 @@
return typeTypeId;
}
- if ("declRef" in decl.value) {
- decl = zigAnalysis.decls[decl.value.declRef];
+ if ("declPath" in decl.value) {
+ console.assert(decl.value.declPath.length == 1); // only support declRefs for now
+ decl = zigAnalysis.decls[decl.value.declPath[0]];
continue;
}
@@ -193,6 +195,7 @@
console.log("TODO: handle in `typeOfDecl` more cases: ", decl);
console.assert(false);
+ throw {};
}
console.assert(false);
}
@@ -637,6 +640,25 @@
}
function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
+ return typeValueName({ type: typeIndex }, wantHtml, wantLink, fnDecl, linkFnNameDecl);
+ }
+
+ function typeValueName(typeValue, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
+ if ("declPath" in typeValue) {
+ console.assert(typeValue.declPath.length == 1);
+ var declIndex = typeValue.declPath[0];
+ var name = zigAnalysis.decls[declIndex].name;
+ var declPath = getCanonDeclPath(declIndex);
+ if (wantLink) {
+ var nl = navLink(declPath.pkgNames, declPath.declNames);
+ return '<a href="' + nl + '">' + name + '</a>';
+ } else {
+ return name;
+ }
+ }
+
+ console.assert("type" in typeValue)
+ var typeIndex = typeValue.type;
var typeObj = zigAnalysis.types[typeIndex];
var declNameOk = declCanRepresentTypeKind(typeObj.kind);
if (wantLink) {
@@ -714,10 +736,11 @@
name += typeObj.len;
}
name += "]";
- name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
+ name += typeValueName(typeObj.elem, wantHtml, wantSubLink, null);
return name;
case typeKinds.Optional:
- return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl);
+
+ return "?" + typeValueName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl);
case typeKinds.Pointer:
var name = "";
switch (typeObj.len) {
@@ -776,7 +799,7 @@
}
name += ") ";
}
- name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
+ name += typeValueName(typeObj.elem, wantHtml, wantSubLink, null);
return name;
case typeKinds.Float:
if (wantHtml) {
@@ -949,13 +972,9 @@
}
}
- var retValue = resolveValue(typeObj.ret);
- console.assert("type" in retValue);
- var retTypeIndex = retValue.type;
-
- payloadHtml += ') ';
- if (retTypeIndex != null) {
- payloadHtml += typeIndexName(retTypeIndex, wantHtml, wantSubLink, fnDecl);
+ payloadHtml += ') ';
+ if (typeObj.ret != null) {
+ payloadHtml += typeValueName(typeObj.ret, wantHtml, wantSubLink, fnDecl);
} else if (wantHtml) {
payloadHtml += '<span class="tok-kw">anytype</span>';
} else {
@@ -1188,10 +1207,10 @@
var kind = value.kind;
if (kind === typeKinds.Fn) {
//if (allCompTimeFnCallsHaveTypeResult(decl.type, declTypeId)) {
- // typesList.push(decl);
- //} else {
- fnsList.push(decl);
- // }
+ // typesList.push(decl);
+ //} else {
+ fnsList.push(decl);
+ // }
} else if (typeIsErrSet(declValue.type)) {
errSetsList.push(decl);
@@ -1295,8 +1314,9 @@
if (typeof(field) === 'object') {
if (field.failure === true) {
html += '<span class="tok-kw" style="color:red;">#FAILURE#</span>';
- } else if ("declRef" in field) {
- var decl = zigAnalysis.decls[field.declRef];
+ } else if ("declPath" in field) {
+ console.assert(field.declPath.lenght == 1);
+ var decl = zigAnalysis.decls[field.declPath[0]];
var val = resolveValue(decl.value);
console.assert("type" in val);
var valType = zigAnalysis.types[val.type];
@@ -2002,117 +2022,117 @@
}
}
- function showHelpModal() {
- domHelpModal.classList.remove("hidden");
- domHelpModal.style.left = (window.innerWidth / 2 - domHelpModal.clientWidth / 2) + "px";
- domHelpModal.style.top = (window.innerHeight / 2 - domHelpModal.clientHeight / 2) + "px";
- domHelpModal.focus();
- }
-
- function clearAsyncSearch() {
- if (searchTimer != null) {
- clearTimeout(searchTimer);
- searchTimer = null;
- }
- }
+function showHelpModal() {
+ domHelpModal.classList.remove("hidden");
+ domHelpModal.style.left = (window.innerWidth / 2 - domHelpModal.clientWidth / 2) + "px";
+ domHelpModal.style.top = (window.innerHeight / 2 - domHelpModal.clientHeight / 2) + "px";
+ domHelpModal.focus();
+}
- function startAsyncSearch() {
- clearAsyncSearch();
- searchTimer = setTimeout(startSearch, 100);
+function clearAsyncSearch() {
+ if (searchTimer != null) {
+ clearTimeout(searchTimer);
+ searchTimer = null;
}
- function startSearch() {
- clearAsyncSearch();
- var oldHash = location.hash;
- var parts = oldHash.split("?");
- var newPart2 = (domSearch.value === "") ? "" : ("?" + domSearch.value);
- location.hash = (parts.length === 1) ? (oldHash + newPart2) : (parts[0] + newPart2);
- }
- function getSearchTerms() {
- var list = curNavSearch.trim().split(/[ \r\n\t]+/);
- list.sort();
- return list;
- }
- function renderSearch() {
- var matchedItems = [];
- var ignoreCase = (curNavSearch.toLowerCase() === curNavSearch);
- var terms = getSearchTerms();
-
- decl_loop: for (var declIndex = 0; declIndex < zigAnalysis.decls.length; declIndex += 1) {
- var canonPath = getCanonDeclPath(declIndex);
- if (canonPath == null) continue;
+}
- var decl = zigAnalysis.decls[declIndex];
- var lastPkgName = canonPath.pkgNames[canonPath.pkgNames.length - 1];
- var fullPathSearchText = lastPkgName + "." + canonPath.declNames.join('.');
- var astNode = zigAnalysis.astNodes[decl.src];
- var fileAndDocs = zigAnalysis.files[astNode.file];
- if (astNode.docs != null) {
- fileAndDocs += "\n" + astNode.docs;
+function startAsyncSearch() {
+ clearAsyncSearch();
+ searchTimer = setTimeout(startSearch, 100);
+}
+function startSearch() {
+ clearAsyncSearch();
+ var oldHash = location.hash;
+ var parts = oldHash.split("?");
+ var newPart2 = (domSearch.value === "") ? "" : ("?" + domSearch.value);
+ location.hash = (parts.length === 1) ? (oldHash + newPart2) : (parts[0] + newPart2);
+}
+function getSearchTerms() {
+ var list = curNavSearch.trim().split(/[ \r\n\t]+/);
+ list.sort();
+ return list;
+}
+function renderSearch() {
+ var matchedItems = [];
+ var ignoreCase = (curNavSearch.toLowerCase() === curNavSearch);
+ var terms = getSearchTerms();
+
+ decl_loop: for (var declIndex = 0; declIndex < zigAnalysis.decls.length; declIndex += 1) {
+ var canonPath = getCanonDeclPath(declIndex);
+ if (canonPath == null) continue;
+
+ var decl = zigAnalysis.decls[declIndex];
+ var lastPkgName = canonPath.pkgNames[canonPath.pkgNames.length - 1];
+ var fullPathSearchText = lastPkgName + "." + canonPath.declNames.join('.');
+ var astNode = zigAnalysis.astNodes[decl.src];
+ var fileAndDocs = zigAnalysis.files[astNode.file];
+ if (astNode.docs != null) {
+ fileAndDocs += "\n" + astNode.docs;
+ }
+ var fullPathSearchTextLower = fullPathSearchText;
+ if (ignoreCase) {
+ fullPathSearchTextLower = fullPathSearchTextLower.toLowerCase();
+ fileAndDocs = fileAndDocs.toLowerCase();
+ }
+
+ var points = 0;
+ for (var termIndex = 0; termIndex < terms.length; termIndex += 1) {
+ var term = terms[termIndex];
+
+ // exact, case sensitive match of full decl path
+ if (fullPathSearchText === term) {
+ points += 4;
+ continue;
}
- var fullPathSearchTextLower = fullPathSearchText;
- if (ignoreCase) {
- fullPathSearchTextLower = fullPathSearchTextLower.toLowerCase();
- fileAndDocs = fileAndDocs.toLowerCase();
+ // exact, case sensitive match of just decl name
+ if (decl.name == term) {
+ points += 3;
+ continue;
}
-
- var points = 0;
- for (var termIndex = 0; termIndex < terms.length; termIndex += 1) {
- var term = terms[termIndex];
-
- // exact, case sensitive match of full decl path
- if (fullPathSearchText === term) {
- points += 4;
- continue;
- }
- // exact, case sensitive match of just decl name
- if (decl.name == term) {
- points += 3;
- continue;
- }
- // substring, case insensitive match of full decl path
- if (fullPathSearchTextLower.indexOf(term) >= 0) {
- points += 2;
- continue;
- }
- if (fileAndDocs.indexOf(term) >= 0) {
- points += 1;
- continue;
- }
-
- continue decl_loop;
+ // substring, case insensitive match of full decl path
+ if (fullPathSearchTextLower.indexOf(term) >= 0) {
+ points += 2;
+ continue;
+ }
+ if (fileAndDocs.indexOf(term) >= 0) {
+ points += 1;
+ continue;
}
- matchedItems.push({
- decl: decl,
- path: canonPath,
- points: points,
- });
+ continue decl_loop;
}
- if (matchedItems.length !== 0) {
- resizeDomList(domListSearchResults, matchedItems.length, '<li><a href="#"></a></li>');
+ matchedItems.push({
+ decl: decl,
+ path: canonPath,
+ points: points,
+ });
+ }
- matchedItems.sort(function(a, b) {
- var cmp = operatorCompare(b.points, a.points);
- if (cmp != 0) return cmp;
- return operatorCompare(a.decl.name, b.decl.name);
- });
+ if (matchedItems.length !== 0) {
+ resizeDomList(domListSearchResults, matchedItems.length, '<li><a href="#"></a></li>');
- for (var i = 0; i < matchedItems.length; i += 1) {
- var liDom = domListSearchResults.children[i];
- var aDom = liDom.children[0];
- var match = matchedItems[i];
- var lastPkgName = match.path.pkgNames[match.path.pkgNames.length - 1];
- aDom.textContent = lastPkgName + "." + match.path.declNames.join('.');
- aDom.setAttribute('href', navLink(match.path.pkgNames, match.path.declNames));
- }
- renderSearchCursor();
+ matchedItems.sort(function(a, b) {
+ var cmp = operatorCompare(b.points, a.points);
+ if (cmp != 0) return cmp;
+ return operatorCompare(a.decl.name, b.decl.name);
+ });
- domSectSearchResults.classList.remove("hidden");
- } else {
- domSectSearchNoResults.classList.remove("hidden");
+ for (var i = 0; i < matchedItems.length; i += 1) {
+ var liDom = domListSearchResults.children[i];
+ var aDom = liDom.children[0];
+ var match = matchedItems[i];
+ var lastPkgName = match.path.pkgNames[match.path.pkgNames.length - 1];
+ aDom.textContent = lastPkgName + "." + match.path.declNames.join('.');
+ aDom.setAttribute('href', navLink(match.path.pkgNames, match.path.declNames));
}
+ renderSearchCursor();
+
+ domSectSearchResults.classList.remove("hidden");
+ } else {
+ domSectSearchNoResults.classList.remove("hidden");
}
+}
function renderSearchCursor() {
for (var i = 0; i < domListSearchResults.children.length; i += 1) {