This fixes test 241 on xLC:
"input.y", line 42.11: 1540-0274 (S) The name lookup for "report" did not find a declaration.
"input.y", line 42.11: 1540-1292 (I) Static declarations are not considered for a function call if the function is not qualified.
where report is:
static void
report (std::ostream& yyo, int ival, float fval)
{
yyo << "ival: " << ival << ", fval: " << fval;
}
and line 42 is:
%printer { report (yyo, $$, $<fval>$); } <ival>;
It turns out that indeed this function must not be declared static,
<http://stackoverflow.com/a/
17662745/
1353549>. Let's put it into an
anonymous namespace.
Reported by Thomas Jahns.
http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html
* tests/actions.at (Qualified $$ in actions): Don't use "static",
prefer anonymous namespace.
Fix a compiler warning when no %destructor use $$.
+*** Test suites
+
+ Several portability issues in tests were fixed.
+
* Noteworthy changes in release 3.0.3 (2015-01-15) [stable]
** Bug fixes
]AT_SKEL_CC_IF([[
# include <iostream>
- static void
- report (std::ostream& yyo, int ival, float fval)
+ namespace
{
- yyo << "ival: " << ival << ", fval: " << fval;
+ void
+ report (std::ostream& yyo, int ival, float fval)
+ {
+ yyo << "ival: " << ival << ", fval: " << fval;
+ }
}
]], [[
# include <stdio.h>