aboutsummaryrefslogtreecommitdiff
path: root/src/check_builtin.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2022-02-14 11:21:21 +0000
committergingerBill <gingerBill@users.noreply.github.com>2022-02-14 11:21:21 +0000
commit7386ca9272c527800720c0dd53a9ad351345aa41 (patch)
treea50a4cb898f3de73e6b9fae52693a264949e8261 /src/check_builtin.cpp
parentfd8b2e0b8877de145163d64e5c64508b6c9dff91 (diff)
Add new objc intrinsics: objc_(register|find)_(selector|class)
Diffstat (limited to 'src/check_builtin.cpp')
-rw-r--r--src/check_builtin.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp
index a9ee5d25f..a6b1759f5 100644
--- a/src/check_builtin.cpp
+++ b/src/check_builtin.cpp
@@ -348,13 +348,27 @@ bool check_builtin_objc_procedure(CheckerContext *c, Operand *operand, Ast *call
return true;
} break;
- case BuiltinProc_objc_selector_name: {
+ case BuiltinProc_objc_find_selector:
+ case BuiltinProc_objc_find_class:
+ case BuiltinProc_objc_register_selector:
+ case BuiltinProc_objc_register_class:
+ {
String sel_name = {};
if (!is_constant_string(c, builtin_name, ce->args[0], &sel_name)) {
return false;
}
- operand->type = t_objc_SEL;
+ switch (id) {
+ case BuiltinProc_objc_find_selector:
+ case BuiltinProc_objc_register_selector:
+ operand->type = t_objc_SEL;
+ break;
+ case BuiltinProc_objc_find_class:
+ case BuiltinProc_objc_register_class:
+ operand->type = t_objc_Class;
+ break;
+
+ }
operand->mode = Addressing_Value;
return true;
} break;
@@ -398,7 +412,10 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32
case BuiltinProc_max:
case BuiltinProc_type_is_subtype_of:
case BuiltinProc_objc_send:
- case BuiltinProc_objc_selector_name:
+ case BuiltinProc_objc_find_selector:
+ case BuiltinProc_objc_find_class:
+ case BuiltinProc_objc_register_selector:
+ case BuiltinProc_objc_register_class:
// NOTE(bill): The first arg may be a Type, this will be checked case by case
break;
@@ -440,7 +457,10 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32
break;
case BuiltinProc_objc_send:
- case BuiltinProc_objc_selector_name:
+ case BuiltinProc_objc_find_selector:
+ case BuiltinProc_objc_find_class:
+ case BuiltinProc_objc_register_selector:
+ case BuiltinProc_objc_register_class:
return check_builtin_objc_procedure(c, operand, call, id, type_hint);
case BuiltinProc___entry_point: