I've noticed we claim in cxx-status.html that we implement P1042R1, but it seems we don't implement any of the changes from there. The following patch implements just the change that __VA_OPT__ determines whether to expand to nothing or the enclosed tokens no longer based on whether there were any tokens passed to __VA_ARGS__, but whether __VA_ARGS__ expands to any tokens (from testing apparently it has to be non-CPP_PADDING tokens). I'm afraid I'm completely lost about the padding preservation/removal changes that are also in the paper, so haven't touched that part. 2020-02-14 Jakub Jelinek <jakub@redhat.com> Partially implement P1042R1: __VA_OPT__ wording clarifications PR preprocessor/92319 * macro.c (expand_arg): Move declarations before vaopt_state definition. (class vaopt_state): Move enum update_type definition earlier. Remove m_allowed member, add m_arg and m_update members. (vaopt_state::vaopt_state): Change last argument from bool any_args to macro_arg *arg, initialize m_arg and m_update instead of m_allowed. (vaopt_state::update): When bumping m_state from 1 to 2 and m_update is ERROR, determine if __VA_ARGS__ expansion has any non-CPP_PADDING tokens and set m_update to INCLUDE if it has any, DROP otherwise. Return m_update instead of m_allowed ? INCLUDE : DROP in m_state >= 2. (replace_args, create_iso_definition): Adjust last argument to vaopt_state ctor. * c-c++-common/cpp/va-opt-4.c: New test.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
diagnostic-pragma-1.c | Loading commit data... | |
diagnostic-pragma-2.c | Loading commit data... | |
ffile-prefix-map.c | Loading commit data... | |
fmacro-prefix-map.c | Loading commit data... | |
fmax-include-depth-1a.h | Loading commit data... | |
fmax-include-depth-1b.h | Loading commit data... | |
fmax-include-depth.c | Loading commit data... | |
has-builtin-2.c | Loading commit data... | |
has-builtin-3.c | Loading commit data... | |
has-builtin.c | Loading commit data... | |
has-include-1.c | Loading commit data... | |
has-include-next-1.c | Loading commit data... | |
line-1.c | Loading commit data... | |
macro-arg-count-1.c | Loading commit data... | |
macro-arg-count-2.c | Loading commit data... | |
normalize-3.c | Loading commit data... | |
openacc-define-1.c | Loading commit data... | |
openacc-define-2.c | Loading commit data... | |
openacc-define-3.c | Loading commit data... | |
openmp-define-1.c | Loading commit data... | |
openmp-define-2.c | Loading commit data... | |
openmp-define-3.c | Loading commit data... | |
pr45457.c | Loading commit data... | |
pr57580.c | Loading commit data... | |
pr58844-1.c | Loading commit data... | |
pr58844-2.c | Loading commit data... | |
pr60400-1.h | Loading commit data... | |
pr60400-2.h | Loading commit data... | |
pr60400.c | Loading commit data... | |
pr63831-1.c | Loading commit data... | |
pr63831-2.c | Loading commit data... | |
pr65238-1.c | Loading commit data... | |
pr88974.c | Loading commit data... | |
pr91639-one.h | Loading commit data... | |
pr91639-two.h | Loading commit data... | |
pr91639.c | Loading commit data... | |
pr92296-1.c | Loading commit data... | |
pr92296-2.c | Loading commit data... | |
pr93452-1.c | Loading commit data... | |
pr93452-2.c | Loading commit data... | |
pr93545-1.c | Loading commit data... | |
pr93545-2.c | Loading commit data... | |
pr93545-3.c | Loading commit data... | |
pr93545-4.c | Loading commit data... | |
spaceship-1.c | Loading commit data... | |
ucnid-2011-1-utf8.c | Loading commit data... | |
ucnid-2011-1.c | Loading commit data... | |
va-opt-2.c | Loading commit data... | |
va-opt-3.c | Loading commit data... | |
va-opt-4.c | Loading commit data... | |
va-opt-error.c | Loading commit data... | |
va-opt-pedantic.c | Loading commit data... | |
va-opt.c | Loading commit data... | |
warning-directive-1.c | Loading commit data... | |
warning-directive-2.c | Loading commit data... | |
warning-directive-3.c | Loading commit data... | |
warning-directive-4.c | Loading commit data... | |
warning-zero-in-literals-1.c | Loading commit data... | |
warning-zero-location-2.c | Loading commit data... | |
warning-zero-location.c | Loading commit data... |