diff --git a/Lib/test/test_with.py b/Lib/test/test_with.py
index 8242c91..3ba8977 100644
--- a/Lib/test/test_with.py
+++ b/Lib/test/test_with.py
@@ -9,6 +9,7 @@
 
 import sys
 import unittest
+import StringIO
 from collections import deque
 from contextlib import GeneratorContextManager, contextmanager
 from test.test_support import run_unittest
@@ -625,12 +626,44 @@
             self.fail("ZeroDivisionError should have been raised")
 
 
+class NewKeywordsWarningTestCase(unittest.TestCase):
+
+    def check(self, code, word=None):
+        save = sys.stderr
+        sys.stderr = stream = StringIO.StringIO()
+        try:
+            compile(code, "<string>", "exec", 0, True)
+        finally:
+            sys.stderr = save
+        if word:
+            self.assert_("Warning: %r will become a reserved keyword in Python 2.6" % word
+                         in stream.getvalue())
+        else:
+            self.assertEqual(stream.getvalue(), "")
+
+    def test_basic(self):
+        self.check("as = 4", "as")
+        self.check("with = 4", "with")
+        self.check("class as: pass", "as")
+        self.check("class with: pass", "with")
+        self.check("obj.as = 4", "as")
+        self.check("with.obj = 4", "with")
+        self.check("def with(): pass", "with")
+        self.check("do(); with = 23", "with")
+
+    def test_after_import(self):
+        # issue 3936
+        self.check("import sys\nas = 4", "as")
+        self.check("import sys\nwith = 4", "with")
+
+
 def test_main():
     run_unittest(FailureTestCase, NonexceptionalTestCase,
                  NestedNonexceptionalTestCase, ExceptionalTestCase,
                  NonLocalFlowControlTestCase,
                  AssignmentTargetTestCase,
-                 ExitSwallowsExceptionTestCase)
+                 ExitSwallowsExceptionTestCase,
+                 NewKeywordsWarningTestCase)
 
 
 if __name__ == '__main__':
diff --git a/Misc/NEWS b/Misc/NEWS
index 1a58dba..5fcf456 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and builtins
 -----------------
 
+- Issue #3936: The parser warnings for using "as" and "with" as variable names
+  didn't fire after import statements.
+
 - Issue #3751: str.rpartition would perform a left-partition when called with
   a unicode argument.
 
diff --git a/Parser/parsetok.c b/Parser/parsetok.c
index 6494a93..f052542 100644
--- a/Parser/parsetok.c
+++ b/Parser/parsetok.c
@@ -137,19 +137,22 @@
 			err_ret->error = tok->done;
 			break;
 		}
-		if (type == ENDMARKER && started) {
-			type = NEWLINE; /* Add an extra newline */
-			handling_with = handling_import = 0;
-			started = 0;
-			/* Add the right number of dedent tokens,
-			   except if a certain flag is given --
-			   codeop.py uses this. */
-			if (tok->indent &&
-			    !(flags & PyPARSE_DONT_IMPLY_DEDENT))
-			{
-				tok->pendin = -tok->indent;
-				tok->indent = 0;
+		if (started) {
+			if (type == ENDMARKER) {
+				type = NEWLINE; /* Add an extra newline */
+				started = 0;
+				/* Add the right number of dedent tokens,
+				   except if a certain flag is given --
+				   codeop.py uses this. */
+				if (tok->indent &&
+				    !(flags & PyPARSE_DONT_IMPLY_DEDENT))
+				{
+					tok->pendin = -tok->indent;
+					tok->indent = 0;
+				}
 			}
+			if (type == NEWLINE)
+				handling_with = handling_import = 0;
 		}
 		else
 			started = 1;
