Andrew Kelley
6ed202ab16
IR: implement defer
2016-12-06 21:26:17 -05:00
Andrew Kelley
24048b2af6
IR: implement break and continue
2016-12-05 18:43:16 -05:00
Andrew Kelley
0541532ed6
IR: implement generic function calls
2016-12-05 05:12:44 -05:00
Andrew Kelley
363606d87b
IR: inline function evaluation works on generic functions
2016-12-05 01:08:17 -05:00
Andrew Kelley
25a89e7a36
IR: compile time function evaluation
2016-12-04 23:52:43 -05:00
Andrew Kelley
2f259b8176
IR: re-organize where state goes to prepare for generics
...
* Rip out legacy code for generics
* put scope in instruction instead of AST nodes
* separate top level decl stuff from AST nodes
- remove the assumption that there is a 1:1 correspondence
between an output instruction and an AST node
- This way we won't have to clone AST nodes for generics.
2016-12-04 03:40:40 -05:00
Andrew Kelley
f6cbb73c74
rewrite scope implementation
...
* now there are not extra unused hash tables
* each variable declaration opens a new scope inside a function
2016-12-01 21:08:12 -05:00
Andrew Kelley
c6ace9720c
rename BlockContext to Scope
2016-12-01 13:55:56 -05:00
Andrew Kelley
eb5693d91f
IR: function call porting progress
...
also implemented container init
generics is still todo
2016-11-28 02:40:01 -05:00
Andrew Kelley
9e7c475979
IR: silence irrelevant function prototype errors
2016-11-27 01:45:29 -05:00
Andrew Kelley
bd4d4ee51e
IR: detect error for exceeding branch quota
2016-11-27 00:14:19 -05:00
Andrew Kelley
84f7805029
IR: support import builtin function
2016-11-26 20:52:22 -05:00
Andrew Kelley
bbf785bc1d
IR: switch expression works with numbers
2016-11-26 00:25:48 -05:00
Andrew Kelley
e80e8a8099
IR: fix detection of invalid codegen
2016-11-21 13:53:08 -05:00
Andrew Kelley
2f8dd46174
IR: error for uncasted null lit variable
2016-11-19 01:53:14 -05:00
Andrew Kelley
8a81f8aa13
IR: implement compileVar builtin and more
...
* implicit array to slice cast
* fix if statements at global scope
* implement array type IR
2016-11-19 01:39:51 -05:00
Andrew Kelley
d94cb0566b
IR: correctly codegening memset and memcpy
2016-11-18 22:24:41 -05:00
Andrew Kelley
62d0d88b56
IR: pointers to constants don't copy data
2016-11-17 04:00:02 -05:00
Andrew Kelley
d4f2394dcf
IR handles global variables correctly
2016-11-13 01:56:28 -05:00
Andrew Kelley
05de70017d
IR: support slice types
2016-11-07 18:58:01 -05:00
Andrew Kelley
a2e3293930
WIP moving all analysis to IR
2016-11-04 15:36:30 -04:00
Andrew Kelley
bc6c33b1b6
IR: support this literal and bool literal
2016-11-03 14:26:21 -04:00
Andrew Kelley
c8333d0cc9
add concept of inline for, inline while, inline var
2016-11-03 14:13:57 -04:00
Andrew Kelley
1a0111d4c3
*WIP*
2016-10-30 02:46:16 -04:00
Andrew Kelley
56cdaff9e7
ir: support return expression
2016-10-29 19:24:59 -04:00
Andrew Kelley
afc5507b64
ir: ability to modify global vars
2016-10-29 19:14:48 -04:00
Andrew Kelley
114049a220
IR analysis unrolls a complicated loop
2016-10-27 03:28:29 -04:00
Andrew Kelley
bfcd6648e7
IR can inline loops
2016-10-27 01:08:06 -04:00
Andrew Kelley
44d6f8ffd8
IR supports variable assignment
2016-10-23 01:33:23 -04:00
Andrew Kelley
d7a2b05a81
IR: introduce concept of lvalues
2016-10-23 00:21:29 -04:00
Andrew Kelley
a9a6f77a1f
add variable declaration initialization IR
2016-10-20 01:13:39 -04:00
Andrew Kelley
ac6d1674e3
IR working for if statements
2016-10-16 02:19:01 -04:00
Andrew Kelley
ce3c52471d
IR if statements WIP
2016-10-11 23:45:33 -04:00
Andrew Kelley
77ae3442ef
explicit casting works with IR
2016-10-09 02:20:01 -04:00
Andrew Kelley
07fe60ded1
IR in 2 passes
2016-10-06 01:09:01 -04:00
Andrew Kelley
cd1bd78aa9
simple add function works with IR
2016-10-02 23:48:48 -04:00
Andrew Kelley
633781e31d
empty function compiles successfully with IR
2016-09-30 20:12:00 -04:00
Andrew Kelley
4e2fa2d15b
*WIP*
2016-09-30 02:21:21 -04:00
Andrew Kelley
b581da41f8
remove compiler directives
...
* add `setFnTest`, `setFnVisible`, `setFnStaticEval`,
`setFnNoInline` builtin functions to replace previous
directive functionality
* add `coldcc` and `nakedcc` as keywords which can be used as part
of a function prototype.
* `setDebugSafety` builtin can be used to set debug safety features
at a per block scope level.
* closes #169
2016-09-28 02:33:32 -04:00
Andrew Kelley
183976b242
add this keyword refers to thing in immediate scope
...
See #169
2016-09-26 23:47:30 -04:00
Andrew Kelley
7ce7e2c9d1
emit error for extern function
...
with byvalue return value or parameter.
currently we don't codegen byvalue parameters or return values
correctly for C compatibilty functions so instead of generating
incorrect code, we emit a compile error.
eventually we'll support this feature and remove the compile error.
See #180
2016-09-26 20:01:42 -04:00
Andrew Kelley
7f4d4bdb3f
fix crash when doing binary not on integer literal
...
closes #201
2016-09-26 19:42:51 -04:00
Andrew Kelley
4b68224c60
add error message for method call on non method
...
closes #199
2016-09-26 01:01:02 -04:00
Andrew Kelley
01e13de7ca
refactor field access code into more generic container code
2016-09-26 00:06:37 -04:00
Andrew Kelley
683da0e4ec
ability to have struct to have a field which is slice of itself
...
closes #197
2016-09-25 13:39:46 -04:00
Andrew Kelley
e06885d64e
enums support member functions
2016-09-23 15:18:02 -04:00
Andrew Kelley
9ec6a78f12
fix compiler crash for misspelled type with pointer only reference
...
closes #196
2016-09-23 11:53:05 -04:00
Andrew Kelley
c64f6f9503
fix compile crash when leaving out for loop parameter
2016-09-22 10:40:05 -04:00
Andrew Kelley
b97bfc3ecb
fix error when switch prong has implicit cast
...
closes #194
2016-09-20 16:10:34 -04:00
Andrew Kelley
158225a203
avoid emitting "no member" errors when use import fails
...
closes #192
2016-09-19 21:23:36 -04:00