Commit Graph

36 Commits

Author SHA1 Message Date
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