Comments (2)
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.
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)
- (@span(byte)){...} ordered field cast permits invalid, rejects valid construction HOT 1
- Executables reflect compile-time isatty conditions HOT 3
- <comptime> record parameters can't be provided; fields can't be used in runtime code HOT 1
- Copyright timespan needs update HOT 3
- Invalid unitname generated for directories that look like numeric literals HOT 1
- No line number in error if a hashmap index has a type error
- Range check error messages point to library code (point of check) rather than user code (point of error) HOT 1
- Function variables can collide with C identifiers HOT 1
- Confusing errors with varargs
- Permit function returns in generic instantiation, not just types
- Broken preprocessor after 9faaa66e HOT 3
- we need nelua debugger(vscode) or tell us how to debug my app? HOT 2
- Compatible with Lua C plug-in HOT 2
- LFS: can't change directory with `lfs.chdir` HOT 1
- error while compiling when a source file starts with a number HOT 1
- Compiler hangs when cgenerator.lua errors
- Can't compile fibonacci example
- Can't compile fibonacci example
- Support actual closures via struct
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 nelua-lang.