Issue 22184: Early detection and reporting of missing lru_cache parameters
diff --git a/Lib/functools.py b/Lib/functools.py
index b8463ad..24fdb16 100644
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -392,6 +392,12 @@
     # The internals of the lru_cache are encapsulated for thread safety and
     # to allow the implementation to change (including a possible C version).
 
+    # Early detection of an erroneous call to @lru_cache without any arguments
+    # resulting in the inner function being passed to maxsize instead of an
+    # integer or None.
+    if maxsize is not None and not isinstance(maxsize, int):
+        raise TypeError('Expected maxsize to be an integer or None')
+
     # Constants shared by all lru cache instances:
     sentinel = object()          # unique object used to signal cache misses
     make_key = _make_key         # build a key from the function arguments