diff --git a/tests/test_ASTSymbolInitializationChecker.cpp b/tests/test_ASTSymbolInitializationChecker.cpp
index 0c71c3a693c18ad0e8611c1502368fcf757db897..8f05d87b8207bea795025d757063ae8a35b4f2b7 100644
--- a/tests/test_ASTSymbolInitializationChecker.cpp
+++ b/tests/test_ASTSymbolInitializationChecker.cpp
@@ -69,17 +69,54 @@ m = n;
     REQUIRE(not symbol_z->attributes().isInitialized());
   }
 
-  SECTION("used uninitialized")
+  SECTION("Declarative initialization")
   {
     std::string_view data = R"(
-N n;
-N m = n;
+let f: R->R, x->x+1;
 )";
 
     string_input input{data, "test.pgs"};
     auto ast = ASTBuilder::build(input);
 
     ASTSymbolTableBuilder{*ast};
-    REQUIRE_THROWS_AS(ASTSymbolInitializationChecker{*ast}, parse_error);
+    ASTSymbolInitializationChecker{*ast};
+
+    position position{internal::iterator{"fixture"}, "fixture"};
+    position.byte = data.size();   // ensure that variables are declared at this point
+
+    auto [symbol_m, found_m] = ast->m_symbol_table->find("f", position);
+    REQUIRE(found_m);
+    REQUIRE(symbol_m->attributes().isInitialized());
+  }
+
+  SECTION("errors")
+  {
+    SECTION("used uninitialized")
+    {
+      std::string_view data = R"(
+N n;
+N m = n;
+)";
+
+      string_input input{data, "test.pgs"};
+      auto ast = ASTBuilder::build(input);
+
+      ASTSymbolTableBuilder{*ast};
+      REQUIRE_THROWS_AS(ASTSymbolInitializationChecker{*ast}, parse_error);
+    }
+
+    SECTION("used uninitialized in function")
+    {
+      std::string_view data = R"(
+R y;
+let f : R->R, x->x+y;
+)";
+
+      string_input input{data, "test.pgs"};
+      auto ast = ASTBuilder::build(input);
+
+      ASTSymbolTableBuilder{*ast};
+      REQUIRE_THROWS_AS(ASTSymbolInitializationChecker{*ast}, parse_error);
+    }
   }
 }