summaryrefslogtreecommitdiff
path: root/script-beta
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2020-10-28 18:08:40 +0800
committer最萌小汐 <sumneko@hotmail.com>2020-10-28 18:08:40 +0800
commit8482ecd47e0b086424ec4e79db31b0b4f6c598f0 (patch)
tree413b98320270bbc416a191eacf7f41aef4088fd4 /script-beta
parentdb5d2ccbda4b56362ded4367c208fad3f30b2e14 (diff)
downloadlua-language-server-8482ecd47e0b086424ec4e79db31b0b4f6c598f0.zip
遇到注解后不再进行推测
Diffstat (limited to 'script-beta')
-rw-r--r--script-beta/parser/guide.lua43
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