diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/docs/index.html | 16 | ||||
| -rw-r--r-- | lib/docs/main.js | 31 | ||||
| -rw-r--r-- | lib/std/math/big/rational.zig | 16 |
3 files changed, 53 insertions, 10 deletions
diff --git a/lib/docs/index.html b/lib/docs/index.html index ddc0ecbfb2..00f570d100 100644 --- a/lib/docs/index.html +++ b/lib/docs/index.html @@ -359,7 +359,17 @@ #listFns dt { font-family: var(--mono); + display: flex; + flex-direction: colunm; + justify-content: space-between; + } + + #listFns dt .fnSignature { + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis; } + .argBreaker { display: none; } @@ -711,7 +721,11 @@ <h2>Examples</h2> <ul id="listFnExamples" class="examples"></ul> </div> - <div id="sectTests" class="hidden"> + <div id="sectDocTests" class="hidden"> + <h2>DocTests</h2> + <pre id="docTestsCode"></pre> + </div> + <div id="sectTests" class="hidden"> <h2>Tests</h2> <div class="table-container"> <table> diff --git a/lib/docs/main.js b/lib/docs/main.js index 28e8b32472..b02b061eb4 100644 --- a/lib/docs/main.js +++ b/lib/docs/main.js @@ -13,6 +13,8 @@ var zigAnalysis; const domListTypes = document.getElementById("listTypes"); const domSectTests = document.getElementById("sectTests"); const domListTests = document.getElementById("listTests"); + const domSectDocTests = document.getElementById("sectDocTests"); + const domDocTestsCode = document.getElementById("docTestsCode"); const domSectNamespaces = document.getElementById("sectNamespaces"); const domListNamespaces = document.getElementById("listNamespaces"); const domSectErrSets = document.getElementById("sectErrSets"); @@ -241,7 +243,8 @@ var zigAnalysis; return ( typeKind === typeKinds.Struct || typeKind === typeKinds.Union || - typeKind === typeKinds.Enum + typeKind === typeKinds.Enum || + typeKind === typeKinds.Opaque ); } @@ -384,6 +387,7 @@ var zigAnalysis; domSectPkgs.classList.add("hidden"); domSectTypes.classList.add("hidden"); domSectTests.classList.add("hidden"); + domSectDocTests.classList.add("hidden"); domSectNamespaces.classList.add("hidden"); domSectErrSets.classList.add("hidden"); domSectFns.classList.add("hidden"); @@ -452,6 +456,10 @@ var zigAnalysis; let lastIsDecl = isDecl(last); let lastIsType = isType(last); let lastIsContainerType = isContainerType(last); + + if (lastIsDecl){ + renderDocTest(last); + } if (lastIsContainerType) { return renderContainer(last); @@ -477,6 +485,14 @@ var zigAnalysis; return renderValue(last); } + + } + + function renderDocTest(decl) { + if (!("decltest" in decl)) return; + const astNode = zigAnalysis.astNodes[decl.decltest]; + domSectDocTests.classList.remove("hidden"); + domDocTestsCode.innerHTML = astNode.code; } function renderUnknownDecl(decl) { @@ -1609,8 +1625,7 @@ var zigAnalysis; } case typeKinds.Opaque: { let opaqueObj = typeObj; - - return opaqueObj.name; + return opaqueObj; } case typeKinds.ComptimeExpr: { return "anyopaque"; @@ -2421,24 +2436,26 @@ var zigAnalysis; resizeDomList( domListFns, fnsList.length, - "<div><dt></dt><dd></dd></div>" + "<div><dt><div class=\"fnSignature\"></div><div></div></dt><dd></dd></div>" ); for (let i = 0; i < fnsList.length; i += 1) { let decl = fnsList[i]; let trDom = domListFns.children[i]; - let tdFnCode = trDom.children[0]; + let tdFnSignature = trDom.children[0].children[0]; + let tdFnSrc = trDom.children[0].children[1]; let tdDesc = trDom.children[1]; let declType = resolveValue(decl.value); console.assert("type" in declType.expr); - tdFnCode.innerHTML = exprName(declType.expr, { + tdFnSignature.innerHTML = exprName(declType.expr, { wantHtml: true, wantLink: true, fnDecl: decl, linkFnNameDecl: navLinkDecl(decl.name), - }) + renderSourceFileLink(decl); + }); + tdFnSrc.innerHTML = renderSourceFileLink(decl); let docs = zigAnalysis.astNodes[decl.src].docs; if (docs != null) { diff --git a/lib/std/math/big/rational.zig b/lib/std/math/big/rational.zig index 895b20d9b5..61e2194eea 100644 --- a/lib/std/math/big/rational.zig +++ b/lib/std/math/big/rational.zig @@ -334,13 +334,13 @@ pub const Rational = struct { /// Returns math.Order.lt, math.Order.eq, math.Order.gt if a < b, a == b or a /// > b respectively. pub fn order(a: Rational, b: Rational) !math.Order { - return cmpInternal(a, b, true); + return cmpInternal(a, b, false); } /// Returns math.Order.lt, math.Order.eq, math.Order.gt if |a| < |b|, |a| == /// |b| or |a| > |b| respectively. pub fn orderAbs(a: Rational, b: Rational) !math.Order { - return cmpInternal(a, b, false); + return cmpInternal(a, b, true); } // p/q > x/y iff p*y > x*q @@ -704,6 +704,18 @@ test "big.rational order" { try testing.expect((try a.order(b)) == .eq); } +test "big.rational order/orderAbs with negative" { + var a = try Rational.init(testing.allocator); + defer a.deinit(); + var b = try Rational.init(testing.allocator); + defer b.deinit(); + + try a.setRatio(1, 1); + try b.setRatio(-2, 1); + try testing.expect((try a.order(b)) == .gt); + try testing.expect((try a.orderAbs(b)) == .lt); +} + test "big.rational add single-limb" { var a = try Rational.init(testing.allocator); defer a.deinit(); |
