Issue #28485: Check for negative workers even without ProcessPoolExecutor

This matches the documentation, and passes the test suite when multithreading
is disabled.
diff --git a/Lib/compileall.py b/Lib/compileall.py
index 0cc0c1d..2d4c523 100644
--- a/Lib/compileall.py
+++ b/Lib/compileall.py
@@ -66,13 +66,13 @@
     optimize:  optimization level or -1 for level of the interpreter
     workers:   maximum number of parallel workers
     """
+    if workers is not None and workers < 0:
+        raise ValueError('workers must be greater or equal to 0')
+
     files = _walk_dir(dir, quiet=quiet, maxlevels=maxlevels,
                       ddir=ddir)
     success = 1
     if workers is not None and workers != 1 and ProcessPoolExecutor is not None:
-        if workers < 0:
-            raise ValueError('workers must be greater or equal to 0')
-
         workers = workers or None
         with ProcessPoolExecutor(max_workers=workers) as executor:
             results = executor.map(partial(compile_file,