mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-21 21:24:59 -07:00
Add check to people trying to foreign import C files.
This commit is contained in:
@@ -4806,6 +4806,22 @@ gb_internal void check_add_foreign_import_decl(CheckerContext *ctx, Ast *decl) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (String const &path : fl->fullpaths) {
|
||||
String ext = path_extension(path);
|
||||
if (str_eq_ignore_case(ext, ".c") ||
|
||||
str_eq_ignore_case(ext, ".cpp") ||
|
||||
str_eq_ignore_case(ext, ".cxx") ||
|
||||
str_eq_ignore_case(ext, ".h") ||
|
||||
str_eq_ignore_case(ext, ".hpp") ||
|
||||
str_eq_ignore_case(ext, ".hxx") ||
|
||||
false
|
||||
) {
|
||||
error(fl->token, "With 'foreign import', you cannot import a %.*s file directory, you must precompile the library and link against that", LIT(ext));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// if (fl->collection_name != "system") {
|
||||
// char *c_str = gb_alloc_array(heap_allocator(), char, fullpath.len+1);
|
||||
// defer (gb_free(heap_allocator(), c_str));
|
||||
|
||||
@@ -104,6 +104,13 @@ gb_internal gb_inline bool str_eq_ignore_case(String const &a, String const &b)
|
||||
return false;
|
||||
}
|
||||
|
||||
template <isize N>
|
||||
gb_internal gb_inline bool str_eq_ignore_case(String const &a, char const (&b_)[N]) {
|
||||
String b = {cast(u8 *)b_, N-1};
|
||||
return str_eq_ignore_case(a, b);
|
||||
}
|
||||
|
||||
|
||||
gb_internal void string_to_lower(String *s) {
|
||||
for (isize i = 0; i < s->len; i++) {
|
||||
s->text[i] = gb_char_to_lower(s->text[i]);
|
||||
|
||||
Reference in New Issue
Block a user