Преглед на файлове

API generator catches missing related/tag in methods;

bjorn преди 3 години
родител
ревизия
d09b010f22
променени са 1 файла, в които са добавени 17 реда и са изтрити 8 реда
  1. 17 8
      api/main.lua

+ 17 - 8
api/main.lua

@@ -254,20 +254,17 @@ local function validateEnum(enum)
   validateRelated(enum)
 end
 
-local function validateObject(object)
-  for _, constructor in ipairs(object.constructors or {}) do
-    warnIf(not lookup[constructor], 'Constructor for %s not found: %s', object.key, constructor)
-  end
-
-  validateRelated(object)
-end
-
 local function validateFunction(fn)
   if fn.tag then
     local found = false
     for _, section in ipairs(lookup[fn.module].sections or {}) do
       if section.tag == fn.tag then found = true break end
     end
+    for _, object in ipairs(lookup[fn.module].objects) do
+      for _, section in ipairs(object.sections or {}) do
+        if section.tag == fn.tag then found = true break end
+      end
+    end
     warnIf(not found, 'Unknown tag %s for %s', fn.tag, fn.key)
   end
 
@@ -284,6 +281,18 @@ local function validateFunction(fn)
   validateRelated(fn)
 end
 
+local function validateObject(object)
+  for _, constructor in ipairs(object.constructors or {}) do
+    warnIf(not lookup[constructor], 'Constructor for %s not found: %s', object.key, constructor)
+  end
+
+  for _, method in ipairs(object.methods or {}) do
+    validateFunction(method)
+  end
+
+  validateRelated(object)
+end
+
 local function validateModule(module)
   for _, object in ipairs(module.objects) do
     validateObject(object)