Commit d85259989e

Loris Cro <kappaloris@gmail.com>
2022-04-03 18:06:31
autodoc: var 2 let in main.js
1 parent 67da1b8
Changed files (1)
lib
docs
lib/docs/main.js
@@ -236,75 +236,75 @@
 var zigAnalysis;
 
 (function() {
-    var domStatus = /** @type HTMLElement */(document.getElementById("status"));
-    var domSectNav = /** @type HTMLElement */(document.getElementById("sectNav"));
-    var domListNav = /** @type HTMLElement */(document.getElementById("listNav"));
-    var domSectMainPkg = /** @type HTMLElement */(document.getElementById("sectMainPkg"));
-    var domSectPkgs = /** @type HTMLElement */(document.getElementById("sectPkgs"));
-    var domListPkgs = /** @type HTMLElement */(document.getElementById("listPkgs"));
-    var domSectTypes = /** @type HTMLElement */(document.getElementById("sectTypes"));
-    var domListTypes = /** @type HTMLElement */(document.getElementById("listTypes"));
-    var domSectTests = /** @type HTMLElement */(document.getElementById("sectTests"));
-    var domListTests = /** @type HTMLElement */(document.getElementById("listTests"));
-    var domSectNamespaces = /** @type HTMLElement */(document.getElementById("sectNamespaces"));
-    var domListNamespaces = /** @type HTMLElement */(document.getElementById("listNamespaces"));
-    var domSectErrSets = /** @type HTMLElement */(document.getElementById("sectErrSets"));
-    var domListErrSets = /** @type HTMLElement */(document.getElementById("listErrSets"));
-    var domSectFns = /** @type HTMLElement */(document.getElementById("sectFns"));
-    var domListFns = /** @type HTMLElement */(document.getElementById("listFns"));
-    var domSectFields = /** @type HTMLElement */(document.getElementById("sectFields"));
-    var domListFields = /** @type HTMLElement */(document.getElementById("listFields"));
-    var domSectGlobalVars = /** @type HTMLElement */(document.getElementById("sectGlobalVars"));
-    var domListGlobalVars = /** @type HTMLElement */(document.getElementById("listGlobalVars"));
-    var domSectValues = /** @type HTMLElement */(document.getElementById("sectValues"));
-    var domListValues = /** @type HTMLElement */(document.getElementById("listValues"));
-    var domFnProto = /** @type HTMLElement */(document.getElementById("fnProto"));
-    var domFnProtoCode = /** @type HTMLElement */(document.getElementById("fnProtoCode"));
-    var domSectParams = /** @type HTMLElement */(document.getElementById("sectParams"));
-    var domListParams = /** @type HTMLElement */(document.getElementById("listParams"));
-    var domTldDocs = /** @type HTMLElement */(document.getElementById("tldDocs"));
-    var domSectFnErrors = /** @type HTMLElement */(document.getElementById("sectFnErrors"));
-    var domListFnErrors = /** @type HTMLElement */(document.getElementById("listFnErrors"));
-    var domTableFnErrors =/** @type HTMLElement */(document.getElementById("tableFnErrors"));
-    var domFnErrorsAnyError = /** @type HTMLElement */(document.getElementById("fnErrorsAnyError"));
-    var domFnExamples = /** @type HTMLElement */(document.getElementById("fnExamples"));
-    var domListFnExamples = /** @type HTMLElement */(document.getElementById("listFnExamples"));
-    var domFnNoExamples = /** @type HTMLElement */(document.getElementById("fnNoExamples"));
-    var domDeclNoRef = /** @type HTMLElement */(document.getElementById("declNoRef"));
-    var domSearch = /** @type HTMLInputElement */(document.getElementById("search"));
-    var domSectSearchResults = /** @type HTMLElement */(document.getElementById("sectSearchResults"));
-
-    var domListSearchResults = /** @type HTMLElement */(document.getElementById("listSearchResults"));
-    var domSectSearchNoResults = /** @type HTMLElement */(document.getElementById("sectSearchNoResults"));
-    var domSectInfo = /** @type HTMLElement */(document.getElementById("sectInfo"));
-    var domTdTarget = /** @type HTMLElement */(document.getElementById("tdTarget"));
-    var domPrivDeclsBox = /** @type HTMLInputElement */(document.getElementById("privDeclsBox"));
-    var domTdZigVer = /** @type HTMLElement */(document.getElementById("tdZigVer"));
-    var domHdrName = /** @type HTMLElement */(document.getElementById("hdrName"));
-    var domHelpModal = /** @type HTMLElement */(document.getElementById("helpDialog"));
+    let domStatus = /** @type HTMLElement */(document.getElementById("status"));
+    let domSectNav = /** @type HTMLElement */(document.getElementById("sectNav"));
+    let domListNav = /** @type HTMLElement */(document.getElementById("listNav"));
+    let domSectMainPkg = /** @type HTMLElement */(document.getElementById("sectMainPkg"));
+    let domSectPkgs = /** @type HTMLElement */(document.getElementById("sectPkgs"));
+    let domListPkgs = /** @type HTMLElement */(document.getElementById("listPkgs"));
+    let domSectTypes = /** @type HTMLElement */(document.getElementById("sectTypes"));
+    let domListTypes = /** @type HTMLElement */(document.getElementById("listTypes"));
+    let domSectTests = /** @type HTMLElement */(document.getElementById("sectTests"));
+    let domListTests = /** @type HTMLElement */(document.getElementById("listTests"));
+    let domSectNamespaces = /** @type HTMLElement */(document.getElementById("sectNamespaces"));
+    let domListNamespaces = /** @type HTMLElement */(document.getElementById("listNamespaces"));
+    let domSectErrSets = /** @type HTMLElement */(document.getElementById("sectErrSets"));
+    let domListErrSets = /** @type HTMLElement */(document.getElementById("listErrSets"));
+    let domSectFns = /** @type HTMLElement */(document.getElementById("sectFns"));
+    let domListFns = /** @type HTMLElement */(document.getElementById("listFns"));
+    let domSectFields = /** @type HTMLElement */(document.getElementById("sectFields"));
+    let domListFields = /** @type HTMLElement */(document.getElementById("listFields"));
+    let domSectGlobalVars = /** @type HTMLElement */(document.getElementById("sectGlobalVars"));
+    let domListGlobalVars = /** @type HTMLElement */(document.getElementById("listGlobalVars"));
+    let domSectValues = /** @type HTMLElement */(document.getElementById("sectValues"));
+    let domListValues = /** @type HTMLElement */(document.getElementById("listValues"));
+    let domFnProto = /** @type HTMLElement */(document.getElementById("fnProto"));
+    let domFnProtoCode = /** @type HTMLElement */(document.getElementById("fnProtoCode"));
+    let domSectParams = /** @type HTMLElement */(document.getElementById("sectParams"));
+    let domListParams = /** @type HTMLElement */(document.getElementById("listParams"));
+    let domTldDocs = /** @type HTMLElement */(document.getElementById("tldDocs"));
+    let domSectFnErrors = /** @type HTMLElement */(document.getElementById("sectFnErrors"));
+    let domListFnErrors = /** @type HTMLElement */(document.getElementById("listFnErrors"));
+    let domTableFnErrors =/** @type HTMLElement */(document.getElementById("tableFnErrors"));
+    let domFnErrorsAnyError = /** @type HTMLElement */(document.getElementById("fnErrorsAnyError"));
+    let domFnExamples = /** @type HTMLElement */(document.getElementById("fnExamples"));
+    let domListFnExamples = /** @type HTMLElement */(document.getElementById("listFnExamples"));
+    let domFnNoExamples = /** @type HTMLElement */(document.getElementById("fnNoExamples"));
+    let domDeclNoRef = /** @type HTMLElement */(document.getElementById("declNoRef"));
+    let domSearch = /** @type HTMLInputElement */(document.getElementById("search"));
+    let domSectSearchResults = /** @type HTMLElement */(document.getElementById("sectSearchResults"));
+
+    let domListSearchResults = /** @type HTMLElement */(document.getElementById("listSearchResults"));
+    let domSectSearchNoResults = /** @type HTMLElement */(document.getElementById("sectSearchNoResults"));
+    let domSectInfo = /** @type HTMLElement */(document.getElementById("sectInfo"));
+    let domTdTarget = /** @type HTMLElement */(document.getElementById("tdTarget"));
+    let domPrivDeclsBox = /** @type HTMLInputElement */(document.getElementById("privDeclsBox"));
+    let domTdZigVer = /** @type HTMLElement */(document.getElementById("tdZigVer"));
+    let domHdrName = /** @type HTMLElement */(document.getElementById("hdrName"));
+    let domHelpModal = /** @type HTMLElement */(document.getElementById("helpDialog"));
 
     /** @type number | null */
-    var searchTimer = null;
+    let searchTimer = null;
 
     /** @type Object<string, string> */
-    var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" };
+    let escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" };
 
-    var typeKinds = /** @type {Record<string, number>} */(indexTypeKinds());
-    var typeTypeId = /** @type {number} */ (findTypeTypeId());
-    var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };
+    let typeKinds = /** @type {Record<string, number>} */(indexTypeKinds());
+    let typeTypeId = /** @type {number} */ (findTypeTypeId());
+    let 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();
+    let canonPkgPaths = computeCanonicalPackagePaths();
 
     /** @typedef {{declNames: string[], pkgNames: string[]}} CanonDecl */
 
     // for each decl, is an array with {declNames, pkgNames} to get to this one
     /** @type CanonDecl[] | null */
-    var canonDeclPaths = null; // lazy; use getCanonDeclPath
+    let canonDeclPaths = null; // lazy; use getCanonDeclPath
 
     // for each type, is an array with {declNames, pkgNames} to get to this one
     /** @type  number[] | null */
-    var canonTypeDecls = null; // lazy; use getCanonTypeDecl
+    let canonTypeDecls = null; // lazy; use getCanonTypeDecl
 
     /** @typedef {{
     *       showPrivDecls: boolean,
@@ -317,7 +317,7 @@ var zigAnalysis;
     */
 
     /** @type {CurNav} */
-    var curNav = {
+    let curNav = {
         showPrivDecls: false,
         // each element is a package name, e.g. @import("a") then within there @import("b")
         // starting implicitly from root package
@@ -334,16 +334,16 @@ var zigAnalysis;
         callName: null,
     };
 
-    var curNavSearch = "";
-    var curSearchIndex = -1;
-    var imFeelingLucky = false;
+    let curNavSearch = "";
+    let curSearchIndex = -1;
+    let imFeelingLucky = false;
 
-    var rootIsStd = detectRootIsStd();
+    let rootIsStd = detectRootIsStd();
 
     // map of decl index to list of non-generic fn indexes
-    // var nodesToFnsMap = indexNodesToFns();
+    // let nodesToFnsMap = indexNodesToFns();
     // map of decl index to list of comptime fn calls
-    // var nodesToCallsMap = indexNodesToCalls();
+    // let nodesToCallsMap = indexNodesToCalls();
 
     domSearch.addEventListener('keydown', onSearchKeyDown, false);
     domPrivDeclsBox.addEventListener('change', function() {
@@ -363,8 +363,8 @@ var zigAnalysis;
     onHashChange();
 
     function renderTitle() {
-        var list = curNav.pkgNames.concat(curNav.declNames);
-        var suffix = " - Zig";
+        let list = curNav.pkgNames.concat(curNav.declNames);
+        let suffix = " - Zig";
         if (list.length === 0) {
             if (rootIsStd) {
                 document.title = "std" + suffix;
@@ -393,7 +393,7 @@ var zigAnalysis;
 
     /** @param {Type} type */
     function typeShorthandName(type) {
-        var name = undefined;
+        let name = undefined;
         if (type.kind === typeKinds.Struct) {
             name = "struct";
         } else if (type.kind === typeKinds.Enum) {
@@ -423,7 +423,7 @@ var zigAnalysis;
         * @return {WalkResult | null}
     */
     function findCteInRefPath(path) {
-        for (var i = path.length - 1; i >= 0; i -= 1) {
+        for (let i = path.length - 1; i >= 0; i -= 1) {
             const ref = path[i];
             if ("string" in ref) continue;
             if ("comptimeExpr" in ref) return ref;
@@ -439,7 +439,7 @@ var zigAnalysis;
         * @return {WalkResult}
     */
     function resolveValue(value) {
-        var i = 0;
+        let i = 0;
         while(i < 1000) {
             i += 1;
 
@@ -465,7 +465,7 @@ var zigAnalysis;
         * @return {WalkResult}
     */
     function typeOfDecl(decl){
-        var i = 0;
+        let i = 0;
         while(i < 1000) {
             i += 1;
             console.assert(isDecl(decl));
@@ -508,7 +508,7 @@ var zigAnalysis;
 
             if ("call" in decl.value) {
                 const fn_call = zigAnalysis.calls[decl.value.call];
-                var fn_decl = undefined;
+                let fn_decl = undefined;
                 if ("declRef" in fn_call.func) {
                     fn_decl = zigAnalysis.decls[fn_call.func.declRef];
                 } else if ("refPath" in fn_call.func) {
@@ -576,11 +576,11 @@ var zigAnalysis;
             return renderSearch();
         }
 
-        var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
-        var pkg = rootPkg;
+        let rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
+        let pkg = rootPkg;
         curNav.pkgObjs = [pkg];
-        for (var i = 0; i < curNav.pkgNames.length; i += 1) {
-            var childPkg = zigAnalysis.packages[pkg.table[curNav.pkgNames[i]]];
+        for (let i = 0; i < curNav.pkgNames.length; i += 1) {
+            let childPkg = zigAnalysis.packages[pkg.table[curNav.pkgNames[i]]];
             if (childPkg == null) {
                 return render404();
             }
@@ -589,17 +589,17 @@ var zigAnalysis;
         }
 
         /** @type {Decl | Type} */
-        var currentType = zigAnalysis.types[pkg.main];
+        let currentType = zigAnalysis.types[pkg.main];
         curNav.declObjs = [currentType];
-        for (var i = 0; i < curNav.declNames.length; i += 1) {
+        for (let i = 0; i < curNav.declNames.length; i += 1) {
 
             /** @type {Decl | Type | null} */
-            var childDecl = findSubDecl(/** @type {ContainerType} */(currentType), curNav.declNames[i]);
+            let childDecl = findSubDecl(/** @type {ContainerType} */(currentType), curNav.declNames[i]);
             if (childDecl == null) {
                 return render404();
             }
 
-            var childDeclValue = resolveValue(/** @type {Decl} */(childDecl).value);
+            let childDeclValue = resolveValue(/** @type {Decl} */(childDecl).value);
             if ("type" in childDeclValue) {
 
                 const t = zigAnalysis.types[childDeclValue.type];
@@ -614,10 +614,10 @@ var zigAnalysis;
 
         renderNav();
 
-        var last = curNav.declObjs[curNav.declObjs.length - 1];
-        var lastIsDecl = isDecl(last);
-        var lastIsType = isType(last);
-        var lastIsContainerType = isContainerType(last);
+        let last = curNav.declObjs[curNav.declObjs.length - 1];
+        let lastIsDecl = isDecl(last);
+        let lastIsType = isType(last);
+        let lastIsContainerType = isContainerType(last);
 
         if (lastIsContainerType) {
             return renderContainer(/** @type {ContainerType} */(last));
@@ -636,7 +636,7 @@ var zigAnalysis;
         }
 
         if (lastIsDecl && last.kind === 'const') {
-            var typeObj = zigAnalysis.types[resolveValue(/** @type {Decl} */(last).value).type];
+            let typeObj = zigAnalysis.types[resolveValue(/** @type {Decl} */(last).value).type];
             if (typeObj && typeObj.kind === typeKinds.Fn) {
                 return renderFn(/** @type {Decl} */(last));
             }
@@ -649,7 +649,7 @@ var zigAnalysis;
     function renderUnknownDecl(decl) {
         domDeclNoRef.classList.remove("hidden");
 
-        var docs = zigAnalysis.astNodes[decl.src].docs;
+        let docs = zigAnalysis.astNodes[decl.src].docs;
         if (docs != null) {
             domTldDocs.innerHTML = markdown(docs);
         } else {
@@ -660,13 +660,13 @@ var zigAnalysis;
 
     /** @param {number} typeIndex */
     function typeIsErrSet(typeIndex) {
-        var typeObj = zigAnalysis.types[typeIndex];
+        let typeObj = zigAnalysis.types[typeIndex];
         return typeObj.kind === typeKinds.ErrorSet;
     }
 
     /** @param {number} typeIndex */
     function typeIsStructWithNoFields(typeIndex) {
-        var typeObj = zigAnalysis.types[typeIndex];
+        let typeObj = zigAnalysis.types[typeIndex];
         if (typeObj.kind !== typeKinds.Struct)
             return false;
         return /** @type {ContainerType} */(typeObj).fields.length == 0;
@@ -674,7 +674,7 @@ var zigAnalysis;
 
     /** @param {number} typeIndex */
     function typeIsGenericFn(typeIndex) {
-        var typeObj = zigAnalysis.types[typeIndex];
+        let typeObj = zigAnalysis.types[typeIndex];
         if (typeObj.kind !== typeKinds.Fn) {
             return false;
         }
@@ -683,38 +683,38 @@ var zigAnalysis;
 
     /** @param {Decl} fnDecl */
     function renderFn(fnDecl) {
-        var value = resolveValue(fnDecl.value);
+        let value = resolveValue(fnDecl.value);
         console.assert("type" in value);
-        var typeObj = /** @type {Fn} */(zigAnalysis.types[value.type]);
+        let typeObj = /** @type {Fn} */(zigAnalysis.types[value.type]);
 
         domFnProtoCode.innerHTML = typeValueName(value, true, true, fnDecl);
 
-        var docsSource = null;
-        var srcNode = zigAnalysis.astNodes[fnDecl.src];
+        let docsSource = null;
+        let srcNode = zigAnalysis.astNodes[fnDecl.src];
         if (srcNode.docs != null) {
             docsSource = srcNode.docs;
         }
 
-        var retIndex = resolveValue(typeObj.ret).type;
+        let retIndex = resolveValue(typeObj.ret).type;
         renderFnParamDocs(fnDecl, typeObj);
 
-        var errSetTypeIndex = /** @type {number | null} */(null);
-        var retType = zigAnalysis.types[retIndex];
+        let errSetTypeIndex = /** @type {number | null} */(null);
+        let retType = zigAnalysis.types[retIndex];
         if (retType.kind === typeKinds.ErrorSet) {
             errSetTypeIndex = retIndex;
         } else if (retType.kind === typeKinds.ErrorUnion) {
             errSetTypeIndex = /** @type {ErrUnionType} */(retType).err.type;
         }
         if (errSetTypeIndex != null) {
-            var errSetType = /** @type {ErrSetType} */(zigAnalysis.types[errSetTypeIndex]);
+            let errSetType = /** @type {ErrSetType} */(zigAnalysis.types[errSetTypeIndex]);
             renderErrorSet(errSetType);
         }
 
-        var protoSrcIndex = fnDecl.src;
+        let protoSrcIndex = fnDecl.src;
         if (typeIsGenericFn(value.type)) {
             throw "TODO";
-            // var instantiations = nodesToFnsMap[protoSrcIndex];
-            // var calls = nodesToCallsMap[protoSrcIndex];
+            // let instantiations = nodesToFnsMap[protoSrcIndex];
+            // let calls = nodesToCallsMap[protoSrcIndex];
             // if (instantiations == null && calls == null) {
             //     domFnNoExamples.classList.remove("hidden");
             // } else if (calls != null) {
@@ -723,8 +723,8 @@ var zigAnalysis;
 
             //     resizeDomList(domListFnExamples, calls.length, '<li></li>');
 
-            //     for (var callI = 0; callI < calls.length; callI += 1) {
-            //         var liDom = domListFnExamples.children[callI];
+            //     for (let callI = 0; callI < calls.length; callI += 1) {
+            //         let liDom = domListFnExamples.children[callI];
             //         liDom.innerHTML = getCallHtml(fnDecl, calls[callI]);
             //     }
 
@@ -738,7 +738,7 @@ var zigAnalysis;
             domFnNoExamples.classList.add("hidden");
         }
 
-        var protoSrcNode = zigAnalysis.astNodes[protoSrcIndex];
+        let protoSrcNode = zigAnalysis.astNodes[protoSrcIndex];
         if (docsSource == null && protoSrcNode != null && protoSrcNode.docs != null) {
             docsSource = protoSrcNode.docs;
         }
@@ -754,15 +754,15 @@ var zigAnalysis;
     * @param {Fn} typeObj
     */
     function renderFnParamDocs(fnDecl, typeObj) {
-        var docCount = 0;
+        let docCount = 0;
 
-        var fnNode = zigAnalysis.astNodes[fnDecl.src];
-        var fields = /** @type {number[]} */(fnNode.fields);
-        var isVarArgs = fnNode.varArgs;
+        let fnNode = zigAnalysis.astNodes[fnDecl.src];
+        let fields = /** @type {number[]} */(fnNode.fields);
+        let isVarArgs = fnNode.varArgs;
 
-        for (var i = 0; i < fields.length; i += 1) {
-            var field = fields[i];
-            var fieldNode = zigAnalysis.astNodes[field];
+        for (let i = 0; i < fields.length; i += 1) {
+            let field = fields[i];
+            let fieldNode = zigAnalysis.astNodes[field];
             if (fieldNode.docs != null) {
                 docCount += 1;
             }
@@ -772,30 +772,30 @@ var zigAnalysis;
         }
 
         resizeDomList(domListParams, docCount, '<div></div>');
-        var domIndex = 0;
+        let domIndex = 0;
 
-        for (var i = 0; i < fields.length; i += 1) {
-            var field = fields[i];
-            var fieldNode = zigAnalysis.astNodes[field];
+        for (let i = 0; i < fields.length; i += 1) {
+            let field = fields[i];
+            let fieldNode = zigAnalysis.astNodes[field];
             if (fieldNode.docs == null) {
                 continue;
             }
-            var divDom = domListParams.children[domIndex];
+            let divDom = domListParams.children[domIndex];
             domIndex += 1;
 
 
-            var value = typeObj.params[i];
-            var html = '<pre>' + escapeHtml(/** @type {string} */(fieldNode.name)) + ": ";
+            let value = typeObj.params[i];
+            let html = '<pre>' + escapeHtml(/** @type {string} */(fieldNode.name)) + ": ";
             if (isVarArgs && i === typeObj.params.length - 1) {
                 html += '...';
             } else {
-                var name = typeValueName(value, false, false);
+                let name = typeValueName(value, false, false);
                 html += '<span class="tok-kw">' + name + '</span>';
             }
 
             html += ',</pre>';
 
-            var docs = fieldNode.docs;
+            let docs = fieldNode.docs;
             if (docs != null) {
                 html += markdown(docs);
             }
@@ -805,19 +805,19 @@ var zigAnalysis;
     }
 
     function renderNav() {
-        var len = curNav.pkgNames.length + curNav.declNames.length;
+        let len = curNav.pkgNames.length + curNav.declNames.length;
         resizeDomList(domListNav, len, '<li><a href="#"></a></li>');
-        var list = [];
-        var hrefPkgNames = [];
-        var hrefDeclNames = /** @type {string[]} */([]);
-        for (var i = 0; i < curNav.pkgNames.length; i += 1) {
+        let list = [];
+        let hrefPkgNames = [];
+        let hrefDeclNames = /** @type {string[]} */([]);
+        for (let i = 0; i < curNav.pkgNames.length; i += 1) {
             hrefPkgNames.push(curNav.pkgNames[i]);
             list.push({
                 name: curNav.pkgNames[i],
                 link: navLink(hrefPkgNames, hrefDeclNames),
             });
         }
-        for (var i = 0; i < curNav.declNames.length; i += 1) {
+        for (let i = 0; i < curNav.declNames.length; i += 1) {
             hrefDeclNames.push(curNav.declNames[i]);
             list.push({
                 name: curNav.declNames[i],
@@ -825,9 +825,9 @@ var zigAnalysis;
             });
         }
 
-        for (var i = 0; i < list.length; i += 1) {
-            var liDom = domListNav.children[i];
-            var aDom = liDom.children[0];
+        for (let i = 0; i < list.length; i += 1) {
+            let liDom = domListNav.children[i];
+            let aDom = liDom.children[0];
             aDom.textContent = list[i].name;
             aDom.setAttribute('href', list[i].link);
             if (i + 1 == list.length) {
@@ -853,10 +853,10 @@ var zigAnalysis;
     }
 
     function renderPkgList() {
-        var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
-        var list = [];
-        for (var key in rootPkg.table) {
-            var pkgIndex = rootPkg.table[key];
+        let rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
+        let list = [];
+        for (let key in rootPkg.table) {
+            let pkgIndex = rootPkg.table[key];
             if (zigAnalysis.packages[pkgIndex] == null) continue;
             list.push({
                 name: key,
@@ -865,7 +865,7 @@ var zigAnalysis;
         }
 
         {
-            var aDom = domSectMainPkg.children[1].children[0].children[0];
+            let aDom = domSectMainPkg.children[1].children[0].children[0];
             aDom.textContent = zigAnalysis.params.rootName;
             aDom.setAttribute('href', navLinkPkg(zigAnalysis.rootPkg));
             if (zigAnalysis.params.rootName === curNav.pkgNames[0]) {
@@ -882,9 +882,9 @@ var zigAnalysis;
 
         if (list.length !== 0) {
             resizeDomList(domListPkgs, list.length, '<li><a href="#"></a></li>');
-            for (var i = 0; i < list.length; i += 1) {
-                var liDom = domListPkgs.children[i];
-                var aDom = liDom.children[0];
+            for (let i = 0; i < list.length; i += 1) {
+                let liDom = domListPkgs.children[i];
+                let aDom = liDom.children[0];
                 aDom.textContent = list[i].name;
                 aDom.setAttribute('href', navLinkPkg(list[i].pkg));
                 if (list[i].name === curNav.pkgNames[0]) {
@@ -933,13 +933,13 @@ var zigAnalysis;
 
     /** @param {Call} callObj */
     function navLinkCall(callObj) {
-        var declNamesCopy = curNav.declNames.concat([]);
-        var callName = /** @type {string} */(declNamesCopy.pop());
+        let declNamesCopy = curNav.declNames.concat([]);
+        let callName = /** @type {string} */(declNamesCopy.pop());
 
         callName += '(';
-            for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) {
+            for (let arg_i = 0; arg_i < callObj.args.length; arg_i += 1) {
                 if (arg_i !== 0) callName += ',';
-                var argObj = callObj.args[arg_i];
+                let argObj = callObj.args[arg_i];
                 callName += getValueText(argObj, argObj, false, false);
             }
             callName += ')';
@@ -954,7 +954,7 @@ var zigAnalysis;
     */
     function resizeDomListDl(dlDom, desiredLen) {
         // add the missing dom entries
-        var i, ev;
+        let i, ev;
         for (i = dlDom.childElementCount / 2; i < desiredLen; i += 1) {
             dlDom.insertAdjacentHTML('beforeend', '<dt></dt><dd></dd>');
         }
@@ -972,7 +972,7 @@ var zigAnalysis;
     */
     function resizeDomList(listDom, desiredLen, templateHtml) {
         // add the missing dom entries
-        var i, ev;
+        let i, ev;
         for (i = listDom.childElementCount; i < desiredLen; i += 1) {
             listDom.insertAdjacentHTML('beforeend', templateHtml);
         }
@@ -996,11 +996,11 @@ var zigAnalysis;
             return "" + typeValue.int.value;
         }
         if ("call" in typeValue) {
-            var result = "";
-            var call = zigAnalysis.calls[typeValue.call];
-            var functionName = typeValueName(call.func, wantHtml, wantLink, fnDecl, linkFnNameDecl);
+            let result = "";
+            let call = zigAnalysis.calls[typeValue.call];
+            let functionName = typeValueName(call.func, wantHtml, wantLink, fnDecl, linkFnNameDecl);
             result += functionName + "(";
-            for (var j = 0; j < call.args.length; j += 1) {
+            for (let j = 0; j < call.args.length; j += 1) {
               result += typeValueName(call.args[j], wantHtml, wantLink, fnDecl, linkFnNameDecl);
               if (j != call.args.length -1) result += ",";
             }
@@ -1011,10 +1011,10 @@ var zigAnalysis;
             return "[ComptimeExpr]";
         }
         if ("refPath" in typeValue) {
-              var result = "";
-              for (var j = 0; j < typeValue.refPath.length; j++) {
+              let result = "";
+              for (let j = 0; j < typeValue.refPath.length; j++) {
 
-                  var name = "[RefPath]";
+                  let name = "[RefPath]";
                   if (wantHtml) {
                       //result += '<a href="'+navLinkDecl(decl.name)+'">';
                       result += '<a href="">';
@@ -1048,16 +1048,16 @@ var zigAnalysis;
         }
 
         console.assert("type" in typeValue)
-        var typeIndex = typeValue.type;
-        var typeObj = zigAnalysis.types[typeIndex];
-        var declNameOk = declCanRepresentTypeKind(typeObj.kind);
+        let typeIndex = typeValue.type;
+        let typeObj = zigAnalysis.types[typeIndex];
+        let declNameOk = declCanRepresentTypeKind(typeObj.kind);
         if (wantLink) {
-            var declIndex = getCanonTypeDecl(typeIndex);
-            var declPath = getCanonDeclPath(declIndex);
+            let declIndex = getCanonTypeDecl(typeIndex);
+            let declPath = getCanonDeclPath(declIndex);
             if (declPath == null) {
                 return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl);
             }
-            var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
+            let name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
                 declPath.declNames[declPath.declNames.length - 1] :
                 typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
             if (wantLink && wantHtml) {
@@ -1075,9 +1075,9 @@ var zigAnalysis;
     * @param {string} paramName
     */
     function shouldSkipParamName(typeRef, paramName) {
-        var resolvedTypeRef = resolveValue(typeRef);
+        let resolvedTypeRef = resolveValue(typeRef);
         if ("type" in resolvedTypeRef) {
-            var typeObj = zigAnalysis.types[resolvedTypeRef.type];
+            let typeObj = zigAnalysis.types[resolvedTypeRef.type];
             if (typeObj.kind === typeKinds.Pointer){
                 let ptrObj = /** @type {PointerType} */(typeObj);
                 if (getPtrSize(ptrObj) === pointerSizeEnum.One) {
@@ -1095,14 +1095,14 @@ var zigAnalysis;
     }
 
     // function getCallHtml(fnDecl, callIndex) {
-    //     var callObj = zigAnalysis.calls[callIndex];
+    //     let callObj = zigAnalysis.calls[callIndex];
 
     //     // TODO make these links work
-    //     //var html = '<a href="' + navLinkCall(callObj) + '">' + escapeHtml(fnDecl.name) + '</a>(';
-    //         var html = escapeHtml(fnDecl.name) + '(';
-    //             for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) {
+    //     //let html = '<a href="' + navLinkCall(callObj) + '">' + escapeHtml(fnDecl.name) + '</a>(';
+    //         let html = escapeHtml(fnDecl.name) + '(';
+    //             for (let arg_i = 0; arg_i < callObj.args.length; arg_i += 1) {
     //                 if (arg_i !== 0) html += ', ';
-    //                 var argObj = callObj.args[arg_i];
+    //                 let argObj = callObj.args[arg_i];
     //                 html += getValueText(argObj, argObj.value, true, true);
     //             }
     //             html += ')';
@@ -1116,17 +1116,17 @@ var zigAnalysis;
     * @param {boolean} wantLink
     */
     function getValueText(typeRef, value, wantHtml, wantLink) {
-        var resolvedTypeRef = resolveValue(typeRef);
+        let resolvedTypeRef = resolveValue(typeRef);
         if ("comptimeExpr" in resolvedTypeRef) {
             return "[ComptimeExpr]";
         }
         console.assert("type" in resolvedTypeRef);
-        var typeObj = zigAnalysis.types[typeRef.type];
+        let typeObj = zigAnalysis.types[typeRef.type];
         switch (typeObj.kind) {
             case typeKinds.Type:
                 return typeValueName(value, wantHtml, wantLink);
             case typeKinds.Fn:
-                var fnObj = zigAnalysis.fns[value];
+                let fnObj = zigAnalysis.fns[value];
                 return typeName(fnObj, wantHtml, wantLink);
             case typeKinds.Int:
                 if (wantHtml) {
@@ -1152,8 +1152,8 @@ var zigAnalysis;
             case typeKinds.Array:
             {
                 let arrayObj = /** @type {ArrayType} */(typeObj);
-                var name = "[";
-                var lenName = typeValueName(arrayObj.len, wantHtml, wantSubLink);
+                let name = "[";
+                let lenName = typeValueName(arrayObj.len, wantHtml, wantSubLink);
                 if (wantHtml) {
                     name += '<span class="tok-number">' + lenName + '</span>';
                 } else {
@@ -1169,7 +1169,7 @@ var zigAnalysis;
             case typeKinds.Pointer:
             {
                 let ptrObj = /** @type {PointerType} */(typeObj);
-                var name = "";
+                let name = "";
                 switch (ptrObj.size) {
                     default:
                         console.log("TODO: implement unhandled pointer size case");
@@ -1243,7 +1243,7 @@ var zigAnalysis;
             case typeKinds.Int:
             {
                 let intObj = /** @type {NumberType} */(typeObj);
-                var name = intObj.name;
+                let name = intObj.name;
                 if (wantHtml) {
                     return '<span class="tok-type">' + name + '</span>';
                 } else {
@@ -1316,8 +1316,8 @@ var zigAnalysis;
                 // TODO: implement error union printing assuming that both
                 // payload and error union are walk results!
                 // let errUnionObj = /** @type {ErrUnionType} */(typeObj);
-                // var errSetTypeObj = /** @type {ErrSetType} */ (zigAnalysis.types[errUnionObj.err]);
-                // var payloadHtml = typeValueName(errUnionObj.payload, wantHtml, wantSubLink, null);
+                // let errSetTypeObj = /** @type {ErrSetType} */ (zigAnalysis.types[errUnionObj.err]);
+                // let payloadHtml = typeValueName(errUnionObj.payload, wantHtml, wantSubLink, null);
                 // if (fnDecl != null && errSetTypeObj.fn === fnDecl.value.type) {
                 //     // function index parameter supplied and this is the inferred error set of it
                 //     return "!" + payloadHtml;
@@ -1328,7 +1328,7 @@ var zigAnalysis;
             case typeKinds.Fn:
             {
                 let fnObj = /** @type {Fn} */(typeObj);
-                var payloadHtml = "";
+                let payloadHtml = "";
                 if (wantHtml) {
                     payloadHtml += '<span class="tok-kw">fn</span>';
                     if (fnDecl != null) {
@@ -1346,23 +1346,23 @@ var zigAnalysis;
                 }
                 payloadHtml += '(';
                     if (fnObj.params) {
-                        var fields = null;
-                        var isVarArgs = false;
-                        var fnNode = zigAnalysis.astNodes[fnObj.src];
+                        let fields = null;
+                        let isVarArgs = false;
+                        let fnNode = zigAnalysis.astNodes[fnObj.src];
                         fields = fnNode.fields;
                         isVarArgs = fnNode.varArgs;
 
-                        for (var i = 0; i < fnObj.params.length; i += 1) {
+                        for (let i = 0; i < fnObj.params.length; i += 1) {
                             if (i != 0) {
                                 payloadHtml += ', ';
                             }
 
-                            var value = fnObj.params[i];
-                            var paramValue = resolveValue(value);
-                            var isCte = "comptimeExpr" in paramValue;
+                            let value = fnObj.params[i];
+                            let paramValue = resolveValue(value);
+                            let isCte = "comptimeExpr" in paramValue;
 
                             if (fields != null) {
-                                var paramNode = zigAnalysis.astNodes[fields[i]];
+                                let paramNode = zigAnalysis.astNodes[fields[i]];
 
                                 if (paramNode.varArgs) {
                                     payloadHtml += '...';
@@ -1385,7 +1385,7 @@ var zigAnalysis;
                                     }
                                 }
 
-                                var paramName = paramNode.name;
+                                let paramName = paramNode.name;
                                 if (paramName != null) {
                                     // skip if it matches the type name
                                     if (!shouldSkipParamName(paramValue, paramName)) {
@@ -1402,7 +1402,7 @@ var zigAnalysis;
                                 payloadHtml += '</a>';
 
                             } else if ("type" in value) {
-                                var name = typeValueName(value, wantHtml, wantSubLink, fnDecl, linkFnNameDecl);
+                                let name = typeValueName(value, wantHtml, wantSubLink, fnDecl, linkFnNameDecl);
                                 payloadHtml += '<span class="tok-kw">' + escapeHtml(name) + '</span>';
                             } else if ("comptimeExpr" in value) {
                                 payloadHtml += '<span class="tok-kw">[ComptimeExpr]</span>';
@@ -1436,7 +1436,7 @@ var zigAnalysis;
 
     /** @param {Type} typeObj */
     function renderType(typeObj) {
-        var name;
+        let name;
         if (rootIsStd && typeObj === zigAnalysis.types[zigAnalysis.packages[zigAnalysis.rootPkg].main]) {
             name = "std";
         } else {
@@ -1456,10 +1456,10 @@ var zigAnalysis;
         if (errSetType.fields == null) {
             domFnErrorsAnyError.classList.remove("hidden");
         } else {
-            var errorList = [];
-            for (var i = 0; i < errSetType.fields.length; i += 1) {
-                var errObj = errSetType.fields[i];
-                //var srcObj = zigAnalysis.astNodes[errObj.src];
+            let errorList = [];
+            for (let i = 0; i < errSetType.fields.length; i += 1) {
+                let errObj = errSetType.fields[i];
+                //let srcObj = zigAnalysis.astNodes[errObj.src];
                 errorList.push(errObj);
             }
             errorList.sort(function(a, b) {
@@ -1467,11 +1467,11 @@ var zigAnalysis;
             });
 
             resizeDomListDl(domListFnErrors, errorList.length);
-            for (var i = 0; i < errorList.length; i += 1) {
-                var nameTdDom = domListFnErrors.children[i * 2 + 0];
-                var descTdDom = domListFnErrors.children[i * 2 + 1];
+            for (let i = 0; i < errorList.length; i += 1) {
+                let nameTdDom = domListFnErrors.children[i * 2 + 0];
+                let descTdDom = domListFnErrors.children[i * 2 + 1];
                 nameTdDom.textContent = errorList[i].name;
-                var docs = errorList[i].docs;
+                let docs = errorList[i].docs;
                 if (docs != null) {
                     descTdDom.innerHTML = markdown(docs);
                 } else {
@@ -1484,25 +1484,25 @@ var zigAnalysis;
     }
 
 //     function allCompTimeFnCallsHaveTypeResult(typeIndex, value) {
-//         var srcIndex = zigAnalysis.fns[value].src;
-//         var calls = nodesToCallsMap[srcIndex];
+//         let srcIndex = zigAnalysis.fns[value].src;
+//         let calls = nodesToCallsMap[srcIndex];
 //         if (calls == null) return false;
-//         for (var i = 0; i < calls.length; i += 1) {
-//             var call = zigAnalysis.calls[calls[i]];
+//         for (let i = 0; i < calls.length; i += 1) {
+//             let call = zigAnalysis.calls[calls[i]];
 //             if (call.result.type !== typeTypeId) return false;
 //         }
 //         return true;
 //     }
 //
 //     function allCompTimeFnCallsResult(calls) {
-//         var firstTypeObj = null;
-//         var containerObj = {
+//         let firstTypeObj = null;
+//         let containerObj = {
 //             privDecls: [],
 //         };
-//         for (var callI = 0; callI < calls.length; callI += 1) {
-//             var call = zigAnalysis.calls[calls[callI]];
+//         for (let callI = 0; callI < calls.length; callI += 1) {
+//             let call = zigAnalysis.calls[calls[callI]];
 //             if (call.result.type !== typeTypeId) return null;
-//             var typeObj = zigAnalysis.types[call.result.value];
+//             let typeObj = zigAnalysis.types[call.result.value];
 //             if (!typeKindIsContainer(typeObj.kind)) return null;
 //             if (firstTypeObj == null) {
 //                 firstTypeObj = typeObj;
@@ -1513,9 +1513,9 @@ var zigAnalysis;
 //
 //             if (containerObj.fields == null) {
 //                 containerObj.fields = (typeObj.fields || []).concat([]);
-//             } else for (var fieldI = 0; fieldI < typeObj.fields.length; fieldI += 1) {
-//                 var prev = containerObj.fields[fieldI];
-//                 var next = typeObj.fields[fieldI];
+//             } else for (let fieldI = 0; fieldI < typeObj.fields.length; fieldI += 1) {
+//                 let prev = containerObj.fields[fieldI];
+//                 let next = typeObj.fields[fieldI];
 //                 if (prev === next) continue;
 //                 if (typeof(prev) === 'object') {
 //                     if (prev[next] == null) prev[next] = typeObj;
@@ -1528,14 +1528,14 @@ var zigAnalysis;
 //
 //             if (containerObj.pubDecls == null) {
 //                 containerObj.pubDecls = (typeObj.pubDecls || []).concat([]);
-//             } else for (var declI = 0; declI < typeObj.pubDecls.length; declI += 1) {
-//                 var prev = containerObj.pubDecls[declI];
-//                 var next = typeObj.pubDecls[declI];
+//             } else for (let declI = 0; declI < typeObj.pubDecls.length; declI += 1) {
+//                 let prev = containerObj.pubDecls[declI];
+//                 let next = typeObj.pubDecls[declI];
 //                 if (prev === next) continue;
 //                 // TODO instead of showing "examples" as the public declarations,
 //                     // do logic like this:
 //                 //if (typeof(prev) !== 'object') {
-//                     //    var newDeclId = zigAnalysis.decls.length;
+//                     //    let newDeclId = zigAnalysis.decls.length;
 //                     //    prev = clone(zigAnalysis.decls[prev]);
 //                     //    prev.id = newDeclId;
 //                     //    zigAnalysis.decls.push(prev);
@@ -1544,8 +1544,8 @@ var zigAnalysis;
 //                 //mergeDecls(prev, next, firstTypeObj, typeObj);
 //             }
 //         }
-//         for (var declI = 0; declI < containerObj.pubDecls.length; declI += 1) {
-//             var decl = containerObj.pubDecls[declI];
+//         for (let declI = 0; declI < containerObj.pubDecls.length; declI += 1) {
+//             let decl = containerObj.pubDecls[declI];
 //             if (typeof(decl) === 'object') {
 //                 containerObj.pubDecls[declI] = containerObj.pubDecls[declI].id;
 //             }
@@ -1555,10 +1555,10 @@ var zigAnalysis;
 
 
     // function mergeDecls(declObj, nextDeclIndex, firstTypeObj, typeObj) {
-    //     var nextDeclObj = zigAnalysis.decls[nextDeclIndex];
+    //     let nextDeclObj = zigAnalysis.decls[nextDeclIndex];
     //     if (declObj.type != null && nextDeclObj.type != null && declObj.type !== nextDeclObj.type) {
     //         if (typeof(declObj.type) !== 'object') {
-    //             var prevType = declObj.type;
+    //             let prevType = declObj.type;
     //             declObj.type = {};
     //             declObj.type[prevType] = firstTypeObj;
     //             declObj.value = null;
@@ -1569,7 +1569,7 @@ var zigAnalysis;
     //     }
     //     if (declObj.value != null && nextDeclObj.value != null && declObj.value !== nextDeclObj.value) {
     //         if (typeof(declObj.value) !== 'object') {
-    //             var prevValue = declObj.value;
+    //             let prevValue = declObj.value;
     //             declObj.value = {};
     //             declObj.value[prevValue] = firstTypeObj;
     //         }
@@ -1582,8 +1582,8 @@ var zigAnalysis;
     /** @param {Decl} decl */
     function renderValue(decl) {
 
-        var declTypeRef = typeOfDecl(decl);
-        var declValueText = "";
+        let declTypeRef = typeOfDecl(decl);
+        let declValueText = "";
         switch(Object.keys(decl.value)[0]) {
             case "int":
                 declValueText += /** @type {{int: {value: number}}} */(decl.value).int.value;
@@ -1603,7 +1603,7 @@ var zigAnalysis;
             escapeHtml(decl.name) + ': ' + typeValueName(declTypeRef, true, true) +
             " = " + declValueText;
 
-        var docs = zigAnalysis.astNodes[decl.src].docs;
+        let docs = zigAnalysis.astNodes[decl.src].docs;
         if (docs != null) {
             domTldDocs.innerHTML = markdown(docs);
             domTldDocs.classList.remove("hidden");
@@ -1614,11 +1614,11 @@ var zigAnalysis;
 
     /** @param {Decl} decl */
     function renderVar(decl) {
-        var declTypeRef = typeOfDecl(decl);
+        let declTypeRef = typeOfDecl(decl);
         domFnProtoCode.innerHTML = '<span class="tok-kw">var</span> ' +
             escapeHtml(decl.name) + ': ' + typeValueName(declTypeRef, true, true);
 
-        var docs = zigAnalysis.astNodes[decl.src].docs;
+        let docs = zigAnalysis.astNodes[decl.src].docs;
         if (docs != null) {
             domTldDocs.innerHTML = markdown(docs);
             domTldDocs.classList.remove("hidden");
@@ -1642,9 +1642,9 @@ var zigAnalysis;
         typesList, namespacesList, errSetsList,
         fnsList, varsList, valsList, testsList) {
 
-        for (var i = 0; i < decls.length; i += 1) {
-            var decl = zigAnalysis.decls[decls[i]];
-            var declValue = resolveValue(decl.value);
+        for (let i = 0; i < decls.length; i += 1) {
+            let decl = zigAnalysis.decls[decls[i]];
+            let declValue = resolveValue(decl.value);
 
             if (decl.isTest) {
                 testsList.push(decl);
@@ -1676,8 +1676,8 @@ var zigAnalysis;
                 } else if (!("type" in declValue)){
                     valsList.push(decl);
                 } else {
-                    var value = zigAnalysis.types[declValue.type];
-                    var kind = value.kind;
+                    let value = zigAnalysis.types[declValue.type];
+                    let kind = value.kind;
                     if (kind === typeKinds.Fn) {
                         // TODO: handle CTE return types when we know their type.
                         const resVal = resolveValue(/** @type {Fn} */(value).ret);
@@ -1704,19 +1704,19 @@ var zigAnalysis;
      */
     function renderContainer(container) {
         /** @type {Decl[]} */
-        var typesList = [];
+        let typesList = [];
         /** @type {Decl[]} */
-        var namespacesList = [];
+        let namespacesList = [];
         /** @type {Decl[]} */
-        var errSetsList = [];
+        let errSetsList = [];
         /** @type {Decl[]} */
-        var fnsList = [];
+        let fnsList = [];
         /** @type {Decl[]} */
-        var varsList = [];
+        let varsList = [];
         /** @type {Decl[]} */
-        var valsList = [];
+        let valsList = [];
         /** @type {Decl[]} */
-        var testsList = [];
+        let testsList = [];
 
         categorizeDecls(container.pubDecls,
             typesList, namespacesList, errSetsList,
@@ -1735,7 +1735,7 @@ var zigAnalysis;
         testsList.sort(byNameProperty);
 
         if (container.src != null) {
-            var docs = zigAnalysis.astNodes[container.src].docs;
+            let docs = zigAnalysis.astNodes[container.src].docs;
             if (docs != null) {
                 domTldDocs.innerHTML = markdown(docs);
                 domTldDocs.classList.remove("hidden");
@@ -1744,10 +1744,10 @@ var zigAnalysis;
 
         if (typesList.length !== 0) {
             resizeDomList(domListTypes, typesList.length, '<li><a href="#"></a></li>');
-            for (var i = 0; i < typesList.length; i += 1) {
-                var liDom = domListTypes.children[i];
-                var aDom = liDom.children[0];
-                var decl = typesList[i];
+            for (let i = 0; i < typesList.length; i += 1) {
+                let liDom = domListTypes.children[i];
+                let aDom = liDom.children[0];
+                let decl = typesList[i];
                 aDom.textContent = decl.name;
                 aDom.setAttribute('href', navLinkDecl(decl.name));
             }
@@ -1755,10 +1755,10 @@ var zigAnalysis;
         }
         if (namespacesList.length !== 0) {
             resizeDomList(domListNamespaces, namespacesList.length, '<li><a href="#"></a></li>');
-            for (var i = 0; i < namespacesList.length; i += 1) {
-                var liDom = domListNamespaces.children[i];
-                var aDom = liDom.children[0];
-                var decl = namespacesList[i];
+            for (let i = 0; i < namespacesList.length; i += 1) {
+                let liDom = domListNamespaces.children[i];
+                let aDom = liDom.children[0];
+                let decl = namespacesList[i];
                 aDom.textContent = decl.name;
                 aDom.setAttribute('href', navLinkDecl(decl.name));
             }
@@ -1767,10 +1767,10 @@ var zigAnalysis;
 
         if (errSetsList.length !== 0) {
             resizeDomList(domListErrSets, errSetsList.length, '<li><a href="#"></a></li>');
-            for (var i = 0; i < errSetsList.length; i += 1) {
-                var liDom = domListErrSets.children[i];
-                var aDom = liDom.children[0];
-                var decl = errSetsList[i];
+            for (let i = 0; i < errSetsList.length; i += 1) {
+                let liDom = domListErrSets.children[i];
+                let aDom = liDom.children[0];
+                let decl = errSetsList[i];
                 aDom.textContent = decl.name;
                 aDom.setAttribute('href', navLinkDecl(decl.name));
             }
@@ -1779,19 +1779,19 @@ var zigAnalysis;
 
         if (fnsList.length !== 0) {
             resizeDomList(domListFns, fnsList.length, '<tr><td></td><td></td></tr>');
-            for (var i = 0; i < fnsList.length; i += 1) {
-                var decl = fnsList[i];
-                var trDom = domListFns.children[i];
+            for (let i = 0; i < fnsList.length; i += 1) {
+                let decl = fnsList[i];
+                let trDom = domListFns.children[i];
 
-                var tdFnCode = trDom.children[0];
-                var tdDesc = trDom.children[1];
+                let tdFnCode = trDom.children[0];
+                let tdDesc = trDom.children[1];
 
-                var declType = resolveValue(decl.value);
+                let declType = resolveValue(decl.value);
                 console.assert("type" in declType);
 
                 tdFnCode.innerHTML = typeValueName(declType, true, true, decl, navLinkDecl(decl.name));
 
-                var docs = zigAnalysis.astNodes[decl.src].docs;
+                let docs = zigAnalysis.astNodes[decl.src].docs;
                 if (docs != null) {
                     tdDesc.innerHTML = shortDescMarkdown(docs);
                 } else {
@@ -1801,29 +1801,29 @@ var zigAnalysis;
             domSectFns.classList.remove("hidden");
         }
 
-        var containerNode = zigAnalysis.astNodes[container.src];
+        let containerNode = zigAnalysis.astNodes[container.src];
         if (containerNode.fields) {
             resizeDomList(domListFields, containerNode.fields.length, '<div></div>');
 
-            for (var i = 0; i < containerNode.fields.length; i += 1) {
-                var fieldNode = zigAnalysis.astNodes[containerNode.fields[i]];
-                var divDom = domListFields.children[i];
+            for (let i = 0; i < containerNode.fields.length; i += 1) {
+                let fieldNode = zigAnalysis.astNodes[containerNode.fields[i]];
+                let divDom = domListFields.children[i];
                 let fieldName = /** @type {string} */(fieldNode.name);
 
-                var html = '<div class="mobile-scroll-container"><pre class="scroll-item">' + escapeHtml(fieldName);
+                let html = '<div class="mobile-scroll-container"><pre class="scroll-item">' + escapeHtml(fieldName);
 
                 if (container.kind === typeKinds.Enum) {
                     html += ' = <span class="tok-number">' + fieldName + '</span>';
                 } else {
-                    var field = container.fields[i];
+                    let field = container.fields[i];
                     html += ": ";
-                    var name = typeValueName(field, false, false);
+                    let name = typeValueName(field, false, false);
                     html += '<span class="tok-kw">'+ name +'</span>';
                 }
 
                 html += ',</pre></div>';
 
-                var docs = fieldNode.docs;
+                let docs = fieldNode.docs;
                 if (docs != null) {
                     html += markdown(docs);
                 }
@@ -1835,21 +1835,21 @@ var zigAnalysis;
         if (varsList.length !== 0) {
             resizeDomList(domListGlobalVars, varsList.length,
                 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');
-            for (var i = 0; i < varsList.length; i += 1) {
-                var decl = varsList[i];
-                var trDom = domListGlobalVars.children[i];
+            for (let i = 0; i < varsList.length; i += 1) {
+                let decl = varsList[i];
+                let trDom = domListGlobalVars.children[i];
 
-                var tdName = trDom.children[0];
-                var tdNameA = tdName.children[0];
-                var tdType = trDom.children[1];
-                var tdDesc = trDom.children[2];
+                let tdName = trDom.children[0];
+                let tdNameA = tdName.children[0];
+                let tdType = trDom.children[1];
+                let tdDesc = trDom.children[2];
 
                 tdNameA.setAttribute('href', navLinkDecl(decl.name));
                 tdNameA.textContent = decl.name;
 
                 tdType.innerHTML = typeValueName(typeOfDecl(decl), true, true);
 
-                var docs = zigAnalysis.astNodes[decl.src].docs;
+                let docs = zigAnalysis.astNodes[decl.src].docs;
                 if (docs != null) {
                     tdDesc.innerHTML = shortDescMarkdown(docs);
                 } else {
@@ -1862,21 +1862,21 @@ var zigAnalysis;
         if (valsList.length !== 0) {
             resizeDomList(domListValues, valsList.length,
                 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');
-            for (var i = 0; i < valsList.length; i += 1) {
-                var decl = valsList[i];
-                var trDom = domListValues.children[i];
+            for (let i = 0; i < valsList.length; i += 1) {
+                let decl = valsList[i];
+                let trDom = domListValues.children[i];
 
-                var tdName = trDom.children[0];
-                var tdNameA = tdName.children[0];
-                var tdType = trDom.children[1];
-                var tdDesc = trDom.children[2];
+                let tdName = trDom.children[0];
+                let tdNameA = tdName.children[0];
+                let tdType = trDom.children[1];
+                let tdDesc = trDom.children[2];
 
                 tdNameA.setAttribute('href', navLinkDecl(decl.name));
                 tdNameA.textContent = decl.name;
 
                 tdType.innerHTML = typeValueName(typeOfDecl(decl), true, true);
 
-                var docs = zigAnalysis.astNodes[decl.src].docs;
+                let docs = zigAnalysis.astNodes[decl.src].docs;
                 if (docs != null) {
                     tdDesc.innerHTML = shortDescMarkdown(docs);
                 } else {
@@ -1889,21 +1889,21 @@ var zigAnalysis;
         if (testsList.length !== 0) {
             resizeDomList(domListTests, testsList.length,
                 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');
-            for (var i = 0; i < testsList.length; i += 1) {
-                var decl = testsList[i];
-                var trDom = domListTests.children[i];
+            for (let i = 0; i < testsList.length; i += 1) {
+                let decl = testsList[i];
+                let trDom = domListTests.children[i];
 
-                var tdName = trDom.children[0];
-                var tdNameA = tdName.children[0];
-                var tdType = trDom.children[1];
-                var tdDesc = trDom.children[2];
+                let tdName = trDom.children[0];
+                let tdNameA = tdName.children[0];
+                let tdType = trDom.children[1];
+                let tdDesc = trDom.children[2];
 
                 tdNameA.setAttribute('href', navLinkDecl(decl.name));
                 tdNameA.textContent = decl.name;
 
                 tdType.innerHTML = typeValueName(typeOfDecl(decl), true, true);
 
-                var docs = zigAnalysis.astNodes[decl.src].docs;
+                let docs = zigAnalysis.astNodes[decl.src].docs;
                 if (docs != null) {
                     tdDesc.innerHTML = shortDescMarkdown(docs);
                 } else {
@@ -1930,33 +1930,33 @@ var zigAnalysis;
     }
 
     function detectRootIsStd() {
-        var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
+        let rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
         if (rootPkg.table["std"] == null) {
             // no std mapped into the root package
             return false;
         }
-        var stdPkg = zigAnalysis.packages[rootPkg.table["std"]];
+        let stdPkg = zigAnalysis.packages[rootPkg.table["std"]];
         if (stdPkg == null) return false;
         return rootPkg.file === stdPkg.file;
     }
 
     function indexTypeKinds() {
-        var map = /** @type {Record<string, number>} */({});
-        for (var i = 0; i < zigAnalysis.typeKinds.length; i += 1) {
+        let map = /** @type {Record<string, number>} */({});
+        for (let i = 0; i < zigAnalysis.typeKinds.length; i += 1) {
             map[zigAnalysis.typeKinds[i]] = i;
         }
         // This is just for debugging purposes, not needed to function
-        var assertList = ["Type","Void","Bool","NoReturn","Int","Float","Pointer","Array","Struct",
+        let assertList = ["Type","Void","Bool","NoReturn","Int","Float","Pointer","Array","Struct",
             "ComptimeFloat","ComptimeInt","Undefined","Null","Optional","ErrorUnion","ErrorSet","Enum",
             "Union","Fn","BoundFn","Opaque","Frame","AnyFrame","Vector","EnumLiteral"];
-        for (var i = 0; i < assertList.length; i += 1) {
+        for (let i = 0; i < assertList.length; i += 1) {
             if (map[assertList[i]] == null) throw new Error("No type kind '" + assertList[i] + "' found");
         }
         return map;
     }
 
     function findTypeTypeId() {
-        for (var i = 0; i < zigAnalysis.types.length; i += 1) {
+        for (let i = 0; i < zigAnalysis.types.length; i += 1) {
             if (zigAnalysis.types[i].kind == typeKinds.Type) {
                 return i;
             }
@@ -1977,14 +1977,14 @@ var zigAnalysis;
         curNavSearch = "";
 
         if (location.hash[0] === '#' && location.hash.length > 1) {
-            var query = location.hash.substring(1);
+            let query = location.hash.substring(1);
             if (query[0] === '*') {
               curNav.showPrivDecls = true;
               query = query.substring(1);
             }
 
-            var qpos = query.indexOf("?");
-            var nonSearchPart;
+            let qpos = query.indexOf("?");
+            let nonSearchPart;
             if (qpos === -1) {
                 nonSearchPart = query;
             } else {
@@ -1992,7 +1992,7 @@ var zigAnalysis;
                 curNavSearch = decodeURIComponent(query.substring(qpos + 1));
             }
 
-            var parts = nonSearchPart.split(";");
+            let parts = nonSearchPart.split(";");
             curNav.pkgNames = decodeURIComponent(parts[0]).split(".");
             if (parts[1] != null) {
                 curNav.declNames = decodeURIComponent(parts[1]).split(".");
@@ -2022,17 +2022,17 @@ var zigAnalysis;
     */
     function findSubDecl(parentType, childName) {
         if (!parentType.pubDecls) return null;
-        for (var i = 0; i < parentType.pubDecls.length; i += 1) {
-            var declIndex = parentType.pubDecls[i];
-            var childDecl = zigAnalysis.decls[declIndex];
+        for (let i = 0; i < parentType.pubDecls.length; i += 1) {
+            let declIndex = parentType.pubDecls[i];
+            let childDecl = zigAnalysis.decls[declIndex];
             if (childDecl.name === childName) {
                 return childDecl;
             }
         }
         if (!parentType.privDecls) return null;
-        for (var i = 0; i < parentType.privDecls.length; i += 1) {
-            var declIndex = parentType.privDecls[i];
-            var childDecl = zigAnalysis.decls[declIndex];
+        for (let i = 0; i < parentType.privDecls.length; i += 1) {
+            let declIndex = parentType.privDecls[i];
+            let childDecl = zigAnalysis.decls[declIndex];
             if (childDecl.name === childName) {
                 return childDecl;
             }
@@ -2044,23 +2044,23 @@ var zigAnalysis;
 
 
     function computeCanonicalPackagePaths() {
-        var list = new Array(zigAnalysis.packages.length);
+        let list = new Array(zigAnalysis.packages.length);
         // Now we try to find all the packages from root.
-            var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
+            let rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
         // Breadth-first to keep the path shortest possible.
-            var stack = [{
+            let stack = [{
                 path: /** @type {string[]} */([]),
                 pkg: rootPkg,
             }];
         while (stack.length !== 0) {
-            var item = /** @type {{path: string[], pkg: Package}} */(stack.shift());
-            for (var key in item.pkg.table) {
-                var childPkgIndex = item.pkg.table[key];
+            let item = /** @type {{path: string[], pkg: Package}} */(stack.shift());
+            for (let key in item.pkg.table) {
+                let childPkgIndex = item.pkg.table[key];
                 if (list[childPkgIndex] != null) continue;
-                var childPkg = zigAnalysis.packages[childPkgIndex];
+                let childPkg = zigAnalysis.packages[childPkgIndex];
                 if (childPkg == null) continue;
 
-                var newPath = item.path.concat([key])
+                let newPath = item.path.concat([key])
                 list[childPkgIndex] = newPath;
                 stack.push({
                     path: newPath,
@@ -2074,37 +2074,37 @@ var zigAnalysis;
 
     /** @return {CanonDecl[]} */
     function computeCanonDeclPaths() {
-        var list = new Array(zigAnalysis.decls.length);
+        let list = new Array(zigAnalysis.decls.length);
         canonTypeDecls = new Array(zigAnalysis.types.length);
 
-        for (var pkgI = 0; pkgI < zigAnalysis.packages.length; pkgI += 1) {
+        for (let pkgI = 0; pkgI < zigAnalysis.packages.length; pkgI += 1) {
             if (pkgI === zigAnalysis.rootPkg && rootIsStd) continue;
-            var pkg = zigAnalysis.packages[pkgI];
-            var pkgNames = canonPkgPaths[pkgI];
-            var stack = [{
+            let pkg = zigAnalysis.packages[pkgI];
+            let pkgNames = canonPkgPaths[pkgI];
+            let stack = [{
                 declNames: /** @type {string[]} */([]),
                 type: zigAnalysis.types[pkg.main],
             }];
             while (stack.length !== 0) {
-                var item = /** @type {{declNames: string[], type: Type}} */(stack.shift());
+                let item = /** @type {{declNames: string[], type: Type}} */(stack.shift());
 
                 if (isContainerType(item.type)) {
                     let t = /** @type {ContainerType} */(item.type);
 
-                    var len = t.pubDecls ? t.pubDecls.length : 0;
-                    for (var declI = 0; declI < len; declI += 1) {
-                        var mainDeclIndex = t.pubDecls[declI];
+                    let len = t.pubDecls ? t.pubDecls.length : 0;
+                    for (let declI = 0; declI < len; declI += 1) {
+                        let mainDeclIndex = t.pubDecls[declI];
                         if (list[mainDeclIndex] != null) continue;
 
-                        var decl = zigAnalysis.decls[mainDeclIndex];
-                        var declVal = resolveValue(decl.value);
-                        var declNames = item.declNames.concat([decl.name]);
+                        let decl = zigAnalysis.decls[mainDeclIndex];
+                        let declVal = resolveValue(decl.value);
+                        let declNames = item.declNames.concat([decl.name]);
                         list[mainDeclIndex] = {
                             pkgNames: pkgNames,
                             declNames: declNames,
                         };
                         if ("type" in declVal) {
-                            var value = zigAnalysis.types[declVal.type];
+                            let value = zigAnalysis.types[declVal.type];
                             if (declCanRepresentTypeKind(value.kind))
                             {
                                 canonTypeDecls[declVal.type] = mainDeclIndex;
@@ -2149,8 +2149,8 @@ var zigAnalysis;
 
     /** @param {string} docs */
     function shortDescMarkdown(docs) {
-        var parts = docs.trim().split("\n");
-        var firstLine = parts[0];
+        let parts = docs.trim().split("\n");
+        let firstLine = parts[0];
         return markdown(firstLine);
     }
 
@@ -2172,9 +2172,9 @@ var zigAnalysis;
         // Dissect lines and determine the type for each line.
             // Also computes indentation level and removes unnecessary whitespace
 
-        var is_reading_code = false;
-        var code_indent = 0;
-        for (var line_no = 0; line_no < raw_lines.length; line_no++) {
+        let is_reading_code = false;
+        let code_indent = 0;
+        for (let line_no = 0; line_no < raw_lines.length; line_no++) {
             const raw_line = raw_lines[line_no];
 
             const line = {
@@ -2292,8 +2292,8 @@ var zigAnalysis;
             /** @type {Array<Fmt>} */
             const stack = [];
 
-            var innerHTML = "";
-            var currentRun = "";
+            let innerHTML = "";
+            let currentRun = "";
 
             function flushRun() {
                 if (currentRun != "") {
@@ -2302,11 +2302,11 @@ var zigAnalysis;
                 currentRun = "";
             }
 
-            var parsing_code = false;
-            var codetag = "";
-            var in_code = false;
+            let parsing_code = false;
+            let codetag = "";
+            let in_code = false;
 
-            for (var i = 0; i < innerText.length; i++) {
+            for (let i = 0; i < innerText.length; i++) {
 
                 if (parsing_code && in_code) {
                     if (innerText.substr(i, codetag.length) == codetag) {
@@ -2340,7 +2340,7 @@ var zigAnalysis;
                     currentRun += innerText[i];
                     in_code = true;
                 } else {
-                    var any = false;
+                    let any = false;
                     for (let idx = /** @type {number} */(stack.length > 0 ? -1 : 0); idx < formats.length; idx++) {
                         const fmt = idx >= 0 ? formats[idx] : stack[stack.length - 1];
                         if (innerText.substr(i, fmt.marker.length) == fmt.marker) {
@@ -2414,8 +2414,8 @@ var zigAnalysis;
             }
         }
 
-        var html = "";
-        for (var line_no = 0; line_no < lines.length; line_no++) {
+        let html = "";
+        for (let line_no = 0; line_no < lines.length; line_no++) {
             const line = lines[line_no];
 
 
@@ -2473,12 +2473,12 @@ var zigAnalysis;
             return;
         }
 
-        var liDom = domListSearchResults.children[curSearchIndex];
+        let liDom = domListSearchResults.children[curSearchIndex];
         if (liDom == null && domListSearchResults.children.length !== 0) {
             liDom = domListSearchResults.children[0];
         }
         if (liDom != null) {
-            var aDom = liDom.children[0];
+            let aDom = liDom.children[0];
             location.href = /** @type {string} */(aDom.getAttribute("href"));
             curSearchIndex = -1;
         }
@@ -2490,10 +2490,10 @@ var zigAnalysis;
         switch (getKeyString(ev)) {
             case "Enter":
                 // detect if this search changes anything
-                var terms1 = getSearchTerms();
+                let terms1 = getSearchTerms();
                 startSearch();
                 updateCurNav();
-                var terms2 = getSearchTerms();
+                let terms2 = getSearchTerms();
                 // we might have to wait for onHashChange to trigger
                 imFeelingLucky = (terms1.join(' ') !== terms2.join(' '));
                 if (!imFeelingLucky) activateSelectedResult();
@@ -2552,8 +2552,8 @@ var zigAnalysis;
 
     /** @param {KeyboardEvent} ev */
     function getKeyString(ev) {
-        var name;
-        var ignoreShift = false;
+        let name;
+        let ignoreShift = false;
         switch (ev.which) {
             case 13:
                 name = "Enter";
@@ -2622,42 +2622,42 @@ function startAsyncSearch() {
 }
 function startSearch() {
     clearAsyncSearch();
-    var oldHash = location.hash;
-    var parts = oldHash.split("?");
-    var newPart2 = (domSearch.value === "") ? "" : ("?" + domSearch.value);
+    let oldHash = location.hash;
+    let parts = oldHash.split("?");
+    let 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]+/);
+    let list = curNavSearch.trim().split(/[ \r\n\t]+/);
     list.sort();
     return list;
 }
 function renderSearch() {
-    var matchedItems = [];
-    var ignoreCase = (curNavSearch.toLowerCase() === curNavSearch);
-    var terms = getSearchTerms();
+    let matchedItems = [];
+    let ignoreCase = (curNavSearch.toLowerCase() === curNavSearch);
+    let terms = getSearchTerms();
 
-    decl_loop: for (var declIndex = 0; declIndex < zigAnalysis.decls.length; declIndex += 1) {
-        var canonPath = getCanonDeclPath(declIndex);
+    decl_loop: for (let declIndex = 0; declIndex < zigAnalysis.decls.length; declIndex += 1) {
+        let 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];
+        let decl = zigAnalysis.decls[declIndex];
+        let lastPkgName = canonPath.pkgNames[canonPath.pkgNames.length - 1];
+        let fullPathSearchText = lastPkgName + "." + canonPath.declNames.join('.');
+        let astNode = zigAnalysis.astNodes[decl.src];
+        let fileAndDocs = zigAnalysis.files[astNode.file];
         if (astNode.docs != null) {
             fileAndDocs += "\n" + astNode.docs;
         }
-        var fullPathSearchTextLower = fullPathSearchText;
+        let 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];
+        let points = 0;
+        for (let termIndex = 0; termIndex < terms.length; termIndex += 1) {
+            let term = terms[termIndex];
 
             // exact, case sensitive match of full decl path
             if (fullPathSearchText === term) {
@@ -2693,16 +2693,16 @@ function renderSearch() {
         resizeDomList(domListSearchResults, matchedItems.length, '<li><a href="#"></a></li>');
 
         matchedItems.sort(function(a, b) {
-            var cmp = operatorCompare(b.points, a.points);
+            let cmp = operatorCompare(b.points, a.points);
             if (cmp != 0) return cmp;
             return operatorCompare(a.decl.name, b.decl.name);
         });
 
-        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];
+        for (let i = 0; i < matchedItems.length; i += 1) {
+            let liDom = domListSearchResults.children[i];
+            let aDom = liDom.children[0];
+            let match = matchedItems[i];
+            let 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));
         }
@@ -2715,8 +2715,8 @@ function renderSearch() {
 }
 
 function renderSearchCursor() {
-    for (var i = 0; i < domListSearchResults.children.length; i += 1) {
-        var liDom = /** @type HTMLElement */(domListSearchResults.children[i]);
+    for (let i = 0; i < domListSearchResults.children.length; i += 1) {
+        let liDom = /** @type HTMLElement */(domListSearchResults.children[i]);
         if (curSearchIndex === i) {
             liDom.classList.add("selected");
         } else {
@@ -2728,10 +2728,10 @@ function renderSearchCursor() {
 
 
 // function indexNodesToCalls() {
-//     var map = {};
-//     for (var i = 0; i < zigAnalysis.calls.length; i += 1) {
-//         var call = zigAnalysis.calls[i];
-//         var fn = zigAnalysis.fns[call.fn];
+//     let map = {};
+//     for (let i = 0; i < zigAnalysis.calls.length; i += 1) {
+//         let call = zigAnalysis.calls[i];
+//         let fn = zigAnalysis.fns[call.fn];
 //         if (map[fn.src] == null) {
 //             map[fn.src] = [i];
 //         } else {
@@ -2757,8 +2757,8 @@ function byNameProperty(a, b) {
  * @returns {T}
  */
 function clone(obj) {
-    var res = /** @type T */({});
-    for (var key in obj) {
+    let res = /** @type T */({});
+    for (let key in obj) {
         res[key] = obj[key];
     }
     return res;