Commit 3ca861c7dd

Andrew Kelley <andrew@ziglang.org>
2019-02-26 01:31:30
add a compile error note when C import fails and not linking libc
closes #558
1 parent 0f54728
Changed files (2)
src/ir.cpp
@@ -18705,6 +18705,10 @@ static IrInstruction *ir_analyze_instruction_c_import(IrAnalyze *ira, IrInstruct
 
     if (errors.length > 0) {
         ErrorMsg *parent_err_msg = ir_add_error_node(ira, node, buf_sprintf("C import failed"));
+        if (ira->codegen->libc_link_lib == nullptr) {
+            add_error_note(ira->codegen, parent_err_msg, node,
+                buf_sprintf("libc headers not available; compilation does not link against libc"));
+        }
         for (size_t i = 0; i < errors.length; i += 1) {
             ErrorMsg *err_msg = errors.at(i);
             err_msg_add_note(parent_err_msg, err_msg);
test/compile_errors.zig
@@ -1,6 +1,17 @@
 const tests = @import("tests.zig");
 
 pub fn addCases(cases: *tests.CompileErrorContext) void {
+    cases.addTest(
+        "libc headers note",
+        \\const c = @cImport(@cInclude("stdio.h"));
+        \\export fn entry() void {
+        \\    c.printf("hello, world!\n");
+        \\}
+    ,
+        ".tmp_source.zig:1:11: error: C import failed",
+        ".tmp_source.zig:1:11: note: libc headers not available; compilation does not link against libc",
+    );
+
     cases.addTest(
         "comptime vector overflow shows the index",
         \\comptime {