Browse Source

Raise error for unterminated string literal

master
Dylan Baker 5 years ago
parent
commit
8e9d5cfb1d
2 changed files with 7 additions and 2 deletions
  1. 2
    2
      lib/chervil/lexer.rb
  2. 5
    0
      spec/lexer_spec.rb

+ 2
- 2
lib/chervil/lexer.rb View File

@@ -42,13 +42,13 @@ module Chervil
42 42
         delimiter = current_char
43 43
         advance
44 44
         string = String.new
45
-        until current_char == delimiter
45
+        until current_char == delimiter || current_char.nil?
46 46
           string << current_char
47 47
           advance
48 48
         end
49 49
 
50 50
         if current_char.nil?
51
-          raise "Unterminated string"
51
+          return Error.new("Unterminated string")
52 52
         end
53 53
 
54 54
         advance

+ 5
- 0
spec/lexer_spec.rb View File

@@ -49,5 +49,10 @@ module Chervil
49 49
       expect(lexer.get_next_token).to eq(Token.new(:boolean, true))
50 50
       expect(lexer.get_next_token).to eq(Token.new(:boolean, false))
51 51
     end
52
+
53
+    it 'returns an error given an unterminated string' do
54
+      lexer = Lexer.new('"hello world')
55
+      expect(lexer.get_next_token).to eq(Error.new("Unterminated string"))
56
+    end
52 57
   end
53 58
 end

Loading…
Cancel
Save