mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-06 18:54:12 +00:00
Raise error on spaced UNIX-style flag with no value
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package flags
|
||||
|
||||
import "core:container/bit_array"
|
||||
import "core:fmt"
|
||||
|
||||
Parsing_Style :: enum {
|
||||
// Odin-style: `-flag`, `-flag:option`, `-map:key=value`
|
||||
@@ -71,9 +72,15 @@ parse :: proc(
|
||||
return
|
||||
}
|
||||
|
||||
for /**/; future_args > 0; future_args -= 1 {
|
||||
for starting_future_args := future_args; future_args > 0; future_args -= 1 {
|
||||
i += 1
|
||||
if i == len(args) {
|
||||
if future_args == starting_future_args {
|
||||
return Parse_Error {
|
||||
.No_Value,
|
||||
fmt.tprintf("Expected a value for `%s` but none was given.", current_flag),
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
#no_bounds_check arg = args[i]
|
||||
|
||||
@@ -1055,6 +1055,23 @@ test_unix_double_dash_variadic :: proc(t: ^testing.T) {
|
||||
testing.expect_value(t, s.varg[2], "5")
|
||||
}
|
||||
|
||||
@(test)
|
||||
test_unix_no_value :: proc(t: ^testing.T) {
|
||||
S :: struct {
|
||||
i: int,
|
||||
}
|
||||
s: S
|
||||
|
||||
args := [?]string { "--i" }
|
||||
|
||||
result := flags.parse(&s, args[:], .Unix)
|
||||
err, ok := result.(flags.Parse_Error)
|
||||
testing.expectf(t, ok, "unexpected result: %v", result)
|
||||
if ok {
|
||||
testing.expect_value(t, err.reason, flags.Parse_Error_Reason.No_Value)
|
||||
}
|
||||
}
|
||||
|
||||
// This test ensures there are no bad frees with cstrings.
|
||||
@(test)
|
||||
test_if_dynamic_cstrings_get_freed :: proc(t: ^testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user