From f0ae08ade3c0e386e137b113e7c611e0750be1c8 Mon Sep 17 00:00:00 2001
From: LJ Sonic <lamr@free.fr>
Date: Mon, 25 Mar 2024 19:08:26 +0100
Subject: [PATCH] Fix mobjs.iterate() and sector_t.ffloors()

---
 ExtractUserdata.lua | 6 +++++-
 extractFunction.lua | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/ExtractUserdata.lua b/ExtractUserdata.lua
index d460a79..0074aaa 100644
--- a/ExtractUserdata.lua
+++ b/ExtractUserdata.lua
@@ -6,6 +6,10 @@ local lpeg = require 'lpeg'
 
 local err = util.printerr
 
+local manualFieldTypes = {
+	['sector_t.ffloors'] = 'fun(): fun(): ffloor_t',
+}
+
 local descriptions = {
 	mobj_t = [[
 		This userdata type represents an Object. In the examples below, mobj is used as the name of the mobj_t variable. An access to a variable var of mobj_t is written as mobj.var.
@@ -89,7 +93,7 @@ local function extractUserdataFields(t, userdataName)
 
 		local name = extractFieldName(row.cells[1])
 
-		local fieldType = extractFieldType(row.cells[2])
+		local fieldType = manualFieldTypes[userdataName .. '.' .. name] or extractFieldType(row.cells[2])
 		if fieldType then
 			local access = util.wikiToMarkdown(row.cells[3].content, 'Userdata_structures')
 			access = 'Accessibility:' .. (access:find('\n') and '\n' or ' ') .. access
diff --git a/extractFunction.lua b/extractFunction.lua
index d4788a9..1fd1cb9 100644
--- a/extractFunction.lua
+++ b/extractFunction.lua
@@ -21,6 +21,7 @@ local manualReturnTypes = {
 	freeslot = '---@return ... int',
 	reserveLuabanks = '---@return UINT32[]',
 	['file_t:read'] = '---@return ... any',
+	['mobjs.iterate'] = '---@return fun(): mobj_t',
 }
 
 local ignoredFunctions = util.arrayToSet{
-- 
GitLab