adjust errors
This commit is contained in:
committed by
Bennet Bleßmann
parent
e321f29b9c
commit
8971809c83
@@ -31,9 +31,9 @@ must_be_known_options(_, _, []).
|
|||||||
must_be_known_options(Valid, Found, [X|XS]) :-
|
must_be_known_options(Valid, Found, [X|XS]) :-
|
||||||
X =.. [Option|_],
|
X =.. [Option|_],
|
||||||
(
|
(
|
||||||
member(Option, Found) -> throw(error(duplicate_option, process_create/3, Option)) ;
|
member(Option, Found) -> error(evaluation_error(duplicate_options), process_create/3);
|
||||||
member(Option, Valid) -> true ;
|
member(Option, Valid) -> true ;
|
||||||
throw(error(invalid_option, process_create/3, Option))
|
domain_error(process_create_option, Option, process_create/3)
|
||||||
),
|
),
|
||||||
must_be_known_options(Valid, [Option | Found], XS).
|
must_be_known_options(Valid, [Option | Found], XS).
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ check_options([X | XS], Options) :-
|
|||||||
(
|
(
|
||||||
Solutions = [] -> Choice = Default;
|
Solutions = [] -> Choice = Default;
|
||||||
Solutions = [Provided] -> call(Pred, Provided), Choice = Provided ;
|
Solutions = [Provided] -> call(Pred, Provided), Choice = Provided ;
|
||||||
throw(error(duplicate_option, process_create/3, Solutions))
|
error(evaluation_error(confliction_options), process_create/3)
|
||||||
),
|
),
|
||||||
check_options(XS, Options).
|
check_options(XS, Options).
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ find_option([_|Kinds], Found, Options) :- find_option(Kinds, Found, Options).
|
|||||||
valid_stdio(IO) :- IO =.. [_, Arg],
|
valid_stdio(IO) :- IO =.. [_, Arg],
|
||||||
(
|
(
|
||||||
valid_stdio_(Arg) -> true ;
|
valid_stdio_(Arg) -> true ;
|
||||||
throw(error(invalid_stdio, process_create/3, Arg))
|
domain_error(process_create_option, Arg, process_create/3)
|
||||||
).
|
).
|
||||||
|
|
||||||
valid_stdio_(std).
|
valid_stdio_(std).
|
||||||
@@ -62,14 +62,19 @@ valid_stdio_(null).
|
|||||||
valid_stdio_(pipe(Stream)) :- must_be(var, Stream).
|
valid_stdio_(pipe(Stream)) :- must_be(var, Stream).
|
||||||
valid_stdio_(file(Path)) :- must_be(chars, Path).
|
valid_stdio_(file(Path)) :- must_be(chars, Path).
|
||||||
|
|
||||||
valid_env(env(E)) :- valid_env_(E).
|
valid_env(env(E)) :- (
|
||||||
valid_env(environment(E)) :- valid_env_(E).
|
valid_env_(E) -> true ;
|
||||||
|
domain_error(process_create_option, env(E), process_create/3)
|
||||||
|
).
|
||||||
|
valid_env(environment(E)) :- (
|
||||||
|
valid_env_(E) -> true ;
|
||||||
|
domain_error(process_create_option, environment(E), process_create/3)
|
||||||
|
).
|
||||||
|
|
||||||
valid_env_([]).
|
valid_env_([]).
|
||||||
valid_env_([E| ES]) :-
|
valid_env_([E| ES]) :-
|
||||||
(
|
(
|
||||||
E =.. [=, N, V] -> true ;
|
E =.. [=, N, V] -> true ;
|
||||||
throw(error(invalid_env_entry, process_create/3, E))
|
|
||||||
),
|
),
|
||||||
must_be(chars, N),
|
must_be(chars, N),
|
||||||
must_be(chars, V),
|
must_be(chars, V),
|
||||||
|
|||||||
Reference in New Issue
Block a user