Comments (2)
Proposal:
enum Foo {
One {
x: i32,
},
Two {
x: u64,
y: u64,
},
Three,
}
enum Bar {
A = 0,
B = 2,
C = 4,
D = 8,
}
fn f() {
const foo = Foo::One { .x = 1234, };
const bar = Bar::A;
if (#enum_count(Foo) != 3) {
unreachable;
}
if (#enum_count(Bar) != 4) {
unreachable;
}
if (#sizeof(Foo) != 17) {
unreachable;
}
if (#sizeof(Bar) != 1) {
unreachable;
}
}
from zig.
New plan:
struct Point {
x: u64,
y: u64,
}
enum Foo {
One: i32,
Two: Point,
Three: void,
}
enum Bar {
A,
B,
C,
D,
}
fn f(foo: Foo) -> void {
switch (foo) {
one(x) {
},
two(point) {
},
three {
},
}
}
fn f() {
const foo1 = Foo.One(13);
const foo2 = Foo.Two(Point { .x = 1234, .y = 5678, });
const bar = Bar.A;
if (#enum_count(Foo) != 3) {
unreachable;
}
if (#enum_count(Bar) != 4) {
unreachable;
}
if (#sizeof(Foo) != 17) {
unreachable;
}
if (#sizeof(Bar) != 1) {
unreachable;
}
}
No longer allowed to assign to enum values. They're always ordered with 0 as the first one, N - 1 as the last one, and #enum_count(...)
gives you N.
from zig.
Related Issues (20)
- build runners are cached causing overrides to be ignored
- Allow modules to have private and public include directories
- Zig's static analysis for undefined memory access doesn't error where C++'s tooling does error HOT 6
- shift an integer by 32 gives error HOT 3
- Panicked during panic during building zig hello world project HOT 1
- Function pointer to inline function causes linker error HOT 3
- Function pointer call in C macro doesn't get unwrapped
- eliminate absolute paths from the build system HOT 1
- `Dir.makePath` handles `..` in the sub_path differently per-platform HOT 3
- lldb control flow branch-skip unexpectely ends **inside** control flow block HOT 4
- [windows, 0.12-dev] error: root struct of file 'zig.system' has no member named 'NativeTargetInfo' HOT 2
- build: probabilistic inconsistent cache state on Windows (repeatedly AccessDenied) from modifying build.zig during running `zig build runcmiti` HOT 1
- C source file of module dependency has wrong path
- compiler crash lowering extern pointer to any opaque (recently working) HOT 8
- cannot bitcast from enum to packed struct HOT 4
- zig MSVC target: undefined symbol HOT 3
- Compiler can't fetch shared library with version on it ! ( libfoo.so.x.y ) HOT 3
- lldb control flow branch-skip unexpectely ends **inside** control flow block
- `@addWithOverflow` is slower than `std.math.add` even though builtins should be preferred over stdlib functions HOT 11
- Zig errors on not finding c header files, but works if the include path parameter is after --mod param in cli HOT 2
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 zig.