lua-language-server icon indicating copy to clipboard operation
lua-language-server copied to clipboard

一些3.4.0新增功能的语法检查异常

Open Whimsyduke opened this issue 3 years ago • 23 comments

image image 单独写lua没能复现 另外有没有强制修改类型的配置方式,比如 `---@class A local a = {} ---@class B:A

---@type string|number local c = 1

---comment ---@return A ---@return string|number local function func1() return a, c end

---comment ---@return B ---@return number local function func2() local ta, tb = func1() return ta, tb end` 在这种情况下我怎么去配置使ta、ta符合返回值类型?

Whimsyduke avatar Jun 30 '22 06:06 Whimsyduke

感觉上可以加个忽略可控类型验证的配置,不然现有代码出现太多错误了,大部分都是没验证空

Whimsyduke avatar Jun 30 '22 07:06 Whimsyduke

可以使用 ---@cast var type--[[@as type]] 转换类型,我晚点写个文档。

sumneko avatar Jun 30 '22 07:06 sumneko

image image 所有分支都return了

Whimsyduke avatar Jun 30 '22 12:06 Whimsyduke

image image 所有分支都return了

你再看看?

sumneko avatar Jun 30 '22 12:06 sumneko

呃,最后一个不是else,我的错

Whimsyduke avatar Jul 01 '22 01:07 Whimsyduke

---@type UnityEngine.Vector3
local x = Vector3.zero
x = x + x  已显式定义变量的类型为 `UnityEngine.Vector3` ,不能再将其类型转换为 `number`

算术运算都变成number了

另外number和integer不兼容,这个检查太头疼了

septbr avatar Jul 01 '22 07:07 septbr

另外number和integer不兼容,这个检查太头疼了

设置里有让 number 和 integer 兼容的选项

sumneko avatar Jul 01 '22 07:07 sumneko

算术运算都变成number了

3.5.0 会支持重载运算符,可以解决这个问题

sumneko avatar Jul 01 '22 07:07 sumneko

image 单独写lua没能复现

你在原来的代码上删除业务代码,只保留一个结构看看

sumneko avatar Jul 01 '22 07:07 sumneko

我家里没能复现,周一上班公司的提示也没了

Whimsyduke avatar Jul 04 '22 02:07 Whimsyduke

我家里没能复现,周一上班公司的提示也没了

我今天又大改了一下局部变量追踪,可能已经修复了,之后再观察一下。

sumneko avatar Jul 04 '22 12:07 sumneko

诊断速度变慢,写代码时十几秒才能诊断完

sniper00 avatar Jul 05 '22 04:07 sniper00

诊断速度变慢,写代码时十几秒才能诊断完

请开一个新的issue并提供日志与可复现此问题的演示工程

sumneko avatar Jul 05 '22 06:07 sumneko

诊断速度变慢,写代码时十几秒才能诊断完

请开一个新的issue并提供日志与可复现此问题的演示工程

示例估计太好复现,我是拿我们的项目来说的,文件比较多 500多个

sniper00 avatar Jul 05 '22 06:07 sniper00

500个应该是没问题的,我的工作项目有1500+个文件也无压力,应该是有什么隐藏的bug导致的,这个只有用示例调试才好查

sumneko avatar Jul 05 '22 06:07 sumneko

500个应该是没问题的,我的工作项目有1500+个文件也无压力,应该是有什么隐藏的bug导致的,这个只有用示例调试才好查 这个版本我们项目有 800多个诊断问题 会不会和这个有关系,我们有1500多个类型注解

sniper00 avatar Jul 05 '22 06:07 sniper00

有没有方法实现可选返回值?

sniper00 avatar Jul 05 '22 07:07 sniper00

有没有方法实现可选返回值?

---@return number?

sumneko avatar Jul 05 '22 07:07 sumneko

有没有方法实现可选返回值?

---@return number?

这种怎么处理,手动写个 return nil?

---@return BattleRecordOne?
function BattleEnemy:GetBattleRecord()
    if self.battleRecord then
        return self.battleRecord.record
    end--这里提示要返回值
end

sniper00 avatar Jul 05 '22 07:07 sniper00

---@return BattleRecordOne?
function BattleEnemy:GetBattleRecord()
    if self.battleRecord then
        return self.battleRecord.record
    end--这里提示要返回值
end

#1257

sumneko avatar Jul 05 '22 07:07 sumneko

local tm = os.date("*t", os.time())
local t = os.time(tm) -- 不能将 `string|osdate` 赋给参数 `osdate?`。

sniper00 avatar Jul 05 '22 07:07 sniper00

local tm = os.date("*t", os.time())
local t = os.time(tm) -- 不能将 `string|osdate` 赋给参数 `osdate?`。

开个单独的issue,以后版本改为分析参数来决定返回值

sumneko avatar Jul 05 '22 08:07 sumneko

Is there any other issue?

sumneko avatar Sep 19 '22 09:09 sumneko