authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-06-01 14:50:05+03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2020-06-01 14:50:05+03:00
logeb687810cfdb057b661148a759280d83e6135393
treec30433c82e711a95a720aa25f66d0e2b1be28980
parent8c5c860b00d214baa5fec3830e94761aa757b0d4
parent721c76b53c706020ceb50466e5a6245739efce05
signature Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #4976 from xackus/std-lib-docs

std lib docs: fix null and int values

2 files changed, 59 insertions(+), 104 deletions(-)

lib/std/special/docs/main.js+47-104
......@@ -49,6 +49,16 @@
4949 var typeKinds = indexTypeKinds();
5050 var typeTypeId = findTypeTypeId();
5151 var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };
52 var tokenKinds = {
53 Keyword: 'tok-kw',
54 String: 'tok-str',
55 Builtin: 'tok-builtin',
56 Comment: 'tok-comment',
57 Function: 'tok-fn',
58 Null: 'tok-null',
59 Number: 'tok-number',
60 Type: 'tok-type',
61 };
5262
5363 // for each package, is an array with packages to get to this one
5464 var canonPkgPaths = computeCanonicalPackagePaths();
......@@ -532,13 +542,17 @@
532542 var fnObj = zigAnalysis.fns[value];
533543 return typeIndexName(fnObj.type, wantHtml, wantLink);
534544 case typeKinds.Int:
535 if (wantHtml) {
536 return '<span class="tok-number">' + value + '</span>';
545 return token(value, tokenKinds.Number, wantHtml);
546 case typeKinds.Optional:
547 if(value === 'null'){
548 return token(value, tokenKinds.Null, wantHtml);
537549 } else {
538 return value + "";
550 console.trace("TODO non-null optional value printing");
551 return "TODO";
539552 }
540553 default:
541554 console.trace("TODO implement getValueText for this type:", zigAnalysis.typeKinds[typeObj.kind]);
555 return "TODO";
542556 }
543557 }
544558
......@@ -546,11 +560,7 @@
546560 switch (typeObj.kind) {
547561 case typeKinds.Array:
548562 var name = "[";
549 if (wantHtml) {
550 name += '<span class="tok-number">' + typeObj.len + '</span>';
551 } else {
552 name += typeObj.len;
553 }
563 name += token(typeObj.len, tokenKinds.Number, wantHtml);
554564 name += "]";
555565 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
556566 return name;
......@@ -574,111 +584,48 @@
574584 break;
575585 }
576586 if (typeObj['const']) {
577 if (wantHtml) {
578 name += '<span class="tok-kw">const</span> ';
579 } else {
580 name += "const ";
581 }
587 name += token('const', tokenKinds.Keyword, wantHtml) + ' ';
582588 }
583589 if (typeObj['volatile']) {
584 if (wantHtml) {
585 name += '<span class="tok-kw">volatile</span> ';
586 } else {
587 name += "volatile ";
588 }
590 name += token('volatile', tokenKinds.Keyword, wantHtml) + ' ';
589591 }
590592 if (typeObj.align != null) {
591 if (wantHtml) {
592 name += '<span class="tok-kw">align</span>(';
593 } else {
594 name += "align(";
595 }
596 if (wantHtml) {
597 name += '<span class="tok-number">' + typeObj.align + '</span>';
598 } else {
599 name += typeObj.align;
600 }
593 name += token('align', tokenKinds.Keyword, wantHtml) + '(';
594 name += token(typeObj.align, tokenKinds.Number, wantHtml);
595
601596 if (typeObj.hostIntBytes != null) {
602597 name += ":";
603 if (wantHtml) {
604 name += '<span class="tok-number">' + typeObj.bitOffsetInHost + '</span>';
605 } else {
606 name += typeObj.bitOffsetInHost;
607 }
598 name += token(typeObj.bitOffsetInHost, tokenKinds.Number, wantHtml);
608599 name += ":";
609 if (wantHtml) {
610 name += '<span class="tok-number">' + typeObj.hostIntBytes + '</span>';
611 } else {
612 name += typeObj.hostIntBytes;
613 }
600 name += token(typeObj.hostIntBytes, tokenKinds.Number, wantHtml);
614601 }
615602 name += ") ";
616603 }
617604 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
618605 return name;
619606 case typeKinds.Float:
620 if (wantHtml) {
621 return '<span class="tok-type">f' + typeObj.bits + '</span>';
622 } else {
623 return "f" + typeObj.bits;
624 }
607 return token('f' + typeObj.bits, tokenKinds.Type, wantHtml);
625608 case typeKinds.Int:
626609 var signed = (typeObj.i != null) ? 'i' : 'u';
627610 var bits = typeObj[signed];
628 if (wantHtml) {
629 return '<span class="tok-type">' + signed + bits + '</span>';
630 } else {
631 return signed + bits;
632 }
611 return token(signed + bits, tokenKinds.Type, wantHtml);
633612 case typeKinds.ComptimeInt:
634 if (wantHtml) {
635 return '<span class="tok-type">comptime_int</span>';
636 } else {
637 return "comptime_int";
638 }
613 return token('comptime_int', tokenKinds.Type, wantHtml);
639614 case typeKinds.ComptimeFloat:
640 if (wantHtml) {
641 return '<span class="tok-type">comptime_float</span>';
642 } else {
643 return "comptime_float";
644 }
615 return token('comptime_float', tokenKinds.Type, wantHtml);
645616 case typeKinds.Type:
646 if (wantHtml) {
647 return '<span class="tok-type">type</span>';
648 } else {
649 return "type";
650 }
617 return token('type', tokenKinds.Type, wantHtml);
651618 case typeKinds.Bool:
652 if (wantHtml) {
653 return '<span class="tok-type">bool</span>';
654 } else {
655 return "bool";
656 }
619 return token('bool', tokenKinds.Type, wantHtml);
657620 case typeKinds.Void:
658 if (wantHtml) {
659 return '<span class="tok-type">void</span>';
660 } else {
661 return "void";
662 }
621 return token('void', tokenKinds.Type, wantHtml);
663622 case typeKinds.EnumLiteral:
664 if (wantHtml) {
665 return '<span class="tok-type">(enum literal)</span>';
666 } else {
667 return "(enum literal)";
668 }
623 return token('(enum literal)', tokenKinds.Type, wantHtml);
669624 case typeKinds.NoReturn:
670 if (wantHtml) {
671 return '<span class="tok-type">noreturn</span>';
672 } else {
673 return "noreturn";
674 }
625 return token('noreturn', tokenKinds.Type, wantHtml);
675626 case typeKinds.ErrorSet:
676627 if (typeObj.errors == null) {
677 if (wantHtml) {
678 return '<span class="tok-type">anyerror</span>';
679 } else {
680 return "anyerror";
681 }
628 return token('anyerror', tokenKinds.Type, wantHtml);
682629 } else {
683630 if (wantHtml) {
684631 return escapeHtml(typeObj.name);
......@@ -739,19 +686,11 @@
739686 }
740687
741688 if (paramNode.noalias) {
742 if (wantHtml) {
743 payloadHtml += '<span class="tok-kw">noalias</span> ';
744 } else {
745 payloadHtml += 'noalias ';
746 }
689 payloadHtml += token('noalias', tokenKinds.Keyword, wantHtml) + ' ';
747690 }
748691
749692 if (paramNode.comptime) {
750 if (wantHtml) {
751 payloadHtml += '<span class="tok-kw">comptime</span> ';
752 } else {
753 payloadHtml += 'comptime ';
754 }
693 payloadHtml += token('comptime', tokenKinds.Keyword, wantHtml) + ' ';
755694 }
756695
757696 var paramName = paramNode.name;
......@@ -767,10 +706,8 @@
767706 payloadHtml += '...';
768707 } else if (argTypeIndex != null) {
769708 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
770 } else if (wantHtml) {
771 payloadHtml += '<span class="tok-kw">var</span>';
772709 } else {
773 payloadHtml += 'var';
710 payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
774711 }
775712 }
776713 }
......@@ -778,10 +715,8 @@
778715 payloadHtml += ') ';
779716 if (typeObj.ret != null) {
780717 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);
781 } else if (wantHtml) {
782 payloadHtml += '<span class="tok-kw">var</span>';
783718 } else {
784 payloadHtml += 'var';
719 payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
785720 }
786721 return payloadHtml;
787722 default:
......@@ -2032,4 +1967,12 @@
20321967 return key;
20331968 }
20341969 }
1970
1971 function token(value, tokenClass, wantHtml){
1972 if(wantHtml){
1973 return '<span class="' + tokenClass + '">' + value + '</span>';
1974 } else {
1975 return value + '';
1976 }
1977 }
20351978})();
src/dump_analysis.cpp+12
......@@ -693,6 +693,18 @@ static void anal_dump_value(AnalDumpCtx *ctx, AstNode *source_node, ZigType *ty,
693693 }
694694 return;
695695 }
696 case ZigTypeIdOptional: {
697 if(optional_value_is_null(value)){
698 jw_string(&ctx->jw, "null");
699 } else {
700 jw_null(&ctx->jw);
701 }
702 return;
703 }
704 case ZigTypeIdInt: {
705 jw_bigint(&ctx->jw, &value->data.x_bigint);
706 return;
707 }
696708 default:
697709 jw_null(&ctx->jw);
698710 return;