Boost logo

Boost-Commit :

From: hartmut.kaiser_at_[hidden]
Date: 2008-03-05 22:28:48


Author: hkaiser
Date: 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
New Revision: 43524
URL: http://svn.boost.org/trac/boost/changeset/43524

Log:
Wave: Fixed #1673.
Added:
   trunk/libs/wave/test/testwave/testfiles/t_1_038.cpp (contents, props changed)
Text files modified:
   trunk/boost/wave/cpp_context.hpp | 4
   trunk/boost/wave/util/cpp_iterator.hpp | 22
   trunk/boost/wave/util/cpp_macromap.hpp | 56 ++--
   trunk/boost/wave/util/cpp_macromap_utils.hpp | 7
   trunk/libs/wave/ChangeLog | 2
   trunk/libs/wave/test/testwave/testfiles/t_1_013.cpp | 1
   trunk/libs/wave/test/testwave/testfiles/test.cfg | 453 ++++++++++++++++++++-------------------
   trunk/tools/wave/build/Jamfile.v2 | 2
   8 files changed, 280 insertions(+), 267 deletions(-)

Modified: trunk/boost/wave/cpp_context.hpp
==============================================================================
--- trunk/boost/wave/cpp_context.hpp (original)
+++ trunk/boost/wave/cpp_context.hpp 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -332,10 +332,10 @@
     template <typename IteratorT2>
     token_type expand_tokensequence(IteratorT2 &first_, IteratorT2 const &last_,
         token_sequence_type &pending, token_sequence_type &expanded,
- bool expand_undefined = false)
+ bool& seen_newline, bool expand_undefined = false)
     {
         return macros.expand_tokensequence(first_, last_, pending, expanded,
- expand_undefined);
+ seen_newline, expand_undefined);
     }
 
     template <typename IteratorT2>

Modified: trunk/boost/wave/util/cpp_iterator.hpp
==============================================================================
--- trunk/boost/wave/util/cpp_iterator.hpp (original)
+++ trunk/boost/wave/util/cpp_iterator.hpp 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -283,8 +283,8 @@
         bool include_next);
     
 protected:
- result_type const &get_next_token();
- result_type const &pp_token(bool consider_emitting_line_directive = false);
+ result_type const &get_next_token(bool& skipped_newline);
+ result_type const &pp_token(bool& skipped_newline);
 
     bool pp_directive();
     template <typename IteratorT>
@@ -340,6 +340,7 @@
     boost::shared_ptr<base_iteration_context_type> iter_ctx;
     
     bool seen_newline; // needed for recognizing begin of line
+ bool skipped_newline; // a newline has been skipped since last one
     bool must_emit_line_directive; // must emit a line directive
     result_type act_token; // current token
     typename result_type::position_type &act_pos; // current fileposition (references the macromap)
@@ -463,16 +464,15 @@
     ctx.init_context();
     
     // loop over skip able whitespace until something significant is found
- bool skipped_newline = false;
     bool was_seen_newline = seen_newline;
     token_id id = T_UNKNOWN;
         
     try { // catch lexer exceptions
         do {
         // get_next_token assigns result to act_token member
- if (!seen_newline && skipped_newline)
+ if (skipped_newline)
                 seen_newline = true;
- get_next_token();
+ get_next_token(skipped_newline);
 
         // if comments shouldn't be preserved replace them with newlines
             id = token_id(act_token);
@@ -553,7 +553,7 @@
 
     default: // make sure whitespace at line begin keeps seen_newline status
         if (IS_CATEGORY(id, WhiteSpaceTokenType))
- seen_newline = skipped_newline;
+ seen_newline = was_seen_newline;
         break;
     }
 
@@ -573,14 +573,14 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename ContextT>
 inline typename pp_iterator_functor<ContextT>::result_type const &
-pp_iterator_functor<ContextT>::get_next_token()
+pp_iterator_functor<ContextT>::get_next_token(bool& skipped_newline)
 {
     using namespace boost::wave;
     
 // if there is something in the unput_queue, then return the next token from
 // there (all tokens in the queue are preprocessed already)
     if (!pending_queue.empty() || !unput_queue.empty())
- return pp_token(); // return next token
+ return pp_token(skipped_newline); // return next token
     
 // test for EOF, if there is a pending input context, pop it back and continue
 // parsing with it
@@ -657,7 +657,7 @@
             else if (ctx.get_if_block_status()) {
             // preprocess this token, eat up more, if appropriate, return
             // the next preprocessed token
- return pp_token(was_seen_newline);
+ return pp_token(skipped_newline);
             }
             else {
             // compilation condition is false: if the current token is a
@@ -785,7 +785,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename ContextT>
 inline typename pp_iterator_functor<ContextT>::result_type const &
-pp_iterator_functor<ContextT>::pp_token(bool consider_emitting_line_directive)
+pp_iterator_functor<ContextT>::pp_token(bool& skipped_newline)
 {
     using namespace boost::wave;
 
@@ -809,7 +809,7 @@
         // call the lexer, preprocess the required number of tokens, put them
         // into the unput queue
             act_token = ctx.expand_tokensequence(iter_ctx->first,
- iter_ctx->last, pending_queue, unput_queue);
+ iter_ctx->last, pending_queue, unput_queue, skipped_newline);
         }
         else {
         // simply return the next token

Modified: trunk/boost/wave/util/cpp_macromap.hpp
==============================================================================
--- trunk/boost/wave/util/cpp_macromap.hpp (original)
+++ trunk/boost/wave/util/cpp_macromap.hpp 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -121,7 +121,7 @@
     template <typename IteratorT, typename ContainerT>
     token_type const &expand_tokensequence(IteratorT &first,
         IteratorT const &last, ContainerT &pending, ContainerT &expanded,
- bool expand_operator_defined);
+ bool& seen_newline, bool expand_operator_defined);
 
 // Expand all macros inside the given token sequence
     template <typename IteratorT, typename ContainerT>
@@ -159,27 +159,29 @@
     token_type const &expand_tokensequence_worker(ContainerT &pending,
         unput_queue_iterator<IteratorT, token_type, ContainerT> &first,
         unput_queue_iterator<IteratorT, token_type, ContainerT> const &last,
- bool expand_operator_defined);
+ bool& seen_newline, bool expand_operator_defined);
 
 // Collect all arguments supplied to a macro invocation
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
     template <typename IteratorT, typename ContainerT, typename SizeT>
     typename std::vector<ContainerT>::size_type collect_arguments (
         token_type const curr_token, std::vector<ContainerT> &arguments,
- IteratorT &next, IteratorT const &end, SizeT const &parameter_count);
+ IteratorT &next, IteratorT const &end, SizeT const &parameter_count,
+ bool& seen_newline);
 #else
     template <typename IteratorT, typename ContainerT, typename SizeT>
     typename std::vector<ContainerT>::size_type collect_arguments (
         token_type const curr_token, std::vector<ContainerT> &arguments,
         IteratorT &next, IteratorT &endparen, IteratorT const &end,
- SizeT const &parameter_count);
+ SizeT const &parameter_count, bool& seen_newline);
 #endif
 
 // Expand a single macro name
     template <typename IteratorT, typename ContainerT>
     bool expand_macro(ContainerT &pending, token_type const &name,
         typename defined_macros_type::iterator it,
- IteratorT &first, IteratorT const &last, bool expand_operator_defined,
+ IteratorT &first, IteratorT const &last,
+ bool& seen_newline, bool expand_operator_defined,
         defined_macros_type *scope = 0, ContainerT *queue_symbol = 0);
 
 // Expand a predefined macro (__LINE__, __FILE__ and __INCLUDE_LEVEL__)
@@ -216,7 +218,7 @@
 // Resolve operator _Pragma or the #pragma directive
     template <typename IteratorT, typename ContainerT>
     bool resolve_operator_pragma(IteratorT &first,
- IteratorT const &last, ContainerT &expanded);
+ IteratorT const &last, ContainerT &expanded, bool& seen_newline);
 
 // Handle the concatenation operator '##'
     template <typename ContainerT>
@@ -530,7 +532,7 @@
 inline typename ContextT::token_type const &
 macromap<ContextT>::expand_tokensequence(IteratorT &first,
     IteratorT const &last, ContainerT &pending, ContainerT &expanded,
- bool expand_operator_defined)
+ bool& seen_newline, bool expand_operator_defined)
 {
     typedef impl::gen_unput_queue_iterator<IteratorT, token_type, ContainerT>
         gen_type;
@@ -542,7 +544,7 @@
 on_exit::assign<IteratorT, iterator_type> on_exit(first, first_it);
 
     return expand_tokensequence_worker(pending, first_it, last_it,
- expand_operator_defined);
+ seen_newline, expand_operator_defined);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -564,7 +566,7 @@
     ContainerT &pending,
     unput_queue_iterator<IteratorT, token_type, ContainerT> &first,
     unput_queue_iterator<IteratorT, token_type, ContainerT> const &last,
- bool expand_operator_defined)
+ bool& seen_newline, bool expand_operator_defined)
 {
 // if there exist pending tokens (tokens, which are already preprocessed), then
 // return the next one from there
@@ -607,7 +609,7 @@
             // in C99 mode only: resolve the operator _Pragma
             token_type curr_token = *first;
             
- if (!resolve_operator_pragma(first, last, pending) ||
+ if (!resolve_operator_pragma(first, last, pending, seen_newline) ||
                     pending.size() > 0)
                 {
                 // unknown to us pragma or supplied replacement, return the
@@ -629,7 +631,7 @@
             // the current token contains an identifier, which is currently
             // defined as a macro
                 if (expand_macro(pending, name_token, it, first, last,
- expand_operator_defined))
+ seen_newline, expand_operator_defined))
                 {
                 // the tokens returned by expand_macro should be rescanned
                 // beginning at the last token of the returned replacement list
@@ -657,7 +659,7 @@
 
             // return the next preprocessed token
                 return expand_tokensequence_worker(pending, first, last,
- expand_operator_defined);
+ seen_newline, expand_operator_defined);
             }
 // else if (expand_operator_defined) {
 // // in preprocessing conditionals undefined identifiers and keywords
@@ -702,14 +704,14 @@
 inline typename std::vector<ContainerT>::size_type
 macromap<ContextT>::collect_arguments (token_type const curr_token,
     std::vector<ContainerT> &arguments, IteratorT &next,
- IteratorT const &end, SizeT const &parameter_count)
+ IteratorT const &end, SizeT const &parameter_count, bool& seen_newline)
 #else
 template <typename ContextT>
 template <typename IteratorT, typename ContainerT, typename SizeT>
 inline typename std::vector<ContainerT>::size_type
 macromap<ContextT>::collect_arguments (token_type const curr_token,
     std::vector<ContainerT> &arguments, IteratorT &next, IteratorT &endparen,
- IteratorT const &end, SizeT const &parameter_count)
+ IteratorT const &end, SizeT const &parameter_count, bool& seen_newline)
 #endif
 {
     using namespace boost::wave;
@@ -805,10 +807,12 @@
             was_whitespace = false;
             break;
 
+ case T_NEWLINE:
+ seen_newline = true;
+ /* fall through */
         case T_SPACE:
         case T_SPACE2:
         case T_CCOMMENT:
- case T_NEWLINE:
             if (!was_whitespace)
                 argument->push_back(token_type(T_SPACE, " ", (*next).get_position()));
             was_whitespace = true;
@@ -863,10 +867,11 @@
 
 on_exit::assign<IteratorT, iterator_type> on_exit(first, first_it);
 ContainerT pending_queue;
+bool seen_newline;
     
     while (!pending_queue.empty() || first_it != last_it) {
         token_type t = expand_tokensequence_worker(pending_queue, first_it,
- last_it, expand_operator_defined);
+ last_it, seen_newline, expand_operator_defined);
 
         expanded.push_back(t);
     }
@@ -1146,8 +1151,8 @@
 macromap<ContextT>::expand_macro(ContainerT &expanded,
     token_type const &curr_token, typename defined_macros_type::iterator it,
     IteratorT &first, IteratorT const &last,
- bool expand_operator_defined, defined_macros_type *scope,
- ContainerT *queue_symbol)
+ bool& seen_newline, bool expand_operator_defined,
+ defined_macros_type *scope, ContainerT *queue_symbol)
 {
     using namespace boost::wave;
     
@@ -1202,7 +1207,7 @@
 
     if (T_LEFTPAREN == impl::next_token<IteratorT>::peek(first, last)) {
     // called as a function-like macro
- impl::skip_to_token(first, last, T_LEFTPAREN);
+ impl::skip_to_token(first, last, T_LEFTPAREN, seen_newline);
         
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS == 0
         IteratorT seqstart = first;
@@ -1217,11 +1222,11 @@
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
         typename std::vector<ContainerT>::size_type count_args =
             collect_arguments (curr_token, arguments, first, last,
- macro_def.macroparameters.size());
+ macro_def.macroparameters.size(), seen_newline);
 #else
         typename std::vector<ContainerT>::size_type count_args =
             collect_arguments (curr_token, arguments, first, seqend, last,
- macro_def.macroparameters.size());
+ macro_def.macroparameters.size(), seen_newline);
 #endif
 
         // verify the parameter count
@@ -1491,12 +1496,12 @@
 template <typename IteratorT, typename ContainerT>
 inline bool
 macromap<ContextT>::resolve_operator_pragma(IteratorT &first,
- IteratorT const &last, ContainerT &pending)
+ IteratorT const &last, ContainerT &pending, bool& seen_newline)
 {
 // isolate the parameter of the operator _Pragma
     token_type pragma_token = *first;
     
- if (!impl::skip_to_token(first, last, T_LEFTPAREN)) {
+ if (!impl::skip_to_token(first, last, T_LEFTPAREN, seen_newline)) {
     // illformed operator _Pragma
         BOOST_WAVE_THROW_CTX(ctx, preprocess_exception, ill_formed_expression,
             "operator _Pragma()", pragma_token.get_position());
@@ -1506,11 +1511,12 @@
     std::vector<ContainerT> arguments;
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
     typename std::vector<ContainerT>::size_type count_args =
- collect_arguments (pragma_token, arguments, first, last, 1);
+ collect_arguments (pragma_token, arguments, first, last, 1, seen_newline);
 #else
     IteratorT endparen = first;
     typename std::vector<ContainerT>::size_type count_args =
- collect_arguments (pragma_token, arguments, first, endparen, last, 1);
+ collect_arguments (pragma_token, arguments, first, endparen, last, 1,
+ seen_newline);
 #endif
 
 // verify the parameter count

Modified: trunk/boost/wave/util/cpp_macromap_utils.hpp
==============================================================================
--- trunk/boost/wave/util/cpp_macromap_utils.hpp (original)
+++ trunk/boost/wave/util/cpp_macromap_utils.hpp 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -438,7 +438,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename IteratorT>
 inline bool
-skip_to_token(IteratorT &it, IteratorT const &end, token_id id)
+skip_to_token(IteratorT &it, IteratorT const &end, token_id id,
+ bool& seen_newline)
 {
     using namespace boost::wave;
     if (token_id(*it) == id)
@@ -447,8 +448,10 @@
         return false;
 
     while (IS_CATEGORY(*it, WhiteSpaceTokenType) ||
- T_NEWLINE == token_id(*it))
+ T_NEWLINE == token_id(*it))
     {
+ if (T_NEWLINE == token_id(*it))
+ seen_newline = true;
         if (++it == end)
             return false;
     }

Modified: trunk/libs/wave/ChangeLog
==============================================================================
--- trunk/libs/wave/ChangeLog (original)
+++ trunk/libs/wave/ChangeLog 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -167,6 +167,8 @@
   (BOOST_HAS_THREADS).
 - Fixed a whitespace insertion glitch, where whitespace got inserted
   unconditionally between two operators even if one of these was a comma.
+- Fixed #line directive after a macro invocation containing newlines to
+ correctly reference the line number.
   
 Boost V1.34.0
 - Wave Version 1.2.4

Modified: trunk/libs/wave/test/testwave/testfiles/t_1_013.cpp
==============================================================================
--- trunk/libs/wave/test/testwave/testfiles/t_1_013.cpp (original)
+++ trunk/libs/wave/test/testwave/testfiles/t_1_013.cpp 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -30,6 +30,7 @@
 //R #line 22 "t_1_013.cpp"
 //R printf("x" "1" "= %d, x" "2" "= %s", x1, x2);
 //R fputs("strncmp(\"abc\\0d\?\", \"abc\", '\\4', \"\\u1234\") == 0" ": @\n", s);
+//R
 //R "vers2.hpp"
 //R "hello";
 //R "hello" ", world"

Added: trunk/libs/wave/test/testwave/testfiles/t_1_038.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/wave/test/testwave/testfiles/t_1_038.cpp 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ Boost.Wave: A Standard compliant C++ preprocessor library
+ http://www.boost.org/
+
+ Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+ Software License, Version 1.0. (See accompanying file
+ LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+
+// make sure newlines inside of macro invocations get accounted for correctly
+
+#define BAZ(T, E) T E
+
+struct foo
+{
+ BAZ
+ (bool,
+ value = true
+ );
+};
+
+struct bar {};
+
+//R #line 14 "t_1_038.cpp"
+//R struct foo
+//R {
+//R bool value = true;
+//R #line 20 "t_1_038.cpp"
+//R };
+//R
+//R struct bar {};
+

Modified: trunk/libs/wave/test/testwave/testfiles/test.cfg
==============================================================================
--- trunk/libs/wave/test/testwave/testfiles/test.cfg (original)
+++ trunk/libs/wave/test/testwave/testfiles/test.cfg 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -1,226 +1,227 @@
-#
-# Boost.Wave: A Standard compliant C++ preprocessor library
-# http://www.boost.org/
-#
-# Copyright (c) 2003-2006 Hartmut Kaiser. Distributed under the Boost
-# Software License, Version 1.0. (See accompanying file
-# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#
-
-#
-# t_1: Macro expansion
-#
-t_1_001.cpp
-t_1_002.cpp
-t_1_003.cpp
-t_1_004.cpp
-t_1_005.cpp
-t_1_006.cpp
-t_1_007.cpp
-t_1_008.cpp
-t_1_009.cpp
-t_1_010.cpp
-t_1_011.cpp
-t_1_012.cpp
-t_1_013.cpp
-# t_1_014 currently disabled because of a known problem in the Wave library
-#t_1_014.cpp
-t_1_015.cpp
-t_1_016.cpp
-t_1_017.cpp
-t_1_018.cpp
-t_1_019.cpp
-t_1_020.cpp
-t_1_021.cpp
-t_1_022.cpp
-t_1_023.cpp
-t_1_024.cpp
-t_1_025.cpp
-t_1_026.cpp
-t_1_027.cpp
-t_1_028.cpp
-t_1_029.cpp
-t_1_030.cpp
-t_1_031.cpp
-t_1_032.cpp
-t_1_033.cpp
-t_1_034.cpp
-t_1_035.cpp
-t_1_036.cpp
-t_1_037.cpp
-
-#
-# t_2: Preprocessing directives
-#
-t_2_001.cpp
-t_2_002.cpp
-t_2_003.cpp
-t_2_004.cpp
-t_2_005.cpp
-t_2_006.cpp
-t_2_007.cpp
-t_2_008.cpp
-t_2_009.cpp
-t_2_010.cpp
-t_2_011.cpp
-t_2_012.cpp
-t_2_013.cpp
-t_2_014.cpp
-t_2_015.cpp
-t_2_016.cpp
-t_2_017.cpp
-
-#
-# t_3: Predefined macros
-#
-t_3_001.cpp
-t_3_002.cpp
-t_3_003.cpp
-t_3_004.cpp
-
-#
-# Preprocessing expressions
-#
-t_4_001.cpp
-t_4_002.cpp
-t_4_003.cpp
-t_4_004.cpp
-
-#
-# unit tests from the mcpp preprocessor validation suite
-# (general functionality)
-#
-t_5_001.cpp
-t_5_002.cpp
-t_5_003.cpp
-# t_5_004 is currently disabled because of a known problem in the Wave library
-#t_5_004.cpp
-t_5_005.cpp
-t_5_006.cpp
-t_5_007.cpp
-t_5_008.cpp
-t_5_009.cpp
-t_5_010.cpp
-t_5_011.cpp
-t_5_012.cpp
-t_5_013.cpp
-t_5_014.cpp
-t_5_015.cpp
-t_5_016.cpp
-t_5_017.cpp
-t_5_018.cpp
-t_5_019.cpp
-t_5_020.cpp
-t_5_021.cpp
-t_5_022.cpp
-t_5_023.cpp
-t_5_024.cpp
-t_5_025.cpp
-t_5_026.cpp
-t_5_027.cpp
-t_5_028.cpp
-t_5_029.cpp
-# t_5_030 contains one disabled test
-t_5_030.cpp
-t_5_031.cpp
-t_5_032.cpp
-t_5_033.cpp
-t_5_034.cpp
-t_5_035.cpp
-
-#
-# unit tests from the mcpp preprocessor validation suite
-# (error reporting)
-#
-t_6_001.cpp
-t_6_002.cpp
-t_6_003.cpp
-t_6_004.cpp
-t_6_005.cpp
-t_6_006.cpp
-t_6_007.cpp
-t_6_008.cpp
-t_6_009.cpp
-t_6_010.cpp
-t_6_011.cpp
-t_6_012.cpp
-t_6_013.cpp
-t_6_014.cpp
-t_6_015.cpp
-t_6_016.cpp
-t_6_017.cpp
-t_6_018.cpp
-t_6_019.cpp
-t_6_020.cpp
-t_6_021.cpp
-t_6_022.cpp
-t_6_023.cpp
-t_6_024.cpp
-t_6_025.cpp
-t_6_026.cpp
-t_6_027.cpp
-t_6_028.cpp
-t_6_029.cpp
-t_6_030.cpp
-t_6_031.cpp
-t_6_032.cpp
-t_6_033.cpp
-t_6_034.cpp
-t_6_035.cpp
-t_6_036.cpp
-t_6_037.cpp
-t_6_038.cpp
-t_6_039.cpp
-t_6_040.cpp
-t_6_041.cpp
-t_6_042.cpp
-t_6_043.cpp
-t_6_044.cpp
-t_6_045.cpp
-t_6_046.cpp
-t_6_047.cpp
-t_6_048.cpp
-t_6_049.cpp
-t_6_050.cpp
-t_6_051.cpp
-t_6_052.cpp
-t_6_053.cpp
-t_6_054.cpp
-t_6_055.cpp
-t_6_056.cpp
-t_6_057.cpp
-t_6_058.cpp
-t_6_059.cpp
-t_6_060.cpp
-t_6_061.cpp
-t_6_062.cpp
-t_6_063.cpp
-t_6_064.cpp
-t_6_065.cpp
-t_6_066.cpp
-t_6_067.cpp
-t_6_068.cpp
-t_6_069.cpp
-
-#
-# t_9: General preprocessing problems
-#
-t_9_001.cpp
-t_9_002.cpp
-t_9_003.cpp
-t_9_004.cpp
-t_9_005.cpp
-t_9_006.cpp
-t_9_007.cpp
-t_9_008.cpp
-t_9_009.cpp
-t_9_010.cpp
-t_9_011.cpp
-t_9_012.cpp
-t_9_013.cpp
-t_9_014.cpp
-t_9_015.cpp
-t_9_016.cpp
-t_9_017.cpp
-t_9_018.cpp
-t_9_019.cpp
+#
+# Boost.Wave: A Standard compliant C++ preprocessor library
+# http://www.boost.org/
+#
+# Copyright (c) 2003-2008 Hartmut Kaiser. Distributed under the Boost
+# Software License, Version 1.0. (See accompanying file
+# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#
+
+#
+# t_1: Macro expansion
+#
+t_1_001.cpp
+t_1_002.cpp
+t_1_003.cpp
+t_1_004.cpp
+t_1_005.cpp
+t_1_006.cpp
+t_1_007.cpp
+t_1_008.cpp
+t_1_009.cpp
+t_1_010.cpp
+t_1_011.cpp
+t_1_012.cpp
+t_1_013.cpp
+# t_1_014 currently disabled because of a known problem in the Wave library
+#t_1_014.cpp
+t_1_015.cpp
+t_1_016.cpp
+t_1_017.cpp
+t_1_018.cpp
+t_1_019.cpp
+t_1_020.cpp
+t_1_021.cpp
+t_1_022.cpp
+t_1_023.cpp
+t_1_024.cpp
+t_1_025.cpp
+t_1_026.cpp
+t_1_027.cpp
+t_1_028.cpp
+t_1_029.cpp
+t_1_030.cpp
+t_1_031.cpp
+t_1_032.cpp
+t_1_033.cpp
+t_1_034.cpp
+t_1_035.cpp
+t_1_036.cpp
+t_1_037.cpp
+t_1_038.cpp
+
+#
+# t_2: Preprocessing directives
+#
+t_2_001.cpp
+t_2_002.cpp
+t_2_003.cpp
+t_2_004.cpp
+t_2_005.cpp
+t_2_006.cpp
+t_2_007.cpp
+t_2_008.cpp
+t_2_009.cpp
+t_2_010.cpp
+t_2_011.cpp
+t_2_012.cpp
+t_2_013.cpp
+t_2_014.cpp
+t_2_015.cpp
+t_2_016.cpp
+t_2_017.cpp
+
+#
+# t_3: Predefined macros
+#
+t_3_001.cpp
+t_3_002.cpp
+t_3_003.cpp
+t_3_004.cpp
+
+#
+# Preprocessing expressions
+#
+t_4_001.cpp
+t_4_002.cpp
+t_4_003.cpp
+t_4_004.cpp
+
+#
+# unit tests from the mcpp preprocessor validation suite
+# (general functionality)
+#
+t_5_001.cpp
+t_5_002.cpp
+t_5_003.cpp
+# t_5_004 is currently disabled because of a known problem in the Wave library
+#t_5_004.cpp
+t_5_005.cpp
+t_5_006.cpp
+t_5_007.cpp
+t_5_008.cpp
+t_5_009.cpp
+t_5_010.cpp
+t_5_011.cpp
+t_5_012.cpp
+t_5_013.cpp
+t_5_014.cpp
+t_5_015.cpp
+t_5_016.cpp
+t_5_017.cpp
+t_5_018.cpp
+t_5_019.cpp
+t_5_020.cpp
+t_5_021.cpp
+t_5_022.cpp
+t_5_023.cpp
+t_5_024.cpp
+t_5_025.cpp
+t_5_026.cpp
+t_5_027.cpp
+t_5_028.cpp
+t_5_029.cpp
+# t_5_030 contains one disabled test
+t_5_030.cpp
+t_5_031.cpp
+t_5_032.cpp
+t_5_033.cpp
+t_5_034.cpp
+t_5_035.cpp
+
+#
+# unit tests from the mcpp preprocessor validation suite
+# (error reporting)
+#
+t_6_001.cpp
+t_6_002.cpp
+t_6_003.cpp
+t_6_004.cpp
+t_6_005.cpp
+t_6_006.cpp
+t_6_007.cpp
+t_6_008.cpp
+t_6_009.cpp
+t_6_010.cpp
+t_6_011.cpp
+t_6_012.cpp
+t_6_013.cpp
+t_6_014.cpp
+t_6_015.cpp
+t_6_016.cpp
+t_6_017.cpp
+t_6_018.cpp
+t_6_019.cpp
+t_6_020.cpp
+t_6_021.cpp
+t_6_022.cpp
+t_6_023.cpp
+t_6_024.cpp
+t_6_025.cpp
+t_6_026.cpp
+t_6_027.cpp
+t_6_028.cpp
+t_6_029.cpp
+t_6_030.cpp
+t_6_031.cpp
+t_6_032.cpp
+t_6_033.cpp
+t_6_034.cpp
+t_6_035.cpp
+t_6_036.cpp
+t_6_037.cpp
+t_6_038.cpp
+t_6_039.cpp
+t_6_040.cpp
+t_6_041.cpp
+t_6_042.cpp
+t_6_043.cpp
+t_6_044.cpp
+t_6_045.cpp
+t_6_046.cpp
+t_6_047.cpp
+t_6_048.cpp
+t_6_049.cpp
+t_6_050.cpp
+t_6_051.cpp
+t_6_052.cpp
+t_6_053.cpp
+t_6_054.cpp
+t_6_055.cpp
+t_6_056.cpp
+t_6_057.cpp
+t_6_058.cpp
+t_6_059.cpp
+t_6_060.cpp
+t_6_061.cpp
+t_6_062.cpp
+t_6_063.cpp
+t_6_064.cpp
+t_6_065.cpp
+t_6_066.cpp
+t_6_067.cpp
+t_6_068.cpp
+t_6_069.cpp
+
+#
+# t_9: General preprocessing problems
+#
+t_9_001.cpp
+t_9_002.cpp
+t_9_003.cpp
+t_9_004.cpp
+t_9_005.cpp
+t_9_006.cpp
+t_9_007.cpp
+t_9_008.cpp
+t_9_009.cpp
+t_9_010.cpp
+t_9_011.cpp
+t_9_012.cpp
+t_9_013.cpp
+t_9_014.cpp
+t_9_015.cpp
+t_9_016.cpp
+t_9_017.cpp
+t_9_018.cpp
+t_9_019.cpp

Modified: trunk/tools/wave/build/Jamfile.v2
==============================================================================
--- trunk/tools/wave/build/Jamfile.v2 (original)
+++ trunk/tools/wave/build/Jamfile.v2 2008-03-05 22:28:47 EST (Wed, 05 Mar 2008)
@@ -24,7 +24,7 @@
     /boost//thread
     /boost//date_time
     :
- <threading>multi
+ <threading>multi
 # <debug-symbols>on
     :
     release


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk