Fix line numbers in functions

This added the function offset *again*, but it's already included in
the line for the current file.

And yes, I have explicitly tested a function file with a function
defined at a later line.

Fixes #6350
This commit is contained in:
Fabian Homborg 2019-11-26 18:09:33 +01:00
parent f36705bb66
commit 662fb3f3d1
2 changed files with 29 additions and 6 deletions

View File

@ -484,12 +484,6 @@ int parser_t::get_lineno() const {
int lineno = -1;
if (execution_context) {
lineno = execution_context->get_current_line_number();
// If we are executing a function, we have to add in its offset.
const wchar_t *function_name = is_function();
if (function_name != nullptr) {
lineno += function_get_definition_lineno(function_name);
}
}
return lineno;
}

View File

@ -0,0 +1,29 @@
# RUN: %fish %s
#
# These lines left around because we need the line numbers.
# This file in general requires careful editing in the middle, I recommend appending.
function t --on-event linenumber
status line-number
status line-number
status line-number
end
emit linenumber
# CHECK: 6
# CHECK: 7
# CHECK: 8
type --nonexistent-option-so-we-get-a-backtrace
# CHECKERR: type: Unknown option '--nonexistent-option-so-we-get-a-backtrace'
# CHECKERR: {{.*/type.fish}} (line 7):
# CHECKERR: argparse -n type -x t,p,P $options -- $argv
# CHECKERR: ^
# CHECKERR: in function 'type' with arguments '--nonexistent-option-so-we-get-a-backtrace'
# CHECKERR: called on line 16 of file {{.*}}line-number.fish
function line-number
status line-number
end
line-number
# CHECK: 25