Comments (7)
It didn't work because of the introduction of the missing field diagnostic. osdate
fields returned by os.date
won't have nil
values, but you can pass a partial osdate
to os.time
. Simply updating osdate
to make the fields optional would've made it difficult to work with the value returned from os.date
(you'd have to check for nil
), so I can understand why a separate type was needed.
from lua-language-server.
That is the problem talked about pretty extensively in #1456.
from lua-language-server.
Interesting, I can't reproduce this issue.
from lua-language-server.
I can reproduce it. It's because of the fix for this issue: #2235
os.time
should probably be updated to accept osdate
as well.
from lua-language-server.
I also narrowed it down to that commit. Maybe @carsakiller can tell us why the osdate
param type didn't work and needed to be duplicated as osdateparam
?
from lua-language-server.
@firas-assaad is correct. It was necessary to prevent excessive nil checking. This seems to be a similar problem, unfortunately. os.date
can return a string
or table
(depending on the argument) but the server is unable to narrow the resulting type, leading to this warning that it could be a string.
I'm not sure if there is anything we can do with just the definitions to fix the string issue, as the return types of os.date
are correct and the argument type of os.time
is correct. We can't add a string
as an option for os.time
and we can't remove it as a return type of os.date
either.
If we add osdate
like @firas-assaad said, we can do the following:
local tDate = os.date("*t", os.time())
---@cast tDate -string
local newTime = os.time(tDate)
from lua-language-server.
I'm fine with having to cast to remove the string type. The current logic makes sense: a function may return a string, so if you pass the value to another function that only accepts tables, you'll have to add annotations to express your intent.
Now it'd be nice if we could override function definitions to say that the more specific '*t'
argument returns a table whereas any other string argument returns a string, but that's probably a different story.
from lua-language-server.
Related Issues (20)
- Trailing slash for rootUri will duplicate folder name HOT 1
- Do not shadow/re-inject fields in child-classes HOT 2
- @overload not as expected check param in class instance
- Possible typo when handling `workspace.library`
- [Feature request] Support for the upvalue limit HOT 1
- neovim补全项对比vscode下有缺漏
- generic in the loop HOT 1
- Collapsing of functions in the editor breaks if there is a comment before and after the function declaration
- How to link to treesitter folder from `workspace.library`? HOT 3
- VSCode pop-up error `Request textDocument/documentSymbol failed.` when typing
- When using alias values as its keys, Dictionary types don't give completion when defining an instance of that dictionary
- Error returning derived classes
- Optional not removed in if/elseif block for field in filter
- 目录重命名, 移动目录, 在自动修改req路径时, 新路径会出现多余字符, 或者不修改
- [Future Ruquest] Add tracking for `rawset()` in function runtime and etc
- [Feature Request] Support custom file extension
- Command line doc_out_path arg doesn't work HOT 1
- Missing fields on inherited class not resulting in diagnostics warnings
- Function with generic variable return type loses typing after first return
- ---@class with function return question
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lua-language-server.