diff --git a/src/libsyntax/json.rs b/src/libsyntax/json.rs index 909b0031d6150..695c740f4052b 100644 --- a/src/libsyntax/json.rs +++ b/src/libsyntax/json.rs @@ -256,8 +256,8 @@ impl DiagnosticSpan { }); DiagnosticSpan { file_name: start.file.name.clone(), - byte_start: span.lo.0, - byte_end: span.hi.0, + byte_start: span.lo.0 - start.file.start_pos.0, + byte_end: span.hi.0 - start.file.start_pos.0, line_start: start.line, line_end: end.line, column_start: start.col.0 + 1, @@ -362,4 +362,3 @@ impl JsonEmitter { suggestion.splice_lines(&*self.cm).iter().map(|line| line.0.to_owned()).collect() } } - diff --git a/src/test/run-make/issue-35164/Makefile b/src/test/run-make/issue-35164/Makefile new file mode 100644 index 0000000000000..c7bc26e3f5a9e --- /dev/null +++ b/src/test/run-make/issue-35164/Makefile @@ -0,0 +1,4 @@ +-include ../tools.mk + +all: + $(RUSTC) main.rs --error-format json 2>&1 | grep -q '"byte_start":490.*"byte_end":496' diff --git a/src/test/run-make/issue-35164/main.rs b/src/test/run-make/issue-35164/main.rs new file mode 100644 index 0000000000000..24322a2484fe0 --- /dev/null +++ b/src/test/run-make/issue-35164/main.rs @@ -0,0 +1,15 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +mod submodule; + +fn main() { + submodule::foo(); +} diff --git a/src/test/run-make/issue-35164/submodule/mod.rs b/src/test/run-make/issue-35164/submodule/mod.rs new file mode 100644 index 0000000000000..7847c13af787d --- /dev/null +++ b/src/test/run-make/issue-35164/submodule/mod.rs @@ -0,0 +1,13 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub fn foo() { + let _MyFoo = 2; +}