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
signaturebadge-question-mark 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 @@...@@ -49,6 +49,16 @@
49 var typeKinds = indexTypeKinds();49 var typeKinds = indexTypeKinds();
50 var typeTypeId = findTypeTypeId();50 var typeTypeId = findTypeTypeId();
51 var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };51 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
53 // for each package, is an array with packages to get to this one63 // for each package, is an array with packages to get to this one
54 var canonPkgPaths = computeCanonicalPackagePaths();64 var canonPkgPaths = computeCanonicalPackagePaths();
...@@ -532,13 +542,17 @@...@@ -532,13 +542,17 @@
532 var fnObj = zigAnalysis.fns[value];542 var fnObj = zigAnalysis.fns[value];
533 return typeIndexName(fnObj.type, wantHtml, wantLink);543 return typeIndexName(fnObj.type, wantHtml, wantLink);
534 case typeKinds.Int:544 case typeKinds.Int:
535 if (wantHtml) {545 return token(value, tokenKinds.Number, wantHtml);
536 return '<span class="tok-number">' + value + '</span>';546 case typeKinds.Optional:
547 if(value === 'null'){
548 return token(value, tokenKinds.Null, wantHtml);
537 } else {549 } else {
538 return value + "";550 console.trace("TODO non-null optional value printing");
551 return "TODO";
539 }552 }
540 default:553 default:
541 console.trace("TODO implement getValueText for this type:", zigAnalysis.typeKinds[typeObj.kind]);554 console.trace("TODO implement getValueText for this type:", zigAnalysis.typeKinds[typeObj.kind]);
555 return "TODO";
542 }556 }
543 }557 }
544558
...@@ -546,11 +560,7 @@...@@ -546,11 +560,7 @@
546 switch (typeObj.kind) {560 switch (typeObj.kind) {
547 case typeKinds.Array:561 case typeKinds.Array:
548 var name = "[";562 var name = "[";
549 if (wantHtml) {563 name += token(typeObj.len, tokenKinds.Number, wantHtml);
550 name += '<span class="tok-number">' + typeObj.len + '</span>';
551 } else {
552 name += typeObj.len;
553 }
554 name += "]";564 name += "]";
555 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);565 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
556 return name;566 return name;
...@@ -574,111 +584,48 @@...@@ -574,111 +584,48 @@
574 break;584 break;
575 }585 }
576 if (typeObj['const']) {586 if (typeObj['const']) {
577 if (wantHtml) {587 name += token('const', tokenKinds.Keyword, wantHtml) + ' ';
578 name += '<span class="tok-kw">const</span> ';
579 } else {
580 name += "const ";
581 }
582 }588 }
583 if (typeObj['volatile']) {589 if (typeObj['volatile']) {
584 if (wantHtml) {590 name += token('volatile', tokenKinds.Keyword, wantHtml) + ' ';
585 name += '<span class="tok-kw">volatile</span> ';
586 } else {
587 name += "volatile ";
588 }
589 }591 }
590 if (typeObj.align != null) {592 if (typeObj.align != null) {
591 if (wantHtml) {593 name += token('align', tokenKinds.Keyword, wantHtml) + '(';
592 name += '<span class="tok-kw">align</span>(';594 name += token(typeObj.align, tokenKinds.Number, wantHtml);
593 } else {595
594 name += "align(";
595 }
596 if (wantHtml) {
597 name += '<span class="tok-number">' + typeObj.align + '</span>';
598 } else {
599 name += typeObj.align;
600 }
601 if (typeObj.hostIntBytes != null) {596 if (typeObj.hostIntBytes != null) {
602 name += ":";597 name += ":";
603 if (wantHtml) {598 name += token(typeObj.bitOffsetInHost, tokenKinds.Number, wantHtml);
604 name += '<span class="tok-number">' + typeObj.bitOffsetInHost + '</span>';
605 } else {
606 name += typeObj.bitOffsetInHost;
607 }
608 name += ":";599 name += ":";
609 if (wantHtml) {600 name += token(typeObj.hostIntBytes, tokenKinds.Number, wantHtml);
610 name += '<span class="tok-number">' + typeObj.hostIntBytes + '</span>';
611 } else {
612 name += typeObj.hostIntBytes;
613 }
614 }601 }
615 name += ") ";602 name += ") ";
616 }603 }
617 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);604 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
618 return name;605 return name;
619 case typeKinds.Float:606 case typeKinds.Float:
620 if (wantHtml) {607 return token('f' + typeObj.bits, tokenKinds.Type, wantHtml);
621 return '<span class="tok-type">f' + typeObj.bits + '</span>';
622 } else {
623 return "f" + typeObj.bits;
624 }
625 case typeKinds.Int:608 case typeKinds.Int:
626 var signed = (typeObj.i != null) ? 'i' : 'u';609 var signed = (typeObj.i != null) ? 'i' : 'u';
627 var bits = typeObj[signed];610 var bits = typeObj[signed];
628 if (wantHtml) {611 return token(signed + bits, tokenKinds.Type, wantHtml);
629 return '<span class="tok-type">' + signed + bits + '</span>';
630 } else {
631 return signed + bits;
632 }
633 case typeKinds.ComptimeInt:612 case typeKinds.ComptimeInt:
634 if (wantHtml) {613 return token('comptime_int', tokenKinds.Type, wantHtml);
635 return '<span class="tok-type">comptime_int</span>';
636 } else {
637 return "comptime_int";
638 }
639 case typeKinds.ComptimeFloat:614 case typeKinds.ComptimeFloat:
640 if (wantHtml) {615 return token('comptime_float', tokenKinds.Type, wantHtml);
641 return '<span class="tok-type">comptime_float</span>';
642 } else {
643 return "comptime_float";
644 }
645 case typeKinds.Type:616 case typeKinds.Type:
646 if (wantHtml) {617 return token('type', tokenKinds.Type, wantHtml);
647 return '<span class="tok-type">type</span>';
648 } else {
649 return "type";
650 }
651 case typeKinds.Bool:618 case typeKinds.Bool:
652 if (wantHtml) {619 return token('bool', tokenKinds.Type, wantHtml);
653 return '<span class="tok-type">bool</span>';
654 } else {
655 return "bool";
656 }
657 case typeKinds.Void:620 case typeKinds.Void:
658 if (wantHtml) {621 return token('void', tokenKinds.Type, wantHtml);
659 return '<span class="tok-type">void</span>';
660 } else {
661 return "void";
662 }
663 case typeKinds.EnumLiteral:622 case typeKinds.EnumLiteral:
664 if (wantHtml) {623 return token('(enum literal)', tokenKinds.Type, wantHtml);
665 return '<span class="tok-type">(enum literal)</span>';
666 } else {
667 return "(enum literal)";
668 }
669 case typeKinds.NoReturn:624 case typeKinds.NoReturn:
670 if (wantHtml) {625 return token('noreturn', tokenKinds.Type, wantHtml);
671 return '<span class="tok-type">noreturn</span>';
672 } else {
673 return "noreturn";
674 }
675 case typeKinds.ErrorSet:626 case typeKinds.ErrorSet:
676 if (typeObj.errors == null) {627 if (typeObj.errors == null) {
677 if (wantHtml) {628 return token('anyerror', tokenKinds.Type, wantHtml);
678 return '<span class="tok-type">anyerror</span>';
679 } else {
680 return "anyerror";
681 }
682 } else {629 } else {
683 if (wantHtml) {630 if (wantHtml) {
684 return escapeHtml(typeObj.name);631 return escapeHtml(typeObj.name);
...@@ -739,19 +686,11 @@...@@ -739,19 +686,11 @@
739 }686 }
740687
741 if (paramNode.noalias) {688 if (paramNode.noalias) {
742 if (wantHtml) {689 payloadHtml += token('noalias', tokenKinds.Keyword, wantHtml) + ' ';
743 payloadHtml += '<span class="tok-kw">noalias</span> ';
744 } else {
745 payloadHtml += 'noalias ';
746 }
747 }690 }
748691
749 if (paramNode.comptime) {692 if (paramNode.comptime) {
750 if (wantHtml) {693 payloadHtml += token('comptime', tokenKinds.Keyword, wantHtml) + ' ';
751 payloadHtml += '<span class="tok-kw">comptime</span> ';
752 } else {
753 payloadHtml += 'comptime ';
754 }
755 }694 }
756695
757 var paramName = paramNode.name;696 var paramName = paramNode.name;
...@@ -767,10 +706,8 @@...@@ -767,10 +706,8 @@
767 payloadHtml += '...';706 payloadHtml += '...';
768 } else if (argTypeIndex != null) {707 } else if (argTypeIndex != null) {
769 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);708 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
770 } else if (wantHtml) {
771 payloadHtml += '<span class="tok-kw">var</span>';
772 } else {709 } else {
773 payloadHtml += 'var';710 payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
774 }711 }
775 }712 }
776 }713 }
...@@ -778,10 +715,8 @@...@@ -778,10 +715,8 @@
778 payloadHtml += ') ';715 payloadHtml += ') ';
779 if (typeObj.ret != null) {716 if (typeObj.ret != null) {
780 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);717 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);
781 } else if (wantHtml) {
782 payloadHtml += '<span class="tok-kw">var</span>';
783 } else {718 } else {
784 payloadHtml += 'var';719 payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
785 }720 }
786 return payloadHtml;721 return payloadHtml;
787 default:722 default:
...@@ -2032,4 +1967,12 @@...@@ -2032,4 +1967,12 @@
2032 return key;1967 return key;
2033 }1968 }
2034 }1969 }
1970
1971 function token(value, tokenClass, wantHtml){
1972 if(wantHtml){
1973 return '<span class="' + tokenClass + '">' + value + '</span>';
1974 } else {
1975 return value + '';
1976 }
1977 }
2035})();1978})();
src/dump_analysis.cpp+12
...@@ -693,6 +693,18 @@ static void anal_dump_value(AnalDumpCtx *ctx, AstNode *source_node, ZigType *ty,...@@ -693,6 +693,18 @@ static void anal_dump_value(AnalDumpCtx *ctx, AstNode *source_node, ZigType *ty,
693 }693 }
694 return;694 return;
695 }695 }
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 }
696 default:708 default:
697 jw_null(&ctx->jw);709 jw_null(&ctx->jw);
698 return;710 return;