From 7c72f55ea84a59957ae0a00394c953088fc543e8 Mon Sep 17 00:00:00 2001 From: Mogball Date: Wed, 23 Mar 2022 08:00:46 +0000 Subject: [PATCH] [mlir] Fix emitting an error at EOF Emitting at error at EOF will emit the diagnostic past the end of the file. When emitting an error during parsing at EOF, emit it at the previous character. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D122295 --- mlir/lib/Parser/Parser.h | 6 ++++++ mlir/test/IR/invalid.mlir | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/mlir/lib/Parser/Parser.h b/mlir/lib/Parser/Parser.h index fb138d9..3abee1f 100644 --- a/mlir/lib/Parser/Parser.h +++ b/mlir/lib/Parser/Parser.h @@ -69,6 +69,12 @@ public: /// Emit an error and return failure. InFlightDiagnostic emitError(const Twine &message = {}) { + // If the error is to be emitted at EOF, move it back one character. + if (state.curToken.is(Token::eof)) { + return emitError( + SMLoc::getFromPointer(state.curToken.getLoc().getPointer() - 1), + message); + } return emitError(state.curToken.getLoc(), message); } InFlightDiagnostic emitError(SMLoc loc, const Twine &message = {}); diff --git a/mlir/test/IR/invalid.mlir b/mlir/test/IR/invalid.mlir index 83d3a5d..954f0b1 100644 --- a/mlir/test/IR/invalid.mlir +++ b/mlir/test/IR/invalid.mlir @@ -680,7 +680,7 @@ func @calls(%arg0: i32) { %z = "casdasda"(%x) : (ppop32) -> i32 } // ----- -// expected-error@+2 {{expected SSA operand}} +// expected-error@+1 {{expected SSA operand}} func@n(){^b( // ----- @@ -882,7 +882,7 @@ func @type_alias_unknown(!unknown_alias) -> () { // expected-error {{undefined s // ----- -!missing_type_alias = type // expected-error@+2 {{expected non-function type}} +!missing_type_alias = type // expected-error@+1 {{expected non-function type}} // ----- -- 2.7.4