issue #18698: ensure importlib.reload() returns the module out of sys.modules.
diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py
index 3fb119b..bf29e42 100644
--- a/Lib/test/test_imp.py
+++ b/Lib/test/test_imp.py
@@ -5,6 +5,7 @@
 import shutil
 import sys
 from test import support
+from test.test_importlib import util
 import unittest
 import warnings
 
@@ -285,6 +286,22 @@
         with self.assertRaisesRegex(ImportError, 'html'):
             imp.reload(parser)
 
+    def test_module_replaced(self):
+        # see #18698
+        def code():
+            module = type(sys)('top_level')
+            module.spam = 3
+            sys.modules['top_level'] = module
+        mock = util.mock_modules('top_level',
+                                 module_code={'top_level': code})
+        with mock:
+            with util.import_state(meta_path=[mock]):
+                module = importlib.import_module('top_level')
+                reloaded = imp.reload(module)
+                actual = sys.modules['top_level']
+                self.assertEqual(actual.spam, 3)
+                self.assertEqual(reloaded.spam, 3)
+
 
 class PEP3147Tests(unittest.TestCase):
     """Tests of PEP 3147."""