mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 08:08:50 +00:00
Use try_to_add_package_dependency
This commit is contained in:
@@ -223,10 +223,10 @@ void add_objc_proc_type(CheckerContext *c, Ast *call, Type *return_type, Slice<T
|
|||||||
map_set(&c->info->objc_msgSend_types, call, data);
|
map_set(&c->info->objc_msgSend_types, call, data);
|
||||||
mutex_unlock(&c->info->objc_types_mutex);
|
mutex_unlock(&c->info->objc_types_mutex);
|
||||||
|
|
||||||
add_package_dependency(c, "runtime", "objc_msgSend");
|
try_to_add_package_dependency(c, "runtime", "objc_msgSend");
|
||||||
add_package_dependency(c, "runtime", "objc_msgSend_fpret");
|
try_to_add_package_dependency(c, "runtime", "objc_msgSend_fpret");
|
||||||
add_package_dependency(c, "runtime", "objc_msgSend_fp2ret");
|
try_to_add_package_dependency(c, "runtime", "objc_msgSend_fp2ret");
|
||||||
add_package_dependency(c, "runtime", "objc_msgSend_stret");
|
try_to_add_package_dependency(c, "runtime", "objc_msgSend_stret");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_constant_string(CheckerContext *c, String const &builtin_name, Ast *expr, String *name_) {
|
bool is_constant_string(CheckerContext *c, String const &builtin_name, Ast *expr, String *name_) {
|
||||||
@@ -371,9 +371,9 @@ bool check_builtin_objc_procedure(CheckerContext *c, Operand *operand, Ast *call
|
|||||||
}
|
}
|
||||||
operand->mode = Addressing_Value;
|
operand->mode = Addressing_Value;
|
||||||
|
|
||||||
add_package_dependency(c, "runtime", "objc_lookUpClass");
|
try_to_add_package_dependency(c, "runtime", "objc_lookUpClass");
|
||||||
add_package_dependency(c, "runtime", "sel_registerName");
|
try_to_add_package_dependency(c, "runtime", "sel_registerName");
|
||||||
add_package_dependency(c, "runtime", "objc_allocateClassPair");
|
try_to_add_package_dependency(c, "runtime", "objc_allocateClassPair");
|
||||||
return true;
|
return true;
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-1
@@ -733,12 +733,25 @@ void add_package_dependency(CheckerContext *c, char const *package_name, char co
|
|||||||
String n = make_string_c(name);
|
String n = make_string_c(name);
|
||||||
AstPackage *p = get_core_package(&c->checker->info, make_string_c(package_name));
|
AstPackage *p = get_core_package(&c->checker->info, make_string_c(package_name));
|
||||||
Entity *e = scope_lookup(p->scope, n);
|
Entity *e = scope_lookup(p->scope, n);
|
||||||
e->flags |= EntityFlag_Used;
|
|
||||||
GB_ASSERT_MSG(e != nullptr, "%s", name);
|
GB_ASSERT_MSG(e != nullptr, "%s", name);
|
||||||
GB_ASSERT(c->decl != nullptr);
|
GB_ASSERT(c->decl != nullptr);
|
||||||
|
e->flags |= EntityFlag_Used;
|
||||||
add_dependency(c->info, c->decl, e);
|
add_dependency(c->info, c->decl, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void try_to_add_package_dependency(CheckerContext *c, char const *package_name, char const *name) {
|
||||||
|
String n = make_string_c(name);
|
||||||
|
AstPackage *p = get_core_package(&c->checker->info, make_string_c(package_name));
|
||||||
|
Entity *e = scope_lookup(p->scope, n);
|
||||||
|
if (e == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
GB_ASSERT(c->decl != nullptr);
|
||||||
|
e->flags |= EntityFlag_Used;
|
||||||
|
add_dependency(c->info, c->decl, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void add_declaration_dependency(CheckerContext *c, Entity *e) {
|
void add_declaration_dependency(CheckerContext *c, Entity *e) {
|
||||||
if (e == nullptr) {
|
if (e == nullptr) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user