EmmyLua / VSCode-EmmyLua

Lua IDE/Debugger Plugin for VSCode
641 stars 95 forks source link

符号查找不到bug #152

Closed luqingyang closed 3 months ago

luqingyang commented 5 months ago
---@class Object
---@field __index Object @本类
---@field __name string  @类名
---@field __instance_name string @类名
---@field __class Object @本类
---@field __super Object @基类
---@field __cacheReleased? boolean
---@field constructor? fun(...)
---@field CacheNew? fun(...)
---@field CacheRelease? fun(...)
local Object = { __name = "Object" }
Object.__index = Object

---定义类
---@generic T : Object
---@param name  `T` 类名称
---@return      T   类
function class(name)
    return inherit(Object, name)
end

---@generic T
---@param super table   基类
---@param name  `T` 类名称
function inherit(super, name)
    local newClass   = {}
    newClass.__index = newClass
    newClass.__name  = name
    newClass.__class = newClass
    newClass.__super = super
    return setmetatable(newClass, super)
end

---@class WndBase : Object
---@field _wnd number
---@field _id number
WndBase = class("WndBase")

---@class WndObject : WndBase
WndObject = inherit(WndBase, "WndObject");

function WndObject:constructor(path, afterInit, parent, ...)
    -- prepare init param
    self._id = 0
    self._wnd = 0
end

如上代码,倒数第二行,第三行的self._id和self._wnd定位查找不到基类WndBase中的定义

CppCXY commented 3 months ago

我不能给你实现这个需求, 如果子类的引用查找查找到父类, 甚至父类的所有子类, 那么查找引用的结果几乎没有实用价值, 因为到处都是, 但是我可以让你在父类中查找引用时包含他的所有子类