/*=============================================================================
    Boost.Wave: A Standard compliant C++ preprocessor library
    http://www.boost.org/

    Copyright (c) 2001-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)
=============================================================================*/

// Tests delayed macro expansion (rescanning)

//O --variadics

#define CONCAT_1(A, B) A ## B
#define CONCAT_2(A, B) CONCAT_1(A, B)

#define DELAY(NAME) NAME

#define A1 a
#define B1 b

#define A2() a
#define B2() b

#define LHS (
#define RHS )

//R #line 29 "t_1_028.cpp"
DELAY(CONCAT_1)( a, b ) ();             //R ab (); 
DELAY(CONCAT_1)(A1, B1)();              //R A1B1(); 
DELAY(CONCAT_1) LHS A1, B1 RHS ();      //R CONCAT_1 ( a, b )(); 
DELAY(CONCAT_1)(A2(), B2())();          //R a b(); 
CONCAT_1 ( a, b ) ();                   //R ab (); 
CONCAT_1 ( A1, B1 ) ();                 //R A1B1 (); 
CONCAT_1 LHS a, b RHS ();               //R CONCAT_1 ( a, b )(); 
CONCAT_1(A2(), B2())();                 //R a b(); 
//R
DELAY(CONCAT_2)( a, b ) ();             //R ab (); 
DELAY(CONCAT_2)(A1, B1)();              //R ab(); 
DELAY(CONCAT_2) LHS A1, B1 RHS ();      //R CONCAT_2 ( a, b )(); 
DELAY(CONCAT_2)(A2(), B2())();          //R ab(); 
CONCAT_2 ( a, b ) ();                   //R ab (); 
CONCAT_2 ( A1, B1 ) ();                 //R ab (); 
CONCAT_2 LHS a, b RHS ();               //R CONCAT_2 ( a, b )(); 
CONCAT_2(A2(), B2())();                 //R ab(); 
