Skip to content

Commit d0e9677

Browse files
author
efve.zff
committed
fix: use return_overload annotations in std libs, to fix overload return type inference for functions like load, io.open, etc.
1 parent ee55df9 commit d0e9677

File tree

4 files changed

+26
-27
lines changed

4 files changed

+26
-27
lines changed

crates/emmylua_code_analysis/resources/std/global.lua

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ function ipairs(t) end
164164
---@param chunkname? string
165165
---@param mode? std.loadmode
166166
---@param env? table
167-
---@return function? chunk
168-
---@return string? error_message
167+
---@return_overload function chunk
168+
---@return_overload nil, string error_message
169169
---@nodiscard
170170
function load(chunk, chunkname, mode, env) end
171171

@@ -175,8 +175,8 @@ function load(chunk, chunkname, mode, env) end
175175
---@version 5.1, JIT
176176
---@param text Language<"Lua">
177177
---@param chunkname? string
178-
---@return function? chunk
179-
---@return string? error_message
178+
---@return_overload function chunk
179+
---@return_overload nil, string error_message
180180
---@nodiscard
181181
function loadstring(text, chunkname) end
182182

@@ -186,8 +186,8 @@ function loadstring(text, chunkname) end
186186
---@param filename? string
187187
---@param mode? std.loadmode
188188
---@param env? table
189-
---@return function? chunk
190-
---@return string? error_message
189+
---@return_overload function chunk
190+
---@return_overload nil, string error_message
191191
function loadfile(filename, mode, env) end
192192

193193
---@version 5.1, JIT

crates/emmylua_code_analysis/resources/std/io.lua

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ function io.lines(filename, ...) end
7474
--- some systems to open the file in binary mode.
7575
---@param filename string
7676
---@param mode? iolib.OpenMode
77-
---@return file?
78-
---@return string? err
77+
---@return_overload file
78+
---@return_overload nil, string err
7979
function io.open(filename, mode) end
8080

8181
---
@@ -132,8 +132,8 @@ function io.type(obj) end
132132
---
133133
--- Equivalent to `io.output():write(···)`.
134134
--- @param ... string | number
135-
--- @return file?
136-
--- @return string? err
135+
--- @return_overload file
136+
--- @return_overload nil, string err
137137
function io.write(...) end
138138

139139
--- File object
@@ -148,24 +148,23 @@ local file = {}
148148
---
149149
--- When closing a file handle created with `io.popen`, `file:close` returns the
150150
--- same values returned by `os.execute`.
151-
--- @return true|nil
152-
--- @return 'exit'|'signal'
153-
--- @return integer
151+
--- @return_overload true, 'exit'|'signal', integer
152+
--- @return_overload nil, 'exit'|'signal', integer
154153
function file:close() end
155154

156155
---@version 5.1, JIT
157156
---
158157
--- Closes `file`. Note that files are automatically closed when their
159158
--- handles are garbage collected, but that takes an unpredictable amount of
160159
--- time to happen.
161-
--- @return true|nil
162-
--- @return string? err
160+
--- @return_overload true
161+
--- @return_overload nil, string err
163162
function file:close() end
164163

165164
---
166165
--- Saves any written data to `file`.
167-
--- @return true|nil
168-
--- @return string? err
166+
--- @return_overload true
167+
--- @return_overload nil, string err
169168
function file:flush() end
170169

171170
---
@@ -234,8 +233,8 @@ function file:read(...) end
234233
---@overload fun()
235234
---@param whence string | 'set' | 'cur' | 'end'
236235
---@param offset integer
237-
---@return integer? pos
238-
---@return string? err
236+
---@return_overload integer pos
237+
---@return_overload nil, string err
239238
function file:seek(whence, offset) end
240239

241240
---
@@ -261,8 +260,8 @@ function file:setvbuf(mode, size) end
261260
--- In case of success, this function returns `file`. Otherwise it returns
262261
--- **nil** plus a string describing the error.
263262
--- @param ... string | number
264-
--- @return file?
265-
--- @return string? err
263+
--- @return_overload file
264+
--- @return_overload nil, string err
266265
function file:write(...) end
267266

268267
--- * `io.stderr`: Standard error.

crates/emmylua_code_analysis/resources/std/package.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ package.searchers = {}
168168
---@param path? string
169169
---@param sep? string
170170
---@param rep? string
171-
---@return string? filename
172-
---@return string? error
171+
---@return_overload file
172+
---@return_overload nil, string err
173173
function package.searchpath(name, path, sep, rep) end
174174

175175
---@version 5.1, JIT

crates/emmylua_code_analysis/resources/std/utf8.lua

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ function utf8.codepoint(s, i, j, lax) end
7878
---@param s string
7979
---@param i? integer
8080
---@param j? integer
81-
---@return integer?
82-
---@return integer? errpos
81+
---@return_overload integer
82+
---@return_overload nil, integer errpos
8383
---@nodiscard
8484
function utf8.len(s, i, j) end
8585

@@ -88,8 +88,8 @@ function utf8.len(s, i, j) end
8888
---@param i? integer
8989
---@param j? integer
9090
---@param lax? boolean
91-
---@return integer?
92-
---@return integer? errpos
91+
---@return_overload integer
92+
---@return_overload nil, integer errpos
9393
---@nodiscard
9494
function utf8.len(s, i, j, lax) end
9595

0 commit comments

Comments
 (0)