authorgravatar for der.teufel.mail@gmail.comKrzysztof Wolicki <der.teufel.mail@gmail.com> 2023-09-16 17:38:06+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-09-16 17:38:06+02:00
log2651363c9d769ddb607c0eb7f93a1a90ba86b9e1
tree41c54d252001df525e132b3e3a631ef31792bf21
parentf2026e7dd650e07defeefc9913f6fb08f9b45c21
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

autodoc: Implement various missing expressions in ex (#17129)

Co-authored-by: Loris Cro <kappaloris@gmail.com>

1 files changed, 114 insertions(+), 1 deletions(-)

lib/docs/main.js+114-1
......@@ -1348,7 +1348,12 @@ Happy writing!
13481348 yield { src: "false", tag: Tag.identifier };
13491349 return;
13501350 }
1351
1351
1352 case "unreachable": {
1353 yield { src: "unreachable", tag: Tag.identifier };
1354 return;
1355 }
1356
13521357 case "&": {
13531358 yield { src: "&", tag: Tag.ampersand };
13541359 yield* ex(zigAnalysis.exprs[expr["&"]], opts);
......@@ -1490,6 +1495,59 @@ Happy writing!
14901495 yield Tok.r_bracket;
14911496 return;
14921497 }
1498
1499 case "sliceIndex": {
1500 const slice = zigAnalysis.exprs[expr.sliceIndex];
1501 yield* ex(slice, opts);
1502 return;
1503 }
1504
1505 case "slice": {
1506 const slice = expr.slice;
1507 const lhs = zigAnalysis.exprs[slice.lhs];
1508 const start = zigAnalysis.exprs[slice.start];
1509 yield* ex(lhs, opts);
1510 yield Tok.l_bracket;
1511 yield* ex(start, opts);
1512 yield Tok.period;
1513 yield Tok.period;
1514 if (slice.end !== null) {
1515 const end = zigAnalysis.exprs[slice.end];
1516 yield* ex(end, opts);
1517 }
1518 if (slice.sentinel !== null) {
1519 yield Tok.colon;
1520 const sent = zigAnalysis.exprs[slice.sentinel];
1521 yield* ex(sent, opts);
1522 }
1523 yield Tok.r_brace;
1524 return;
1525 }
1526
1527 case "sliceLength": {
1528 const slice = expr.sliceLength;
1529 const lhs = zigAnalysis.exprs[slice.lhs];
1530 const start = zigAnalysis.exprs[slice.start];
1531 const len = zigAnalysis.exprs[slice.len];
1532 yield* ex(lhs, opts);
1533 yield Tok.l_bracket;
1534 yield* ex(start, opts);
1535 yield Tok.period;
1536 yield Tok.period;
1537 yield Tok.r_bracket;
1538 yield Tok.l_bracket;
1539 yield { src: "0", tag: Tag.number_literal };
1540 yield Tok.period;
1541 yield Tok.period;
1542 yield* ex(len, opts);
1543 if (slice.sentinel !== null) {
1544 yield Tok.colon;
1545 const sent = zigAnalysis.exprs[slice.sentinel];
1546 yield* ex(sent, opts);
1547 }
1548 yield Tok.r_brace;
1549 return;
1550 }
14931551
14941552 case "string": {
14951553 yield { src: '"' + expr.string + '"', tag: Tag.string_literal };
......@@ -1952,6 +2010,55 @@ Happy writing!
19522010 return;
19532011 }
19542012
2013 case "cmpxchgIndex": {
2014 const cmpxchg = zigAnalysis.exprs[expr.cmpxchgIndex];
2015 yield* ex(cmpxchg, opts);
2016 return;
2017 }
2018
2019 case "cmpxchg": {
2020 const type = zigAnalysis.exprs[expr.cmpxchg.type];
2021 const ptr = zigAnalysis.exprs[expr.cmpxchg.ptr];
2022 const expectedValue = zigAnalysis.exprs[expr.cmpxchg.expected_value];
2023 const newValue = zigAnalysis.exprs[expr.cmpxchg.new_value];
2024 const successOrder = zigAnalysis.exprs[expr.cmpxchg.success_order];
2025 const failureOrder = zigAnalysis.exprs[expr.cmpxchg.failure_order];
2026
2027 let fnName = "@";
2028 switch (expr.cmpxchg.name) {
2029 case "cmpxchg_strong": {
2030 fnName += "cmpxchgStrong";
2031 break;
2032 }
2033 case "cmpxchg_weak": {
2034 fnName += "cmpxchgWeak";
2035 break;
2036 }
2037 default:
2038 throw "Unexpected cmpxchg name: `" + expr.cmpxchg.name + "`!";
2039 }
2040 yield { src: fnName, tag: Tag.builtin };
2041 yield Tok.l_paren;
2042 yield* ex(type, opts);
2043 yield Tok.comma;
2044 yield Tok.space;
2045 yield* ex(ptr, opts);
2046 yield Tok.comma;
2047 yield Tok.space;
2048 yield* ex(expectedValue, opts);
2049 yield Tok.comma;
2050 yield Tok.space;
2051 yield* ex(newValue, opts);
2052 yield Tok.comma;
2053 yield Tok.space;
2054 yield* ex(successOrder, opts);
2055 yield Tok.comma;
2056 yield Tok.space;
2057 yield* ex(failureOrder, opts);
2058 yield Tok.r_paren;
2059 return;
2060 }
2061
19552062 case "enumLiteral": {
19562063 let literal = expr.enumLiteral;
19572064 yield Tok.period;
......@@ -2565,6 +2672,7 @@ Happy writing!
25652672 }
25662673 }
25672674 }
2675
25682676 case "typeOf": {
25692677 const typeRefArg = zigAnalysis.exprs[expr.typeOf];
25702678 yield { src: "@TypeOf", tag: Tag.builtin };
......@@ -2573,6 +2681,11 @@ Happy writing!
25732681 yield Tok.r_paren;
25742682 return;
25752683 }
2684
2685 case "builtinField": {
2686 yield { src: expr.builtinField, tag: Tag.identifier };
2687 return;
2688 }
25762689 }
25772690
25782691