mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
builtin: change IError msg
and code
to methods + fix vlib, add a deprecation notice for the old usages (#13041)
This commit is contained in:
@@ -11,23 +11,28 @@ pub:
|
||||
}
|
||||
|
||||
struct UnkownFlagError {
|
||||
msg string
|
||||
code int
|
||||
Error
|
||||
flag string
|
||||
}
|
||||
|
||||
struct MinimumArgsCountError {
|
||||
msg string
|
||||
code int
|
||||
fn (err UnkownFlagError) msg() string {
|
||||
return 'Unknown flag `$err.flag`'
|
||||
}
|
||||
|
||||
struct MaximumArgsCountError {
|
||||
msg string
|
||||
code int
|
||||
struct ArgsCountError {
|
||||
Error
|
||||
got int
|
||||
want int
|
||||
}
|
||||
|
||||
struct NoArgsExpectedError {
|
||||
msg string
|
||||
code int
|
||||
fn (err ArgsCountError) msg() string {
|
||||
if err.want == 0 {
|
||||
return 'Expected no arguments, but got $err.got'
|
||||
} else if err.got > err.want {
|
||||
return 'Expected at most $err.want arguments, but got $err.got'
|
||||
} else {
|
||||
return 'Expected at least $err.want arguments, but got $err.got'
|
||||
}
|
||||
}
|
||||
|
||||
// free frees the resources associated with a given Flag
|
||||
@@ -616,24 +621,27 @@ pub fn (mut fs FlagParser) finalize() ?[]string {
|
||||
for a in remaining {
|
||||
if (a.len >= 2 && a[..2] == '--') || (a.len == 2 && a[0] == `-`) {
|
||||
return IError(&UnkownFlagError{
|
||||
msg: 'Unknown flag `$a`'
|
||||
flag: a
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
if remaining.len < fs.min_free_args && fs.min_free_args > 0 {
|
||||
return IError(&MinimumArgsCountError{
|
||||
msg: 'Expected at least $fs.min_free_args arguments, but given $remaining.len'
|
||||
return IError(&ArgsCountError{
|
||||
want: fs.min_free_args
|
||||
got: remaining.len
|
||||
})
|
||||
}
|
||||
if remaining.len > fs.max_free_args && fs.max_free_args > 0 {
|
||||
return IError(&MaximumArgsCountError{
|
||||
msg: 'Expected at most $fs.max_free_args arguments, but given $remaining.len'
|
||||
return IError(&ArgsCountError{
|
||||
want: fs.max_free_args
|
||||
got: remaining.len
|
||||
})
|
||||
}
|
||||
if remaining.len > 0 && fs.max_free_args == 0 && fs.min_free_args == 0 {
|
||||
return IError(&NoArgsExpectedError{
|
||||
msg: 'Expected no arguments, but given $remaining.len'
|
||||
return IError(&ArgsCountError{
|
||||
want: 0
|
||||
got: remaining.len
|
||||
})
|
||||
}
|
||||
remaining << fs.all_after_dashdash
|
||||
@@ -647,7 +655,7 @@ pub fn (mut fs FlagParser) finalize() ?[]string {
|
||||
// you want more control over the error handling.
|
||||
pub fn (mut fs FlagParser) remaining_parameters() []string {
|
||||
return fs.finalize() or {
|
||||
eprintln(err.msg)
|
||||
eprintln(err.msg())
|
||||
println(fs.usage())
|
||||
exit(1)
|
||||
}
|
||||
|
@@ -137,7 +137,7 @@ fn test_finalize_returns_error_for_unknown_flags_long() {
|
||||
mut fp := flag.new_flag_parser(['--known', '--unknown'])
|
||||
fp.bool('known', 0, false, '')
|
||||
finalized := fp.finalize() or {
|
||||
assert err.msg == 'Unknown flag `--unknown`'
|
||||
assert err.msg() == 'Unknown flag `--unknown`'
|
||||
return
|
||||
}
|
||||
assert finalized.len < 0 // expect error to be returned
|
||||
@@ -147,7 +147,7 @@ fn test_finalize_returns_error_for_unknown_flags_short() {
|
||||
mut fp := flag.new_flag_parser(['--known', '-x'])
|
||||
fp.bool('known', 0, false, '')
|
||||
finalized := fp.finalize() or {
|
||||
assert err.msg == 'Unknown flag `-x`'
|
||||
assert err.msg() == 'Unknown flag `-x`'
|
||||
return
|
||||
}
|
||||
assert finalized.len < 0 // expect error to be returned
|
||||
@@ -210,7 +210,7 @@ fn test_error_for_to_few_free_args() ? {
|
||||
mut fp1 := flag.new_flag_parser(['a', 'b', 'c'])
|
||||
fp1.limit_free_args(5, 6) ?
|
||||
args := fp1.finalize() or {
|
||||
assert err.msg.starts_with('Expected at least 5 arguments')
|
||||
assert err.msg().starts_with('Expected at least 5 arguments')
|
||||
return
|
||||
}
|
||||
assert args.len < 0 // expect an error and need to use args
|
||||
@@ -220,7 +220,7 @@ fn test_error_for_to_much_free_args() ? {
|
||||
mut fp1 := flag.new_flag_parser(['a', 'b', 'c'])
|
||||
fp1.limit_free_args(1, 2) ?
|
||||
args := fp1.finalize() or {
|
||||
assert err.msg.starts_with('Expected at most 2 arguments')
|
||||
assert err.msg().starts_with('Expected at most 2 arguments')
|
||||
return
|
||||
}
|
||||
assert args.len < 0 // expect an error and need to use args
|
||||
@@ -230,7 +230,7 @@ fn test_could_expect_no_free_args() ? {
|
||||
mut fp1 := flag.new_flag_parser(['a'])
|
||||
fp1.limit_free_args(0, 0) ?
|
||||
args := fp1.finalize() or {
|
||||
assert err.msg.starts_with('Expected no arguments')
|
||||
assert err.msg().starts_with('Expected no arguments')
|
||||
return
|
||||
}
|
||||
assert args.len < 0 // expect an error and need to use args
|
||||
|
Reference in New Issue
Block a user