mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-07-02 17:31:16 -03:00
fix incorrectly aligned carat in command expansion errors and more
- fix the carat position expanding e.g. `command $,` - improve the error reporting for not-allowed command subtitutions by figuring out where the expansion failed instead of using SOURCE_LOCATION_UNKNOWN - allow nullptr for parse_util_licate_brackets_range() out_string argument if we don't need it to do any work. Fixes #5812
This commit is contained in:
@@ -879,13 +879,16 @@ static expand_error_t expand_stage_cmdsubst(wcstring input, std::vector<completi
|
||||
parse_error_list_t *errors) {
|
||||
UNUSED(vars);
|
||||
if (EXPAND_SKIP_CMDSUBST & flags) {
|
||||
wchar_t *begin, *end;
|
||||
if (parse_util_locate_cmdsubst(input.c_str(), &begin, &end, true) == 0) {
|
||||
append_completion(out, std::move(input));
|
||||
} else {
|
||||
append_cmdsub_error(errors, SOURCE_LOCATION_UNKNOWN,
|
||||
L"Command substitutions not allowed");
|
||||
return EXPAND_ERROR;
|
||||
size_t cur = 0, start = 0, end;
|
||||
switch (parse_util_locate_cmdsubst_range(input, &cur, nullptr, &start, &end, true)) {
|
||||
case 0:
|
||||
append_completion(out, std::move(input));
|
||||
break;
|
||||
case 1: /* fallthroughs intentional */
|
||||
append_cmdsub_error(errors, start, L"Command substitutions not allowed");
|
||||
case -1:
|
||||
default:
|
||||
return EXPAND_ERROR;
|
||||
}
|
||||
} else {
|
||||
bool cmdsubst_ok = expand_cmdsubst(std::move(input), out, errors);
|
||||
|
||||
Reference in New Issue
Block a user