Fix an invalid assert when processing escaped strings.
authorRiver Riddle <riverriddle@google.com>
Tue, 3 Sep 2019 18:27:00 +0000 (11:27 -0700)
committerA. Unique TensorFlower <gardener@tensorflow.org>
Tue, 3 Sep 2019 18:27:39 +0000 (11:27 -0700)
The assert assumed that the escaped character could not appear at the end of the string.

Fixes tensorflow/mlir#117

PiperOrigin-RevId: 266975471

mlir/lib/Parser/Token.cpp
mlir/test/IR/parser.mlir

index f944d69..b8bbb23 100644 (file)
@@ -90,7 +90,7 @@ std::string Token::getStringValue() const {
       continue;
     }
 
-    assert(i + 1 < e && "invalid string should be caught by lexer");
+    assert(i + 1 <= e && "invalid string should be caught by lexer");
     auto c1 = bytes[i++];
     switch (c1) {
     case '"':
index 5528a0e..8dc8573 100644 (file)
@@ -1079,3 +1079,6 @@ func @op_with_passthrough_region_args() {
 
 // CHECK-LABEL: func @ptr_to_function() -> !unreg.ptr<() -> ()>
 func @ptr_to_function() -> !unreg.ptr<() -> ()>
+
+// CHECK-LABEL: func @escaped_string_char(i1 {foo.value = "\0A"})
+func @escaped_string_char(i1 {foo.value = "\n"})