tools: handle end of file errors
authorJean Privat <jean@pryen.org>
Fri, 17 Feb 2012 19:12:11 +0000 (14:12 -0500)
committerJean Privat <jean@pryen.org>
Fri, 17 Feb 2012 19:12:11 +0000 (14:12 -0500)
Signed-off-by: Jean Privat <jean@pryen.org>

13 files changed:
src/mmloader.nit
tests/error_parser_oneline_char.nit [new file with mode: 0644]
tests/error_parser_oneline_char_noeol.nit [new file with mode: 0644]
tests/error_parser_oneline_string.nit [new file with mode: 0644]
tests/error_parser_oneline_string_noeol.nit [new file with mode: 0644]
tests/error_parser_oneline_string_start.nit [new file with mode: 0644]
tests/error_parser_oneline_string_start_noeol.nit [new file with mode: 0644]
tests/sav/error_parser_oneline_char.sav [new file with mode: 0644]
tests/sav/error_parser_oneline_char_noeol.sav [new file with mode: 0644]
tests/sav/error_parser_oneline_string.sav [new file with mode: 0644]
tests/sav/error_parser_oneline_string_noeol.sav [new file with mode: 0644]
tests/sav/error_parser_oneline_string_start.sav [new file with mode: 0644]
tests/sav/error_parser_oneline_string_start_noeol.sav [new file with mode: 0644]

index 4f54478..b25db16 100644 (file)
@@ -76,8 +76,15 @@ class Message
                        else
                                cend = location.column_end
                        end
-                       var lmid = string.substring(line_start + location.column_start - 1, cend - location.column_start + 1)
-                       var lend = string.substring(line_start + cend, line_end - line_start - cend + 1)
+                       var lmid
+                       var lend
+                       if line_start + cend <= string.length then
+                               lmid = string.substring(line_start + location.column_start - 1, cend - location.column_start + 1)
+                               lend = string.substring(line_start + cend, line_end - line_start - cend + 1)
+                       else
+                               lmid = ""
+                               lend = ""
+                       end
                        var indent = new Buffer
                        for j in [line_start..line_start+location.column_start-1[ do
                                if string[j] == '\t' then
diff --git a/tests/error_parser_oneline_char.nit b/tests/error_parser_oneline_char.nit
new file mode 100644 (file)
index 0000000..4076583
--- /dev/null
@@ -0,0 +1 @@
+'c'
diff --git a/tests/error_parser_oneline_char_noeol.nit b/tests/error_parser_oneline_char_noeol.nit
new file mode 100644 (file)
index 0000000..1c6d59e
--- /dev/null
@@ -0,0 +1 @@
+'c'
\ No newline at end of file
diff --git a/tests/error_parser_oneline_string.nit b/tests/error_parser_oneline_string.nit
new file mode 100644 (file)
index 0000000..3580093
--- /dev/null
@@ -0,0 +1 @@
+"hello"
diff --git a/tests/error_parser_oneline_string_noeol.nit b/tests/error_parser_oneline_string_noeol.nit
new file mode 100644 (file)
index 0000000..84ed78b
--- /dev/null
@@ -0,0 +1 @@
+"hello"
\ No newline at end of file
diff --git a/tests/error_parser_oneline_string_start.nit b/tests/error_parser_oneline_string_start.nit
new file mode 100644 (file)
index 0000000..05a81d8
--- /dev/null
@@ -0,0 +1 @@
+"hello{
diff --git a/tests/error_parser_oneline_string_start_noeol.nit b/tests/error_parser_oneline_string_start_noeol.nit
new file mode 100644 (file)
index 0000000..b7d686e
--- /dev/null
@@ -0,0 +1 @@
+"hello{
\ No newline at end of file
diff --git a/tests/sav/error_parser_oneline_char.sav b/tests/sav/error_parser_oneline_char.sav
new file mode 100644 (file)
index 0000000..fcd34c2
--- /dev/null
@@ -0,0 +1 @@
+./error_parser_oneline_char.nit:1,4--2,0: Syntax error: unexpected end of line.
diff --git a/tests/sav/error_parser_oneline_char_noeol.sav b/tests/sav/error_parser_oneline_char_noeol.sav
new file mode 100644 (file)
index 0000000..51e8401
--- /dev/null
@@ -0,0 +1 @@
+./error_parser_oneline_char_noeol.nit:1,4: Syntax error: unexpected end of file.
diff --git a/tests/sav/error_parser_oneline_string.sav b/tests/sav/error_parser_oneline_string.sav
new file mode 100644 (file)
index 0000000..eaa3847
--- /dev/null
@@ -0,0 +1 @@
+./error_parser_oneline_string.nit:1,8--2,0: Syntax error: unexpected end of line.
diff --git a/tests/sav/error_parser_oneline_string_noeol.sav b/tests/sav/error_parser_oneline_string_noeol.sav
new file mode 100644 (file)
index 0000000..2e63ae9
--- /dev/null
@@ -0,0 +1 @@
+./error_parser_oneline_string_noeol.nit:1,8: Syntax error: unexpected end of file.
diff --git a/tests/sav/error_parser_oneline_string_start.sav b/tests/sav/error_parser_oneline_string_start.sav
new file mode 100644 (file)
index 0000000..9b264bd
--- /dev/null
@@ -0,0 +1 @@
+./error_parser_oneline_string_start.nit:2,1: Syntax error: unexpected end of file.
diff --git a/tests/sav/error_parser_oneline_string_start_noeol.sav b/tests/sav/error_parser_oneline_string_start_noeol.sav
new file mode 100644 (file)
index 0000000..71407d0
--- /dev/null
@@ -0,0 +1 @@
+./error_parser_oneline_string_start_noeol.nit:1,8: Syntax error: unexpected end of file.