aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-03-18 16:56:01 +0000
committergingerBill <bill@gingerbill.org>2024-03-18 16:56:01 +0000
commit00344e1323dc6d9baf09c26f31c409f26a0a1cca (patch)
tree5d1fe0eeaabb93f802cb32f709155355b5b5a777 /src/checker.cpp
parent009b6f44e379e7644e0f2987663d52186dea5656 (diff)
Add check to people trying to `foreign import` C files.
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index 72c0ae574..fb7d401ab 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -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));