Add basic package support (no IR support yet)

This commit is contained in:
gingerBill
2018-05-26 23:12:55 +01:00
parent 5b6770f3d2
commit c067b90403
20 changed files with 698 additions and 818 deletions

View File

@@ -6,6 +6,7 @@ struct DeclInfo;
#define ENTITY_KINDS \
ENTITY_KIND(Invalid) \
ENTITY_KIND(Package) \
ENTITY_KIND(Constant) \
ENTITY_KIND(Variable) \
ENTITY_KIND(TypeName) \
@@ -85,6 +86,12 @@ struct Entity {
String deprecated_message;
union {
struct {
String fullpath;
String name;
Scope *scope;
// Array<Entity *> imports; // Entity_Package
} Package;
struct {
ExactValue value;
} Constant;
@@ -189,6 +196,15 @@ Entity *alloc_entity(EntityKind kind, Scope *scope, Token token, Type *type) {
return entity;
}
Entity *alloc_entity_package(Scope *scope, Type *type, String fullpath, String name) {
Token token = empty_token;
token.string = name;
Entity *entity = alloc_entity(Entity_Package, scope, token, type);
entity->Package.fullpath = fullpath;
entity->Package.name = name;
return entity;
}
Entity *alloc_entity_variable(Scope *scope, Token token, Type *type, bool is_immutable, EntityState state = EntityState_Unresolved) {
Entity *entity = alloc_entity(Entity_Variable, scope, token, type);
entity->Variable.is_immutable = is_immutable;