diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2020-10-28 18:08:40 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2020-10-28 18:08:40 +0800 |
commit | 8482ecd47e0b086424ec4e79db31b0b4f6c598f0 (patch) | |
tree | 413b98320270bbc416a191eacf7f41aef4088fd4 /script-beta | |
parent | db5d2ccbda4b56362ded4367c208fad3f30b2e14 (diff) | |
download | lua-language-server-8482ecd47e0b086424ec4e79db31b0b4f6c598f0.zip |
遇到注解后不再进行推测
Diffstat (limited to 'script-beta')
-rw-r--r-- | script-beta/parser/guide.lua | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/script-beta/parser/guide.lua b/script-beta/parser/guide.lua index ace80f31..1ae9e00a 100644 --- a/script-beta/parser/guide.lua +++ b/script-beta/parser/guide.lua @@ -1492,6 +1492,7 @@ function m.checkSameSimpleByBindDocs(status, obj, start, queue, mode) force = true, } end + return true end function m.checkSameSimpleInArg1OfSetMetaTable(status, obj, start, queue) @@ -1966,27 +1967,29 @@ function m.checkSameSimple(status, simple, data, mode, results, queue) if i < #simple then cmode = 'ref' end - -- 穿透 self:func 与 mt:func - m.searchSameFieldsCrossMethod(status, ref, i, queue) - -- 穿透赋值 - m.searchSameFieldsInValue(status, ref, i, queue, cmode) - -- 检查自己是字面量表的情况 - m.checkSameSimpleInValueOfTable(status, ref, i, queue) - -- 检查自己作为 setmetatable 第一个参数的情况 - m.checkSameSimpleInArg1OfSetMetaTable(status, ref, i, queue) - -- 检查自己作为 setmetatable 调用的情况 - m.checkSameSimpleInValueOfCallMetaTable(status, ref, i, queue) - -- 检查自己是特殊变量的分支的情况 - m.checkSameSimpleInSpecialBranch(status, ref, i, queue) -- 检查 doc - m.checkSameSimpleByBindDocs(status, ref, i, queue, cmode) - if cmode == 'ref' and not status.simple then - -- 检查形如 { a = f } 的情况 - m.checkSameSimpleAsTableField(status, ref, i, queue) - -- 检查形如 return m 的情况 - m.checkSameSimpleAsReturn(status, ref, i, queue) - -- 检查形如 a = f 的情况 - m.checkSameSimpleAsSetValue(status, ref, i, queue) + local hasDoc = m.checkSameSimpleByBindDocs(status, ref, i, queue, cmode) + if not hasDoc then + -- 穿透 self:func 与 mt:func + m.searchSameFieldsCrossMethod(status, ref, i, queue) + -- 穿透赋值 + m.searchSameFieldsInValue(status, ref, i, queue, cmode) + -- 检查自己是字面量表的情况 + m.checkSameSimpleInValueOfTable(status, ref, i, queue) + -- 检查自己作为 setmetatable 第一个参数的情况 + m.checkSameSimpleInArg1OfSetMetaTable(status, ref, i, queue) + -- 检查自己作为 setmetatable 调用的情况 + m.checkSameSimpleInValueOfCallMetaTable(status, ref, i, queue) + -- 检查自己是特殊变量的分支的情况 + m.checkSameSimpleInSpecialBranch(status, ref, i, queue) + if cmode == 'ref' and not status.simple then + -- 检查形如 { a = f } 的情况 + m.checkSameSimpleAsTableField(status, ref, i, queue) + -- 检查形如 return m 的情况 + m.checkSameSimpleAsReturn(status, ref, i, queue) + -- 检查形如 a = f 的情况 + m.checkSameSimpleAsSetValue(status, ref, i, queue) + end end if i == #simple then break |