Commit bf5da90
authored
Add support for builtin functions (#2508)
This PR adds the necessary infrastructure to support builtin functions
in the lowerer and prepares the groundwork for providing language
service support for const evaluated expressions. These changes are
related because builtin function calls are a kind of const evaluated
expression.
The PR can be understood in two areas:
1. The part that prepares the groundwork for providing language service
support for const evaluated expressions, which includes two changes:
const expressions are now eagerly evaluated in the lowerer; and the
`Expr` type is augmented with the result of const evaluating the
expression, instead of just storing the final value in the AST, this
will provide the language service with the necessary span and type
information for its hover, jump to definition, and type hint features.
2. The part that adds the necessary infrastructure to support builtin
functions in the lowerer: this changes include adding a polymorphic
dispatch mechanism for QASM bultins and wiring this mechanism to the
`Lowerer::lower_function_call_expr` method.1 parent 180d8cc commit bf5da90
File tree
33 files changed
+1503
-529
lines changed- compiler/qsc_qasm/src
- semantic
- tests
- decls
- expression
- binary
- statements
- types
- stdlib
- tests
- declaration
- array
- statement
33 files changed
+1503
-529
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
816 | 816 | | |
817 | 817 | | |
818 | 818 | | |
| 819 | + | |
| 820 | + | |
819 | 821 | | |
820 | | - | |
| 822 | + | |
821 | 823 | | |
822 | | - | |
| 824 | + | |
823 | 825 | | |
824 | 826 | | |
825 | 827 | | |
826 | 828 | | |
827 | 829 | | |
828 | 830 | | |
829 | | - | |
| 831 | + | |
830 | 832 | | |
831 | 833 | | |
832 | 834 | | |
| |||
836 | 838 | | |
837 | 839 | | |
838 | 840 | | |
| 841 | + | |
| 842 | + | |
839 | 843 | | |
840 | | - | |
| 844 | + | |
841 | 845 | | |
842 | | - | |
| 846 | + | |
843 | 847 | | |
844 | 848 | | |
845 | 849 | | |
846 | 850 | | |
847 | 851 | | |
848 | 852 | | |
849 | | - | |
| 853 | + | |
850 | 854 | | |
851 | 855 | | |
852 | 856 | | |
| |||
1024 | 1028 | | |
1025 | 1029 | | |
1026 | 1030 | | |
1027 | | - | |
| 1031 | + | |
| 1032 | + | |
1028 | 1033 | | |
1029 | 1034 | | |
1030 | 1035 | | |
1031 | | - | |
| 1036 | + | |
1032 | 1037 | | |
1033 | 1038 | | |
1034 | 1039 | | |
| |||
1143 | 1148 | | |
1144 | 1149 | | |
1145 | 1150 | | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
1146 | 1157 | | |
1147 | 1158 | | |
1148 | 1159 | | |
| |||
1162 | 1173 | | |
1163 | 1174 | | |
1164 | 1175 | | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
1165 | 1183 | | |
1166 | 1184 | | |
1167 | 1185 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
479 | 479 | | |
480 | 480 | | |
481 | 481 | | |
| 482 | + | |
482 | 483 | | |
483 | 484 | | |
484 | 485 | | |
485 | 486 | | |
486 | 487 | | |
487 | 488 | | |
488 | 489 | | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
489 | 493 | | |
490 | 494 | | |
491 | 495 | | |
492 | 496 | | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
493 | 566 | | |
494 | 567 | | |
495 | 568 | | |
| |||
539 | 612 | | |
540 | 613 | | |
541 | 614 | | |
542 | | - | |
543 | | - | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
544 | 621 | | |
545 | 622 | | |
546 | 623 | | |
| |||
692 | 769 | | |
693 | 770 | | |
694 | 771 | | |
695 | | - | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
696 | 775 | | |
697 | 776 | | |
698 | 777 | | |
| |||
991 | 1070 | | |
992 | 1071 | | |
993 | 1072 | | |
| 1073 | + | |
994 | 1074 | | |
995 | 1075 | | |
996 | 1076 | | |
| |||
1007 | 1087 | | |
1008 | 1088 | | |
1009 | 1089 | | |
| 1090 | + | |
1010 | 1091 | | |
1011 | 1092 | | |
1012 | 1093 | | |
| |||
1104 | 1185 | | |
1105 | 1186 | | |
1106 | 1187 | | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | + | |
| 1192 | + | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
| 1199 | + | |
| 1200 | + | |
| 1201 | + | |
| 1202 | + | |
| 1203 | + | |
| 1204 | + | |
| 1205 | + | |
| 1206 | + | |
| 1207 | + | |
| 1208 | + | |
| 1209 | + | |
| 1210 | + | |
1107 | 1211 | | |
1108 | 1212 | | |
1109 | 1213 | | |
| |||
1216 | 1320 | | |
1217 | 1321 | | |
1218 | 1322 | | |
1219 | | - | |
1220 | | - | |
1221 | | - | |
1222 | | - | |
1223 | | - | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
1224 | 1328 | | |
1225 | 1329 | | |
1226 | 1330 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
41 | 44 | | |
42 | 45 | | |
43 | 46 | | |
| |||
50 | 53 | | |
51 | 54 | | |
52 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
53 | 75 | | |
54 | 76 | | |
55 | 77 | | |
56 | | - | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
57 | 83 | | |
58 | 84 | | |
59 | 85 | | |
| |||
72 | 98 | | |
73 | 99 | | |
74 | 100 | | |
| 101 | + | |
75 | 102 | | |
76 | 103 | | |
77 | 104 | | |
| |||
83 | 110 | | |
84 | 111 | | |
85 | 112 | | |
86 | | - | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
87 | 117 | | |
88 | 118 | | |
89 | 119 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | 33 | | |
37 | 34 | | |
38 | 35 | | |
| |||
88 | 85 | | |
89 | 86 | | |
90 | 87 | | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
91 | 97 | | |
92 | 98 | | |
93 | 99 | | |
| |||
187 | 193 | | |
188 | 194 | | |
189 | 195 | | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
190 | 200 | | |
191 | 201 | | |
192 | 202 | | |
| |||
223 | 233 | | |
224 | 234 | | |
225 | 235 | | |
226 | | - | |
227 | | - | |
228 | | - | |
229 | 236 | | |
230 | 237 | | |
231 | 238 | | |
| |||
0 commit comments