mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 15:18:49 +00:00
Fix using import override "bug"
This commit is contained in:
@@ -8,6 +8,7 @@ foreign _ {
|
|||||||
swap :: proc[swap16, swap32, swap64];
|
swap :: proc[swap16, swap32, swap64];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set :: proc "contextless" (data: rawptr, value: byte, len: int) -> rawptr {
|
set :: proc "contextless" (data: rawptr, value: byte, len: int) -> rawptr {
|
||||||
if data == nil do return nil;
|
if data == nil do return nil;
|
||||||
if len < 0 do return data;
|
if len < 0 do return data;
|
||||||
@@ -26,6 +27,13 @@ set :: proc "contextless" (data: rawptr, value: byte, len: int) -> rawptr {
|
|||||||
zero :: proc "contextless" (data: rawptr, len: int) -> rawptr {
|
zero :: proc "contextless" (data: rawptr, len: int) -> rawptr {
|
||||||
return set(data, 0, len);
|
return set(data, 0, len);
|
||||||
}
|
}
|
||||||
|
zero_slice :: proc "contextless" (data: $T/[]$E) {
|
||||||
|
if n := len(data); n > 0 {
|
||||||
|
zero(&data[0], size_of(E)*n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
copy :: proc "contextless" (dst, src: rawptr, len: int) -> rawptr {
|
copy :: proc "contextless" (dst, src: rawptr, len: int) -> rawptr {
|
||||||
if src == nil do return dst;
|
if src == nil do return dst;
|
||||||
// NOTE(bill): This _must_ be implemented like C's memmove
|
// NOTE(bill): This _must_ be implemented like C's memmove
|
||||||
|
|||||||
+10
-1
@@ -299,7 +299,16 @@ void override_entity_in_scope(Entity *original_entity, Entity *new_entity) {
|
|||||||
Scope *found_scope = nullptr;
|
Scope *found_scope = nullptr;
|
||||||
Entity *found_entity = nullptr;
|
Entity *found_entity = nullptr;
|
||||||
scope_lookup_parent(original_entity->scope, original_name, &found_scope, &found_entity);
|
scope_lookup_parent(original_entity->scope, original_name, &found_scope, &found_entity);
|
||||||
GB_ASSERT(found_entity == original_entity);
|
|
||||||
|
// IMPORTANT TODO(bill)
|
||||||
|
// Date: 2018-09-29
|
||||||
|
// This assert fails on `using import` if the name of the alias is the same. What should be the expected behaviour?
|
||||||
|
// Namespace collision or override? Overridding is the current behaviour
|
||||||
|
//
|
||||||
|
// using import "foo"
|
||||||
|
// bar :: foo.bar;
|
||||||
|
|
||||||
|
// GB_ASSERT_MSG(found_entity == original_entity, "%.*s == %.*s", LIT(found_entity->token.string), LIT(new_entity->token.string));
|
||||||
|
|
||||||
map_set(&found_scope->elements, hash_string(original_name), new_entity);
|
map_set(&found_scope->elements, hash_string(original_name), new_entity);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user