Commit e8d30965 authored by Stefan Behnel's avatar Stefan Behnel

Re-enable "auto late includes" based on a preliminary directive. We have the...

Re-enable "auto late includes" based on a preliminary directive. We have the feature, so allowing its use won't hurt, as long as users are aware that they will have to change their code later.
See #2079.
parent ffa1a198
...@@ -155,7 +155,7 @@ class IncludeCode(object): ...@@ -155,7 +155,7 @@ class IncludeCode(object):
if initial: if initial:
self.location = self.INITIAL self.location = self.INITIAL
elif False and late: elif late:
self.location = self.LATE self.location = self.LATE
else: else:
self.location = self.EARLY self.location = self.EARLY
......
...@@ -485,7 +485,9 @@ class CDefExternNode(StatNode): ...@@ -485,7 +485,9 @@ class CDefExternNode(StatNode):
if self.include_file or self.verbatim_include: if self.include_file or self.verbatim_include:
# Determine whether include should be late # Determine whether include should be late
stats = self.body.stats stats = self.body.stats
if not stats: if not env.directives['preliminary_late_includes_cy28']:
late = False
elif not stats:
# Special case: empty 'cdef extern' blocks are early # Special case: empty 'cdef extern' blocks are early
late = False late = False
else: else:
......
...@@ -171,6 +171,7 @@ _directive_defaults = { ...@@ -171,6 +171,7 @@ _directive_defaults = {
'language_level': 2, 'language_level': 2,
'fast_getattr': False, # Undocumented until we come up with a better way to handle this everywhere. 'fast_getattr': False, # Undocumented until we come up with a better way to handle this everywhere.
'py2_import': False, # For backward compatibility of Cython's source code in Py3 source mode 'py2_import': False, # For backward compatibility of Cython's source code in Py3 source mode
'preliminary_late_includes_cy28': False, # Temporary directive in 0.28, to be removed in a later version (see GH#2079).
'iterable_coroutine': False, # Make async coroutines backwards compatible with the old asyncio yield-from syntax. 'iterable_coroutine': False, # Make async coroutines backwards compatible with the old asyncio yield-from syntax.
'c_string_type': 'bytes', 'c_string_type': 'bytes',
'c_string_encoding': '', 'c_string_encoding': '',
......
...@@ -16,9 +16,6 @@ cimport_alias_subclass ...@@ -16,9 +16,6 @@ cimport_alias_subclass
# PEP-489 is currently disabled # PEP-489 is currently disabled
run.mod__spec__ run.mod__spec__
# Late includes are currently disabled
run.extern_include_order
# CPython regression tests that don't current work: # CPython regression tests that don't current work:
pyregr.test_signal pyregr.test_signal
pyregr.test_capi pyregr.test_capi
......
...@@ -12,6 +12,7 @@ setup( ...@@ -12,6 +12,7 @@ setup(
) )
######## a.pxd ######## ######## a.pxd ########
# cython: preliminary_late_includes_cy28=True
cdef extern from "a_early.h": cdef extern from "a_early.h":
ctypedef int my_int ctypedef int my_int
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment