[multiple changes]

2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (set_super_info): Handle ACC_PRIVATE for (inner)
	classes.
	* java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
	(struct lang_type): New field `pic.'
	(CLASS_PRIVATE): New macro.
	* parse.y (check_inner_class_access): New function.
	(jdep_resolve_class): Call it.

2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>

        * parse.y (register_fields): Permit static fields in inner classes
        if they are final. Fix for PR gcj/255.

(These patches are fixes to the PR #224 and #255:
 http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00158.html
 http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00287.html)

From-SVN: r34725
parent 047142d3
......@@ -18,6 +18,16 @@
* parse.y (check_abstract_method_definitions): Also check if
`other_method' is abstract.
2000-06-23 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (set_super_info): Handle ACC_PRIVATE for (inner)
classes.
* java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
(struct lang_type): New field `pic.'
(CLASS_PRIVATE): New macro.
* parse.y (check_inner_class_access): New function.
(jdep_resolve_class): Call it.
2000-06-23 Tom Tromey <tromey@cygnus.com>
* parse.y (patch_incomplete_class_ref): Initialize the returned
......@@ -84,6 +94,11 @@
* lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
2000-06-09 Bryce McKinlay <bryce@albatross.co.nz>
* parse.y (register_fields): Permit static fields in inner classes
if they are final. Fix for PR gcj/255.
2000-06-06 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
......
......@@ -400,6 +400,7 @@ set_super_info (access_flags, this_class, super_class, interfaces_count)
if (access_flags & ACC_INTERFACE) CLASS_INTERFACE (class_decl) = 1;
if (access_flags & ACC_ABSTRACT) CLASS_ABSTRACT (class_decl) = 1;
if (access_flags & ACC_STATIC) CLASS_STATIC (class_decl) = 1;
if (access_flags & ACC_PRIVATE) CLASS_PRIVATE (class_decl) = 1;
}
/* Return length of inheritance chain of CLAS, where java.lang.Object is 0,
......
......@@ -575,6 +575,7 @@ struct lang_decl_var
/* The decl of the synthetic method `class$' used to handle `.class'
for non primitive types when compiling to bytecode. */
#define TYPE_DOT_CLASS(T) (TYPE_LANG_SPECIFIC(T)->dot_class)
#define TYPE_PRIVATE_INNER_CLASS(T) (TYPE_LANG_SPECIFIC(T)->pic)
struct lang_type
{
......@@ -589,6 +590,7 @@ struct lang_type
needs to be invoked and generated when
compiling to bytecode to implement
<non_primitive_type>.class */
unsigned pic:1; /* Private Inner Class. */
};
#ifdef JAVA_USE_HANDLES
......@@ -837,6 +839,7 @@ struct rtx_def * java_lang_expand_expr PARAMS ((tree, rtx, enum machine_mode,
#define CLASS_ABSTRACT(DECL) DECL_LANG_FLAG_5 (DECL)
#define CLASS_SUPER(DECL) DECL_LANG_FLAG_6 (DECL)
#define CLASS_STATIC(DECL) DECL_LANG_FLAG_7 (DECL)
#define CLASS_PRIVATE(DECL) (TYPE_PRIVATE_INNER_CLASS (TREE_TYPE (DECL)))
/* @deprecated marker flag on methods, fields and classes */
......
......@@ -175,6 +175,7 @@ static int process_imports PARAMS ((void));
static void read_import_dir PARAMS ((tree));
static int find_in_imports_on_demand PARAMS ((tree));
static void find_in_imports PARAMS ((tree));
static void check_inner_class_access PARAMS ((tree, tree, tree));
static int check_pkg_class_access PARAMS ((tree, tree));
static void register_package PARAMS ((tree));
static tree resolve_package PARAMS ((tree, tree *));
......@@ -488,7 +489,7 @@ static tree package_list = NULL_TREE;
} while (0)
#line 417 "./parse.y"
#line 418 "./parse.y"
typedef union {
tree node;
int sub_token;
......@@ -498,7 +499,7 @@ typedef union {
} operator;
int value;
} YYSTYPE;
#line 427 "./parse.y"
#line 428 "./parse.y"
#include "lex.c"
#ifndef YYDEBUG
......@@ -799,57 +800,57 @@ static const short yyrhs[] = { 123,
#if YYDEBUG != 0
static const short yyrline[] = { 0,
576, 582, 584, 585, 586, 587, 588, 592, 594, 597,
599, 600, 603, 605, 608, 612, 616, 620, 626, 628,
630, 632, 637, 639, 642, 646, 651, 656, 658, 659,
660, 661, 662, 663, 664, 667, 672, 678, 680, 683,
689, 691, 695, 697, 700, 727, 729, 733, 746, 748,
752, 755, 757, 759, 769, 774, 789, 793, 793, 796,
796, 798, 800, 805, 809, 811, 813, 815, 819, 821,
823, 830, 836, 841, 845, 854, 864, 866, 869, 871,
872, 873, 880, 882, 884, 885, 887, 892, 895, 905,
908, 910, 914, 917, 924, 930, 938, 940, 942, 944,
946, 950, 952, 956, 967, 968, 972, 975, 977, 979,
981, 986, 988, 990, 992, 999, 1005, 1007, 1016, 1018,
1022, 1027, 1032, 1036, 1041, 1046, 1051, 1058, 1068, 1070,
1072, 1076, 1079, 1081, 1085, 1087, 1088, 1093, 1099, 1106,
1122, 1129, 1132, 1135, 1139, 1145, 1149, 1158, 1160, 1162,
1166, 1168, 1171, 1178, 1186, 1188, 1192, 1199, 1209, 1213,
1213, 1216, 1216, 1219, 1219, 1222, 1222, 1224, 1228, 1234,
1239, 1241, 1245, 1248, 1252, 1254, 1257, 1259, 1260, 1262,
1266, 1270, 1276, 1281, 1284, 1286, 1290, 1296, 1300, 1305,
1314, 1318, 1323, 1337, 1339, 1342, 1344, 1346, 1353, 1357,
1360, 1364, 1366, 1367, 1368, 1369, 1370, 1374, 1376, 1377,
1378, 1379, 1383, 1385, 1386, 1387, 1388, 1389, 1390, 1391,
1392, 1393, 1394, 1397, 1402, 1413, 1416, 1420, 1427, 1437,
1443, 1449, 1455, 1457, 1462, 1464, 1469, 1471, 1473, 1475,
1477, 1481, 1483, 1484, 1485, 1486, 1487, 1488, 1491, 1497,
1499, 1501, 1505, 1510, 1515, 1521, 1531, 1537, 1539, 1541,
1548, 1551, 1553, 1555, 1559, 1561, 1564, 1568, 1570, 1573,
1580, 1586, 1588, 1590, 1594, 1602, 1605, 1607, 1609, 1613,
1618, 1627, 1632, 1639, 1646, 1648, 1650, 1654, 1657, 1666,
1673, 1675, 1679, 1692, 1694, 1700, 1706, 1710, 1712, 1716,
1719, 1721, 1725, 1728, 1730, 1732, 1736, 1739, 1741, 1743,
1747, 1750, 1752, 1754, 1758, 1764, 1766, 1770, 1777, 1779,
1781, 1783, 1787, 1799, 1802, 1804, 1809, 1813, 1815, 1822,
1830, 1847, 1849, 1854, 1858, 1861, 1866, 1868, 1871, 1873,
1875, 1877, 1878, 1879, 1880, 1881, 1885, 1890, 1892, 1894,
1896, 1903, 1909, 1918, 1921, 1923, 1925, 1929, 1932, 1934,
1938, 1944, 1945, 1951, 1952, 1954, 1956, 1958, 1960, 1962,
1971, 1975, 2005, 2008, 2022, 2025, 2029, 2035, 2040, 2044,
2047, 2049, 2051, 2055, 2064, 2072, 2074, 2078, 2081, 2085,
2096, 2098, 2106, 2133, 2135, 2139, 2144, 2151, 2155, 2158,
2160, 2171, 2182, 2187, 2196, 2198, 2202, 2205, 2207, 2212,
2217, 2222, 2229, 2231, 2232, 2233, 2236, 2241, 2246, 2248,
2249, 2251, 2253, 2254, 2256, 2260, 2263, 2267, 2270, 2274,
2276, 2278, 2280, 2281, 2283, 2287, 2296, 2298, 2300, 2313,
2315, 2321, 2323, 2325, 2329, 2331, 2336, 2341, 2346, 2348,
2350, 2354, 2356, 2361, 2366, 2368, 2372, 2374, 2379, 2384,
2389, 2391, 2393, 2397, 2399, 2404, 2409, 2414, 2419, 2421,
2423, 2425, 2427, 2429, 2433, 2435, 2440, 2445, 2447, 2451,
2453, 2458, 2462, 2464, 2469, 2473, 2475, 2480, 2484, 2486,
2491, 2495, 2497, 2502, 2506, 2508, 2513, 2519, 2521, 2525,
2527, 2530, 2533, 2541, 2543, 2544, 2547, 2549, 2552, 2556
577, 583, 585, 586, 587, 588, 589, 593, 595, 598,
600, 601, 604, 606, 609, 613, 617, 621, 627, 629,
631, 633, 638, 640, 643, 647, 652, 657, 659, 660,
661, 662, 663, 664, 665, 668, 673, 679, 681, 684,
690, 692, 696, 698, 701, 728, 730, 734, 747, 749,
753, 756, 758, 760, 770, 775, 790, 794, 794, 797,
797, 799, 801, 806, 810, 812, 814, 816, 820, 822,
824, 831, 837, 842, 846, 855, 865, 867, 870, 872,
873, 874, 881, 883, 885, 886, 888, 893, 896, 906,
909, 911, 915, 918, 925, 931, 939, 941, 943, 945,
947, 951, 953, 957, 968, 969, 973, 976, 978, 980,
982, 987, 989, 991, 993, 1000, 1006, 1008, 1017, 1019,
1023, 1028, 1033, 1037, 1042, 1047, 1052, 1059, 1069, 1071,
1073, 1077, 1080, 1082, 1086, 1088, 1089, 1094, 1100, 1107,
1123, 1130, 1133, 1136, 1140, 1146, 1150, 1159, 1161, 1163,
1167, 1169, 1172, 1179, 1187, 1189, 1193, 1200, 1210, 1214,
1214, 1217, 1217, 1220, 1220, 1223, 1223, 1225, 1229, 1235,
1240, 1242, 1246, 1249, 1253, 1255, 1258, 1260, 1261, 1263,
1267, 1271, 1277, 1282, 1285, 1287, 1291, 1297, 1301, 1306,
1315, 1319, 1324, 1338, 1340, 1343, 1345, 1347, 1354, 1358,
1361, 1365, 1367, 1368, 1369, 1370, 1371, 1375, 1377, 1378,
1379, 1380, 1384, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
1393, 1394, 1395, 1398, 1403, 1414, 1417, 1421, 1428, 1438,
1444, 1450, 1456, 1458, 1463, 1465, 1470, 1472, 1474, 1476,
1478, 1482, 1484, 1485, 1486, 1487, 1488, 1489, 1492, 1498,
1500, 1502, 1506, 1511, 1516, 1522, 1532, 1538, 1540, 1542,
1549, 1552, 1554, 1556, 1560, 1562, 1565, 1569, 1571, 1574,
1581, 1587, 1589, 1591, 1595, 1603, 1606, 1608, 1610, 1614,
1619, 1628, 1633, 1640, 1647, 1649, 1651, 1655, 1658, 1667,
1674, 1676, 1680, 1693, 1695, 1701, 1707, 1711, 1713, 1717,
1720, 1722, 1726, 1729, 1731, 1733, 1737, 1740, 1742, 1744,
1748, 1751, 1753, 1755, 1759, 1765, 1767, 1771, 1778, 1780,
1782, 1784, 1788, 1800, 1803, 1805, 1810, 1814, 1816, 1823,
1831, 1848, 1850, 1855, 1859, 1862, 1867, 1869, 1872, 1874,
1876, 1878, 1879, 1880, 1881, 1882, 1886, 1891, 1893, 1895,
1897, 1904, 1910, 1919, 1922, 1924, 1926, 1930, 1933, 1935,
1939, 1945, 1946, 1952, 1953, 1955, 1957, 1959, 1961, 1963,
1972, 1976, 2006, 2009, 2023, 2026, 2030, 2036, 2041, 2045,
2048, 2050, 2052, 2056, 2065, 2073, 2075, 2079, 2082, 2086,
2097, 2099, 2107, 2134, 2136, 2140, 2145, 2152, 2156, 2159,
2161, 2172, 2183, 2188, 2197, 2199, 2203, 2206, 2208, 2213,
2218, 2223, 2230, 2232, 2233, 2234, 2237, 2242, 2247, 2249,
2250, 2252, 2254, 2255, 2257, 2261, 2264, 2268, 2271, 2275,
2277, 2279, 2281, 2282, 2284, 2288, 2297, 2299, 2301, 2314,
2316, 2322, 2324, 2326, 2330, 2332, 2337, 2342, 2347, 2349,
2351, 2355, 2357, 2362, 2367, 2369, 2373, 2375, 2380, 2385,
2390, 2392, 2394, 2398, 2400, 2405, 2410, 2415, 2420, 2422,
2424, 2426, 2428, 2430, 2434, 2436, 2441, 2446, 2448, 2452,
2454, 2459, 2463, 2465, 2470, 2474, 2476, 2481, 2485, 2487,
2492, 2496, 2498, 2503, 2507, 2509, 2514, 2520, 2522, 2526,
2528, 2531, 2534, 2542, 2544, 2545, 2548, 2550, 2553, 2557
};
#endif
......@@ -2932,69 +2933,69 @@ yyreduce:
switch (yyn) {
case 1:
#line 578 "./parse.y"
#line 579 "./parse.y"
{;
break;}
case 18:
#line 622 "./parse.y"
#line 623 "./parse.y"
{
yyval.node = build_java_array_type (yyvsp[-2].node, -1);
CLASS_LOADED_P (yyval.node) = 1;
;
break;}
case 19:
#line 627 "./parse.y"
#line 628 "./parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 20:
#line 629 "./parse.y"
#line 630 "./parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 21:
#line 631 "./parse.y"
#line 632 "./parse.y"
{RULE ("']' expected"); RECOVER;;
break;}
case 22:
#line 633 "./parse.y"
#line 634 "./parse.y"
{RULE ("']' expected"); RECOVER;;
break;}
case 26:
#line 648 "./parse.y"
#line 649 "./parse.y"
{ yyval.node = make_qualified_name (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
case 28:
#line 657 "./parse.y"
#line 658 "./parse.y"
{yyval.node = NULL;;
break;}
case 36:
#line 669 "./parse.y"
#line 670 "./parse.y"
{
yyval.node = NULL;
;
break;}
case 37:
#line 673 "./parse.y"
#line 674 "./parse.y"
{
yyval.node = NULL;
;
break;}
case 40:
#line 685 "./parse.y"
#line 686 "./parse.y"
{
ctxp->package = EXPR_WFL_NODE (yyvsp[-1].node);
register_package (ctxp->package);
;
break;}
case 41:
#line 690 "./parse.y"
#line 691 "./parse.y"
{yyerror ("Missing name"); RECOVER;;
break;}
case 42:
#line 692 "./parse.y"
#line 693 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 45:
#line 702 "./parse.y"
#line 703 "./parse.y"
{
tree name = EXPR_WFL_NODE (yyvsp[-1].node), last_name;
int i = IDENTIFIER_LENGTH (name)-1;
......@@ -3022,15 +3023,15 @@ case 45:
;
break;}
case 46:
#line 728 "./parse.y"
#line 729 "./parse.y"
{yyerror ("Missing name"); RECOVER;;
break;}
case 47:
#line 730 "./parse.y"
#line 731 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 48:
#line 735 "./parse.y"
#line 736 "./parse.y"
{
tree name = EXPR_WFL_NODE (yyvsp[-3].node);
/* Don't import java.lang.* twice. */
......@@ -3044,40 +3045,40 @@ case 48:
;
break;}
case 49:
#line 747 "./parse.y"
#line 748 "./parse.y"
{yyerror ("'*' expected"); RECOVER;;
break;}
case 50:
#line 749 "./parse.y"
#line 750 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 51:
#line 754 "./parse.y"
#line 755 "./parse.y"
{ end_class_declaration (0); ;
break;}
case 52:
#line 756 "./parse.y"
#line 757 "./parse.y"
{ end_class_declaration (0); ;
break;}
case 53:
#line 758 "./parse.y"
#line 759 "./parse.y"
{ yyval.node = NULL; ;
break;}
case 54:
#line 760 "./parse.y"
#line 761 "./parse.y"
{
YYERROR_NOW;
yyerror ("Class or interface declaration expected");
;
break;}
case 55:
#line 771 "./parse.y"
#line 772 "./parse.y"
{
yyval.value = (1 << yyvsp[0].value);
;
break;}
case 56:
#line 775 "./parse.y"
#line 776 "./parse.y"
{
int acc = (1 << yyvsp[0].value);
if (yyval.value & acc)
......@@ -3091,83 +3092,83 @@ case 56:
;
break;}
case 57:
#line 791 "./parse.y"
#line 792 "./parse.y"
{ create_class (yyvsp[-4].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 59:
#line 794 "./parse.y"
#line 795 "./parse.y"
{ create_class (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 61:
#line 797 "./parse.y"
#line 798 "./parse.y"
{yyerror ("Missing class name"); RECOVER;;
break;}
case 62:
#line 799 "./parse.y"
#line 800 "./parse.y"
{yyerror ("Missing class name"); RECOVER;;
break;}
case 63:
#line 801 "./parse.y"
#line 802 "./parse.y"
{
if (!ctxp->class_err) yyerror ("'{' expected");
DRECOVER(class1);
;
break;}
case 64:
#line 806 "./parse.y"
#line 807 "./parse.y"
{if (!ctxp->class_err) yyerror ("'{' expected"); RECOVER;;
break;}
case 65:
#line 810 "./parse.y"
#line 811 "./parse.y"
{ yyval.node = NULL; ;
break;}
case 66:
#line 812 "./parse.y"
#line 813 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 67:
#line 814 "./parse.y"
#line 815 "./parse.y"
{yyerror ("'{' expected"); ctxp->class_err=1;;
break;}
case 68:
#line 816 "./parse.y"
#line 817 "./parse.y"
{yyerror ("Missing super class name"); ctxp->class_err=1;;
break;}
case 69:
#line 820 "./parse.y"
#line 821 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 70:
#line 822 "./parse.y"
#line 823 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 71:
#line 824 "./parse.y"
#line 825 "./parse.y"
{
ctxp->class_err=1;
yyerror ("Missing interface name");
;
break;}
case 72:
#line 832 "./parse.y"
#line 833 "./parse.y"
{
ctxp->interface_number = 1;
yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
;
break;}
case 73:
#line 837 "./parse.y"
#line 838 "./parse.y"
{
ctxp->interface_number++;
yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
;
break;}
case 74:
#line 842 "./parse.y"
#line 843 "./parse.y"
{yyerror ("Missing interface name"); RECOVER;;
break;}
case 75:
#line 847 "./parse.y"
#line 848 "./parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (flag_emit_xref)
......@@ -3177,7 +3178,7 @@ case 75:
;
break;}
case 76:
#line 855 "./parse.y"
#line 856 "./parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (flag_emit_xref)
......@@ -3187,30 +3188,30 @@ case 76:
;
break;}
case 82:
#line 874 "./parse.y"
#line 875 "./parse.y"
{
TREE_CHAIN (yyvsp[0].node) = CPC_INSTANCE_INITIALIZER_STMT (ctxp);
SET_CPC_INSTANCE_INITIALIZER_STMT (ctxp, yyvsp[0].node);
;
break;}
case 84:
#line 883 "./parse.y"
#line 884 "./parse.y"
{ yyval.node = yyvsp[-1].node; ;
break;}
case 86:
#line 886 "./parse.y"
#line 887 "./parse.y"
{ end_class_declaration (1); ;
break;}
case 87:
#line 888 "./parse.y"
#line 889 "./parse.y"
{ end_class_declaration (1); ;
break;}
case 88:
#line 894 "./parse.y"
#line 895 "./parse.y"
{ register_fields (0, yyvsp[-2].node, yyvsp[-1].node); ;
break;}
case 89:
#line 896 "./parse.y"
#line 897 "./parse.y"
{
check_modifiers
("Illegal modifier `%s' for field declaration",
......@@ -3220,19 +3221,19 @@ case 89:
;
break;}
case 91:
#line 909 "./parse.y"
#line 910 "./parse.y"
{ yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 92:
#line 911 "./parse.y"
#line 912 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 93:
#line 916 "./parse.y"
#line 917 "./parse.y"
{ yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ;
break;}
case 94:
#line 918 "./parse.y"
#line 919 "./parse.y"
{
if (java_error_count)
yyvsp[0].node = NULL_TREE;
......@@ -3241,7 +3242,7 @@ case 94:
;
break;}
case 95:
#line 925 "./parse.y"
#line 926 "./parse.y"
{
yyerror ("Missing variable initializer");
yyval.node = build_tree_list (yyvsp[-2].node, NULL_TREE);
......@@ -3249,7 +3250,7 @@ case 95:
;
break;}
case 96:
#line 931 "./parse.y"
#line 932 "./parse.y"
{
yyerror ("';' expected");
yyval.node = build_tree_list (yyvsp[-3].node, NULL_TREE);
......@@ -3257,23 +3258,23 @@ case 96:
;
break;}
case 98:
#line 941 "./parse.y"
#line 942 "./parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 99:
#line 943 "./parse.y"
#line 944 "./parse.y"
{yyerror ("Invalid declaration"); DRECOVER(vdi);;
break;}
case 100:
#line 945 "./parse.y"
#line 946 "./parse.y"
{yyerror ("']' expected"); DRECOVER(vdi);;
break;}
case 101:
#line 947 "./parse.y"
#line 948 "./parse.y"
{yyerror ("Unbalanced ']'"); DRECOVER(vdi);;
break;}
case 104:
#line 958 "./parse.y"
#line 959 "./parse.y"
{
current_function_decl = yyvsp[0].node;
if (current_function_decl
......@@ -3284,68 +3285,68 @@ case 104:
;
break;}
case 105:
#line 967 "./parse.y"
#line 968 "./parse.y"
{ finish_method_declaration (yyvsp[0].node); ;
break;}
case 106:
#line 969 "./parse.y"
#line 970 "./parse.y"
{YYNOT_TWICE yyerror ("'{' expected"); RECOVER;;
break;}
case 107:
#line 974 "./parse.y"
#line 975 "./parse.y"
{ yyval.node = method_header (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 108:
#line 976 "./parse.y"
#line 977 "./parse.y"
{ yyval.node = method_header (0, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 109:
#line 978 "./parse.y"
#line 979 "./parse.y"
{ yyval.node = method_header (yyvsp[-3].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 110:
#line 980 "./parse.y"
#line 981 "./parse.y"
{ yyval.node = method_header (yyvsp[-3].value, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 111:
#line 982 "./parse.y"
#line 983 "./parse.y"
{
yyerror ("Invalid method declaration, method name required");
RECOVER;
;
break;}
case 112:
#line 987 "./parse.y"
#line 988 "./parse.y"
{RECOVER;;
break;}
case 113:
#line 989 "./parse.y"
#line 990 "./parse.y"
{yyerror ("Identifier expected"); RECOVER;;
break;}
case 114:
#line 991 "./parse.y"
#line 992 "./parse.y"
{yyerror ("Identifier expected"); RECOVER;;
break;}
case 115:
#line 993 "./parse.y"
#line 994 "./parse.y"
{
yyerror ("Invalid method declaration, return type required");
RECOVER;
;
break;}
case 116:
#line 1001 "./parse.y"
#line 1002 "./parse.y"
{
ctxp->formal_parameter_number = 0;
yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE);
;
break;}
case 117:
#line 1006 "./parse.y"
#line 1007 "./parse.y"
{ yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 118:
#line 1008 "./parse.y"
#line 1009 "./parse.y"
{
EXPR_WFL_LINECOL (wfl_operator) = yyvsp[-1].operator.location;
TREE_PURPOSE (yyvsp[-2].node) =
......@@ -3356,59 +3357,59 @@ case 118:
;
break;}
case 119:
#line 1017 "./parse.y"
#line 1018 "./parse.y"
{yyerror ("')' expected"); DRECOVER(method_declarator);;
break;}
case 120:
#line 1019 "./parse.y"
#line 1020 "./parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 121:
#line 1024 "./parse.y"
#line 1025 "./parse.y"
{
ctxp->formal_parameter_number = 1;
;
break;}
case 122:
#line 1028 "./parse.y"
#line 1029 "./parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 123:
#line 1033 "./parse.y"
#line 1034 "./parse.y"
{ yyerror ("Missing formal parameter term"); RECOVER; ;
break;}
case 124:
#line 1038 "./parse.y"
#line 1039 "./parse.y"
{
yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
;
break;}
case 125:
#line 1042 "./parse.y"
#line 1043 "./parse.y"
{
yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
ARG_FINAL_P (yyval.node) = 1;
;
break;}
case 126:
#line 1047 "./parse.y"
#line 1048 "./parse.y"
{
yyerror ("Missing identifier"); RECOVER;
yyval.node = NULL_TREE;
;
break;}
case 127:
#line 1052 "./parse.y"
#line 1053 "./parse.y"
{
yyerror ("Missing identifier"); RECOVER;
yyval.node = NULL_TREE;
;
break;}
case 128:
#line 1060 "./parse.y"
#line 1061 "./parse.y"
{
check_modifiers ("Illegal modifier `%s'. Only `final' was expected here",
yyvsp[0].value, ACC_FINAL);
......@@ -3417,49 +3418,49 @@ case 128:
;
break;}
case 129:
#line 1069 "./parse.y"
#line 1070 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 130:
#line 1071 "./parse.y"
#line 1072 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 131:
#line 1073 "./parse.y"
#line 1074 "./parse.y"
{yyerror ("Missing class type term"); RECOVER;;
break;}
case 132:
#line 1078 "./parse.y"
#line 1079 "./parse.y"
{ yyval.node = build_tree_list (yyvsp[0].node, yyvsp[0].node); ;
break;}
case 133:
#line 1080 "./parse.y"
#line 1081 "./parse.y"
{ yyval.node = tree_cons (yyvsp[0].node, yyvsp[0].node, yyvsp[-2].node); ;
break;}
case 134:
#line 1082 "./parse.y"
#line 1083 "./parse.y"
{yyerror ("Missing class type term"); RECOVER;;
break;}
case 137:
#line 1089 "./parse.y"
#line 1090 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 138:
#line 1095 "./parse.y"
#line 1096 "./parse.y"
{
TREE_CHAIN (yyvsp[0].node) = CPC_STATIC_INITIALIZER_STMT (ctxp);
SET_CPC_STATIC_INITIALIZER_STMT (ctxp, yyvsp[0].node);
;
break;}
case 139:
#line 1100 "./parse.y"
#line 1101 "./parse.y"
{
TREE_CHAIN (yyvsp[-1].node) = CPC_STATIC_INITIALIZER_STMT (ctxp);
SET_CPC_STATIC_INITIALIZER_STMT (ctxp, yyvsp[-1].node);
;
break;}
case 140:
#line 1108 "./parse.y"
#line 1109 "./parse.y"
{
check_modifiers ("Illegal modifier `%s' for static initializer", yyvsp[0].value, ACC_STATIC);
/* Can't have a static initializer in an innerclass */
......@@ -3473,56 +3474,56 @@ case 140:
;
break;}
case 141:
#line 1124 "./parse.y"
#line 1125 "./parse.y"
{
current_function_decl = yyvsp[0].node;
source_start_java_method (current_function_decl);
;
break;}
case 142:
#line 1129 "./parse.y"
#line 1130 "./parse.y"
{ finish_method_declaration (yyvsp[0].node); ;
break;}
case 143:
#line 1134 "./parse.y"
#line 1135 "./parse.y"
{ yyval.node = method_header (0, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 144:
#line 1136 "./parse.y"
#line 1137 "./parse.y"
{ yyval.node = method_header (yyvsp[-2].value, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 145:
#line 1141 "./parse.y"
#line 1142 "./parse.y"
{
ctxp->formal_parameter_number = 0;
yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE);
;
break;}
case 146:
#line 1146 "./parse.y"
#line 1147 "./parse.y"
{ yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 147:
#line 1154 "./parse.y"
#line 1155 "./parse.y"
{
BLOCK_EXPR_BODY (yyvsp[0].node) = empty_stmt_node;
yyval.node = yyvsp[0].node;
;
break;}
case 148:
#line 1159 "./parse.y"
#line 1160 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 149:
#line 1161 "./parse.y"
#line 1162 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 150:
#line 1163 "./parse.y"
#line 1164 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 153:
#line 1173 "./parse.y"
#line 1174 "./parse.y"
{
yyval.node = build_method_invocation (yyvsp[-3].node, NULL_TREE);
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-3].node), yyval.node);
......@@ -3530,7 +3531,7 @@ case 153:
;
break;}
case 154:
#line 1179 "./parse.y"
#line 1180 "./parse.y"
{
yyval.node = build_method_invocation (yyvsp[-4].node, yyvsp[-2].node);
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-4].node), yyval.node);
......@@ -3538,15 +3539,15 @@ case 154:
;
break;}
case 155:
#line 1187 "./parse.y"
#line 1188 "./parse.y"
{yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
break;}
case 156:
#line 1189 "./parse.y"
#line 1190 "./parse.y"
{yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
break;}
case 157:
#line 1194 "./parse.y"
#line 1195 "./parse.y"
{
tree wfl = build_wfl_node (this_identifier_node);
EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location;
......@@ -3554,7 +3555,7 @@ case 157:
;
break;}
case 158:
#line 1200 "./parse.y"
#line 1201 "./parse.y"
{
tree wfl = build_wfl_node (super_identifier_node);
EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location;
......@@ -3562,109 +3563,109 @@ case 158:
;
break;}
case 159:
#line 1211 "./parse.y"
#line 1212 "./parse.y"
{ create_interface (0, yyvsp[0].node, NULL_TREE); ;
break;}
case 161:
#line 1214 "./parse.y"
#line 1215 "./parse.y"
{ create_interface (yyvsp[-2].value, yyvsp[0].node, NULL_TREE); ;
break;}
case 163:
#line 1217 "./parse.y"
#line 1218 "./parse.y"
{ create_interface (0, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 165:
#line 1220 "./parse.y"
#line 1221 "./parse.y"
{ create_interface (yyvsp[-3].value, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 167:
#line 1223 "./parse.y"
#line 1224 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 168:
#line 1225 "./parse.y"
#line 1226 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 169:
#line 1230 "./parse.y"
#line 1231 "./parse.y"
{
ctxp->interface_number = 1;
yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
;
break;}
case 170:
#line 1235 "./parse.y"
#line 1236 "./parse.y"
{
ctxp->interface_number++;
yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
;
break;}
case 171:
#line 1240 "./parse.y"
#line 1241 "./parse.y"
{yyerror ("Invalid interface type"); RECOVER;;
break;}
case 172:
#line 1242 "./parse.y"
#line 1243 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 173:
#line 1247 "./parse.y"
#line 1248 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 174:
#line 1249 "./parse.y"
#line 1250 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 179:
#line 1261 "./parse.y"
#line 1262 "./parse.y"
{ end_class_declaration (1); ;
break;}
case 180:
#line 1263 "./parse.y"
#line 1264 "./parse.y"
{ end_class_declaration (1); ;
break;}
case 182:
#line 1272 "./parse.y"
#line 1273 "./parse.y"
{
check_abstract_method_header (yyvsp[-1].node);
current_function_decl = NULL_TREE; /* FIXME ? */
;
break;}
case 183:
#line 1277 "./parse.y"
#line 1278 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 184:
#line 1283 "./parse.y"
#line 1284 "./parse.y"
{ yyval.node = build_new_array_init (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
case 185:
#line 1285 "./parse.y"
#line 1286 "./parse.y"
{ yyval.node = build_new_array_init (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
case 186:
#line 1287 "./parse.y"
#line 1288 "./parse.y"
{ yyval.node = build_new_array_init (yyvsp[-3].operator.location, yyvsp[-2].node); ;
break;}
case 187:
#line 1292 "./parse.y"
#line 1293 "./parse.y"
{
yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node),
yyvsp[0].node, NULL_TREE);
;
break;}
case 188:
#line 1297 "./parse.y"
#line 1298 "./parse.y"
{
yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node), yyvsp[0].node, yyvsp[-2].node);
;
break;}
case 189:
#line 1301 "./parse.y"
#line 1302 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 190:
#line 1307 "./parse.y"
#line 1308 "./parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (current_function_decl && flag_emit_xref)
......@@ -3674,15 +3675,15 @@ case 190:
;
break;}
case 191:
#line 1315 "./parse.y"
#line 1316 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 192:
#line 1320 "./parse.y"
#line 1321 "./parse.y"
{ enter_block (); ;
break;}
case 193:
#line 1325 "./parse.y"
#line 1326 "./parse.y"
{
maybe_absorb_scoping_blocks ();
/* Store the location of the `}' when doing xrefs */
......@@ -3695,38 +3696,38 @@ case 193:
;
break;}
case 197:
#line 1345 "./parse.y"
#line 1346 "./parse.y"
{ java_method_add_stmt (current_function_decl, yyvsp[0].node); ;
break;}
case 198:
#line 1347 "./parse.y"
#line 1348 "./parse.y"
{
LOCAL_CLASS_P (TREE_TYPE (GET_CPC ())) = 1;
end_class_declaration (1);
;
break;}
case 200:
#line 1359 "./parse.y"
#line 1360 "./parse.y"
{ declare_local_variables (0, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 201:
#line 1361 "./parse.y"
#line 1362 "./parse.y"
{ declare_local_variables (yyvsp[-2].value, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 207:
#line 1371 "./parse.y"
#line 1372 "./parse.y"
{ yyval.node = exit_block (); ;
break;}
case 212:
#line 1380 "./parse.y"
#line 1381 "./parse.y"
{ yyval.node = exit_block (); ;
break;}
case 224:
#line 1399 "./parse.y"
#line 1400 "./parse.y"
{ yyval.node = empty_stmt_node; ;
break;}
case 225:
#line 1404 "./parse.y"
#line 1405 "./parse.y"
{
yyval.node = build_labeled_block (EXPR_WFL_LINECOL (yyvsp[-1].node),
EXPR_WFL_NODE (yyvsp[-1].node));
......@@ -3736,19 +3737,19 @@ case 225:
;
break;}
case 226:
#line 1415 "./parse.y"
#line 1416 "./parse.y"
{ yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 227:
#line 1417 "./parse.y"
#line 1418 "./parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 228:
#line 1422 "./parse.y"
#line 1423 "./parse.y"
{ yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 229:
#line 1429 "./parse.y"
#line 1430 "./parse.y"
{
/* We have a statement. Generate a WFL around it so
we can debug it */
......@@ -3759,7 +3760,7 @@ case 229:
;
break;}
case 230:
#line 1438 "./parse.y"
#line 1439 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid expression statement");
......@@ -3767,7 +3768,7 @@ case 230:
;
break;}
case 231:
#line 1444 "./parse.y"
#line 1445 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid expression statement");
......@@ -3775,7 +3776,7 @@ case 231:
;
break;}
case 232:
#line 1450 "./parse.y"
#line 1451 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid expression statement");
......@@ -3783,82 +3784,82 @@ case 232:
;
break;}
case 233:
#line 1456 "./parse.y"
#line 1457 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 234:
#line 1458 "./parse.y"
#line 1459 "./parse.y"
{
parse_ctor_invocation_error ();
RECOVER;
;
break;}
case 235:
#line 1463 "./parse.y"
#line 1464 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 236:
#line 1465 "./parse.y"
#line 1466 "./parse.y"
{
parse_ctor_invocation_error ();
RECOVER;
;
break;}
case 237:
#line 1470 "./parse.y"
#line 1471 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 238:
#line 1472 "./parse.y"
#line 1473 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 239:
#line 1474 "./parse.y"
#line 1475 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 240:
#line 1476 "./parse.y"
#line 1477 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 241:
#line 1478 "./parse.y"
#line 1479 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 249:
#line 1493 "./parse.y"
#line 1494 "./parse.y"
{
yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node,
yyvsp[0].node, NULL_TREE);
;
break;}
case 250:
#line 1498 "./parse.y"
#line 1499 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 251:
#line 1500 "./parse.y"
#line 1501 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 252:
#line 1502 "./parse.y"
#line 1503 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 253:
#line 1507 "./parse.y"
#line 1508 "./parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 254:
#line 1512 "./parse.y"
#line 1513 "./parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 255:
#line 1517 "./parse.y"
#line 1518 "./parse.y"
{
enter_block ();
;
break;}
case 256:
#line 1521 "./parse.y"
#line 1522 "./parse.y"
{
/* Make into "proper list" of COMPOUND_EXPRs.
I.e. make the last statment also have its own
......@@ -3869,42 +3870,42 @@ case 256:
;
break;}
case 257:
#line 1533 "./parse.y"
#line 1534 "./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 258:
#line 1538 "./parse.y"
#line 1539 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 259:
#line 1540 "./parse.y"
#line 1541 "./parse.y"
{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);;
break;}
case 260:
#line 1542 "./parse.y"
#line 1543 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 261:
#line 1550 "./parse.y"
#line 1551 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 262:
#line 1552 "./parse.y"
#line 1553 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 263:
#line 1554 "./parse.y"
#line 1555 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 264:
#line 1556 "./parse.y"
#line 1557 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 270:
#line 1575 "./parse.y"
#line 1576 "./parse.y"
{
tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location;
......@@ -3912,7 +3913,7 @@ case 270:
;
break;}
case 271:
#line 1581 "./parse.y"
#line 1582 "./parse.y"
{
tree lab = build1 (DEFAULT_EXPR, NULL_TREE, NULL_TREE);
EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location;
......@@ -3920,57 +3921,57 @@ case 271:
;
break;}
case 272:
#line 1587 "./parse.y"
#line 1588 "./parse.y"
{yyerror ("Missing or invalid constant expression"); RECOVER;;
break;}
case 273:
#line 1589 "./parse.y"
#line 1590 "./parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 274:
#line 1591 "./parse.y"
#line 1592 "./parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 275:
#line 1596 "./parse.y"
#line 1597 "./parse.y"
{
tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0);
yyval.node = build_new_loop (body);
;
break;}
case 276:
#line 1604 "./parse.y"
#line 1605 "./parse.y"
{ yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
case 277:
#line 1606 "./parse.y"
#line 1607 "./parse.y"
{YYERROR_NOW; yyerror ("'(' expected"); RECOVER;;
break;}
case 278:
#line 1608 "./parse.y"
#line 1609 "./parse.y"
{yyerror ("Missing term and ')' expected"); RECOVER;;
break;}
case 279:
#line 1610 "./parse.y"
#line 1611 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 280:
#line 1615 "./parse.y"
#line 1616 "./parse.y"
{ yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
case 281:
#line 1620 "./parse.y"
#line 1621 "./parse.y"
{
tree body = build_loop_body (0, NULL_TREE, 1);
yyval.node = build_new_loop (body);
;
break;}
case 282:
#line 1629 "./parse.y"
#line 1630 "./parse.y"
{ yyval.node = finish_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ;
break;}
case 283:
#line 1634 "./parse.y"
#line 1635 "./parse.y"
{
if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-4].node)) == 'c')
yyvsp[-4].node = build_wfl_node (yyvsp[-4].node);
......@@ -3978,7 +3979,7 @@ case 283:
;
break;}
case 284:
#line 1640 "./parse.y"
#line 1641 "./parse.y"
{
yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
......@@ -3987,23 +3988,23 @@ case 284:
;
break;}
case 285:
#line 1647 "./parse.y"
#line 1648 "./parse.y"
{yyerror ("Invalid control expression"); RECOVER;;
break;}
case 286:
#line 1649 "./parse.y"
#line 1650 "./parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
case 287:
#line 1651 "./parse.y"
#line 1652 "./parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
case 288:
#line 1656 "./parse.y"
#line 1657 "./parse.y"
{ yyval.node = finish_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;
break;}
case 289:
#line 1658 "./parse.y"
#line 1659 "./parse.y"
{
yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
......@@ -4012,7 +4013,7 @@ case 289:
;
break;}
case 290:
#line 1668 "./parse.y"
#line 1669 "./parse.y"
{
/* This scope defined for local variable that may be
defined within the scope of the for loop */
......@@ -4020,15 +4021,15 @@ case 290:
;
break;}
case 291:
#line 1674 "./parse.y"
#line 1675 "./parse.y"
{yyerror ("'(' expected"); DRECOVER(for_1);;
break;}
case 292:
#line 1676 "./parse.y"
#line 1677 "./parse.y"
{yyerror ("Invalid init statement"); RECOVER;;
break;}
case 293:
#line 1681 "./parse.y"
#line 1682 "./parse.y"
{
/* We now declare the loop body. The loop is
declared as a for loop. */
......@@ -4041,11 +4042,11 @@ case 293:
;
break;}
case 294:
#line 1693 "./parse.y"
#line 1694 "./parse.y"
{ yyval.node = empty_stmt_node; ;
break;}
case 295:
#line 1695 "./parse.y"
#line 1696 "./parse.y"
{
/* Init statement recorded within the previously
defined block scope */
......@@ -4053,7 +4054,7 @@ case 295:
;
break;}
case 296:
#line 1701 "./parse.y"
#line 1702 "./parse.y"
{
/* Local variable are recorded within the previously
defined block scope */
......@@ -4061,94 +4062,94 @@ case 296:
;
break;}
case 297:
#line 1707 "./parse.y"
#line 1708 "./parse.y"
{yyerror ("';' expected"); DRECOVER(for_init_1);;
break;}
case 298:
#line 1711 "./parse.y"
#line 1712 "./parse.y"
{yyval.node = empty_stmt_node;;
break;}
case 299:
#line 1713 "./parse.y"
#line 1714 "./parse.y"
{ yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ;
break;}
case 300:
#line 1718 "./parse.y"
#line 1719 "./parse.y"
{ yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ;
break;}
case 301:
#line 1720 "./parse.y"
#line 1721 "./parse.y"
{ yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ;
break;}
case 302:
#line 1722 "./parse.y"
#line 1723 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 303:
#line 1727 "./parse.y"
#line 1728 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ;
break;}
case 304:
#line 1729 "./parse.y"
#line 1730 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ;
break;}
case 305:
#line 1731 "./parse.y"
#line 1732 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 306:
#line 1733 "./parse.y"
#line 1734 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 307:
#line 1738 "./parse.y"
#line 1739 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ;
break;}
case 308:
#line 1740 "./parse.y"
#line 1741 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ;
break;}
case 309:
#line 1742 "./parse.y"
#line 1743 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 310:
#line 1744 "./parse.y"
#line 1745 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 311:
#line 1749 "./parse.y"
#line 1750 "./parse.y"
{ yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
case 312:
#line 1751 "./parse.y"
#line 1752 "./parse.y"
{ yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
case 313:
#line 1753 "./parse.y"
#line 1754 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 314:
#line 1755 "./parse.y"
#line 1756 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 315:
#line 1760 "./parse.y"
#line 1761 "./parse.y"
{
yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
case 316:
#line 1765 "./parse.y"
#line 1766 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 317:
#line 1767 "./parse.y"
#line 1768 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 318:
#line 1772 "./parse.y"
#line 1773 "./parse.y"
{
yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) =
......@@ -4156,23 +4157,23 @@ case 318:
;
break;}
case 319:
#line 1778 "./parse.y"
#line 1779 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 320:
#line 1780 "./parse.y"
#line 1781 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 321:
#line 1782 "./parse.y"
#line 1783 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 322:
#line 1784 "./parse.y"
#line 1785 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 323:
#line 1789 "./parse.y"
#line 1790 "./parse.y"
{
check_modifiers (
"Illegal modifier `%s'. Only `synchronized' was expected here",
......@@ -4183,33 +4184,33 @@ case 323:
;
break;}
case 324:
#line 1801 "./parse.y"
#line 1802 "./parse.y"
{ yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 325:
#line 1803 "./parse.y"
#line 1804 "./parse.y"
{ yyval.node = build_try_finally_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 326:
#line 1805 "./parse.y"
#line 1806 "./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 327:
#line 1810 "./parse.y"
#line 1811 "./parse.y"
{yyerror ("'{' expected"); DRECOVER (try_statement);;
break;}
case 329:
#line 1816 "./parse.y"
#line 1817 "./parse.y"
{
TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;
yyval.node = yyvsp[0].node;
;
break;}
case 330:
#line 1824 "./parse.y"
#line 1825 "./parse.y"
{
java_method_add_stmt (current_function_decl, yyvsp[0].node);
exit_block ();
......@@ -4217,7 +4218,7 @@ case 330:
;
break;}
case 331:
#line 1832 "./parse.y"
#line 1833 "./parse.y"
{
/* We add a block to define a scope for
formal_parameter (CCBP). The formal parameter is
......@@ -4235,96 +4236,96 @@ case 331:
;
break;}
case 332:
#line 1848 "./parse.y"
#line 1849 "./parse.y"
{yyerror ("'(' expected"); RECOVER; yyval.node = NULL_TREE;;
break;}
case 333:
#line 1850 "./parse.y"
#line 1851 "./parse.y"
{
yyerror ("Missing term or ')' expected");
RECOVER; yyval.node = NULL_TREE;
;
break;}
case 334:
#line 1855 "./parse.y"
#line 1856 "./parse.y"
{yyerror ("Missing term"); RECOVER; yyval.node = NULL_TREE;;
break;}
case 335:
#line 1860 "./parse.y"
#line 1861 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 336:
#line 1862 "./parse.y"
#line 1863 "./parse.y"
{yyerror ("'{' expected"); RECOVER; ;
break;}
case 340:
#line 1874 "./parse.y"
#line 1875 "./parse.y"
{ yyval.node = build_this (yyvsp[0].operator.location); ;
break;}
case 341:
#line 1876 "./parse.y"
#line 1877 "./parse.y"
{yyval.node = yyvsp[-1].node;;
break;}
case 347:
#line 1886 "./parse.y"
#line 1887 "./parse.y"
{
tree wfl = build_wfl_node (this_identifier_node);
yyval.node = make_qualified_primary (yyvsp[-2].node, wfl, EXPR_WFL_LINECOL (yyvsp[-2].node));
;
break;}
case 348:
#line 1891 "./parse.y"
#line 1892 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 349:
#line 1893 "./parse.y"
#line 1894 "./parse.y"
{yyerror ("'class' or 'this' expected" ); RECOVER;;
break;}
case 350:
#line 1895 "./parse.y"
#line 1896 "./parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
case 351:
#line 1897 "./parse.y"
#line 1898 "./parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
case 352:
#line 1905 "./parse.y"
#line 1906 "./parse.y"
{
yyval.node = build_java_array_type (yyvsp[-2].node, -1);
CLASS_LOADED_P (yyval.node) = 1;
;
break;}
case 353:
#line 1910 "./parse.y"
#line 1911 "./parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 354:
#line 1920 "./parse.y"
#line 1921 "./parse.y"
{ yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ;
break;}
case 355:
#line 1922 "./parse.y"
#line 1923 "./parse.y"
{ yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ;
break;}
case 356:
#line 1924 "./parse.y"
#line 1925 "./parse.y"
{ yyval.node = build_class_ref (yyvsp[-2].node); ;
break;}
case 357:
#line 1926 "./parse.y"
#line 1927 "./parse.y"
{ yyval.node = build_class_ref (void_type_node); ;
break;}
case 358:
#line 1931 "./parse.y"
#line 1932 "./parse.y"
{ yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 359:
#line 1933 "./parse.y"
#line 1934 "./parse.y"
{ yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
case 361:
#line 1939 "./parse.y"
#line 1940 "./parse.y"
{
tree ctor = build_new_invocation (yyvsp[-2].node, NULL_TREE);
yyval.node = make_qualified_primary (yyvsp[-3].node, ctor,
......@@ -4332,7 +4333,7 @@ case 361:
;
break;}
case 363:
#line 1946 "./parse.y"
#line 1947 "./parse.y"
{
tree ctor = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node);
yyval.node = make_qualified_primary (yyvsp[-4].node, ctor,
......@@ -4340,35 +4341,35 @@ case 363:
;
break;}
case 365:
#line 1953 "./parse.y"
#line 1954 "./parse.y"
{yyerror ("'(' expected"); DRECOVER(new_1);;
break;}
case 366:
#line 1955 "./parse.y"
#line 1956 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 367:
#line 1957 "./parse.y"
#line 1958 "./parse.y"
{yyerror ("')' or term expected"); RECOVER;;
break;}
case 368:
#line 1959 "./parse.y"
#line 1960 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 369:
#line 1961 "./parse.y"
#line 1962 "./parse.y"
{YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;;
break;}
case 370:
#line 1963 "./parse.y"
#line 1964 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 371:
#line 1973 "./parse.y"
#line 1974 "./parse.y"
{ create_anonymous_class (yyvsp[-4].operator.location, yyvsp[-3].node); ;
break;}
case 372:
#line 1975 "./parse.y"
#line 1976 "./parse.y"
{
tree id = build_wfl_node (DECL_NAME (GET_CPC ()));
EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-5].node);
......@@ -4401,11 +4402,11 @@ case 372:
;
break;}
case 373:
#line 2006 "./parse.y"
#line 2007 "./parse.y"
{ create_anonymous_class (yyvsp[-3].operator.location, yyvsp[-2].node); ;
break;}
case 374:
#line 2008 "./parse.y"
#line 2009 "./parse.y"
{
tree id = build_wfl_node (DECL_NAME (GET_CPC ()));
EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-4].node);
......@@ -4420,49 +4421,49 @@ case 374:
;
break;}
case 375:
#line 2024 "./parse.y"
#line 2025 "./parse.y"
{ yyval.node = yyvsp[-2].node; ;
break;}
case 376:
#line 2026 "./parse.y"
#line 2027 "./parse.y"
{ yyval.node = yyvsp[-2].node; ;
break;}
case 377:
#line 2031 "./parse.y"
#line 2032 "./parse.y"
{
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE);
ctxp->formal_parameter_number = 1;
;
break;}
case 378:
#line 2036 "./parse.y"
#line 2037 "./parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node);
;
break;}
case 379:
#line 2041 "./parse.y"
#line 2042 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 380:
#line 2046 "./parse.y"
#line 2047 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
case 381:
#line 2048 "./parse.y"
#line 2049 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
case 382:
#line 2050 "./parse.y"
#line 2051 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, CURRENT_OSB (ctxp));;
break;}
case 383:
#line 2052 "./parse.y"
#line 2053 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, CURRENT_OSB (ctxp));;
break;}
case 384:
#line 2056 "./parse.y"
#line 2057 "./parse.y"
{
char *sig;
while (CURRENT_OSB (ctxp)--)
......@@ -4473,7 +4474,7 @@ case 384:
;
break;}
case 385:
#line 2065 "./parse.y"
#line 2066 "./parse.y"
{
tree type = yyvsp[-2].node;
while (CURRENT_OSB (ctxp)--)
......@@ -4483,23 +4484,23 @@ case 385:
;
break;}
case 386:
#line 2073 "./parse.y"
#line 2074 "./parse.y"
{yyerror ("'[' expected"); DRECOVER ("]");;
break;}
case 387:
#line 2075 "./parse.y"
#line 2076 "./parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 388:
#line 2080 "./parse.y"
#line 2081 "./parse.y"
{ yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;
break;}
case 389:
#line 2082 "./parse.y"
#line 2083 "./parse.y"
{ yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ;
break;}
case 390:
#line 2087 "./parse.y"
#line 2088 "./parse.y"
{
if (JNUMERIC_TYPE_P (TREE_TYPE (yyvsp[-1].node)))
{
......@@ -4511,11 +4512,11 @@ case 390:
;
break;}
case 391:
#line 2097 "./parse.y"
#line 2098 "./parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 392:
#line 2099 "./parse.y"
#line 2100 "./parse.y"
{
yyerror ("Missing term");
yyerror ("']' expected");
......@@ -4523,7 +4524,7 @@ case 392:
;
break;}
case 393:
#line 2108 "./parse.y"
#line 2109 "./parse.y"
{
int allocate = 0;
/* If not initialized, allocate memory for the osb
......@@ -4551,19 +4552,19 @@ case 393:
;
break;}
case 394:
#line 2134 "./parse.y"
#line 2135 "./parse.y"
{ CURRENT_OSB (ctxp)++; ;
break;}
case 395:
#line 2136 "./parse.y"
#line 2137 "./parse.y"
{ yyerror ("']' expected"); RECOVER;;
break;}
case 396:
#line 2141 "./parse.y"
#line 2142 "./parse.y"
{ yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
case 397:
#line 2145 "./parse.y"
#line 2146 "./parse.y"
{
tree super_wfl =
build_wfl_node (super_identifier_node);
......@@ -4572,19 +4573,19 @@ case 397:
;
break;}
case 398:
#line 2152 "./parse.y"
#line 2153 "./parse.y"
{yyerror ("Field expected"); DRECOVER (super_field_acces);;
break;}
case 399:
#line 2157 "./parse.y"
#line 2158 "./parse.y"
{ yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
case 400:
#line 2159 "./parse.y"
#line 2160 "./parse.y"
{ yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 401:
#line 2161 "./parse.y"
#line 2162 "./parse.y"
{
if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
......@@ -4597,7 +4598,7 @@ case 401:
;
break;}
case 402:
#line 2172 "./parse.y"
#line 2173 "./parse.y"
{
if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
......@@ -4610,121 +4611,121 @@ case 402:
;
break;}
case 403:
#line 2183 "./parse.y"
#line 2184 "./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 404:
#line 2188 "./parse.y"
#line 2189 "./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 405:
#line 2197 "./parse.y"
#line 2198 "./parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
case 406:
#line 2199 "./parse.y"
#line 2200 "./parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
case 407:
#line 2204 "./parse.y"
#line 2205 "./parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 408:
#line 2206 "./parse.y"
#line 2207 "./parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 409:
#line 2208 "./parse.y"
#line 2209 "./parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
case 410:
#line 2213 "./parse.y"
#line 2214 "./parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
case 411:
#line 2218 "./parse.y"
#line 2219 "./parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
case 412:
#line 2223 "./parse.y"
#line 2224 "./parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
case 417:
#line 2238 "./parse.y"
#line 2239 "./parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
case 418:
#line 2243 "./parse.y"
#line 2244 "./parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
case 421:
#line 2250 "./parse.y"
#line 2251 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 422:
#line 2252 "./parse.y"
#line 2253 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 424:
#line 2255 "./parse.y"
#line 2256 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 425:
#line 2257 "./parse.y"
#line 2258 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 426:
#line 2262 "./parse.y"
#line 2263 "./parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
case 427:
#line 2264 "./parse.y"
#line 2265 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 428:
#line 2269 "./parse.y"
#line 2270 "./parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
case 429:
#line 2271 "./parse.y"
#line 2272 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 431:
#line 2277 "./parse.y"
#line 2278 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 432:
#line 2279 "./parse.y"
#line 2280 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 434:
#line 2282 "./parse.y"
#line 2283 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 435:
#line 2284 "./parse.y"
#line 2285 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 436:
#line 2289 "./parse.y"
#line 2290 "./parse.y"
{
tree type = yyvsp[-3].node;
while (CURRENT_OSB (ctxp)--)
......@@ -4734,15 +4735,15 @@ case 436:
;
break;}
case 437:
#line 2297 "./parse.y"
#line 2298 "./parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 438:
#line 2299 "./parse.y"
#line 2300 "./parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 439:
#line 2301 "./parse.y"
#line 2302 "./parse.y"
{
const char *ptr;
while (CURRENT_OSB (ctxp)--)
......@@ -4757,11 +4758,11 @@ case 439:
;
break;}
case 440:
#line 2314 "./parse.y"
#line 2315 "./parse.y"
{yyerror ("']' expected, invalid type expression");;
break;}
case 441:
#line 2316 "./parse.y"
#line 2317 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid type expression"); RECOVER;
......@@ -4769,243 +4770,243 @@ case 441:
;
break;}
case 442:
#line 2322 "./parse.y"
#line 2323 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 443:
#line 2324 "./parse.y"
#line 2325 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 444:
#line 2326 "./parse.y"
#line 2327 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 446:
#line 2332 "./parse.y"
#line 2333 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token),
yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 447:
#line 2337 "./parse.y"
#line 2338 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 448:
#line 2342 "./parse.y"
#line 2343 "./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 2347 "./parse.y"
#line 2348 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 450:
#line 2349 "./parse.y"
#line 2350 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 451:
#line 2351 "./parse.y"
#line 2352 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 453:
#line 2357 "./parse.y"
#line 2358 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 454:
#line 2362 "./parse.y"
#line 2363 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 455:
#line 2367 "./parse.y"
#line 2368 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 456:
#line 2369 "./parse.y"
#line 2370 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 458:
#line 2375 "./parse.y"
#line 2376 "./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 2380 "./parse.y"
#line 2381 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 460:
#line 2385 "./parse.y"
#line 2386 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 461:
#line 2390 "./parse.y"
#line 2391 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 462:
#line 2392 "./parse.y"
#line 2393 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 463:
#line 2394 "./parse.y"
#line 2395 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 465:
#line 2400 "./parse.y"
#line 2401 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 466:
#line 2405 "./parse.y"
#line 2406 "./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 2410 "./parse.y"
#line 2411 "./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 2415 "./parse.y"
#line 2416 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 469:
#line 2420 "./parse.y"
#line 2421 "./parse.y"
{ yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 470:
#line 2422 "./parse.y"
#line 2423 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 471:
#line 2424 "./parse.y"
#line 2425 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 472:
#line 2426 "./parse.y"
#line 2427 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 473:
#line 2428 "./parse.y"
#line 2429 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 474:
#line 2430 "./parse.y"
#line 2431 "./parse.y"
{yyerror ("Invalid reference type"); RECOVER;;
break;}
case 476:
#line 2436 "./parse.y"
#line 2437 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 477:
#line 2441 "./parse.y"
#line 2442 "./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 2446 "./parse.y"
#line 2447 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 479:
#line 2448 "./parse.y"
#line 2449 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 481:
#line 2454 "./parse.y"
#line 2455 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 482:
#line 2459 "./parse.y"
#line 2460 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 484:
#line 2465 "./parse.y"
#line 2466 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 485:
#line 2470 "./parse.y"
#line 2471 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 487:
#line 2476 "./parse.y"
#line 2477 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 488:
#line 2481 "./parse.y"
#line 2482 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 490:
#line 2487 "./parse.y"
#line 2488 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 491:
#line 2492 "./parse.y"
#line 2493 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 493:
#line 2498 "./parse.y"
#line 2499 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 494:
#line 2503 "./parse.y"
#line 2504 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 496:
#line 2509 "./parse.y"
#line 2510 "./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 497:
#line 2514 "./parse.y"
#line 2515 "./parse.y"
{
YYERROR_NOW;
yyerror ("Missing term");
......@@ -5013,19 +5014,19 @@ case 497:
;
break;}
case 498:
#line 2520 "./parse.y"
#line 2521 "./parse.y"
{yyerror ("Missing term"); DRECOVER (2);;
break;}
case 499:
#line 2522 "./parse.y"
#line 2523 "./parse.y"
{yyerror ("Missing term"); DRECOVER (3);;
break;}
case 502:
#line 2532 "./parse.y"
#line 2533 "./parse.y"
{ yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 503:
#line 2534 "./parse.y"
#line 2535 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Missing term");
......@@ -5254,7 +5255,7 @@ yyerrhandle:
}
return 1;
}
#line 2560 "./parse.y"
#line 2561 "./parse.y"
......@@ -6815,11 +6816,11 @@ register_fields (flags, type, variable_list)
tree init = TREE_VALUE (current);
tree current_name = EXPR_WFL_NODE (cl);
/* Can't declare static fields in inner classes */
/* Can't declare non-final static fields in inner classes */
if ((flags & ACC_STATIC) && !TOPLEVEL_CLASS_TYPE_P (class_type)
&& !CLASS_INTERFACE (TYPE_NAME (class_type)))
&& !(flags & ACC_FINAL))
parse_error_context
(cl, "Field `%s' can't be static in innerclass `%s'. Only members of interfaces and top-level classes can be static",
(cl, "Field `%s' can't be static in inner class `%s' unless it is final",
IDENTIFIER_POINTER (EXPR_WFL_NODE (cl)),
lang_printable_name (class_type, 0));
......@@ -7905,6 +7906,7 @@ jdep_resolve_class (dep)
if (!decl)
complete_class_report_errors (dep);
check_inner_class_access (decl, JDEP_ENCLOSING (dep), JDEP_WFL (dep));
return decl;
}
......@@ -9478,6 +9480,27 @@ lookup_package_type (name, from)
return get_identifier (subname);
}
static void
check_inner_class_access (decl, enclosing_type, cl)
tree decl, enclosing_type, cl;
{
/* We don't issue an error message when CL is null. CL can be null
as a result of processing a JDEP crafted by
source_start_java_method for the purpose of patching its parm
decl. But the error would have been already trapped when fixing
the method's signature. */
if (!(cl && PURE_INNER_CLASS_DECL_P (decl) && CLASS_PRIVATE (decl))
|| (PURE_INNER_CLASS_DECL_P (enclosing_type)
&& common_enclosing_context_p (TREE_TYPE (enclosing_type),
TREE_TYPE (decl)))
|| enclosing_context_p (TREE_TYPE (enclosing_type), TREE_TYPE (decl)))
return;
parse_error_context (cl, "Can't access nested %s %s. Only plublic classes and interfaces in other packages can be accessed",
(CLASS_INTERFACE (decl) ? "interface" : "class"),
lang_printable_name (decl, 0));
}
/* Check that CLASS_NAME refers to a PUBLIC class. Return 0 if no
access violations were found, 1 otherwise. */
......
......@@ -100,6 +100,7 @@ static int process_imports PARAMS ((void));
static void read_import_dir PARAMS ((tree));
static int find_in_imports_on_demand PARAMS ((tree));
static void find_in_imports PARAMS ((tree));
static void check_inner_class_access PARAMS ((tree, tree, tree));
static int check_pkg_class_access PARAMS ((tree, tree));
static void register_package PARAMS ((tree));
static tree resolve_package PARAMS ((tree, tree *));
......@@ -4117,11 +4118,11 @@ register_fields (flags, type, variable_list)
tree init = TREE_VALUE (current);
tree current_name = EXPR_WFL_NODE (cl);
/* Can't declare static fields in inner classes */
/* Can't declare non-final static fields in inner classes */
if ((flags & ACC_STATIC) && !TOPLEVEL_CLASS_TYPE_P (class_type)
&& !CLASS_INTERFACE (TYPE_NAME (class_type)))
&& !(flags & ACC_FINAL))
parse_error_context
(cl, "Field `%s' can't be static in innerclass `%s'. Only members of interfaces and top-level classes can be static",
(cl, "Field `%s' can't be static in inner class `%s' unless it is final",
IDENTIFIER_POINTER (EXPR_WFL_NODE (cl)),
lang_printable_name (class_type, 0));
......@@ -5207,6 +5208,7 @@ jdep_resolve_class (dep)
if (!decl)
complete_class_report_errors (dep);
check_inner_class_access (decl, JDEP_ENCLOSING (dep), JDEP_WFL (dep));
return decl;
}
......@@ -6780,6 +6782,27 @@ lookup_package_type (name, from)
return get_identifier (subname);
}
static void
check_inner_class_access (decl, enclosing_type, cl)
tree decl, enclosing_type, cl;
{
/* We don't issue an error message when CL is null. CL can be null
as a result of processing a JDEP crafted by
source_start_java_method for the purpose of patching its parm
decl. But the error would have been already trapped when fixing
the method's signature. */
if (!(cl && PURE_INNER_CLASS_DECL_P (decl) && CLASS_PRIVATE (decl))
|| (PURE_INNER_CLASS_DECL_P (enclosing_type)
&& common_enclosing_context_p (TREE_TYPE (enclosing_type),
TREE_TYPE (decl)))
|| enclosing_context_p (TREE_TYPE (enclosing_type), TREE_TYPE (decl)))
return;
parse_error_context (cl, "Can't access nested %s %s. Only public classes and interfaces in other packages can be accessed",
(CLASS_INTERFACE (decl) ? "interface" : "class"),
lang_printable_name (decl, 0));
}
/* Check that CLASS_NAME refers to a PUBLIC class. Return 0 if no
access violations were found, 1 otherwise. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment