Issue 7147 - remove ability to attempt to build Python without complex number support (was broken anyway)
diff --git a/Include/Python.h b/Include/Python.h
index aa805e7..d900978 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -73,9 +73,7 @@
 #include "longintrepr.h"
 #include "boolobject.h"
 #include "floatobject.h"
-#ifndef WITHOUT_COMPLEX
 #include "complexobject.h"
-#endif
 #include "rangeobject.h"
 #include "memoryobject.h"
 #include "tupleobject.h"
diff --git a/Misc/NEWS b/Misc/NEWS
index e0dd0cc..7ff7783 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue *7147: Remove support for compiling Python without complex number
+  support.
+
 - Issue #7120: logging: Removed import of multiprocessing which is causing
   crash in GAE.
 
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index 30d8b52..ccee382 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -12,8 +12,6 @@
 #include <ieeefp.h>
 #endif
 
-#ifndef WITHOUT_COMPLEX
-
 /* elementary operations on complex numbers */
 
 static Py_complex c_1 = {1., 0.};
@@ -1108,5 +1106,3 @@
 	complex_new,				/* tp_new */
 	PyObject_Del,           		/* tp_free */
 };
-
-#endif
diff --git a/Objects/object.c b/Objects/object.c
index e8ac8a2..90cdc74 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1536,10 +1536,9 @@
 	if (PyType_Ready(&PyStaticMethod_Type) < 0)
 		Py_FatalError("Can't initialize static method type");
 
-#ifndef WITHOUT_COMPLEX
 	if (PyType_Ready(&PyComplex_Type) < 0)
 		Py_FatalError("Can't initialize complex type");
-#endif
+
 	if (PyType_Ready(&PyFloat_Type) < 0)
 		Py_FatalError("Can't initialize float type");
 
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index cc142a7..daf18dc 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -1383,10 +1383,8 @@
 			c = tok_nextc(tok);
 			if (c == '.')
 				goto fraction;
-#ifndef WITHOUT_COMPLEX
 			if (c == 'j' || c == 'J')
 				goto imaginary;
-#endif
 			if (c == 'x' || c == 'X') {
 
 				/* Hex */
@@ -1438,10 +1436,8 @@
 					goto fraction;
 				else if (c == 'e' || c == 'E')
 					goto exponent;
-#ifndef WITHOUT_COMPLEX
 				else if (c == 'j' || c == 'J')
 					goto imaginary;
-#endif
 				else if (nonzero) {
 					tok->done = E_TOKEN;
 					tok_backup(tok, c);
@@ -1478,12 +1474,10 @@
 						c = tok_nextc(tok);
 					} while (isdigit(c));
 				}
-#ifndef WITHOUT_COMPLEX
 				if (c == 'j' || c == 'J')
 					/* Imaginary part */
 		imaginary:
 					c = tok_nextc(tok);
-#endif
 			}
 		}
 		tok_backup(tok, c);
diff --git a/Python/ast.c b/Python/ast.c
index 8a35a12..c3edea3 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -3177,17 +3177,13 @@
     const char *end;
     long x;
     double dx;
-#ifndef WITHOUT_COMPLEX
     Py_complex compl;
     int imflag;
-#endif
 
     assert(s != NULL);
     errno = 0;
     end = s + strlen(s) - 1;
-#ifndef WITHOUT_COMPLEX
     imflag = *end == 'j' || *end == 'J';
-#endif
     if (s[0] == '0') {
         x = (long) PyOS_strtoul((char *)s, (char **)&end, 0);
         if (x < 0 && errno == 0) {
@@ -3204,7 +3200,6 @@
         return PyLong_FromLong(x);
     }
     /* XXX Huge floats may silently fail */
-#ifndef WITHOUT_COMPLEX
     if (imflag) {
         compl.real = 0.;
         compl.imag = PyOS_string_to_double(s, (char **)&end, NULL);
@@ -3213,7 +3208,6 @@
         return PyComplex_FromCComplex(compl);
     }
     else
-#endif
     {
         dx = PyOS_string_to_double(s, NULL, NULL);
         if (dx == -1.0 && PyErr_Occurred())
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 2224d37..ab6049c 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -2302,9 +2302,7 @@
 	SETBUILTIN("bytearray",		&PyByteArray_Type);
 	SETBUILTIN("bytes",		&PyBytes_Type);
 	SETBUILTIN("classmethod",	&PyClassMethod_Type);
-#ifndef WITHOUT_COMPLEX
 	SETBUILTIN("complex",		&PyComplex_Type);
-#endif
 	SETBUILTIN("dict",		&PyDict_Type);
  	SETBUILTIN("enumerate",		&PyEnum_Type);
  	SETBUILTIN("filter",		&PyFilter_Type);
diff --git a/Python/getargs.c b/Python/getargs.c
index 486cf7d..f41cd05 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -818,7 +818,6 @@
 		break;
 	}
 
-#ifndef WITHOUT_COMPLEX
 	case 'D': {/* complex double */
 		Py_complex *p = va_arg(*p_va, Py_complex *);
 		Py_complex cval;
@@ -829,7 +828,6 @@
 			*p = cval;
 		break;
 	}
-#endif /* WITHOUT_COMPLEX */
 
 	case 'c': {/* char */
 		char *p = va_arg(*p_va, char *);
@@ -1772,9 +1770,7 @@
 #endif
 	case 'f': /* float */
 	case 'd': /* double */
-#ifndef WITHOUT_COMPLEX
 	case 'D': /* complex double */
-#endif
 	case 'c': /* char */
 		{
 			(void) va_arg(*p_va, void *);
diff --git a/Python/marshal.c b/Python/marshal.c
index 256285b..3391085 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -254,7 +254,6 @@
 			PyMem_Free(buf);
 		}
 	}
-#ifndef WITHOUT_COMPLEX
 	else if (PyComplex_CheckExact(v)) {
 		if (p->version > 1) {
 			unsigned char buf[8];
@@ -297,7 +296,6 @@
 			PyMem_Free(buf);
 		}
 	}
-#endif
 	else if (PyBytes_CheckExact(v)) {
 		w_byte(TYPE_STRING, p);
 		n = PyBytes_GET_SIZE(v);
@@ -714,7 +712,6 @@
 			break;
 		}
 
-#ifndef WITHOUT_COMPLEX
 	case TYPE_COMPLEX:
 		{
 			char buf[256];
@@ -773,7 +770,6 @@
 			retval = PyComplex_FromCComplex(c);
 			break;
 		}
-#endif
 
 	case TYPE_STRING:
 		n = r_long(p);
diff --git a/Python/modsupport.c b/Python/modsupport.c
index 0cbc6f7..0f31634 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -279,11 +279,9 @@
 			return PyFloat_FromDouble(
 				(double)va_arg(*p_va, va_double));
 
-#ifndef WITHOUT_COMPLEX
 		case 'D':
 			return PyComplex_FromCComplex(
 				*((Py_complex *)va_arg(*p_va, Py_complex *)));
-#endif /* WITHOUT_COMPLEX */
 
 		case 'c':
 		{