#define YYBISON 1 /* Identify Bison output. */
+#define yyparse java_parse
+#define yylex java_lex
+#define yyerror java_error
+#define yylval java_lval
+#define yychar java_char
+#define yydebug java_debug
+#define yynerrs java_nerrs
#define PLUS_TK 258
#define MINUS_TK 259
#define MULT_TK 260
1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
1217, 1222, 1233, 1240, 1244, 1255, 1265, 1271, 1277, 1283,
1285, 1291, 1293, 1299, 1301, 1303, 1305, 1307, 1311, 1313,
- 1314, 1315, 1316, 1317, 1318, 1321, 1324, 1326, 1328, 1332,
- 1337, 1342, 1348, 1358, 1364, 1366, 1368, 1375, 1378, 1380,
- 1382, 1386, 1388, 1391, 1395, 1397, 1400, 1407, 1413, 1415,
- 1417, 1421, 1429, 1432, 1434, 1436, 1440, 1445, 1454, 1459,
- 1462, 1469, 1471, 1473, 1477, 1480, 1489, 1496, 1498, 1502,
- 1515, 1517, 1523, 1529, 1533, 1535, 1539, 1542, 1544, 1548,
- 1551, 1553, 1555, 1559, 1562, 1564, 1566, 1570, 1573, 1575,
- 1577, 1581, 1587, 1589, 1593, 1600, 1602, 1604, 1606, 1610,
- 1618, 1621, 1623, 1628, 1632, 1634, 1641, 1649, 1666, 1668,
- 1670, 1674, 1677, 1682, 1684, 1687, 1689, 1691, 1693, 1694,
- 1695, 1696, 1700, 1702, 1704, 1709, 1711, 1713, 1715, 1717,
- 1721, 1724, 1729, 1731, 1736, 1737, 1738, 1739, 1740, 1742,
- 1744, 1746, 1748, 1750, 1754, 1756, 1759, 1765, 1770, 1774,
- 1777, 1779, 1781, 1785, 1787, 1789, 1791, 1795, 1798, 1802,
- 1808, 1810, 1818, 1845, 1847, 1851, 1856, 1864, 1868, 1871,
- 1873, 1884, 1895, 1900, 1909, 1911, 1915, 1918, 1920, 1925,
- 1930, 1935, 1942, 1944, 1945, 1946, 1949, 1954, 1959, 1961,
- 1962, 1964, 1966, 1967, 1969, 1973, 1976, 1980, 1983, 1987,
- 1989, 1991, 1993, 1994, 1996, 2000, 2009, 2011, 2013, 2026,
- 2028, 2034, 2036, 2038, 2042, 2044, 2049, 2054, 2059, 2061,
- 2063, 2067, 2069, 2074, 2079, 2081, 2085, 2087, 2092, 2097,
- 2102, 2104, 2106, 2110, 2112, 2117, 2122, 2127, 2132, 2134,
- 2136, 2138, 2140, 2142, 2146, 2148, 2153, 2158, 2160, 2164,
- 2166, 2171, 2175, 2177, 2182, 2186, 2188, 2193, 2197, 2199,
- 2204, 2208, 2210, 2215, 2219, 2221, 2226, 2232, 2234, 2238,
- 2240, 2243, 2246, 2254, 2256, 2257, 2260, 2262, 2265, 2269
+ 1314, 1315, 1316, 1317, 1318, 1321, 1327, 1329, 1331, 1335,
+ 1340, 1345, 1351, 1361, 1367, 1369, 1371, 1378, 1381, 1383,
+ 1385, 1389, 1391, 1394, 1398, 1400, 1403, 1410, 1416, 1418,
+ 1420, 1424, 1432, 1435, 1437, 1439, 1443, 1448, 1457, 1462,
+ 1465, 1472, 1474, 1476, 1480, 1483, 1492, 1499, 1501, 1505,
+ 1518, 1520, 1526, 1532, 1536, 1538, 1542, 1545, 1547, 1551,
+ 1554, 1556, 1558, 1562, 1565, 1567, 1569, 1573, 1576, 1578,
+ 1580, 1584, 1590, 1592, 1596, 1603, 1605, 1607, 1609, 1613,
+ 1621, 1624, 1626, 1631, 1635, 1637, 1644, 1652, 1669, 1671,
+ 1673, 1677, 1680, 1685, 1687, 1690, 1692, 1694, 1696, 1697,
+ 1698, 1699, 1703, 1705, 1707, 1712, 1714, 1716, 1718, 1720,
+ 1724, 1727, 1732, 1734, 1739, 1740, 1741, 1742, 1743, 1745,
+ 1747, 1749, 1751, 1753, 1757, 1759, 1762, 1768, 1773, 1777,
+ 1780, 1782, 1784, 1788, 1790, 1792, 1794, 1798, 1801, 1805,
+ 1811, 1813, 1821, 1848, 1850, 1854, 1859, 1867, 1871, 1874,
+ 1876, 1887, 1898, 1903, 1912, 1914, 1918, 1921, 1923, 1928,
+ 1933, 1938, 1945, 1947, 1948, 1949, 1952, 1957, 1962, 1964,
+ 1965, 1967, 1969, 1970, 1972, 1976, 1979, 1983, 1986, 1990,
+ 1992, 1994, 1996, 1997, 1999, 2003, 2012, 2014, 2016, 2029,
+ 2031, 2037, 2039, 2041, 2045, 2047, 2052, 2057, 2062, 2064,
+ 2066, 2070, 2072, 2077, 2082, 2084, 2088, 2090, 2095, 2100,
+ 2105, 2107, 2109, 2113, 2115, 2120, 2125, 2130, 2135, 2137,
+ 2139, 2141, 2143, 2145, 2149, 2151, 2156, 2161, 2163, 2167,
+ 2169, 2174, 2178, 2180, 2185, 2189, 2191, 2196, 2200, 2202,
+ 2207, 2211, 2213, 2218, 2222, 2224, 2229, 2235, 2237, 2241,
+ 2243, 2246, 2249, 2257, 2259, 2260, 2263, 2265, 2268, 2272
};
#endif
#define YYPURE 1
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/local/gnu/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
#endif
#endif
\f
-#line 196 "/usr/local/gnu/share/bison.simple"
+#line 196 "/usr/lib/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
break;}
case 246:
#line 1323 "./parse.y"
-{ yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node, NULL_TREE); ;
+{
+ yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node,
+ yyvsp[0].node, NULL_TREE);
+ ;
break;}
case 247:
-#line 1325 "./parse.y"
+#line 1328 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 248:
-#line 1327 "./parse.y"
+#line 1330 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 249:
-#line 1329 "./parse.y"
+#line 1332 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 250:
-#line 1334 "./parse.y"
+#line 1337 "./parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 251:
-#line 1339 "./parse.y"
+#line 1342 "./parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 252:
-#line 1344 "./parse.y"
+#line 1347 "./parse.y"
{
enter_block ();
;
break;}
case 253:
-#line 1348 "./parse.y"
+#line 1351 "./parse.y"
{
/* Make into "proper list" of COMPOUND_EXPRs.
I.e. make the last statment also have its own
;
break;}
case 254:
-#line 1360 "./parse.y"
+#line 1363 "./parse.y"
{
yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
case 255:
-#line 1365 "./parse.y"
+#line 1368 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 256:
-#line 1367 "./parse.y"
+#line 1370 "./parse.y"
{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);;
break;}
case 257:
-#line 1369 "./parse.y"
+#line 1372 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 258:
-#line 1377 "./parse.y"
+#line 1380 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 259:
-#line 1379 "./parse.y"
+#line 1382 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 260:
-#line 1381 "./parse.y"
+#line 1384 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 261:
-#line 1383 "./parse.y"
+#line 1386 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 267:
-#line 1402 "./parse.y"
+#line 1405 "./parse.y"
{
tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location;
;
break;}
case 268:
-#line 1408 "./parse.y"
+#line 1411 "./parse.y"
{
tree lab = build1 (DEFAULT_EXPR, NULL_TREE, NULL_TREE);
EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location;
;
break;}
case 269:
-#line 1414 "./parse.y"
+#line 1417 "./parse.y"
{yyerror ("Missing or invalid constant expression"); RECOVER;;
break;}
case 270:
-#line 1416 "./parse.y"
+#line 1419 "./parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 271:
-#line 1418 "./parse.y"
+#line 1421 "./parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 272:
-#line 1423 "./parse.y"
+#line 1426 "./parse.y"
{
tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0);
yyval.node = build_new_loop (body);
;
break;}
case 273:
-#line 1431 "./parse.y"
+#line 1434 "./parse.y"
{ yyval.node = complete_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
case 274:
-#line 1433 "./parse.y"
+#line 1436 "./parse.y"
{YYERROR_NOW; yyerror ("'(' expected"); RECOVER;;
break;}
case 275:
-#line 1435 "./parse.y"
+#line 1438 "./parse.y"
{yyerror ("Missing term and ')' expected"); RECOVER;;
break;}
case 276:
-#line 1437 "./parse.y"
+#line 1440 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 277:
-#line 1442 "./parse.y"
+#line 1445 "./parse.y"
{ yyval.node = complete_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
case 278:
-#line 1447 "./parse.y"
+#line 1450 "./parse.y"
{
tree body = build_loop_body (0, NULL_TREE, 1);
yyval.node = build_new_loop (body);
;
break;}
case 279:
-#line 1456 "./parse.y"
+#line 1459 "./parse.y"
{ yyval.node = complete_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ;
break;}
case 280:
-#line 1461 "./parse.y"
-{ yyval.node = complete_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;
+#line 1464 "./parse.y"
+{ yyval.node = complete_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 281:
-#line 1463 "./parse.y"
+#line 1466 "./parse.y"
{
yyval.node = complete_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
;
break;}
case 282:
-#line 1470 "./parse.y"
+#line 1473 "./parse.y"
{yyerror ("Invalid control expression"); RECOVER;;
break;}
case 283:
-#line 1472 "./parse.y"
+#line 1475 "./parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
case 284:
-#line 1474 "./parse.y"
+#line 1477 "./parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
case 285:
-#line 1479 "./parse.y"
+#line 1482 "./parse.y"
{ yyval.node = complete_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;
break;}
case 286:
-#line 1481 "./parse.y"
+#line 1484 "./parse.y"
{
yyval.node = complete_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
;
break;}
case 287:
-#line 1491 "./parse.y"
+#line 1494 "./parse.y"
{
/* This scope defined for local variable that may be
defined within the scope of the for loop */
;
break;}
case 288:
-#line 1497 "./parse.y"
+#line 1500 "./parse.y"
{yyerror ("'(' expected"); DRECOVER(for_1);;
break;}
case 289:
-#line 1499 "./parse.y"
+#line 1502 "./parse.y"
{yyerror ("Invalid init statement"); RECOVER;;
break;}
case 290:
-#line 1504 "./parse.y"
+#line 1507 "./parse.y"
{
/* We now declare the loop body. The loop is
declared as a for loop. */
;
break;}
case 291:
-#line 1516 "./parse.y"
+#line 1519 "./parse.y"
{ yyval.node = empty_stmt_node; ;
break;}
case 292:
-#line 1518 "./parse.y"
+#line 1521 "./parse.y"
{
/* Init statement recorded within the previously
defined block scope */
;
break;}
case 293:
-#line 1524 "./parse.y"
+#line 1527 "./parse.y"
{
/* Local variable are recorded within the previously
defined block scope */
;
break;}
case 294:
-#line 1530 "./parse.y"
+#line 1533 "./parse.y"
{yyerror ("';' expected"); DRECOVER(for_init_1);;
break;}
case 295:
-#line 1534 "./parse.y"
+#line 1537 "./parse.y"
{yyval.node = empty_stmt_node;;
break;}
case 296:
-#line 1536 "./parse.y"
+#line 1539 "./parse.y"
{ yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ;
break;}
case 297:
-#line 1541 "./parse.y"
+#line 1544 "./parse.y"
{ yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ;
break;}
case 298:
-#line 1543 "./parse.y"
+#line 1546 "./parse.y"
{ yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ;
break;}
case 299:
-#line 1545 "./parse.y"
+#line 1548 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 300:
-#line 1550 "./parse.y"
+#line 1553 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ;
break;}
case 301:
-#line 1552 "./parse.y"
+#line 1555 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ;
break;}
case 302:
-#line 1554 "./parse.y"
+#line 1557 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 303:
-#line 1556 "./parse.y"
+#line 1559 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 304:
-#line 1561 "./parse.y"
+#line 1564 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ;
break;}
case 305:
-#line 1563 "./parse.y"
+#line 1566 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ;
break;}
case 306:
-#line 1565 "./parse.y"
+#line 1568 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 307:
-#line 1567 "./parse.y"
+#line 1570 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 308:
-#line 1572 "./parse.y"
+#line 1575 "./parse.y"
{ yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
case 309:
-#line 1574 "./parse.y"
+#line 1577 "./parse.y"
{ yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
case 310:
-#line 1576 "./parse.y"
+#line 1579 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 311:
-#line 1578 "./parse.y"
+#line 1581 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 312:
-#line 1583 "./parse.y"
+#line 1586 "./parse.y"
{
yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
case 313:
-#line 1588 "./parse.y"
+#line 1591 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 314:
-#line 1590 "./parse.y"
+#line 1593 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 315:
-#line 1595 "./parse.y"
+#line 1598 "./parse.y"
{
yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) =
;
break;}
case 316:
-#line 1601 "./parse.y"
+#line 1604 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 317:
-#line 1603 "./parse.y"
+#line 1606 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 318:
-#line 1605 "./parse.y"
+#line 1608 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 319:
-#line 1607 "./parse.y"
+#line 1610 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 320:
-#line 1612 "./parse.y"
+#line 1615 "./parse.y"
{
if ((1 << yyvsp[0].value) != ACC_SYNCHRONIZED)
fatal ("synchronized was '%d' - yyparse", (1 << yyvsp[0].value));
;
break;}
case 321:
-#line 1620 "./parse.y"
+#line 1623 "./parse.y"
{ yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 322:
-#line 1622 "./parse.y"
+#line 1625 "./parse.y"
{ yyval.node = build_try_finally_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 323:
-#line 1624 "./parse.y"
-{ yyval.node = build_try_finally_statement (yyvsp[-3].operator.location,
- build_try_statement (yyvsp[-3].operator.location,
- yyvsp[-2].node, yyvsp[-1].node),
- yyvsp[0].node); ;
+#line 1627 "./parse.y"
+{ yyval.node = build_try_finally_statement
+ (yyvsp[-3].operator.location, build_try_statement (yyvsp[-3].operator.location,
+ yyvsp[-2].node, yyvsp[-1].node), yyvsp[0].node);
+ ;
break;}
case 324:
-#line 1629 "./parse.y"
+#line 1632 "./parse.y"
{yyerror ("'{' expected"); DRECOVER (try_statement);;
break;}
case 326:
-#line 1635 "./parse.y"
+#line 1638 "./parse.y"
{
TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;
yyval.node = yyvsp[0].node;
;
break;}
case 327:
-#line 1643 "./parse.y"
+#line 1646 "./parse.y"
{
java_method_add_stmt (current_function_decl, yyvsp[0].node);
exit_block ();
;
break;}
case 328:
-#line 1651 "./parse.y"
+#line 1654 "./parse.y"
{
/* We add a block to define a scope for
formal_parameter (CCBP). The formal parameter is
;
break;}
case 329:
-#line 1667 "./parse.y"
+#line 1670 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 330:
-#line 1669 "./parse.y"
+#line 1672 "./parse.y"
{yyerror ("Missing term or ')' expected"); DRECOVER (2);;
break;}
case 331:
-#line 1671 "./parse.y"
+#line 1674 "./parse.y"
{yyerror ("')' expected"); DRECOVER (1);;
break;}
case 332:
-#line 1676 "./parse.y"
+#line 1679 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 333:
-#line 1678 "./parse.y"
+#line 1681 "./parse.y"
{yyerror ("'{' expected"); RECOVER; ;
break;}
case 337:
-#line 1690 "./parse.y"
+#line 1693 "./parse.y"
{ yyval.node = build_this (yyvsp[0].operator.location); ;
break;}
case 338:
-#line 1692 "./parse.y"
+#line 1695 "./parse.y"
{yyval.node = yyvsp[-1].node;;
break;}
case 343:
-#line 1701 "./parse.y"
+#line 1704 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("named class literals"); ;
break;}
case 344:
-#line 1703 "./parse.y"
+#line 1706 "./parse.y"
{ yyval.node = build_class_ref (yyvsp[-2].node); ;
break;}
case 345:
-#line 1705 "./parse.y"
+#line 1708 "./parse.y"
{ yyval.node = build_class_ref (void_type_node); ;
break;}
case 346:
-#line 1710 "./parse.y"
+#line 1713 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("class literals"); ;
break;}
case 347:
-#line 1712 "./parse.y"
+#line 1715 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 348:
-#line 1714 "./parse.y"
+#line 1717 "./parse.y"
{yyerror ("'class' or 'this' expected" ); RECOVER;;
break;}
case 349:
-#line 1716 "./parse.y"
+#line 1719 "./parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
case 350:
-#line 1718 "./parse.y"
+#line 1721 "./parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
case 351:
-#line 1723 "./parse.y"
+#line 1726 "./parse.y"
{ yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 352:
-#line 1725 "./parse.y"
+#line 1728 "./parse.y"
{ yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
case 353:
-#line 1730 "./parse.y"
+#line 1733 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("inner class instance creation"); ;
break;}
case 354:
-#line 1732 "./parse.y"
+#line 1735 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("inner class instance creation"); ;
break;}
case 359:
-#line 1741 "./parse.y"
+#line 1744 "./parse.y"
{yyerror ("'(' expected"); DRECOVER(new_1);;
break;}
case 360:
-#line 1743 "./parse.y"
+#line 1746 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 361:
-#line 1745 "./parse.y"
+#line 1748 "./parse.y"
{yyerror ("')' or term expected"); RECOVER;;
break;}
case 362:
-#line 1747 "./parse.y"
+#line 1750 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 363:
-#line 1749 "./parse.y"
+#line 1752 "./parse.y"
{YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;;
break;}
case 364:
-#line 1751 "./parse.y"
+#line 1754 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 367:
-#line 1761 "./parse.y"
+#line 1764 "./parse.y"
{
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE);
ctxp->formal_parameter_number = 1;
;
break;}
case 368:
-#line 1766 "./parse.y"
+#line 1769 "./parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node);
;
break;}
case 369:
-#line 1771 "./parse.y"
+#line 1774 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 370:
-#line 1776 "./parse.y"
+#line 1779 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
case 371:
-#line 1778 "./parse.y"
+#line 1781 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
case 372:
-#line 1780 "./parse.y"
+#line 1783 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, CURRENT_OSB (ctxp));;
break;}
case 373:
-#line 1782 "./parse.y"
+#line 1785 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, CURRENT_OSB (ctxp));;
break;}
case 374:
-#line 1786 "./parse.y"
+#line 1789 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("anonymous array"); ;
break;}
case 375:
-#line 1788 "./parse.y"
+#line 1791 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("anonymous array"); ;
break;}
case 376:
-#line 1790 "./parse.y"
+#line 1793 "./parse.y"
{yyerror ("'[' expected"); DRECOVER ("]");;
break;}
case 377:
-#line 1792 "./parse.y"
+#line 1795 "./parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 378:
-#line 1797 "./parse.y"
+#line 1800 "./parse.y"
{ yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;
break;}
case 379:
-#line 1799 "./parse.y"
+#line 1802 "./parse.y"
{ yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ;
break;}
case 380:
-#line 1804 "./parse.y"
+#line 1807 "./parse.y"
{
EXPR_WFL_LINECOL (yyvsp[-1].node) = yyvsp[-2].operator.location;
yyval.node = yyvsp[-1].node;
;
break;}
case 381:
-#line 1809 "./parse.y"
+#line 1812 "./parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 382:
-#line 1811 "./parse.y"
+#line 1814 "./parse.y"
{
yyerror ("Missing term");
yyerror ("']' expected");
;
break;}
case 383:
-#line 1820 "./parse.y"
+#line 1823 "./parse.y"
{
int allocate = 0;
/* If not initialized, allocate memory for the osb
;
break;}
case 384:
-#line 1846 "./parse.y"
+#line 1849 "./parse.y"
{ CURRENT_OSB (ctxp)++; ;
break;}
case 385:
-#line 1848 "./parse.y"
+#line 1851 "./parse.y"
{ yyerror ("']' expected"); RECOVER;;
break;}
case 386:
-#line 1853 "./parse.y"
+#line 1856 "./parse.y"
{ yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
case 387:
-#line 1857 "./parse.y"
+#line 1860 "./parse.y"
{
tree super_wfl =
build_wfl_node (super_identifier_node,
;
break;}
case 388:
-#line 1865 "./parse.y"
+#line 1868 "./parse.y"
{yyerror ("Field expected"); DRECOVER (super_field_acces);;
break;}
case 389:
-#line 1870 "./parse.y"
+#line 1873 "./parse.y"
{ yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
case 390:
-#line 1872 "./parse.y"
+#line 1875 "./parse.y"
{ yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 391:
-#line 1874 "./parse.y"
+#line 1877 "./parse.y"
{
if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
;
break;}
case 392:
-#line 1885 "./parse.y"
+#line 1888 "./parse.y"
{
if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
;
break;}
case 393:
-#line 1896 "./parse.y"
+#line 1899 "./parse.y"
{
yyval.node = build_this_super_qualified_invocation
(0, yyvsp[-2].node, NULL_TREE, yyvsp[-4].operator.location, yyvsp[-3].operator.location);
;
break;}
case 394:
-#line 1901 "./parse.y"
+#line 1904 "./parse.y"
{
yyval.node = build_this_super_qualified_invocation
(0, yyvsp[-3].node, yyvsp[-1].node, yyvsp[-5].operator.location, yyvsp[-4].operator.location);
;
break;}
case 395:
-#line 1910 "./parse.y"
+#line 1913 "./parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
case 396:
-#line 1912 "./parse.y"
+#line 1915 "./parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
case 397:
-#line 1917 "./parse.y"
+#line 1920 "./parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 398:
-#line 1919 "./parse.y"
+#line 1922 "./parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 399:
-#line 1921 "./parse.y"
+#line 1924 "./parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
case 400:
-#line 1926 "./parse.y"
+#line 1929 "./parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
case 401:
-#line 1931 "./parse.y"
+#line 1934 "./parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
case 402:
-#line 1936 "./parse.y"
+#line 1939 "./parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
case 407:
-#line 1951 "./parse.y"
+#line 1954 "./parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
case 408:
-#line 1956 "./parse.y"
+#line 1959 "./parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
case 411:
-#line 1963 "./parse.y"
+#line 1966 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 412:
-#line 1965 "./parse.y"
+#line 1968 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 414:
-#line 1968 "./parse.y"
+#line 1971 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 415:
-#line 1970 "./parse.y"
+#line 1973 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 416:
-#line 1975 "./parse.y"
+#line 1978 "./parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
case 417:
-#line 1977 "./parse.y"
+#line 1980 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 418:
-#line 1982 "./parse.y"
+#line 1985 "./parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
case 419:
-#line 1984 "./parse.y"
+#line 1987 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 421:
-#line 1990 "./parse.y"
+#line 1993 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 422:
-#line 1992 "./parse.y"
+#line 1995 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 424:
-#line 1995 "./parse.y"
+#line 1998 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 425:
-#line 1997 "./parse.y"
+#line 2000 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 426:
-#line 2002 "./parse.y"
+#line 2005 "./parse.y"
{
tree type = yyvsp[-3].node;
while (CURRENT_OSB (ctxp)--)
;
break;}
case 427:
-#line 2010 "./parse.y"
+#line 2013 "./parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 428:
-#line 2012 "./parse.y"
+#line 2015 "./parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 429:
-#line 2014 "./parse.y"
+#line 2017 "./parse.y"
{
char *ptr;
while (CURRENT_OSB (ctxp)--)
;
break;}
case 430:
-#line 2027 "./parse.y"
+#line 2030 "./parse.y"
{yyerror ("']' expected, invalid type expression");;
break;}
case 431:
-#line 2029 "./parse.y"
+#line 2032 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid type expression"); RECOVER;
;
break;}
case 432:
-#line 2035 "./parse.y"
+#line 2038 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 433:
-#line 2037 "./parse.y"
+#line 2040 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 434:
-#line 2039 "./parse.y"
+#line 2042 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 436:
-#line 2045 "./parse.y"
+#line 2048 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token),
yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 437:
-#line 2050 "./parse.y"
+#line 2053 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 438:
-#line 2055 "./parse.y"
+#line 2058 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 439:
-#line 2060 "./parse.y"
+#line 2063 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 440:
-#line 2062 "./parse.y"
+#line 2065 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 441:
-#line 2064 "./parse.y"
+#line 2067 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 443:
-#line 2070 "./parse.y"
+#line 2073 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 444:
-#line 2075 "./parse.y"
+#line 2078 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 445:
-#line 2080 "./parse.y"
+#line 2083 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 446:
-#line 2082 "./parse.y"
+#line 2085 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 448:
-#line 2088 "./parse.y"
+#line 2091 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 449:
-#line 2093 "./parse.y"
+#line 2096 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 450:
-#line 2098 "./parse.y"
+#line 2101 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 451:
-#line 2103 "./parse.y"
+#line 2106 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 452:
-#line 2105 "./parse.y"
+#line 2108 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 453:
-#line 2107 "./parse.y"
+#line 2110 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 455:
-#line 2113 "./parse.y"
+#line 2116 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 456:
-#line 2118 "./parse.y"
+#line 2121 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 457:
-#line 2123 "./parse.y"
+#line 2126 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 458:
-#line 2128 "./parse.y"
+#line 2131 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 459:
-#line 2133 "./parse.y"
+#line 2136 "./parse.y"
{ yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 460:
-#line 2135 "./parse.y"
+#line 2138 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 461:
-#line 2137 "./parse.y"
+#line 2140 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 462:
-#line 2139 "./parse.y"
+#line 2142 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 463:
-#line 2141 "./parse.y"
+#line 2144 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 464:
-#line 2143 "./parse.y"
+#line 2146 "./parse.y"
{yyerror ("Invalid reference type"); RECOVER;;
break;}
case 466:
-#line 2149 "./parse.y"
+#line 2152 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 467:
-#line 2154 "./parse.y"
+#line 2157 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 468:
-#line 2159 "./parse.y"
+#line 2162 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 469:
-#line 2161 "./parse.y"
+#line 2164 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 471:
-#line 2167 "./parse.y"
+#line 2170 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 472:
-#line 2172 "./parse.y"
+#line 2175 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 474:
-#line 2178 "./parse.y"
+#line 2181 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 475:
-#line 2183 "./parse.y"
+#line 2186 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 477:
-#line 2189 "./parse.y"
+#line 2192 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 478:
-#line 2194 "./parse.y"
+#line 2197 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 480:
-#line 2200 "./parse.y"
+#line 2203 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 481:
-#line 2205 "./parse.y"
+#line 2208 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 483:
-#line 2211 "./parse.y"
+#line 2214 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 484:
-#line 2216 "./parse.y"
+#line 2219 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 486:
-#line 2222 "./parse.y"
+#line 2225 "./parse.y"
{
yyval.node = build (CONDITIONAL_EXPR, NULL_TREE, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location;
;
break;}
case 487:
-#line 2227 "./parse.y"
+#line 2230 "./parse.y"
{
YYERROR_NOW;
yyerror ("Missing term");
;
break;}
case 488:
-#line 2233 "./parse.y"
+#line 2236 "./parse.y"
{yyerror ("Missing term"); DRECOVER (2);;
break;}
case 489:
-#line 2235 "./parse.y"
+#line 2238 "./parse.y"
{yyerror ("Missing term"); DRECOVER (3);;
break;}
case 492:
-#line 2245 "./parse.y"
+#line 2248 "./parse.y"
{ yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 493:
-#line 2247 "./parse.y"
+#line 2250 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Missing term");
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/local/gnu/share/bison.simple"
+#line 498 "/usr/lib/bison.simple"
\f
yyvsp -= yylen;
yyssp -= yylen;
yystate = yyn;
goto yynewstate;
}
-#line 2273 "./parse.y"
+#line 2276 "./parse.y"
\f
decl = maybe_create_class_interface_decl (decl, q_name, id);
/* Set super info and mark the class a complete */
- set_super_info (ACC_ABSTRACT | ACC_INTERFACE | flags, TREE_TYPE (decl),
+ set_super_info (ACC_INTERFACE | flags, TREE_TYPE (decl),
object_type_node, ctxp->interface_number);
ctxp->interface_number = 0;
CLASS_COMPLETE_P (decl) = 1;
ABSTRACT_CHECK (flags, ACC_FINAL, id, "Final");
ABSTRACT_CHECK (flags, ACC_NATIVE, id, "Native");
ABSTRACT_CHECK (flags, ACC_SYNCHRONIZED,id, "Synchronized");
- if (!CLASS_ABSTRACT (TYPE_NAME (this_class)))
+ if (!CLASS_ABSTRACT (TYPE_NAME (this_class))
+ && !CLASS_INTERFACE (TYPE_NAME (this_class)))
parse_error_context
(id, "Class `%s' must be declared abstract to define abstract "
"method `%s'",
tree type_wfl = NULL_TREE;
int must_chain = 0;
- /* Push a new block if statement were seen between the last time we
+ /* Push a new block if statements were seen between the last time we
pushed a block and now. Keep a cound of block to close */
if (BLOCK_EXPR_BODY (DECL_FUNCTION_BODY (current_function_decl)))
{
parse_error_context
(qual_wfl, "Can't access %s field `%s.%s' from `%s'",
java_accstring_lookup (get_access_flags_from_decl (decl)),
- IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))),
+ GET_TYPE_NAME (type),
IDENTIFIER_POINTER (DECL_NAME (decl)),
IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (current_class))));
return 1;
if (field_decl == NULL_TREE)
{
parse_error_context
- (qual_wfl, "No variable `%s' defined in class `%s'",
+ (qual_wfl, "No variable `%s' defined in type `%s'",
IDENTIFIER_POINTER (EXPR_WFL_NODE (qual_wfl)),
- IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
+ GET_TYPE_NAME (type));
return 1;
}
if (field_decl == error_mark_node)
"Can't access %s field `%s.%s' from `%s'",
java_accstring_lookup
(get_access_flags_from_decl (field_decl)),
- IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))),
+ GET_TYPE_NAME (type),
IDENTIFIER_POINTER (DECL_NAME (field_decl)),
IDENTIFIER_POINTER
(DECL_NAME (TYPE_NAME (current_class))));
return node;
}
+static tree
+java_stabilize_reference (node)
+ tree node;
+{
+ if (TREE_CODE (node) == COMPOUND_EXPR)
+ {
+ tree op0 = TREE_OPERAND (node, 0);
+ tree op1 = TREE_OPERAND (node, 1);
+ TREE_OPERAND (node, 0) = build1 (SAVE_EXPR, TREE_TYPE (op0), op0);
+ TREE_OPERAND (node, 1) = java_stabilize_reference (op1);
+ return node;
+ }
+ else
+ return stabilize_reference (node);
+}
+
/* Patch tree nodes in a function body. When a BLOCK is found, push
local variable decls if present.
Same as java_complete_tree, but does not resolve static finals to values. */
case CLEANUP_POINT_EXPR:
COMPLETE_CHECK_OP_0 (node);
TREE_TYPE (node) = void_type_node;
- CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
+ CAN_COMPLETE_NORMALLY (node) =
+ CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
return node;
case WITH_CLEANUP_EXPR:
COMPLETE_CHECK_OP_0 (node);
COMPLETE_CHECK_OP_2 (node);
- CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
+ CAN_COMPLETE_NORMALLY (node) =
+ CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
TREE_TYPE (node) = void_type_node;
return node;
if (COMPOUND_ASSIGN_P (wfl_op2))
{
- tree lvalue;
- tree other =
- java_complete_tree (TREE_OPERAND (wfl_op2, 0));
+ tree lvalue = java_stabilize_reference (TREE_OPERAND (node, 0));
/* Hand stablize the lhs on both places */
- lvalue = stabilize_reference (other);
TREE_OPERAND (node, 0) = lvalue;
TREE_OPERAND (TREE_OPERAND (node, 1), 0) = lvalue;
+
+ /* Now complete the RHS. We write it back later on. */
+ nn = java_complete_tree (TREE_OPERAND (node, 1));
+
+ /* The last part of the rewrite for E1 op= E2 is to have
+ E1 = (T)(E1 op E2), with T being the type of E1. */
+ nn = build_cast (EXPR_WFL_LINECOL (wfl_op2), TREE_TYPE (lvalue), nn);
}
/* If we're about to patch a NEW_ARRAY_INIT, we call a special
function to complete this RHS */
- if (TREE_CODE (wfl_op2) == NEW_ARRAY_INIT)
+ else if (TREE_CODE (wfl_op2) == NEW_ARRAY_INIT)
nn = patch_new_array_init (TREE_TYPE (TREE_OPERAND (node, 0)),
TREE_OPERAND (node, 1));
+ /* Otherwise we simply complete the RHS */
else
nn = java_complete_tree (TREE_OPERAND (node, 1));
if (nn == error_mark_node)
return error_mark_node;
+
+ /* Write back the RHS as we evaluated it. */
TREE_OPERAND (node, 1) = nn;
/* In case we're handling = with a String as a RHS, we need to
CAN_COMPLETE_NORMALLY (node) = 1;
/* Don't complete string nodes if dealing with the PLUS operand. */
if (TREE_CODE (node) != PLUS_EXPR || !JSTRING_P (wfl_op1))
- {
- TREE_OPERAND (node, 0) = java_complete_tree (wfl_op1);
- if (TREE_OPERAND (node, 0) == error_mark_node)
- return error_mark_node;
- }
+ {
+ nn = java_complete_tree (wfl_op1);
+ if (nn == error_mark_node)
+ return error_mark_node;
+ if ((cn = patch_string (nn)))
+ nn = cn;
+ TREE_OPERAND (node, 0) = nn;
+ }
if (TREE_CODE (node) != PLUS_EXPR || !JSTRING_P (wfl_op2))
- {
- TREE_OPERAND (node, 1) = java_complete_tree (wfl_op2);
- if (TREE_OPERAND (node, 1) == error_mark_node)
- return error_mark_node;
- }
+ {
+ nn = java_complete_tree (wfl_op2);
+ if (nn == error_mark_node)
+ return error_mark_node;
+ if ((cn = patch_string (nn)))
+ nn = cn;
+ TREE_OPERAND (node, 1) = nn;
+ }
return force_evaluation_order (patch_binop (node, wfl_op1, wfl_op2));
case INSTANCEOF_EXPR:
if_then_statement:
IF_TK OP_TK expression CP_TK statement
- { $$ = build_if_else_statement ($2.location, $3, $5, NULL_TREE); }
+ {
+ $$ = build_if_else_statement ($2.location, $3,
+ $5, NULL_TREE);
+ }
| IF_TK error
{yyerror ("'(' expected"); RECOVER;}
| IF_TK OP_TK error
if_then_else_statement:
IF_TK OP_TK expression CP_TK statement_nsi ELSE_TK statement
- { $$ = build_if_else_statement ($2.location, $3, $5, $7); }
+ { $$ = build_if_else_statement ($2.location, $3, $5, $7); }
;
if_then_else_statement_nsi:
IF_TK OP_TK expression CP_TK statement_nsi ELSE_TK statement_nsi
- { $$ = build_if_else_statement ($2.location, $3, $5, $7); }
+ { $$ = build_if_else_statement ($2.location, $3, $5, $7); }
;
switch_statement:
for_statement:
for_begin SC_TK expression SC_TK for_update CP_TK statement
- { $$ = complete_for_loop (EXPR_WFL_LINECOL ($3), $3, $5, $7);}
+ { $$ = complete_for_loop (EXPR_WFL_LINECOL ($3), $3, $5, $7); }
| for_begin SC_TK SC_TK for_update CP_TK statement
{
$$ = complete_for_loop (0, NULL_TREE, $4, $6);
| TRY_TK block finally
{ $$ = build_try_finally_statement ($1.location, $2, $3); }
| TRY_TK block catches finally
- { $$ = build_try_finally_statement ($1.location,
- build_try_statement ($1.location,
- $2, $3),
- $4); }
+ { $$ = build_try_finally_statement
+ ($1.location, build_try_statement ($1.location,
+ $2, $3), $4);
+ }
| TRY_TK error
{yyerror ("'{' expected"); DRECOVER (try_statement);}
;
decl = maybe_create_class_interface_decl (decl, q_name, id);
/* Set super info and mark the class a complete */
- set_super_info (ACC_ABSTRACT | ACC_INTERFACE | flags, TREE_TYPE (decl),
+ set_super_info (ACC_INTERFACE | flags, TREE_TYPE (decl),
object_type_node, ctxp->interface_number);
ctxp->interface_number = 0;
CLASS_COMPLETE_P (decl) = 1;
ABSTRACT_CHECK (flags, ACC_FINAL, id, "Final");
ABSTRACT_CHECK (flags, ACC_NATIVE, id, "Native");
ABSTRACT_CHECK (flags, ACC_SYNCHRONIZED,id, "Synchronized");
- if (!CLASS_ABSTRACT (TYPE_NAME (this_class)))
+ if (!CLASS_ABSTRACT (TYPE_NAME (this_class))
+ && !CLASS_INTERFACE (TYPE_NAME (this_class)))
parse_error_context
(id, "Class `%s' must be declared abstract to define abstract "
"method `%s'",
tree type_wfl = NULL_TREE;
int must_chain = 0;
- /* Push a new block if statement were seen between the last time we
+ /* Push a new block if statements were seen between the last time we
pushed a block and now. Keep a cound of block to close */
if (BLOCK_EXPR_BODY (DECL_FUNCTION_BODY (current_function_decl)))
{
parse_error_context
(qual_wfl, "Can't access %s field `%s.%s' from `%s'",
java_accstring_lookup (get_access_flags_from_decl (decl)),
- IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))),
+ GET_TYPE_NAME (type),
IDENTIFIER_POINTER (DECL_NAME (decl)),
IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (current_class))));
return 1;
if (field_decl == NULL_TREE)
{
parse_error_context
- (qual_wfl, "No variable `%s' defined in class `%s'",
+ (qual_wfl, "No variable `%s' defined in type `%s'",
IDENTIFIER_POINTER (EXPR_WFL_NODE (qual_wfl)),
- IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
+ GET_TYPE_NAME (type));
return 1;
}
if (field_decl == error_mark_node)
"Can't access %s field `%s.%s' from `%s'",
java_accstring_lookup
(get_access_flags_from_decl (field_decl)),
- IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))),
+ GET_TYPE_NAME (type),
IDENTIFIER_POINTER (DECL_NAME (field_decl)),
IDENTIFIER_POINTER
(DECL_NAME (TYPE_NAME (current_class))));
return node;
}
+static tree
+java_stabilize_reference (node)
+ tree node;
+{
+ if (TREE_CODE (node) == COMPOUND_EXPR)
+ {
+ tree op0 = TREE_OPERAND (node, 0);
+ tree op1 = TREE_OPERAND (node, 1);
+ TREE_OPERAND (node, 0) = build1 (SAVE_EXPR, TREE_TYPE (op0), op0);
+ TREE_OPERAND (node, 1) = java_stabilize_reference (op1);
+ return node;
+ }
+ else
+ return stabilize_reference (node);
+}
+
/* Patch tree nodes in a function body. When a BLOCK is found, push
local variable decls if present.
Same as java_complete_tree, but does not resolve static finals to values. */
case CLEANUP_POINT_EXPR:
COMPLETE_CHECK_OP_0 (node);
TREE_TYPE (node) = void_type_node;
- CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
+ CAN_COMPLETE_NORMALLY (node) =
+ CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
return node;
case WITH_CLEANUP_EXPR:
COMPLETE_CHECK_OP_0 (node);
COMPLETE_CHECK_OP_2 (node);
- CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
+ CAN_COMPLETE_NORMALLY (node) =
+ CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
TREE_TYPE (node) = void_type_node;
return node;
if (COMPOUND_ASSIGN_P (wfl_op2))
{
- tree lvalue;
- tree other =
- java_complete_tree (TREE_OPERAND (wfl_op2, 0));
+ tree lvalue = java_stabilize_reference (TREE_OPERAND (node, 0));
/* Hand stablize the lhs on both places */
- lvalue = stabilize_reference (other);
TREE_OPERAND (node, 0) = lvalue;
TREE_OPERAND (TREE_OPERAND (node, 1), 0) = lvalue;
+
+ /* Now complete the RHS. We write it back later on. */
+ nn = java_complete_tree (TREE_OPERAND (node, 1));
+
+ /* The last part of the rewrite for E1 op= E2 is to have
+ E1 = (T)(E1 op E2), with T being the type of E1. */
+ nn = build_cast (EXPR_WFL_LINECOL (wfl_op2), TREE_TYPE (lvalue), nn);
}
/* If we're about to patch a NEW_ARRAY_INIT, we call a special
function to complete this RHS */
- if (TREE_CODE (wfl_op2) == NEW_ARRAY_INIT)
+ else if (TREE_CODE (wfl_op2) == NEW_ARRAY_INIT)
nn = patch_new_array_init (TREE_TYPE (TREE_OPERAND (node, 0)),
TREE_OPERAND (node, 1));
+ /* Otherwise we simply complete the RHS */
else
nn = java_complete_tree (TREE_OPERAND (node, 1));
if (nn == error_mark_node)
return error_mark_node;
+
+ /* Write back the RHS as we evaluated it. */
TREE_OPERAND (node, 1) = nn;
/* In case we're handling = with a String as a RHS, we need to
CAN_COMPLETE_NORMALLY (node) = 1;
/* Don't complete string nodes if dealing with the PLUS operand. */
if (TREE_CODE (node) != PLUS_EXPR || !JSTRING_P (wfl_op1))
- {
- TREE_OPERAND (node, 0) = java_complete_tree (wfl_op1);
- if (TREE_OPERAND (node, 0) == error_mark_node)
- return error_mark_node;
- }
+ {
+ nn = java_complete_tree (wfl_op1);
+ if (nn == error_mark_node)
+ return error_mark_node;
+ if ((cn = patch_string (nn)))
+ nn = cn;
+ TREE_OPERAND (node, 0) = nn;
+ }
if (TREE_CODE (node) != PLUS_EXPR || !JSTRING_P (wfl_op2))
- {
- TREE_OPERAND (node, 1) = java_complete_tree (wfl_op2);
- if (TREE_OPERAND (node, 1) == error_mark_node)
- return error_mark_node;
- }
+ {
+ nn = java_complete_tree (wfl_op2);
+ if (nn == error_mark_node)
+ return error_mark_node;
+ if ((cn = patch_string (nn)))
+ nn = cn;
+ TREE_OPERAND (node, 1) = nn;
+ }
return force_evaluation_order (patch_binop (node, wfl_op1, wfl_op2));
case INSTANCEOF_EXPR: