diff --git a/Lib/test/test_flufl.py b/Lib/test/test_flufl.py
index 98b5bd6..33e52e6 100644
--- a/Lib/test/test_flufl.py
+++ b/Lib/test/test_flufl.py
@@ -4,18 +4,29 @@
 class FLUFLTests(unittest.TestCase):
 
     def test_barry_as_bdfl(self):
-        code = "from __future__ import barry_as_FLUFL; 2 {0} 3"
+        code = "from __future__ import barry_as_FLUFL\n2 {0} 3"
         compile(code.format('<>'), '<BDFL test>', 'exec',
                 __future__.CO_FUTURE_BARRY_AS_BDFL)
-        self.assertRaises(SyntaxError, compile, code.format('!='),
-                            '<FLUFL test>', 'exec',
-                            __future__.CO_FUTURE_BARRY_AS_BDFL)
+        with self.assertRaises(SyntaxError) as cm:
+            compile(code.format('!='), '<FLUFL test>', 'exec',
+                    __future__.CO_FUTURE_BARRY_AS_BDFL)
+        self.assertRegex(str(cm.exception),
+                         "with Barry as BDFL, use '<>' instead of '!='")
+        self.assertEqual(cm.exception.text, '2 != 3\n')
+        self.assertEqual(cm.exception.filename, '<FLUFL test>')
+        self.assertEqual(cm.exception.lineno, 2)
+        self.assertEqual(cm.exception.offset, 4)
 
     def test_guido_as_bdfl(self):
         code = '2 {0} 3'
         compile(code.format('!='), '<BDFL test>', 'exec')
-        self.assertRaises(SyntaxError, compile, code.format('<>'),
-                            '<FLUFL test>', 'exec')
+        with self.assertRaises(SyntaxError) as cm:
+            compile(code.format('<>'), '<FLUFL test>', 'exec')
+        self.assertRegex(str(cm.exception), "invalid syntax")
+        self.assertEqual(cm.exception.text, '2 <> 3\n')
+        self.assertEqual(cm.exception.filename, '<FLUFL test>')
+        self.assertEqual(cm.exception.lineno, 1)
+        self.assertEqual(cm.exception.offset, 4)
 
 
 if __name__ == '__main__':
diff --git a/Parser/parsetok.c b/Parser/parsetok.c
index 1f467d6..00d741d 100644
--- a/Parser/parsetok.c
+++ b/Parser/parsetok.c
@@ -246,8 +246,7 @@
             else if ((ps->p_flags & CO_FUTURE_BARRY_AS_BDFL) &&
                             strcmp(str, "<>")) {
                 PyObject_FREE(str);
-                err_ret->text = "with Barry as BDFL, use '<>' "
-                                "instead of '!='";
+                err_ret->expected = NOTEQUAL;
                 err_ret->error = E_SYNTAX;
                 break;
             }
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 10605db..f6f06c7 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -1348,6 +1348,10 @@
             msg = "unexpected indent";
         else if (err->token == DEDENT)
             msg = "unexpected unindent";
+        else if (err->expected == NOTEQUAL) {
+            errtype = PyExc_SyntaxError;
+            msg = "with Barry as BDFL, use '<>' instead of '!='";
+        }
         else {
             errtype = PyExc_SyntaxError;
             msg = "invalid syntax";
