summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-11-27 19:05:52 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-11-27 19:05:52 +0000
commit5fe59873eb076053d09cd316d2a3a8a132c3b35d (patch)
treec67be10442fd4395f6c8cd63b4c4185cf396b26a
parentcec8164fe0abf050d9d9a6f8dc14dbb2f8502780 (diff)
downloadATCD-5fe59873eb076053d09cd316d2a3a8a132c3b35d.tar.gz
ChangeLogTag: Fri Nov 27 19:03:58 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--modules/TAO/ChangeLog21
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_constant.cpp4
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_expression.cpp4
-rw-r--r--modules/TAO/TAO_IDL/fe/idl.yy110
-rw-r--r--modules/TAO/TAO_IDL/fe/y.tab.cpp225
-rw-r--r--modules/TAO/TAO_IDL/fe/y.tab.h1
6 files changed, 214 insertions, 151 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog
index 4abb68f6a24..32e967b3e07 100644
--- a/modules/TAO/ChangeLog
+++ b/modules/TAO/ChangeLog
@@ -1,14 +1,27 @@
+Fri Nov 27 19:03:58 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * TAO_IDL/ast/ast_constant.cpp:
+ * TAO_IDL/ast/ast_expression.cpp:
+
+ Cosmetic changes.
+
+ * TAO_IDL/fe/idl.yy:
+ * TAO_IDL/fe/y.tab.h:
+ * TAO_IDL/fe/y.tab.cpp:
+
+ Added semantic actions for template argument list.
+
Fri Nov 27 16:53:09 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/fe/fe_template_interface_header.cpp:
-
+
Minor change to avoid compilation error. This file will
eventually be removed once some of its code has been
relocated.
-
+
* TAO_IDL/fe/y.tab.cpp:
* TAO_IDL/fe/idl.yy:
-
+
Cleaned up semantic action for <primary_expr> and tested
lookup and narrowing of template module referenced in a
template module instantiation.
@@ -19,7 +32,7 @@ Wed Nov 25 20:19:10 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/util/utl_err.cpp:
* TAO_IDL/fe/y.tab.cpp:
* TAO_IDL/fe/idl.yy:
-
+
Start of semantic actions for instantiated template modules,
and related error messages.
diff --git a/modules/TAO/TAO_IDL/ast/ast_constant.cpp b/modules/TAO/TAO_IDL/ast/ast_constant.cpp
index fed406de13a..4b58940385d 100644
--- a/modules/TAO/TAO_IDL/ast/ast_constant.cpp
+++ b/modules/TAO/TAO_IDL/ast/ast_constant.cpp
@@ -77,10 +77,6 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_generator.h"
#include "nr_extern.h"
-ACE_RCSID (ast,
- ast_constant,
- "$Id$")
-
// Static functions.
// Convert a value from the enum AST_Expression::ExprType to a char *.
diff --git a/modules/TAO/TAO_IDL/ast/ast_expression.cpp b/modules/TAO/TAO_IDL/ast/ast_expression.cpp
index a51051f5c22..27b66536691 100644
--- a/modules/TAO/TAO_IDL/ast/ast_expression.cpp
+++ b/modules/TAO/TAO_IDL/ast/ast_expression.cpp
@@ -3194,12 +3194,12 @@ AST_Expression::destroy (void)
delete this->pd_v2;
this->pd_v2 = 0;
-
+
if (this->pd_n != 0)
{
this->pd_n->destroy ();
}
-
+
delete this->pd_n;
this->pd_n = 0;
}
diff --git a/modules/TAO/TAO_IDL/fe/idl.yy b/modules/TAO/TAO_IDL/fe/idl.yy
index 8b7f2d9b42e..bb6ef307aa0 100644
--- a/modules/TAO/TAO_IDL/fe/idl.yy
+++ b/modules/TAO/TAO_IDL/fe/idl.yy
@@ -184,6 +184,7 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */
FE_Utils::T_Inst_Info *tival; /* Template instantiation */
FE_Utils::T_Port_Info *ptval; /* Porttype reference */
+ FE_Utils::T_ARGLIST *alval; /* List of template args */
}
/*
@@ -287,7 +288,7 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
%type <dcval> template_type_spec sequence_type_spec string_type_spec
%type <dcval> struct_type enum_type switch_type_spec union_type
%type <dcval> array_declarator op_type_spec seq_head wstring_type_spec
-%type <dcval> param_type_spec type_dcl type_declarator
+%type <dcval> param_type_spec type_dcl type_declarator actual_parameter
%type <idlist> scoped_name interface_type component_inheritance_spec
%type <idlist> home_inheritance_spec primary_key_spec module_header
@@ -348,6 +349,8 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
%type <plval> formal_parameters at_least_one_formal_parameter
%type <sval> formal_parameter_name
+
+%type <alval> actual_parameters at_least_one_actual_parameter
%%
/*
@@ -1964,56 +1967,46 @@ primary_expr
* as a constant value).
*/
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(1) - (1)].idlist),
+ AST_Decl *d = s->lookup_by_name ($1,
true);
-
+
if (d == 0)
{
- idl_global->err ()->lookup_error ((tao_yyvsp[(1) - (1)].idlist));
+ idl_global->err ()->lookup_error ($1);
}
- else
+ else if (d->node_type () == AST_Decl::NT_const)
{
- switch (d->node_type ())
- {
- case AST_Decl::NT_const:
- {
- /*
- * If the scoped name is an IDL constant, it
- * may be used in an array dim, a string
- * bound, or a sequence bound. If so, it
- * must be unsigned and > 0. We assign the
- * constant's value and type to the
- * expression created here so we can check
- * them later.
- */
- AST_Constant *c =
- AST_Constant::narrow_from_decl (d);
-
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- c->constant_value (),
- c->et ());
+ /*
+ * If the scoped name is an IDL constant, it
+ * may be used in an array dim, a string
+ * bound, or a sequence bound. If so, it
+ * must be unsigned and > 0. We assign the
+ * constant's value and type to the
+ * expression created here so we can check
+ * them later.
+ */
+ AST_Constant *c =
+ AST_Constant::narrow_from_decl (d);
- break;
- }
- case AST_Decl::NT_enum_val:
- {
- // An AST_Expression owns the scoped name
- // passed in this constructor, so we copy it
- // and destroy it below no matter which case
- // is followed.
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- (tao_yyvsp[(1) - (1)].idlist)->copy ());
-
- break;
- }
- }
+ $<exval>$ =
+ idl_global->gen ()->create_expr (
+ c->constant_value (),
+ c->et ());
+ }
+ else
+ {
+ // An AST_Expression owns the scoped name
+ // passed in this constructor, so we copy it
+ // and destroy it below no matter which case
+ // is followed.
+ $<exval>$ =
+ idl_global->gen ()->create_expr (
+ $1->copy ());
}
- (tao_yyvsp[(1) - (1)].idlist)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idlist);
- (tao_yyvsp[(1) - (1)].idlist) = 0;
+ $1->destroy ();
+ delete $1;
+ $1 = 0;
}
| literal
| '(' const_expr ')'
@@ -6058,7 +6051,7 @@ at_least_one_formal_parameter
$2->enqueue_head (*$1);
delete $1;
$1 = 0;
-
+
// The param added above is always the last one parsed,
// so we check for matches between sequence<T> & T here.
ACE_CString bad_id =
@@ -6381,11 +6374,39 @@ extended_port_decl
at_least_one_actual_parameter
: actual_parameter actual_parameters
+ {
+// at_least_one_actual_parameter : actual_parameter actual_parameters
+ if ($2 == 0)
+ {
+ ACE_NEW_RETURN ($2,
+ FE_Utils::T_ARGLIST,
+ 1);
+ }
+
+ $2->enqueue_head ($1);
+ $<alval>$ = $2;
+ }
;
actual_parameters
: actual_parameters ',' actual_parameter
+ {
+// actual_parameters : actual_parameters ',' actual_parameter
+ if ($1 == 0)
+ {
+ ACE_NEW_RETURN ($1,
+ FE_Utils::T_ARGLIST,
+ 1);
+ }
+
+ $1->enqueue_tail ($3);
+ $<alval>$ = $1;
+ }
| /* EMPTY */
+ {
+// | /* EMPTY */
+ $<alval>$ = 0;
+ }
;
actual_parameter
@@ -6399,6 +6420,7 @@ actual_parameter
// higher lever, deduce that it's not supposede to be
// a constant and look up the type to add to the template
// arg list.
+ $<dcval>$ = 0;
}
;
diff --git a/modules/TAO/TAO_IDL/fe/y.tab.cpp b/modules/TAO/TAO_IDL/fe/y.tab.cpp
index 362accf4cb4..8a5155fe378 100644
--- a/modules/TAO/TAO_IDL/fe/y.tab.cpp
+++ b/modules/TAO/TAO_IDL/fe/y.tab.cpp
@@ -371,6 +371,7 @@ typedef union TAO_YYSTYPE
FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */
FE_Utils::T_Inst_Info *tival; /* Template instantiation */
FE_Utils::T_Port_Info *ptval; /* Porttype reference */
+ FE_Utils::T_ARGLIST *alval; /* List of template args */
}
/* Line 187 of yacc.c. */
@@ -874,63 +875,63 @@ static const tao_yytype_int16 tao_yyrhs[] =
/* TAO_YYRLINE[TAO_YYN] -- source line where rule number TAO_YYN was defined. */
static const tao_yytype_uint16 tao_yyrline[] =
{
- 0, 356, 356, 359, 360, 364, 367, 370, 376, 380,
- 381, 386, 385, 396, 395, 406, 405, 416, 415, 426,
- 425, 436, 435, 446, 445, 456, 455, 466, 465, 476,
- 475, 486, 485, 496, 495, 506, 505, 516, 515, 530,
- 529, 542, 577, 582, 541, 598, 606, 622, 625, 643,
- 647, 605, 662, 666, 667, 671, 672, 677, 680, 683,
- 676, 692, 695, 691, 703, 704, 709, 748, 753, 708,
- 771, 770, 784, 822, 853, 887, 886, 898, 905, 906,
- 907, 908, 912, 923, 928, 972, 977, 927, 1006, 1045,
- 1050, 1004, 1069, 1067, 1107, 1106, 1120, 1126, 1133, 1140,
- 1147, 1173, 1200, 1265, 1266, 1270, 1271, 1272, 1278, 1277,
- 1285, 1284, 1294, 1295, 1300, 1299, 1310, 1309, 1320, 1319,
- 1330, 1329, 1340, 1339, 1350, 1349, 1360, 1359, 1370, 1369,
- 1383, 1396, 1394, 1424, 1431, 1442, 1441, 1469, 1467, 1494,
- 1506, 1552, 1580, 1611, 1616, 1621, 1626, 1610, 1679, 1680,
- 1681, 1682, 1683, 1684, 1685, 1697, 1702, 1775, 1777, 1779,
- 1780, 1794, 1795, 1809, 1810, 1823, 1824, 1834, 1847, 1848,
- 1858, 1871, 1872, 1882, 1892, 1905, 1906, 1916, 1926, 1939,
- 1974, 1975, 1984, 1989, 1996, 2004, 2009, 2014, 2020, 2025,
- 2030, 2038, 2110, 2109, 2119, 2124, 2129, 2134, 2161, 2170,
- 2169, 2240, 2241, 2245, 2253, 2254, 2282, 2283, 2284, 2285,
- 2286, 2287, 2288, 2289, 2293, 2294, 2295, 2299, 2300, 2301,
- 2305, 2306, 2310, 2323, 2321, 2351, 2358, 2359, 2363, 2376,
- 2374, 2404, 2411, 2428, 2447, 2448, 2452, 2457, 2462, 2470,
- 2475, 2480, 2488, 2493, 2498, 2506, 2520, 2525, 2533, 2541,
- 2549, 2557, 2566, 2565, 2581, 2615, 2620, 2580, 2639, 2642,
- 2643, 2647, 2647, 2657, 2662, 2656, 2725, 2724, 2739, 2738,
- 2753, 2758, 2763, 2768, 2815, 2820, 2752, 2844, 2852, 2866,
- 2876, 2884, 2885, 2993, 2996, 2997, 3002, 3007, 3001, 3043,
- 3042, 3056, 3067, 3089, 3097, 3096, 3112, 3117, 3111, 3134,
- 3133, 3186, 3210, 3235, 3240, 3273, 3278, 3234, 3304, 3309,
- 3307, 3314, 3318, 3355, 3360, 3353, 3427, 3482, 3492, 3481,
- 3507, 3512, 3505, 3553, 3579, 3589, 3594, 3587, 3624, 3649,
- 3658, 3657, 3693, 3704, 3726, 3734, 3739, 3733, 3776, 3777,
- 3782, 3787, 3792, 3797, 3781, 3866, 3871, 3876, 3881, 3865,
- 3959, 3964, 3994, 3999, 3958, 4017, 4022, 4075, 4080, 4015,
- 4117, 4123, 4130, 4137, 4138, 4150, 4156, 4198, 4149, 4220,
- 4219, 4230, 4229, 4242, 4247, 4245, 4252, 4257, 4262, 4256,
- 4303, 4302, 4313, 4312, 4325, 4330, 4328, 4335, 4340, 4345,
- 4339, 4392, 4400, 4401, 4402, 4507, 4512, 4517, 4526, 4531,
- 4525, 4543, 4551, 4556, 4550, 4568, 4576, 4581, 4575, 4593,
- 4601, 4606, 4600, 4618, 4625, 4638, 4636, 4664, 4671, 4700,
- 4738, 4739, 4743, 4773, 4813, 4818, 4772, 4837, 4842, 4835,
- 4884, 4883, 4894, 4901, 4902, 4907, 4906, 4917, 4916, 4927,
- 4926, 4937, 4936, 4947, 4946, 4957, 4956, 4967, 4966, 4978,
- 5037, 5044, 5068, 5142, 5152, 5158, 5164, 5211, 5258, 5307,
- 5306, 5356, 5361, 5366, 5371, 5376, 5381, 5355, 5435, 5434,
- 5445, 5452, 5459, 5467, 5472, 5466, 5484, 5485, 5489, 5491,
- 5490, 5501, 5500, 5515, 5551, 5513, 5585, 5621, 5583, 5653,
- 5654, 5655, 5659, 5660, 5664, 5692, 5723, 5768, 5773, 5721,
- 5790, 5800, 5819, 5831, 5830, 5870, 5920, 5925, 5868, 5942,
- 5947, 5955, 5960, 5965, 5970, 5975, 5980, 5985, 5990, 5995,
- 6004, 6038, 6037, 6059, 6066, 6090, 6104, 6111, 6135, 6142,
- 6153, 6158, 6163, 6168, 6152, 6183, 6190, 6195, 6202, 6201,
- 6210, 6209, 6220, 6289, 6339, 6343, 6344, 6348, 6362, 6367,
- 6372, 6366, 6432, 6437, 6431, 6452, 6456, 6457, 6462, 6461,
- 6472, 6471, 6482, 6481, 6492, 6491
+ 0, 359, 359, 362, 363, 367, 370, 373, 379, 383,
+ 384, 389, 388, 399, 398, 409, 408, 419, 418, 429,
+ 428, 439, 438, 449, 448, 459, 458, 469, 468, 479,
+ 478, 489, 488, 499, 498, 509, 508, 519, 518, 533,
+ 532, 545, 580, 585, 544, 601, 609, 624, 627, 645,
+ 649, 608, 664, 668, 669, 673, 674, 679, 682, 685,
+ 678, 694, 719, 693, 729, 730, 735, 774, 779, 734,
+ 797, 796, 810, 848, 879, 913, 912, 924, 931, 932,
+ 933, 934, 938, 949, 954, 998, 1003, 953, 1032, 1071,
+ 1076, 1030, 1095, 1093, 1133, 1132, 1146, 1152, 1159, 1166,
+ 1173, 1199, 1226, 1291, 1292, 1296, 1297, 1298, 1304, 1303,
+ 1311, 1310, 1320, 1321, 1326, 1325, 1336, 1335, 1346, 1345,
+ 1356, 1355, 1366, 1365, 1376, 1375, 1386, 1385, 1396, 1395,
+ 1409, 1422, 1420, 1450, 1457, 1468, 1467, 1495, 1493, 1520,
+ 1532, 1578, 1606, 1637, 1642, 1647, 1652, 1636, 1705, 1706,
+ 1707, 1708, 1709, 1710, 1711, 1723, 1728, 1797, 1799, 1801,
+ 1802, 1816, 1817, 1831, 1832, 1845, 1846, 1856, 1869, 1870,
+ 1880, 1893, 1894, 1904, 1914, 1927, 1928, 1938, 1948, 1961,
+ 2011, 2012, 2021, 2026, 2033, 2041, 2046, 2051, 2057, 2062,
+ 2067, 2075, 2147, 2146, 2156, 2161, 2166, 2171, 2198, 2207,
+ 2206, 2277, 2278, 2282, 2290, 2291, 2319, 2320, 2321, 2322,
+ 2323, 2324, 2325, 2326, 2330, 2331, 2332, 2336, 2337, 2338,
+ 2342, 2343, 2347, 2360, 2358, 2388, 2395, 2396, 2400, 2413,
+ 2411, 2441, 2448, 2465, 2484, 2485, 2489, 2494, 2499, 2507,
+ 2512, 2517, 2525, 2530, 2535, 2543, 2557, 2562, 2570, 2578,
+ 2586, 2594, 2603, 2602, 2618, 2652, 2657, 2617, 2676, 2679,
+ 2680, 2684, 2684, 2694, 2699, 2693, 2762, 2761, 2776, 2775,
+ 2790, 2795, 2800, 2805, 2852, 2857, 2789, 2881, 2889, 2903,
+ 2913, 2921, 2922, 3030, 3033, 3034, 3039, 3044, 3038, 3080,
+ 3079, 3093, 3104, 3126, 3134, 3133, 3149, 3154, 3148, 3171,
+ 3170, 3223, 3247, 3272, 3277, 3310, 3315, 3271, 3341, 3346,
+ 3344, 3351, 3355, 3392, 3397, 3390, 3464, 3519, 3529, 3518,
+ 3544, 3549, 3542, 3590, 3616, 3626, 3631, 3624, 3661, 3686,
+ 3695, 3694, 3730, 3741, 3763, 3771, 3776, 3770, 3813, 3814,
+ 3819, 3824, 3829, 3834, 3818, 3903, 3908, 3913, 3918, 3902,
+ 3996, 4001, 4031, 4036, 3995, 4054, 4059, 4112, 4117, 4052,
+ 4154, 4160, 4167, 4174, 4175, 4187, 4193, 4235, 4186, 4257,
+ 4256, 4267, 4266, 4279, 4284, 4282, 4289, 4294, 4299, 4293,
+ 4340, 4339, 4350, 4349, 4362, 4367, 4365, 4372, 4377, 4382,
+ 4376, 4429, 4437, 4438, 4439, 4544, 4549, 4554, 4563, 4568,
+ 4562, 4580, 4588, 4593, 4587, 4605, 4613, 4618, 4612, 4630,
+ 4638, 4643, 4637, 4655, 4662, 4675, 4673, 4701, 4708, 4737,
+ 4775, 4776, 4780, 4810, 4850, 4855, 4809, 4874, 4879, 4872,
+ 4921, 4920, 4931, 4938, 4939, 4944, 4943, 4954, 4953, 4964,
+ 4963, 4974, 4973, 4984, 4983, 4994, 4993, 5004, 5003, 5015,
+ 5074, 5081, 5105, 5179, 5189, 5195, 5201, 5248, 5295, 5344,
+ 5343, 5393, 5398, 5403, 5408, 5413, 5418, 5392, 5472, 5471,
+ 5482, 5489, 5496, 5504, 5509, 5503, 5521, 5522, 5526, 5528,
+ 5527, 5538, 5537, 5552, 5588, 5550, 5622, 5658, 5620, 5690,
+ 5691, 5692, 5696, 5697, 5701, 5729, 5760, 5805, 5810, 5758,
+ 5827, 5837, 5856, 5868, 5867, 5907, 5957, 5962, 5905, 5979,
+ 5984, 5992, 5997, 6002, 6007, 6012, 6017, 6022, 6027, 6032,
+ 6041, 6075, 6074, 6096, 6103, 6127, 6141, 6148, 6172, 6179,
+ 6190, 6195, 6200, 6205, 6189, 6220, 6227, 6232, 6239, 6238,
+ 6247, 6246, 6257, 6326, 6376, 6392, 6406, 6413, 6428, 6433,
+ 6438, 6432, 6498, 6503, 6497, 6518, 6522, 6523, 6528, 6527,
+ 6538, 6537, 6548, 6547, 6558, 6557
};
#endif
@@ -2940,7 +2941,6 @@ tao_yyreduce:
{
// template_module : template_module_header
-
// The module_header rule is common to template module, fixed
// module and instantiated template module. In the last
// case, a fully scoped name is allowed, but here we
@@ -3041,7 +3041,7 @@ tao_yyreduce:
AST_Template_Module *ref = 0;
AST_Decl *d = s->lookup_by_name (sn, true);
bool so_far_so_good = true;
-
+
if (d == 0)
{
idl_global->err ()->lookup_error (sn);
@@ -3050,7 +3050,7 @@ tao_yyreduce:
else
{
ref = AST_Template_Module::narrow_from_decl (d);
-
+
if (ref == 0)
{
idl_global->err ()->template_module_expected (d);
@@ -4425,49 +4425,39 @@ tao_yyreduce:
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(1) - (1)].idlist),
true);
-
+
if (d == 0)
{
idl_global->err ()->lookup_error ((tao_yyvsp[(1) - (1)].idlist));
}
- else
+ else if (d->node_type () == AST_Decl::NT_const)
{
- switch (d->node_type ())
- {
- case AST_Decl::NT_const:
- {
- /*
- * If the scoped name is an IDL constant, it
- * may be used in an array dim, a string
- * bound, or a sequence bound. If so, it
- * must be unsigned and > 0. We assign the
- * constant's value and type to the
- * expression created here so we can check
- * them later.
- */
- AST_Constant *c =
- AST_Constant::narrow_from_decl (d);
-
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- c->constant_value (),
- c->et ());
+ /*
+ * If the scoped name is an IDL constant, it
+ * may be used in an array dim, a string
+ * bound, or a sequence bound. If so, it
+ * must be unsigned and > 0. We assign the
+ * constant's value and type to the
+ * expression created here so we can check
+ * them later.
+ */
+ AST_Constant *c =
+ AST_Constant::narrow_from_decl (d);
- break;
- }
- case AST_Decl::NT_enum_val:
- {
- // An AST_Expression owns the scoped name
- // passed in this constructor, so we copy it
- // and destroy it below no matter which case
- // is followed.
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- (tao_yyvsp[(1) - (1)].idlist)->copy ());
-
- break;
- }
- }
+ (tao_yyval.exval) =
+ idl_global->gen ()->create_expr (
+ c->constant_value (),
+ c->et ());
+ }
+ else
+ {
+ // An AST_Expression owns the scoped name
+ // passed in this constructor, so we copy it
+ // and destroy it below no matter which case
+ // is followed.
+ (tao_yyval.exval) =
+ idl_global->gen ()->create_expr (
+ (tao_yyvsp[(1) - (1)].idlist)->copy ());
}
(tao_yyvsp[(1) - (1)].idlist)->destroy ();
@@ -9285,6 +9275,46 @@ tao_yyreduce:
}
break;
+ case 544:
+
+ {
+// at_least_one_actual_parameter : actual_parameter actual_parameters
+ if ((tao_yyvsp[(2) - (2)].alval) == 0)
+ {
+ ACE_NEW_RETURN ((tao_yyvsp[(2) - (2)].alval),
+ FE_Utils::T_ARGLIST,
+ 1);
+ }
+
+ (tao_yyvsp[(2) - (2)].alval)->enqueue_head ((tao_yyvsp[(1) - (2)].dcval));
+ (tao_yyval.alval) = (tao_yyvsp[(2) - (2)].alval);
+ }
+ break;
+
+ case 545:
+
+ {
+// actual_parameters : actual_parameters ',' actual_parameter
+ if ((tao_yyvsp[(1) - (3)].alval) == 0)
+ {
+ ACE_NEW_RETURN ((tao_yyvsp[(1) - (3)].alval),
+ FE_Utils::T_ARGLIST,
+ 1);
+ }
+
+ (tao_yyvsp[(1) - (3)].alval)->enqueue_tail ((tao_yyvsp[(3) - (3)].dcval));
+ (tao_yyval.alval) = (tao_yyvsp[(1) - (3)].alval);
+ }
+ break;
+
+ case 546:
+
+ {
+// | /* EMPTY */
+ (tao_yyval.alval) = 0;
+ }
+ break;
+
case 547:
{
@@ -9296,6 +9326,7 @@ tao_yyreduce:
// higher lever, deduce that it's not supposede to be
// a constant and look up the type to add to the template
// arg list.
+ (tao_yyval.dcval) = 0;
}
break;
diff --git a/modules/TAO/TAO_IDL/fe/y.tab.h b/modules/TAO/TAO_IDL/fe/y.tab.h
index 2795175d3ea..f62045c4f8a 100644
--- a/modules/TAO/TAO_IDL/fe/y.tab.h
+++ b/modules/TAO/TAO_IDL/fe/y.tab.h
@@ -254,6 +254,7 @@ typedef union TAO_YYSTYPE
FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */
FE_Utils::T_Inst_Info *tival; /* Template instantiation */
FE_Utils::T_Port_Info *ptval; /* Porttype reference */
+ FE_Utils::T_ARGLIST *alval; /* List of template args */
}
/* Line 1489 of yacc.c. */