浏览代码

Raise error for unterminated string literal

master
Dylan Baker 6 年前
父节点
当前提交
8e9d5cfb1d
共有 2 个文件被更改,包括 7 次插入2 次删除
  1. 2
    2
      lib/chervil/lexer.rb
  2. 5
    0
      spec/lexer_spec.rb

+ 2
- 2
lib/chervil/lexer.rb 查看文件

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

+ 5
- 0
spec/lexer_spec.rb 查看文件

49
       expect(lexer.get_next_token).to eq(Token.new(:boolean, true))
49
       expect(lexer.get_next_token).to eq(Token.new(:boolean, true))
50
       expect(lexer.get_next_token).to eq(Token.new(:boolean, false))
50
       expect(lexer.get_next_token).to eq(Token.new(:boolean, false))
51
     end
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
   end
57
   end
53
 end
58
 end

正在加载...
取消
保存