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

Type narrowing breaks on equivalence to false.

Open abledbody opened this issue 2 months ago • 0 comments

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

Windows

What is the issue affecting?

Type Checking

Expected Behaviour

When x is a boolean, if x == false then should identify x as false in its true block, and true in its false block.

Actual Behaviour

In the true block, x is identified as true, and in the false block, x is identified as boolean.

Reproduction steps

  1. Paste this code into the editor
local x ---@type boolean

if x == false then
	local y = x
	-- y is type `true`, should be type `false`
else
	local y = x
	-- y is type 'boolean', should be type 'true'
end
  1. Hover over y to inspect its type.

Additional Notes

This doesn't just happen with boolean types. It can happen to any type that can be false, such as integer|false|nil.

Log File

No response

abledbody avatar Nov 05 '25 04:11 abledbody