[accumulators] broken on msvc
Hi! It seems that Boost.Accumulators is broken for all msvc builds with error messages like: boost/accumulators/framework/accumulators/reference_accumulator.hpp(72) : error C2061: syntax error : identifier 'BOOST_PP_CAT' boost/accumulators/framework/accumulators/reference_accumulator.hpp(72) : fatal error C1903: unable to recover from previous error(s); stopping compilation (from http://www.boost.org/development/tests/develop/developer/output/teeks99-02e-...) The regression page http://www.boost.org/development/tests/develop/developer/accumulators.html shows _all_ msvc builders failing. My own code broke with an identical message sometime last week. Any ideas? Yours, Jürgen -- * Dipl.-Math. Jürgen Hunold ! * voice: ++49 4257 300 ! Fährstraße 1 * fax : ++49 4257 300 ! 31609 Balge/Sebbenhausen * jhunold@gmx.eu ! Germany
On Sun, Jun 15, 2014 at 8:03 PM, Jürgen Hunold
Hi!
It seems that Boost.Accumulators is broken for all msvc builds with error messages like:
boost/accumulators/framework/accumulators/reference_accumulator.hpp(72) : error C2061: syntax error : identifier 'BOOST_PP_CAT' boost/accumulators/framework/accumulators/reference_accumulator.hpp(72) : fatal error C1903: unable to recover from previous error(s); stopping compilation
(from http://www.boost.org/development/tests/develop/developer/output/teeks99-02e-...)
The regression page http://www.boost.org/development/tests/develop/developer/accumulators.html shows _all_ msvc builders failing.
My own code broke with an identical message sometime last week.
Any ideas?
I think there's a missing #include
Am Sonntag, 15. Juni 2014, 20:23:43 schrieb Andrey Semashev:
On Sun, Jun 15, 2014 at 8:03 PM, Jürgen Hunold
wrote: My own code broke with an identical message sometime last week. Any ideas?
I think there's a missing #include
in boost/accumulators/accumulators_fwd.hpp. There is another use of BOOST_PP_CAT in boost/accumulators/numeric/detail/function_n.hpp but it has the #include. I don't see how this could be related to boost/accumulators/framework/accumulators/reference_accumulator.hpp though.
As there are no changes in accumulators I've trace the bug back to preprocessor. Bisecting the error leads to:
c66ea5871fd44274f681f02323c4d46bdf394c7c is the first bad commit commit c66ea5871fd44274f681f02323c4d46bdf394c7c Author: Edward Diener
Date: Wed Apr 30 16:06:49 2014 -0400 Addition of is_empty tests and changes to rem processing as a workaround to VC++ problem.
the culprit might be this change, which moves cat.hpp out of scope for msvc:
diff --git a/include/boost/preprocessor/facilities/is_empty.hpp
b/include/boost/preprocessor/facilities/is_empty.hpp
index b1094d8..e7f821f 100644
--- a/include/boost/preprocessor/facilities/is_empty.hpp
+++ b/include/boost/preprocessor/facilities/is_empty.hpp
@@ -22,10 +22,13 @@
# else
#
# include
On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote:
Am Sonntag, 15. Juni 2014, 20:23:43 schrieb Andrey Semashev:
On Sun, Jun 15, 2014 at 8:03 PM, Jürgen Hunold
wrote: My own code broke with an identical message sometime last week. Any ideas?
I think there's a missing #include
in boost/accumulators/accumulators_fwd.hpp. There is another use of BOOST_PP_CAT in boost/accumulators/numeric/detail/function_n.hpp but it has the #include. I don't see how this could be related to boost/accumulators/framework/accumulators/reference_accumulator.hpp though. As there are no changes in accumulators I've trace the bug back to
preprocessor. Bisecting the error leads to:
c66ea5871fd44274f681f02323c4d46bdf394c7c is the first bad commit commit c66ea5871fd44274f681f02323c4d46bdf394c7c Author: Edward Diener
Date: Wed Apr 30 16:06:49 2014 -0400 Addition of is_empty tests and changes to rem processing as a workaround to VC++ problem.
the culprit might be this change, which moves cat.hpp out of scope for msvc:
diff --git a/include/boost/preprocessor/facilities/is_empty.hpp b/include/boost/preprocessor/facilities/is_empty.hpp index b1094d8..e7f821f 100644 --- a/include/boost/preprocessor/facilities/is_empty.hpp +++ b/include/boost/preprocessor/facilities/is_empty.hpp @@ -22,10 +22,13 @@ # else # # include
-# include +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() # include # include +# else +# include # include +# endif # # /* BOOST_PP_IS_EMPTY */ # The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.
On 6/15/2014 2:20 PM, Andrey Semashev wrote:
On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote:
The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.
I've added the missing #include on develop. Hopefully, that fixes things. Thanks for the report, Eric
On 6/15/2014 10:36 PM, Eric Niebler wrote:
On 6/15/2014 2:20 PM, Andrey Semashev wrote:
On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote:
The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.
I've added the missing #include on develop. Hopefully, that fixes things.
Looks like it doesn't fix things. If Edward's is indeed the problematic commit, I wonder if he'd be willing to look into this. Edward? This is the commit: https://github.com/boostorg/preprocessor/commit/c66ea5871fd44274f681f02323c4... *All* msvc accumulators tests are currently broken on develop by this. Eric
On 6/16/2014 2:38 AM, Eric Niebler wrote:
On 6/15/2014 10:36 PM, Eric Niebler wrote:
On 6/15/2014 2:20 PM, Andrey Semashev wrote:
On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote:
The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.
I've added the missing #include on develop. Hopefully, that fixes things.
Looks like it doesn't fix things. If Edward's is indeed the problematic commit, I wonder if he'd be willing to look into this. Edward?
This is the commit:
https://github.com/boostorg/preprocessor/commit/c66ea5871fd44274f681f02323c4...
*All* msvc accumulators tests are currently broken on develop by this.
I had added a variadic version of the undocumented is_empty macro to Boost PP on the 'develop' branch. Since the macro is undocumented and the variadic version is much better than the pre-existing non-variadic version I did not foresee this causing any problems. However I have now updated the 'develop' branch to remove the use of the variadic version. Is Boost accumulators really using Boost PP is_empty ? Otherwise I cannot see where my change could have caused the breakage in accumulators.
On 6/16/2014 2:38 AM, Eric Niebler wrote:
On 6/15/2014 10:36 PM, Eric Niebler wrote:
On 6/15/2014 2:20 PM, Andrey Semashev wrote:
On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote:
The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.
I've added the missing #include on develop. Hopefully, that fixes things.
Looks like it doesn't fix things. If Edward's is indeed the problematic commit, I wonder if he'd be willing to look into this. Edward?
This is the commit:
https://github.com/boostorg/preprocessor/commit/c66ea5871fd44274f681f02323c4...
*All* msvc accumulators tests are currently broken on develop by this.
I have backed out all the changes I made to preprocessor so the accumulators problem should now be fixed. I will look at the issue of why the macro was failing with my VC++ changes when I have some time.
On 6/16/2014 9:11 AM, Edward Diener wrote:
On 6/16/2014 2:38 AM, Eric Niebler wrote:
On 6/15/2014 10:36 PM, Eric Niebler wrote:
On 6/15/2014 2:20 PM, Andrey Semashev wrote:
On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote:
The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.
I've added the missing #include on develop. Hopefully, that fixes things.
Looks like it doesn't fix things. If Edward's is indeed the problematic commit, I wonder if he'd be willing to look into this. Edward?
This is the commit:
https://github.com/boostorg/preprocessor/commit/c66ea5871fd44274f681f02323c4...
*All* msvc accumulators tests are currently broken on develop by this.
I have backed out all the changes I made to preprocessor so the accumulators problem should now be fixed. I will look at the issue of why the macro was failing with my VC++ changes when I have some time.
I have not been able to do this correctly. I can do a 'git reset --hard abranch' to the local branch I want to back out 'develop' to but as soon as I try to push this to the remote develop I get: hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. Is there some way I can back out the changes I have already pushed to the remote develop without having to manually back out each change manually on the latest 'develop' branch before I push it to the remote develop ?
On 06/16/2014 09:23 AM, Edward Diener wrote:
On 6/16/2014 9:11 AM, Edward Diener wrote:
On 6/16/2014 2:38 AM, Eric Niebler wrote:
On 6/15/2014 10:36 PM, Eric Niebler wrote:
On 6/15/2014 2:20 PM, Andrey Semashev wrote:
On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote:
The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.
I've added the missing #include on develop. Hopefully, that fixes things.
Looks like it doesn't fix things. If Edward's is indeed the problematic commit, I wonder if he'd be willing to look into this. Edward?
This is the commit:
https://github.com/boostorg/preprocessor/commit/c66ea5871fd44274f681f02323c4...
*All* msvc accumulators tests are currently broken on develop by this.
I have backed out all the changes I made to preprocessor so the accumulators problem should now be fixed. I will look at the issue of why the macro was failing with my VC++ changes when I have some time.
I have not been able to do this correctly. I can do a 'git reset --hard abranch' to the local branch I want to back out 'develop' to but as soon as I try to push this to the remote develop I get:
hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Is there some way I can back out the changes I have already pushed to the remote develop without having to manually back out each change manually on the latest 'develop' branch before I push it to the remote develop ?
You aren't going to want to use reset on something you have pushed remotely. Take a look at "git revert". It will generate the changes required to back-out 1:N commits into a single commit. History is preserved and life is good. The command is quite powerful and you should be able to do whatever is needed to get the commit into the state you want before pushing. hth michael -- Michael Caisse ciere consulting ciere.com
On 6/16/2014 12:33 PM, Michael Caisse wrote:
On 06/16/2014 09:23 AM, Edward Diener wrote:
On 6/16/2014 9:11 AM, Edward Diener wrote:
On 6/16/2014 2:38 AM, Eric Niebler wrote:
On 6/15/2014 10:36 PM, Eric Niebler wrote:
On 6/15/2014 2:20 PM, Andrey Semashev wrote:
On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote: > The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.
I've added the missing #include on develop. Hopefully, that fixes things.
Looks like it doesn't fix things. If Edward's is indeed the problematic commit, I wonder if he'd be willing to look into this. Edward?
This is the commit:
https://github.com/boostorg/preprocessor/commit/c66ea5871fd44274f681f02323c4...
*All* msvc accumulators tests are currently broken on develop by this.
I have backed out all the changes I made to preprocessor so the accumulators problem should now be fixed. I will look at the issue of why the macro was failing with my VC++ changes when I have some time.
I have not been able to do this correctly. I can do a 'git reset --hard abranch' to the local branch I want to back out 'develop' to but as soon as I try to push this to the remote develop I get:
hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Is there some way I can back out the changes I have already pushed to the remote develop without having to manually back out each change manually on the latest 'develop' branch before I push it to the remote develop ?
You aren't going to want to use reset on something you have pushed remotely. Take a look at "git revert". It will generate the changes required to back-out 1:N commits into a single commit. History is preserved and life is good.
The command is quite powerful and you should be able to do whatever is needed to get the commit into the state you want before pushing.
Thank you ! You are very right.
participants (5)
-
Andrey Semashev
-
Edward Diener
-
Eric Niebler
-
Jürgen Hunold
-
Michael Caisse