From bbffd428d325fd9080597c31f2f742b2c2f5db5f Mon Sep 17 00:00:00 2001 From: Estebanfer Date: Thu, 28 Nov 2024 01:56:30 -0300 Subject: [PATCH 1/2] fix missing-fields diagnostic not warning about missing inherited fields Also added tests for it --- script/core/diagnostics/missing-fields.lua | 5 +- test/diagnostics/missing-fields.lua | 112 ++++++++++++++++++++- 2 files changed, 114 insertions(+), 3 deletions(-) diff --git a/script/core/diagnostics/missing-fields.lua b/script/core/diagnostics/missing-fields.lua index 089d14d43..2459f7cf8 100644 --- a/script/core/diagnostics/missing-fields.lua +++ b/script/core/diagnostics/missing-fields.lua @@ -41,7 +41,8 @@ return function (uri, callback) for className, samedefs in pairs(sortedDefs) do local missedKeys = {} for _, def in ipairs(samedefs) do - if not def.fields or #def.fields == 0 then + local fields = vm.getFields(def) + if #fields == 0 then goto continue end @@ -55,7 +56,7 @@ return function (uri, callback) end end - for _, field in ipairs(def.fields) do + for _, field in ipairs(fields) do if not field.optional and not vm.compileNode(field):isNullable() then local key = vm.getKeyName(field) diff --git a/test/diagnostics/missing-fields.lua b/test/diagnostics/missing-fields.lua index 8c1ffbbb1..4b460531c 100644 --- a/test/diagnostics/missing-fields.lua +++ b/test/diagnostics/missing-fields.lua @@ -352,4 +352,114 @@ TEST[[ ---@type A local t = -]] \ No newline at end of file +]] + +-- Inheritance + +TEST[[ +---@class A +---@field x number + +---@class B: A + +---@type B +local t = +]] + +TEST[[ +---@class A +---@field x number +---@field y number + +---@class B: A + +---@type B +local t = +]] + +TEST[[ +---@class A +---@field x number + +---@class B: A +---@field y number + +---@type B +local t = +]] + +-- Inheritance + optional + +TEST[[ +---@class A +---@field x? number + +---@class B: A + +---@type B +local t = {} +]] + +TEST[[ +---@class A +---@field x? number +---@field y number + +---@class B: A + +---@type B +local t = {y = 1} +]] + +TEST[[ +---@class A +---@field x? number + +---@class B: A +---@field y number + +---@type B +local t = {y = 1} +]] + +-- Inheritance + function call + +TEST[[ +---@class A +---@field x number + +---@class B: A + +---@param b B +local function f(b) end + +f +]] + +TEST[[ +---@class A +---@field x number +---@field y number + +---@class B: A + +---@param b B +local function f(b) end + +f +]] + +TEST[[ +---@class A +---@field x number + +---@class B: A +---@field y number + +---@param b B +local function f(b) end + +f +]] + +-- From 3808bf3e378f0e29ac4a46dc78e98868689060cb Mon Sep 17 00:00:00 2001 From: Estebanfer Date: Thu, 28 Nov 2024 02:12:24 -0300 Subject: [PATCH 2/2] update changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index c975a2681..8cf6d7907 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ ## Unreleased +* `FIX` missing-fields diagnostic now warns about missing inherited fields ## 3.13.2 `2024-11-21`