class BOOST_TEST_DECL precondition : public decorator::base {
Для тех, кто делает макросы в нижнем регистре в аду есть отдельный котел...
А вообще библиотека в таком виде совершенно бесполезная, лучше обычный ассерт.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[6]: библиотека контрактов, сложности использования/сборки
Здравствуйте, niXman, Вы писали:
X>Здравствуйте, VTT, Вы писали:
VTT>>contract.hpp:41 VTT>>
#define precondition(...)
VTT>>boost\test\tree\decorator.hpp:244 VTT>>
class BOOST_TEST_DECL precondition : public decorator::base {
X>а как вы поняли что проблема в этом? любопытно.
Ничтоже сумняшеся, я сделал студийный проект.
Первая ошибка при компиляции указывала на место перед precondition.
Первый результат поиска precondition по проекту указывал не место перед дефайном.
Собственно precondition подсвечивалось как макрос, что сразу навело подозрения.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
решил попроовать поюзать сабж.
клонировал, при попытке выполнить необходимые степы, получаю:
nixman@nixman-pc:~/contract$ tools/waf build
Waf: Entering directory `/home/nixman/contract/build'
[ 1/17] cxx: src/contract.cpp -> build/src/contract.cpp.1.o
[ 2/17] cxx: test/classcontract.cpp -> build/test/classcontract.cpp.2.o
[ 3/17] cxx: test/ctorcontract.cpp -> build/test/ctorcontract.cpp.2.o
[ 4/17] cxx: test/derivedcontract.cpp -> build/test/derivedcontract.cpp.2.o
[ 5/17] cxx: test/disableinvariants.cpp -> build/test/disableinvariants.cpp.2.o
In file included from /home/nixman/contract/include/contract/contract.hpp:187:0,
from ../test/classcontract.cpp:1:
/home/nixman/contract/include/contract/detail/contract_imp.hpp:90:5: error: expected unqualified-id before ‘do’
do { \
^
/home/nixman/contract/include/contract/detail/contract_imp.hpp:98:7: error: expected unqualified-id before ‘while’
} while (0) \
^
In file included from /usr/local/include/boost/test/tools/fpc_tolerance.hpp:19:0,
from /usr/local/include/boost/test/tools/fpc_op.hpp:19,
from /usr/local/include/boost/test/test_tools.hpp:54,
from /usr/local/include/boost/test/unit_test.hpp:18,
from ../test/contract_error.hpp:6,
from ../test/classcontract.cpp:3:
/usr/local/include/boost/test/tree/decorator.hpp: In member function ‘virtual boost::unit_test::decorator::base_ptr boost::unit_test::decorator::precondition::clone() const’:
/usr/local/include/boost/test/tree/decorator.hpp:253:60: error: expected primary-expression before ‘(’ token
virtual base_ptr clone() const { return base_ptr(new precondition( m_precondition )); }
^
In file included from /home/nixman/contract/include/contract/contract.hpp:187:0,
from ../test/classcontract.cpp:1:
/home/nixman/contract/include/contract/detail/contract_imp.hpp:90:5: error: expected type-specifier before ‘do’
do { \
^
In file included from /home/nixman/contract/include/contract/contract.hpp:187:0,
from ../test/disableinvariants.cpp:2:
/home/nixman/contract/include/contract/detail/contract_imp.hpp:90:5: error: expected unqualified-id before ‘do’
do { \
^
/home/nixman/contract/include/contract/detail/contract_imp.hpp:98:7: error: expected unqualified-id before ‘while’
} while (0) \
^
In file included from /usr/local/include/boost/test/tools/fpc_tolerance.hpp:19:0,
from /usr/local/include/boost/test/tools/fpc_op.hpp:19,
from /usr/local/include/boost/test/test_tools.hpp:54,
from /usr/local/include/boost/test/unit_test.hpp:18,
from ../test/contract_error.hpp:6,
from ../test/disableinvariants.cpp:4:
/usr/local/include/boost/test/tree/decorator.hpp: In member function ‘virtual boost::unit_test::decorator::base_ptr boost::unit_test::decorator::precondition::clone() const’:
/usr/local/include/boost/test/tree/decorator.hpp:253:60: error: expected primary-expression before ‘(’ token
virtual base_ptr clone() const { return base_ptr(new precondition( m_precondition )); }
^
In file included from /home/nixman/contract/include/contract/contract.hpp:187:0,
from ../test/disableinvariants.cpp:2:
/home/nixman/contract/include/contract/detail/contract_imp.hpp:90:5: error: expected type-specifier before ‘do’
do { \
^
In file included from /home/nixman/contract/include/contract/contract.hpp:187:0,
from ../test/ctorcontract.cpp:1:
/home/nixman/contract/include/contract/detail/contract_imp.hpp:90:5: error: expected unqualified-id before ‘do’
do { \
^
/home/nixman/contract/include/contract/detail/contract_imp.hpp:98:7: error: expected unqualified-id before ‘while’
} while (0) \
^
In file included from /usr/local/include/boost/test/tools/fpc_tolerance.hpp:19:0,
from /usr/local/include/boost/test/tools/fpc_op.hpp:19,
from /usr/local/include/boost/test/test_tools.hpp:54,
from /usr/local/include/boost/test/unit_test.hpp:18,
from ../test/contract_error.hpp:6,
from ../test/ctorcontract.cpp:3:
/usr/local/include/boost/test/tree/decorator.hpp: In member function ‘virtual boost::unit_test::decorator::base_ptr boost::unit_test::decorator::precondition::clone() const’:
/usr/local/include/boost/test/tree/decorator.hpp:253:60: error: expected primary-expression before ‘(’ token
virtual base_ptr clone() const { return base_ptr(new precondition( m_precondition )); }
^
In file included from /home/nixman/contract/include/contract/contract.hpp:187:0,
from ../test/ctorcontract.cpp:1:
/home/nixman/contract/include/contract/detail/contract_imp.hpp:90:5: error: expected type-specifier before ‘do’
do { \
^
In file included from /home/nixman/contract/include/contract/contract.hpp:187:0,
from ../test/derivedcontract.cpp:1:
/home/nixman/contract/include/contract/detail/contract_imp.hpp:90:5: error: expected unqualified-id before ‘do’
do { \
^
/home/nixman/contract/include/contract/detail/contract_imp.hpp:98:7: error: expected unqualified-id before ‘while’
} while (0) \
^
In file included from /usr/local/include/boost/test/tools/fpc_tolerance.hpp:19:0,
from /usr/local/include/boost/test/tools/fpc_op.hpp:19,
from /usr/local/include/boost/test/test_tools.hpp:54,
from /usr/local/include/boost/test/unit_test.hpp:18,
from ../test/contract_error.hpp:6,
from ../test/derivedcontract.cpp:3:
/usr/local/include/boost/test/tree/decorator.hpp: In member function ‘virtual boost::unit_test::decorator::base_ptr boost::unit_test::decorator::precondition::clone() const’:
/usr/local/include/boost/test/tree/decorator.hpp:253:60: error: expected primary-expression before ‘(’ token
virtual base_ptr clone() const { return base_ptr(new precondition( m_precondition )); }
^
In file included from /home/nixman/contract/include/contract/contract.hpp:187:0,
from ../test/derivedcontract.cpp:1:
/home/nixman/contract/include/contract/detail/contract_imp.hpp:90:5: error: expected type-specifier before ‘do’
do { \
^
Waf: Leaving directory `/home/nixman/contract/build'
препроцессированный код смотрел, ничего невалидного не вижу.
ЧЯДНТ?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: библиотека контрактов, сложности использования/сборки примера
лады, выбросим waf, и будем собирать тесты "руками".
выполняем: g++ -std=c++11 -I../include disableinvariants.cpp, и получаем тот же результат:
In file included from ../include/contract/contract.hpp:187:0,
from disableinvariants.cpp:2:
../include/contract/detail/contract_imp.hpp:90:5: error: expected unqualified-id before ‘do’
do { \
^
../include/contract/detail/contract_imp.hpp:98:7: error: expected unqualified-id before ‘while’
} while (0) \
^
In file included from /usr/local/include/boost/test/tools/fpc_tolerance.hpp:19:0,
from /usr/local/include/boost/test/tools/fpc_op.hpp:19,
from /usr/local/include/boost/test/test_tools.hpp:54,
from /usr/local/include/boost/test/unit_test.hpp:18,
from contract_error.hpp:6,
from disableinvariants.cpp:4:
/usr/local/include/boost/test/tree/decorator.hpp: In member function ‘virtual boost::unit_test::decorator::base_ptr boost::unit_test::decorator::precondition::clone() const’:
/usr/local/include/boost/test/tree/decorator.hpp:253:60: error: expected primary-expression before ‘(’ token
virtual base_ptr clone() const { return base_ptr(new precondition( m_precondition )); }
^
In file included from ../include/contract/contract.hpp:187:0,
from disableinvariants.cpp:2:
../include/contract/detail/contract_imp.hpp:90:5: error: expected type-specifier before ‘do’
do { \
^
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: библиотека контрактов, сложности использования/сборки
Здравствуйте, VTT, Вы писали:
VTT>А вообще библиотека в таком виде совершенно бесполезная, лучше обычный ассерт.
есть желание поведать о своих мыслях по этому поводу? буду рад выслушать.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[6]: библиотека контрактов, сложности использования/сборки
Здравствуйте, niXman, Вы писали:
X>Здравствуйте, VTT, Вы писали:
VTT>>А вообще библиотека в таком виде совершенно бесполезная, лучше обычный ассерт. X>есть желание поведать о своих мыслях по этому поводу? буду рад выслушать.
А о чем тут говорить?
Да, было бы хорошо иметь толковые средства контрактного программирования. Как в D, или даже как в ada.
Но комитет страдает фигней со всякими "If and switch with initializer".
Так что в обозримом будущем таких средств не предвидится.
Ну а пока я ставлю ассерты, много ассертов, и SAL.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[7]: библиотека контрактов, сложности использования/сборки
Здравствуйте, VTT, Вы писали:
VTT>Но комитет страдает фигней со всякими "If and switch with initializer".
синтаксический сахар, но приятно =)
VTT>Ну а пока я ставлю ассерты, много ассертов, и SAL.
что такое SAL?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)