Luna
0265eddb2e
hashmap changes
2020-07-23 16:56:37 -03:00
Luna
56be677c7a
at() -> items[]
2020-07-23 16:46:46 -03:00
Luna
e0f0ae7f24
toSlice -> items
2020-07-23 16:42:59 -03:00
Luna
049a388660
more fixes for latest zig
2020-04-01 21:48:08 -03:00
Luna
5ae47fb962
zig fmt pass
2020-04-01 16:09:52 -03:00
Luna
7976b64cf6
tuple-inator pass
2020-04-01 16:09:39 -03:00
Luna
e42a97e192
use 'as' builtin
...
- move src/codegen.zig to src/codegen/llvm.zig
2019-11-25 21:42:24 -03:00
Luna
f2520e7d02
change bits and pieces everywhere about var meta
2019-09-28 22:16:33 -03:00
Luna
a95d0e7fd8
comp_ctx: make resolveVarType's return type be nullable
...
- add a parameter to prevent unwanted side-effects of resolveVarType
- add basics of resolving scope variables
2019-09-28 21:30:52 -03:00
Luna
182d831408
comp_ctx: use more pointers to variable metadata
2019-09-28 20:52:45 -03:00
Luna
ea4dd5fde4
move to llvm 9
...
- comp_ctx: add VariableMetadata.llvm_alloca
- comp_ctx: make VariableMetadataMap use ptrs to VariableMetadata
2019-09-28 20:40:07 -03:00
Luna
21dcb3e65d
codegen: emit load instruction for (now-stack) params
...
- comp_ctx: make ParameterMap use ptrs to Parameter
2019-09-28 13:30:05 -03:00
Luna
a136a377ce
change symbol table to use pointers to heap allocated symbols
2019-09-28 13:17:11 -03:00
Luna
61c8493484
add basics of stack-stored arguments
...
this requires some changes regarding the const-ability of the passed
nodes into codegen.
2019-09-28 11:40:56 -03:00
Luna
58713b20e3
add llvmvalueref to Parameter
2019-09-28 11:32:36 -03:00
Luna
d235ce0d13
add codegen for allocating vardecls onto stack (not init yet)
...
codegen pass needs type information about the variable. thankfully,
analyze pass already did the hard work for it, and scope info has types
of all its declared names. we use that info to generate the alloca
to have information about which current scope we are, we add a "child
index" to scopes so we can repoint current context at them instead of
bumpScope(), which always creates new, empty ones.
initializer exprs are next
2019-09-27 22:36:35 -03:00
Luna
849bbc0e94
add support for resolving parameters in function body
2019-09-27 20:39:16 -03:00
Luna
7def9abc5a
add "variable metadata"
...
this is inserted in the analysis pass into a map from expr ptrs to
metadata in the compilation context itself, this enables codegen to
fetch that metadata with the expr pointer
the other approach was embedding it into the variable expr itself (as
seen by VariableExpr), but that causes a compiler crash
2019-09-27 17:08:01 -03:00
Luna
362fc7e3ef
analysis: add name type resolution
...
this only adds resolution for the types. for the actual metadata, such
as e.g parameters, that isn't available, so codegen isn't helped by
this.
2019-09-27 15:12:30 -03:00
Luna
4346636cfa
analysis: add check for call expr's arguments
2019-09-27 14:31:59 -03:00
Luna
86c7f7dd6a
comp_ctx: remove Environment in favor of UnderlyingTypeMap
2019-09-27 13:39:04 -03:00
Luna
a081de93ce
comp_ctx: remove isSymUnTypeEnumSubset
2019-09-27 12:08:25 -03:00
Luna
7e41d03eb9
add proper Integer32 and Integer64 literals
2019-09-27 12:07:20 -03:00
Luna
dfb954c39c
analysis: insert "incomplete" function as soon as possible
...
by inserting it before we analyze statements, we allow ourselves to
analyze statements *with the data we already have*, for example, we can
now check the return statements' type, and see if it matches with the
functions' declared return type.
this is done via setting CompilationContext.cur_function on insertFn()
- don't just ignore function analysis if its incomplete, do an error
2019-09-26 22:00:32 -03:00
Luna
093a8003b6
ast_printer: fix children printing
...
- add scope ids for debug purposes
- add children to parent on Scope.createChild
- types: add validation of if's condition expr type
- types: add scopes to ifs
2019-09-26 21:36:26 -03:00
Luna
64e39a6f1e
ast_printer: print scopes inside functions
...
- comp_ctx: add children attr for debug info
2019-09-26 16:58:57 -03:00
Luna
97c2437d97
add basic business logic for scopes
2019-09-26 16:04:11 -03:00
Luna
e91c2dfdaf
fix errs
2019-09-26 14:32:23 -03:00
Luna
bf035abadf
add lots of TODOs for variables and type analysis of statements
...
- comp_ctx: replace Function.symbols to Function.env
2019-09-26 00:11:48 -03:00
Luna
0b72462954
codegen: add emitting of call exprs
...
- codegen: add llvm value ref table to more easily fetch function
values
- comp_ctx: add fetchGlobalSymbol
- types: use ctx.fetchGlobalSymbol
2019-09-25 18:05:56 -03:00
Luna
cb8908dc80
add type analysis for consts
...
- add the basics of recursive type resolving for expressions
- set err context for enum
2019-09-25 14:34:32 -03:00
Luna
5188dac3c0
add type analysis of enums
2019-09-25 11:59:36 -03:00
Luna
6b3d54aed7
embed FnDecl inside FunctionSymbol for correct param order
2019-09-25 10:53:10 -03:00
Luna
e2cca03d52
add type resolving for structs and fn params
...
- add a printer for the symbol table
- add error contexts to type pass
2019-09-25 00:26:30 -03:00
Luna
8afab8e4ed
comp_ctx: add FunctionSymbol.findSymbol
...
- add Variable symbol
2019-09-24 23:09:00 -03:00
Luna
c1d6939c43
add the rest of (currently nonfunctional) emitting of if stmts
...
- add compilation context and basics of type solver
2019-09-24 17:47:17 -03:00