mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 23:58:50 +00:00
core/odin: support #type_assert and #no_type_assert
This commit is contained in:
@@ -27,6 +27,8 @@ Proc_Calling_Convention :: union {
|
|||||||
Node_State_Flag :: enum {
|
Node_State_Flag :: enum {
|
||||||
Bounds_Check,
|
Bounds_Check,
|
||||||
No_Bounds_Check,
|
No_Bounds_Check,
|
||||||
|
Type_Assert,
|
||||||
|
No_Type_Assert,
|
||||||
}
|
}
|
||||||
Node_State_Flags :: distinct bit_set[Node_State_Flag]
|
Node_State_Flags :: distinct bit_set[Node_State_Flag]
|
||||||
|
|
||||||
|
|||||||
@@ -1438,6 +1438,15 @@ parse_stmt :: proc(p: ^Parser) -> ^ast.Stmt {
|
|||||||
stmt.state_flags += {.No_Bounds_Check}
|
stmt.state_flags += {.No_Bounds_Check}
|
||||||
}
|
}
|
||||||
return stmt
|
return stmt
|
||||||
|
case "type_assert", "no_type_assert":
|
||||||
|
stmt := parse_stmt(p)
|
||||||
|
switch name {
|
||||||
|
case "type_assert":
|
||||||
|
stmt.state_flags += {.Type_Assert}
|
||||||
|
case "no_type_assert":
|
||||||
|
stmt.state_flags += {.No_Type_Assert}
|
||||||
|
}
|
||||||
|
return stmt
|
||||||
case "partial":
|
case "partial":
|
||||||
stmt := parse_stmt(p)
|
stmt := parse_stmt(p)
|
||||||
#partial switch s in stmt.derived_stmt {
|
#partial switch s in stmt.derived_stmt {
|
||||||
|
|||||||
Reference in New Issue
Block a user