GithubHelp home page GithubHelp logo

Comments (2)

jrfondren avatar jrfondren commented on August 10, 2024

You're looking for nilptr:

$ nelua -i 'local p: *integer  local x = p == nilptr  print(x)'
true
$ nelua --print-code -i 'local p: *integer  local x = p == nilptr  print(x)'|grep NULL
  eval_B6wLM8M3v3j_x = (eval_B6wLM8M3v3j_p == (nlint64_ptr)NULL);

nil and == have more Lua-like semantics. As only nil can be equal to nil, your code reduces to constant false (with some overhead, I imagine, to ensure execution of side effects and to pacify dead code elimination).

I'm not a huge fan of this behavior, especially in cases like

$ nelua -i 'local notastring = "b"_u8  assert(notastring == "b")'
eval_BQds3GgUC6y:1:46: runtime error: assertion failed!

where I've forgotten _u8 and silently had tests would never succeed, instead of a clear type error:

$ rdmd --eval 'byte notastring; writeln(notastring == "b")'
/tmp/.rdmd-1000/eval.19B690DD18DF18E03E108A2FE7BF74DB.d(18): Error: incompatible types for `(notastring) == ("b")`: `byte` and `string`

from nelua-lang.

edubart avatar edubart commented on August 10, 2024

Not a bug, nil is not the same as nilptr, nil is like an empty value without even a known type. While nilptr is an empty pointer, it does have a type. The are different because they have different types, however both will collapse to false when trying to convert to a boolean, so you could do this instead:

local p: *integer
local x = not p

from nelua-lang.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.