diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index d043303..6e60706 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -417,6 +417,11 @@
      ...
    SyntaxError: can't assign to function call (<doctest test.test_syntax[48]>, line 6)
 
+>>> f(a=23, a=234)
+Traceback (most recent call last):
+   ...
+SyntaxError: keyword argument repeated (<doctest test.test_syntax[49]>, line 1)
+
 """
 
 import re
diff --git a/Misc/NEWS b/Misc/NEWS
index 1dd586f..af95f94 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -21,6 +21,10 @@
   slice(None, 10, -1).indices(10) returns (9, 9, -1) instead of (9,
   10, -1).
 
+- Issue #3219: Calling a function with repeated keyword arguments, f(a=2, a=23),
+  would not cause a syntax error.  This was regression from 2.4 caused by the
+  switch to the new compiler.
+
 Build
 -----
 
diff --git a/Python/ast.c b/Python/ast.c
index 4d874af..dc22478 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -1912,6 +1912,8 @@
             else {
                 keyword_ty kw;
                 identifier key;
+                int k;
+                char *tmp;
 
                 /* CHILD(ch, 0) is test, but must be an identifier? */ 
                 e = ast_for_expr(c, CHILD(ch, 0));
@@ -1933,6 +1935,14 @@
                 key = e->v.Name.id;
                 if (!forbidden_check(c, CHILD(ch, 0), PyBytes_AS_STRING(key)))
                     return NULL;
+                for (k = 0; k < nkeywords; k++) {
+                    tmp = PyString_AS_STRING(
+                        ((keyword_ty)asdl_seq_GET(keywords, k))->arg);
+                    if (!strcmp(tmp, PyString_AS_STRING(key))) {
+                        ast_error(CHILD(ch, 0), "keyword argument repeated");
+                        return NULL;
+                    }
+                }
                 e = ast_for_expr(c, CHILD(ch, 2));
                 if (!e)
                     return NULL;
