aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/net/addr.odin4
-rw-r--r--core/net/dns.odin6
-rw-r--r--core/odin/ast/clone.odin2
-rw-r--r--core/odin/parser/parser.odin2
-rw-r--r--examples/demo/demo.odin4
-rw-r--r--src/parser.cpp5
6 files changed, 13 insertions, 10 deletions
diff --git a/core/net/addr.odin b/core/net/addr.odin
index e6b503aaf..be04be15e 100644
--- a/core/net/addr.odin
+++ b/core/net/addr.odin
@@ -471,7 +471,7 @@ join_port :: proc(address_or_host: string, port: int, allocator := context.alloc
// hostname
fmt.sbprintf(&b, "%v:%v", addr_or_host, port)
} else {
- switch in addr {
+ switch _ in addr {
case IP4_Address:
fmt.sbprintf(&b, "%v:%v", address_to_string(addr), port)
case IP6_Address:
@@ -606,7 +606,7 @@ to_string :: proc{address_to_string, endpoint_to_string}
family_from_address :: proc(addr: Address) -> Address_Family {
- switch in addr {
+ switch _ in addr {
case IP4_Address: return .IP4
case IP6_Address: return .IP6
case:
diff --git a/core/net/dns.odin b/core/net/dns.odin
index 6afa844fe..27713d790 100644
--- a/core/net/dns.odin
+++ b/core/net/dns.odin
@@ -96,7 +96,7 @@ resolve :: proc(hostname_and_maybe_port: string) -> (ep4, ep6: Endpoint, err: Ne
switch t in target {
case Endpoint:
// NOTE(tetra): The hostname was actually an IP address; nothing to resolve, so just return it.
- switch in t.address {
+ switch _ in t.address {
case IP4_Address: ep4 = t
case IP6_Address: ep6 = t
case: unreachable()
@@ -122,7 +122,7 @@ resolve_ip4 :: proc(hostname_and_maybe_port: string) -> (ep4: Endpoint, err: Net
switch t in target {
case Endpoint:
// NOTE(tetra): The hostname was actually an IP address; nothing to resolve, so just return it.
- switch in t.address {
+ switch _ in t.address {
case IP4_Address:
return t, nil
case IP6_Address:
@@ -149,7 +149,7 @@ resolve_ip6 :: proc(hostname_and_maybe_port: string) -> (ep6: Endpoint, err: Net
switch t in target {
case Endpoint:
// NOTE(tetra): The hostname was actually an IP address; nothing to resolve, so just return it.
- switch in t.address {
+ switch _ in t.address {
case IP4_Address:
err = .Unable_To_Resolve
return
diff --git a/core/odin/ast/clone.odin b/core/odin/ast/clone.odin
index b8c0b8087..407ddf2cc 100644
--- a/core/odin/ast/clone.odin
+++ b/core/odin/ast/clone.odin
@@ -77,7 +77,7 @@ clone_node :: proc(node: ^Node) -> ^Node {
align = elem.align
}
- #partial switch in node.derived {
+ #partial switch _ in node.derived {
case ^Package, ^File:
panic("Cannot clone this node type")
}
diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin
index 32154aff7..122e73b9c 100644
--- a/core/odin/parser/parser.odin
+++ b/core/odin/parser/parser.odin
@@ -1091,7 +1091,7 @@ parse_attribute :: proc(p: ^Parser, tok: tokenizer.Token, open_kind, close_kind:
parse_foreign_block_decl :: proc(p: ^Parser) -> ^ast.Stmt {
decl := parse_stmt(p)
- #partial switch in decl.derived_stmt {
+ #partial switch _ in decl.derived_stmt {
case ^ast.Empty_Stmt, ^ast.Bad_Stmt, ^ast.Bad_Decl:
// Ignore
return nil
diff --git a/examples/demo/demo.odin b/examples/demo/demo.odin
index e9e0a8d63..94aafe8b2 100644
--- a/examples/demo/demo.odin
+++ b/examples/demo/demo.odin
@@ -1354,13 +1354,13 @@ partial_switch :: proc() {
{ // union
Foo :: union {int, bool}
f: Foo = 123
- switch in f {
+ switch _ in f {
case int: fmt.println("int")
case bool: fmt.println("bool")
case:
}
- #partial switch in f {
+ #partial switch _ in f {
case bool: fmt.println("bool")
}
}
diff --git a/src/parser.cpp b/src/parser.cpp
index bfbd7b32a..a2de85d84 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -4382,7 +4382,10 @@ gb_internal Ast *parse_switch_stmt(AstFile *f) {
f->expr_level = -1;
defer (f->expr_level = prev_level);
- if (allow_token(f, Token_in)) {
+ if (f->curr_token.kind == Token_in) {
+ Token in_token = expect_token(f, Token_in);
+ syntax_error(in_token, "Prefer 'switch _ in' over 'switch in'");
+
auto lhs = array_make<Ast *>(heap_allocator(), 0, 1);
auto rhs = array_make<Ast *>(heap_allocator(), 0, 1);
Token blank_ident = token;