Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions src/compiler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -545,10 +545,7 @@ impl Compiler {
self.last_errors.clear();
self.last_parse_errors.clear();
for err in &tree.errors {
let msg = format!(
"{}:{}: {}",
err.location.file, err.location.line, err.message
);
let msg = format_error(err.location, &err.message);
if !self.quiet {
println!("{}", msg);
}
Expand Down
14 changes: 11 additions & 3 deletions src/lexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,18 +127,26 @@ impl Lexer {
}
}

/// Handle a newline: increment line and update line_start.
/// Handle a newline. The resulting `Endl` token is located at the newline
/// itself, on the line it terminates, so errors like "expected Rparen,
/// got Endl" point at the end of the offending line. The line counter is
/// advanced when the token after the `Endl` is lexed.
fn handle_newline(&mut self) {
self.loc.col = (self.i - self.line_start + 1) as u32;
self.i += 1;
self.loc.line += 1;
self.line_start = self.i;
self.loc.col = 1;
}

fn _next(&mut self) -> Token {
let bytes = self.code.as_bytes();
let n = bytes.len();

// The previous token was a newline: move on to the next line.
if self.tok == Token::Endl {
self.loc.line += 1;
self.loc.col = 1;
}

// Skip whitespace.
while self.i < n && bytes[self.i].is_ascii_whitespace() {
if bytes[self.i] == b'\n' {
Expand Down
1 change: 0 additions & 1 deletion src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ fn expect_id(cx: &mut ParseContext) -> Name {
name
} else {
let message = format!("expected identifier, got {:?}", cx.lex.tok);
println!("{:?}", message);
cx.err(message);
cx.next();
Name::new("".to_string())
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/arenas.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/arenas.lyte:5: arena is reserved for future use
// ../tests/cases/arenas.lyte:5:5: arena is reserved for future use
main {
arena {}
}
2 changes: 1 addition & 1 deletion tests/cases/arrays/zero_size_array.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/arrays/zero_size_array.lyte:6: array size must be greater than 0
// ../tests/cases/arrays/zero_size_array.lyte:6:18: array size must be greater than 0

main {
var x: [i32; 0]
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/checker/assume_forbidden.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/assume_forbidden.lyte:6: assume is only allowed in the standard library or prelude
// ../tests/cases/checker/assume_forbidden.lyte:6:5: assume is only allowed in the standard library or prelude

foo(a: [i32], i: i32) {
assume i >= 0
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/checker/literal_suffix_array_type_size.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/literal_suffix_array_type_size.lyte:6: array size integer cannot have a suffix
// ../tests/cases/checker/literal_suffix_array_type_size.lyte:6:18: array size integer cannot have a suffix

main {
var a: [i32; 3u32]
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/checker/literal_suffix_const.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/literal_suffix_const.lyte:5: integer const cannot have a suffix
// ../tests/cases/checker/literal_suffix_const.lyte:5:11: integer const cannot have a suffix

const N = 3u32
main {
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/checker/literal_suffix_invalid.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/literal_suffix_invalid.lyte:6: invalid numeric literal suffix 'i64'
// ../tests/cases/checker/literal_suffix_invalid.lyte:6:5: invalid numeric literal suffix 'i64'

main {
1i64
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/checker/literal_suffix_invalid_float_u.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/literal_suffix_invalid_float_u.lyte:6: invalid numeric literal suffix 'u'
// ../tests/cases/checker/literal_suffix_invalid_float_u.lyte:6:5: invalid numeric literal suffix 'u'

main {
1.0u
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/checker/literal_suffix_invalid_i8.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/literal_suffix_invalid_i8.lyte:6: invalid numeric literal suffix 'i8'
// ../tests/cases/checker/literal_suffix_invalid_i8.lyte:6:5: invalid numeric literal suffix 'i8'

main {
1i8
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/literal_suffix_invalid_integer_float.lyte:6: invalid numeric literal suffix 'f64'
// ../tests/cases/checker/literal_suffix_invalid_integer_float.lyte:6:5: invalid numeric literal suffix 'f64'

main {
1f64
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/checker/literal_suffix_invalid_u8.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/literal_suffix_invalid_u8.lyte:6: invalid numeric literal suffix 'u8'
// ../tests/cases/checker/literal_suffix_invalid_u8.lyte:6:5: invalid numeric literal suffix 'u8'

main {
1u8
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/checker/literal_suffix_tuple_index.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/checker/literal_suffix_tuple_index.lyte:7: tuple field index cannot have a suffix
// ../tests/cases/checker/literal_suffix_tuple_index.lyte:7:7: tuple field index cannot have a suffix

main {
var t = (1, 2)
Expand Down
2 changes: 1 addition & 1 deletion tests/cases/defer_reserved.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/defer_reserved.lyte:5: defer is reserved for future use
// ../tests/cases/defer_reserved.lyte:5:1: defer is reserved for future use

defer {
}
2 changes: 1 addition & 1 deletion tests/cases/partial_function.lyte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// args: --check
// expected stdout:
// ../tests/cases/partial_function.lyte:6: expected Rparen, got Endl
// ../tests/cases/partial_function.lyte:5:5: expected Rparen, got Endl

foo(

Expand Down
Loading