Multiple @return! statements in code docs
For example, I have such code
/**
* Parses command-line arguments
*
* @param [in] args
* @param [out] res_args
*
* @return! CommandArgsErr.INVALID_SRC_FILE
* @return! CommandArgsErr.INVALID_OUT_FILE
* @return! CommandArgsErr.TOO_FEW_ARGUMENTS
*/
fn void! parseCommandArgs(String[] args, CommandArgs* res_args)
{
if (args.len == 1) {
hlp::printFuncErrN("Too few arguments");
return CommandArgsErr.TOO_FEW_ARGUMENTS?;
}
for (usz i = 0; i < args.len; ++i) {
parseFlagSource(args, i, &res_args.src_path);
}
}
Here, I want @return! to be declared multiple times to avoid too long line with the amount of possible excuses.
This code is actually compiled but if I swap @return! blocks by moving TOO_FEW_ARGUMENTS on top:
/**
* Parses command-line arguments
*
* @param [in] args
* @param [out] res_args
*
* @return! CommandArgsErr.TOO_FEW_ARGUMENTS
* @return! CommandArgsErr.INVALID_SRC_FILE
* @return! CommandArgsErr.INVALID_OUT_FILE
*/
I get an error:
49: {
50: if (args.len == 1) {
51: hlp::printFuncErrN("Too few arguments");
52: return CommandArgsErr.TOO_FEW_ARGUMENTS?;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(/home/starleks/coding/c3-binder/src/helpers/command-args.c3:52:12) Error: This value does not match declared optional returns, it needs to be declared with the other optional returns.
So I propose to write multiple @return! statements in docs instead of writing @return! EXCUSE_1, EXCUSE_2, EXCUSE_3.
This will start working again with this pull request: https://github.com/c3lang/c3c/pull/1555
This should now work:
<*
Parses command-line arguments
@param [in] args
@param [out] res_args
@return! CommandArgsErr.INVALID_SRC_FILE
@return! CommandArgsErr.INVALID_OUT_FILE
@return! CommandArgsErr.TOO_FEW_ARGUMENTS
*>
Note that if it can throw ANY CommandArgsErr, then you can always write: @return! CommandArgsErr
Confirmed to work in most recent version