mirror of
https://github.com/Ed94/Odin.git
synced 2026-07-17 16:31:25 -07:00
v0.0.3 Build
This commit is contained in:
@@ -92,7 +92,7 @@ b32 check_is_assignable_to(Checker *c, Operand *operand, Type *type, b32 is_argu
|
||||
|
||||
if (is_type_maybe(dst)) {
|
||||
Type *elem = base_type(dst)->Maybe.elem;
|
||||
return are_types_identical(elem, src);
|
||||
return are_types_identical(elem, s);
|
||||
}
|
||||
|
||||
if (is_type_untyped_nil(src)) {
|
||||
@@ -2458,6 +2458,7 @@ Entity *check_selector(Checker *c, Operand *operand, AstNode *node) {
|
||||
GB_ASSERT(entity->type != NULL);
|
||||
b32 is_not_exported = !is_entity_exported(entity);
|
||||
|
||||
// TODO(bill): Fix this for `#import "file.odin" as .`
|
||||
if (is_not_exported) {
|
||||
auto found = map_get(&e->ImportName.scope->implicit, hash_string(sel_name));
|
||||
if (!found && e->ImportName.scope != entity->scope) {
|
||||
|
||||
+7
-2
@@ -1722,6 +1722,8 @@ ssaValue *ssa_emit_deep_field_gep(ssaProcedure *proc, Type *type, ssaValue *e, S
|
||||
e = ssa_emit_struct_ep(proc, e, index);
|
||||
} else if (type->kind == Type_Vector) {
|
||||
e = ssa_emit_array_ep(proc, e, index);
|
||||
} else if (type->kind == Type_Array) {
|
||||
e = ssa_emit_array_ep(proc, e, index);
|
||||
} else {
|
||||
GB_PANIC("un-gep-able type");
|
||||
}
|
||||
@@ -5098,6 +5100,9 @@ void ssa_gen_tree(ssaGen *s) {
|
||||
ssaValue *count = ssa_emit_struct_ep(proc, tag, 2);
|
||||
ssa_emit_store(proc, count, ssa_make_const_int(a, t->Vector.count));
|
||||
|
||||
ssaValue *align = ssa_emit_struct_ep(proc, tag, 3);
|
||||
ssa_emit_store(proc, count, ssa_make_const_int(a, type_align_of(m->sizes, a, t)));
|
||||
|
||||
} break;
|
||||
case Type_Record: {
|
||||
switch (t->Record.kind) {
|
||||
@@ -5245,8 +5250,8 @@ void ssa_gen_tree(ssaGen *s) {
|
||||
}
|
||||
|
||||
for (isize i = 0; i < count; i++) {
|
||||
ssaValue *value_gep = ssa_emit_struct_ep(proc, value_array, i);
|
||||
ssaValue *name_gep = ssa_emit_struct_ep(proc, name_array, i);
|
||||
ssaValue *value_gep = ssa_emit_array_ep(proc, value_array, i);
|
||||
ssaValue *name_gep = ssa_emit_array_ep(proc, name_array, i);
|
||||
|
||||
ssa_emit_store(proc, value_gep, ssa_make_const_i64(a, fields[i]->Constant.value.value_integer));
|
||||
ssa_emit_store(proc, name_gep, ssa_make_const_string(a, fields[i]->token.string));
|
||||
|
||||
+5
-5
@@ -37,6 +37,9 @@ TOKEN_KIND(Token__OperatorBegin, "_OperatorBegin"), \
|
||||
\
|
||||
TOKEN_KIND(Token_Prime, "'"), \
|
||||
TOKEN_KIND(Token_DoublePrime, "''"), \
|
||||
\
|
||||
TOKEN_KIND(Token_CmpAnd, "&&"), \
|
||||
TOKEN_KIND(Token_CmpOr, "||"), \
|
||||
\
|
||||
TOKEN_KIND(Token__AssignOpBegin, "_AssignOpBegin"), \
|
||||
TOKEN_KIND(Token_AddEq, "+="), \
|
||||
@@ -50,16 +53,13 @@ TOKEN_KIND(Token__AssignOpBegin, "_AssignOpBegin"), \
|
||||
TOKEN_KIND(Token_AndNotEq, "&~="), \
|
||||
TOKEN_KIND(Token_ShlEq, "<<="), \
|
||||
TOKEN_KIND(Token_ShrEq, ">>="), \
|
||||
TOKEN_KIND(Token_CmpAndEq, "&&="), \
|
||||
TOKEN_KIND(Token_CmpOrEq, "||="), \
|
||||
TOKEN_KIND(Token__AssignOpEnd, "_AssignOpEnd"), \
|
||||
TOKEN_KIND(Token_Increment, "++"), \
|
||||
TOKEN_KIND(Token_Decrement, "--"), \
|
||||
TOKEN_KIND(Token_ArrowRight, "->"), \
|
||||
TOKEN_KIND(Token_ArrowLeft, "<-"), \
|
||||
\
|
||||
TOKEN_KIND(Token_CmpAnd, "&&"), \
|
||||
TOKEN_KIND(Token_CmpOr, "||"), \
|
||||
TOKEN_KIND(Token_CmpAndEq, "&&="), \
|
||||
TOKEN_KIND(Token_CmpOrEq, "||="), \
|
||||
\
|
||||
TOKEN_KIND(Token__ComparisonBegin, "_ComparisonBegin"), \
|
||||
TOKEN_KIND(Token_CmpEq, "=="), \
|
||||
|
||||
Reference in New Issue
Block a user