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)
- `zig cc` ld fail HOT 1
- `std.testing.expectEqual` doesn't compile for `union` with comptime-only field
- Either the implementation or description is wrong for `std.fs.path.extension` HOT 1
- fmt: Possible inconsistency with the way that error declarations are formatted HOT 2
- Bug: Disallowing dynamic linking for os==other should be allowed
- "zig cc -E" creates an unexpected object file HOT 5
- `-@as(u0,0)` unnecessarily triggers a compile error HOT 5
- Bundled macOS headers cannot be found using `#include` in assembly files
- Init templates HOT 6
- Compiler crash referencing var slice decl in struct
- Proposal: Make right shift mode explicit for signed integers HOT 3
- `expected error union type` returning a captured error in a function with a capturing `errdefer` HOT 1
- `_` allowed as an `errdefer` capture assigning it to `@"_"` rather than discarding
- `errdefer` capture is an error union instead of error set when the function returns an `@errorCast`ed error
- Functions that return generic functions produce `GenericPoison`s, can break(?) type checking
- On Mac, `lib.std.Dir.realpath` resolves firmlinks but `/bin/realpath` does not HOT 4
- `@enumFromInt(@truncate(x))` should work HOT 2
- Building C code for `powerpc-linux-gnueabi(hf)` fails due to duplicate `lgammal` symbol HOT 1
- Need a way to disambiguate dependency artifacts with the same name HOT 5
- std.posix.open runs into unreachable when used to open a tmp file 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.