diff --git a/src/Lib/Script/CRTPLuaScriptObject.cc b/src/Lib/Script/CRTPLuaScriptObject.cc
index 522adad5466884f52fa13b870814f1ec04494950..49889be706020830df0555093798eb43ffe3ceb6 100644
--- a/src/Lib/Script/CRTPLuaScriptObject.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject.cc
@@ -174,6 +174,20 @@ ModuleDeclaration::validateModule(lua_State *const L) const noexcept
         Utils::uniqAndSort<std::string>(usedImports);
         std::vector<std::string> unusedImports =
             Utils::sortedSetDifference(usedImports, importNames);
+
+        if (!unusedImports.empty()) {
+            std::string listStrImports = "";
+            std::size_t stringSize     = 0;
+            for (const auto &str : unusedImports)
+                stringSize += 1 + str.size();
+            listStrImports.reserve(stringSize);
+            for (const auto &str : unusedImports)
+                listStrImports += " " + str;
+
+            context->setFailed("There are imported modules that are used without being declared:" +
+                               listStrImports + "\n");
+            return false;
+        }
     }
 
     return true;