aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/analyze.cpp1
-rw-r--r--test/run_tests.cpp9
2 files changed, 10 insertions, 0 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index 7556597726..73839716e0 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -2814,6 +2814,7 @@ static TypeTableEntry *analyze_symbol_expr(CodeGen *g, ImportTableEntry *import,
return g->builtin_types.entry_invalid;
}
+ mark_impure_fn(context);
add_node_error(g, node, buf_sprintf("use of undeclared identifier '%s'", buf_ptr(variable_name)));
return g->builtin_types.entry_invalid;
}
diff --git a/test/run_tests.cpp b/test/run_tests.cpp
index 6a3528e906..3e665dbef5 100644
--- a/test/run_tests.cpp
+++ b/test/run_tests.cpp
@@ -1209,6 +1209,15 @@ const a = get_it();
#static_eval_enable(false)
fn get_it() -> Foo { Foo {.x = 13} }
)SOURCE", 1, ".tmp_source.zig:5:17: error: unable to evaluate constant expression");
+
+ add_compile_fail_case("undeclared identifier error should mark fn as impure", R"SOURCE(
+fn foo() {
+ test_a_thing();
+}
+fn test_a_thing() {
+ bad_fn_call();
+}
+ )SOURCE", 1, ".tmp_source.zig:6:5: error: use of undeclared identifier 'bad_fn_call'");
}
//////////////////////////////////////////////////////////////////////////////