Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

expression check #100

Open
itldg opened this issue Aug 30, 2023 · 1 comment
Open

expression check #100

itldg opened this issue Aug 30, 2023 · 1 comment
Labels
enhancement New feature or request

Comments

@itldg
Copy link

itldg commented Aug 30, 2023

My colleague wrote the following wrong code

I didn't realize the mistake at the time, just wanted to use it as a ternary expression.

The code execution will not report an error, but it will never get the desired result.

local a = bit.isset(data1, 0) and false or true
local b= bit.isset(data2, 7) and false or true

After the code was sent to me, I saw the code error prompt in VSCODE.

[Warn type:15], or expression is always true

[Warn type:16], and expression is always false

Can luacheck detect such errors?

@alerque alerque added the enhancement New feature or request label Sep 2, 2023
@alerque
Copy link
Member

alerque commented Sep 2, 2023

It might be possible to catch the case of pure boolean example like that one, but it would miss the same logic error in other cases and that might be worse. For example:

function no ()
    return false
end
local foo = <expr> and no() or true

Even your example seems a bit contrived because doesn't bit.issset() just return a boolean anyway? Since luacheck doen't evaluate code but only looks at the syntax we can catch some kinds of errors but not others. I would consider a PR if somebody wanted to add a catch this, but it does seem a little dicey to get into the world of catching logic bugs via syntax.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Development

No branches or pull requests

2 participants