Fix the error message for "missing separator"
diff --git a/eval.go b/eval.go
index 11e376b..dbff80f 100644
--- a/eval.go
+++ b/eval.go
@@ -161,7 +161,7 @@
 	result := ev.evalExpr(ast.expr)
 	if result != "" {
 		// TODO: Fix rule_in_var.mk.
-		fmt.Printf("%s:%d: *** missing separator.  Stop.\n", ast.filename, ast.lineno)
+		Error(ast.filename, ast.lineno, "*** missing separator.")
 	}
 }
 
diff --git a/log.go b/log.go
index 6d931e8..6f39cc6 100644
--- a/log.go
+++ b/log.go
@@ -3,6 +3,7 @@
 import (
 	"bytes"
 	"fmt"
+	"os"
 )
 
 func Log(f string, a ...interface{}) {
@@ -18,11 +19,8 @@
 	fmt.Printf(f, a...)
 }
 
-func Error(f string, a ...interface{}) {
-	var buf bytes.Buffer
-	buf.WriteString("error: ")
-	buf.WriteString(f)
-	buf.WriteByte('\n')
-	fmt.Printf(buf.String(), a...)
-	panic("")
+func Error(filename string, lineno int, f string, a ...interface{}) {
+	f = fmt.Sprintf("%s:%d: %s\n", filename, lineno, f)
+	fmt.Printf(f, a...)
+	os.Exit(2)
 }
diff --git a/runtest.rb b/runtest.rb
index 7b86120..bb4cbd6 100755
--- a/runtest.rb
+++ b/runtest.rb
@@ -53,6 +53,8 @@
     expected.gsub!(/[`'"]/, '"')
     expected.gsub!(/ (?:commands|recipe) for target /,
                    ' commands for target ')
+    expected.gsub!(' (did you mean TAB instead of 8 spaces?)', '')
+    expected.gsub!(/\s+Stop\.$/, '')
     output.gsub!(/^\*kati\*.*\n/, '')
 
     File.open('out.make', 'w'){|ofile|ofile.print(expected)}
diff --git a/test/err_missing_sep.mk b/test/err_missing_sep.mk
index 257cc56..8d51450 100644
--- a/test/err_missing_sep.mk
+++ b/test/err_missing_sep.mk
@@ -1 +1,5 @@
+test:
+
 foo
+
+bar