Add tests for errors (fixes #5)
diff --git a/parser.go b/parser.go
index fc6a6ff..d18c8a8 100644
--- a/parser.go
+++ b/parser.go
@@ -106,7 +106,7 @@
 
 func parseRvalue(p *parser) interface{} {
 	tok := p.getToken()
-	if tok == nil {
+	if tok == nil || tok.typ == tokenEOF {
 		panic("expecting a value")
 	}
 
@@ -148,7 +148,7 @@
 	array := make([]interface{}, 0)
 	for {
 		follow := p.peek()
-		if follow == nil {
+		if follow == nil || follow.typ == tokenEOF {
 			panic("unterminated array")
 		}
 		if follow.typ == tokenRightBracket {
diff --git a/parser_test.go b/parser_test.go
index 1531a1f..fa05dd6 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -101,3 +101,17 @@
 		"a": [][]int64{[]int64{int64(42), int64(21)}, []int64{int64(10)}},
 	})
 }
+
+func TestMissingValue(t *testing.T) {
+	_, err := Load("a = ")
+	if (err.Error() != "expecting a value") {
+		t.Error("Bad error message:", err.Error());
+	}
+}
+
+func TestUnterminatedArray(t *testing.T) {
+	_, err := Load("a = [1,")
+	if (err.Error() != "unterminated array") {
+		t.Error("Bad error message:", err.Error());
+	}
+}
\ No newline at end of file
diff --git a/toml.go b/toml.go
index f27548a..8e5d1a2 100644
--- a/toml.go
+++ b/toml.go
@@ -5,6 +5,7 @@
 package toml
 
 import (
+	"errors"
 	"runtime"
 	"strings"
 )
@@ -81,7 +82,7 @@
 			if _, ok := r.(runtime.Error); ok {
 				panic(r)
 			}
-			err = r.(error)
+			err = errors.New(r.(string))
 		}
 	}()
 	_, flow := lex(content)