aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/sys/windows/kernel32.odin14
-rw-r--r--examples/demo/demo.odin24
-rw-r--r--src/check_decl.cpp3
3 files changed, 21 insertions, 20 deletions
diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin
index 868d4f771..8b7df931b 100644
--- a/core/sys/windows/kernel32.odin
+++ b/core/sys/windows/kernel32.odin
@@ -474,10 +474,12 @@ foreign kernel32 {
}
-using MEMORY_RESOURCE_NOTIFICATION_TYPE :: enum c_int {
+MEMORY_RESOURCE_NOTIFICATION_TYPE :: enum c_int {
LowMemoryResourceNotification,
HighMemoryResourceNotification,
}
+LowMemoryResourceNotification :: MEMORY_RESOURCE_NOTIFICATION_TYPE.LowMemoryResourceNotification;
+HighMemoryResourceNotification :: MEMORY_RESOURCE_NOTIFICATION_TYPE.HighMemoryResourceNotification;
foreign kernel32 {
@@ -598,12 +600,16 @@ foreign kernel32 {
) -> BOOL ---;
}
-using OFFER_PRIORITY :: enum c_int {
+OFFER_PRIORITY :: enum c_int {
VmOfferPriorityVeryLow = 1,
VmOfferPriorityLow,
VmOfferPriorityBelowNormal,
VmOfferPriorityNormal,
}
+VmOfferPriorityVeryLow :: OFFER_PRIORITY.VmOfferPriorityVeryLow;
+VmOfferPriorityLow :: OFFER_PRIORITY.VmOfferPriorityLow;
+VmOfferPriorityBelowNormal :: OFFER_PRIORITY.VmOfferPriorityBelowNormal;
+VmOfferPriorityNormal :: OFFER_PRIORITY.VmOfferPriorityNormal;
foreign kernel32 {
OfferVirtualMemory :: proc(
@@ -638,9 +644,11 @@ foreign kernel32 {
) -> HANDLE ---;
}
-using WIN32_MEMORY_INFORMATION_CLASS :: enum c_int {
+WIN32_MEMORY_INFORMATION_CLASS :: enum c_int {
MemoryRegionInfo,
}
+MemoryRegionInfo :: WIN32_MEMORY_INFORMATION_CLASS.MemoryRegionInfo;
+
WIN32_MEMORY_REGION_INFORMATION :: struct {
AllocationBase: PVOID,
AllocationProtect: ULONG,
diff --git a/examples/demo/demo.odin b/examples/demo/demo.odin
index d5dc1e6c7..5ad32c604 100644
--- a/examples/demo/demo.odin
+++ b/examples/demo/demo.odin
@@ -778,16 +778,6 @@ using_statement :: proc() {
// Note: using’d fields can still be referred by name.
}
- { // using on an enum declaration
-
- using Foo :: enum {A, B, C};
-
- f0 := A;
- f1 := B;
- f2 := C;
- fmt.println(f0, f1, f2);
- fmt.println(len(Foo));
- }
}
@@ -1337,7 +1327,7 @@ bit_set_type :: proc() {
fmt.println("\n# bit_set type");
{
- using Day :: enum {
+ Day :: enum {
Sunday,
Monday,
Tuesday,
@@ -1348,20 +1338,20 @@ bit_set_type :: proc() {
};
Days :: distinct bit_set[Day];
- WEEKEND :: Days{Sunday, Saturday};
+ WEEKEND :: Days{.Sunday, .Saturday};
d: Days;
- d = {Sunday, Monday};
+ d = {.Sunday, .Monday};
e := d + WEEKEND;
- e += {Monday};
+ e += {.Monday};
fmt.println(d, e);
- ok := Saturday in e; // `in` is only allowed for `map` and `bit_set` types
+ ok := .Saturday in e; // `in` is only allowed for `map` and `bit_set` types
fmt.println(ok);
- if Saturday in e {
+ if .Saturday in e {
fmt.println("Saturday in", e);
}
- X :: Saturday in WEEKEND; // Constant evaluation
+ X :: .Saturday in WEEKEND; // Constant evaluation
fmt.println(X);
fmt.println("Cardinality:", card(e));
}
diff --git a/src/check_decl.cpp b/src/check_decl.cpp
index 2bf21c676..7e9ed0a1e 100644
--- a/src/check_decl.cpp
+++ b/src/check_decl.cpp
@@ -294,6 +294,8 @@ void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, Type *def)
// using decl
if (decl->is_using) {
+ warning(init_expr, "'using' an enum declaration is not allowed, prefer using implicit selector expressions e.g. '.A'");
+ #if 0
// NOTE(bill): Must be an enum declaration
if (te->kind == Ast_EnumType) {
Scope *parent = e->scope;
@@ -317,6 +319,7 @@ void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, Type *def)
}
}
}
+ #endif
}
}