From b5b8a0e7794975bd86d0a30b7ffb28a9d9f2f6c1 Mon Sep 17 00:00:00 2001 From: Alexandre Petit-Bianco Date: Wed, 1 Dec 1999 13:06:10 +0000 Subject: [PATCH] re GNATS gcj/97 (Internal compiler error) Thu Nov 11 01:57:14 1999 Alexandre Petit-Bianco * parse.y (lookup_method_invoke): Use lang_printable_name to reliably build the type name during error report. Fixes PR gcj/97. From-SVN: r30739 --- gcc/java/ChangeLog | 5 + gcc/java/parse.c | 337 +++++++++++++++++++++++---------------------- gcc/java/parse.y | 12 +- 3 files changed, 185 insertions(+), 169 deletions(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index b77fcd5c201..3adaa4392b2 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -31,6 +31,11 @@ Wed Nov 17 21:09:28 1999 Alexandre Petit-Bianco * class.c (layout_class): Always convert TYPE_SIZE_UNIT to int_type_node: that's what `_Jv_AllocObject' expects. +Thu Nov 11 01:57:14 1999 Alexandre Petit-Bianco + + * parse.y (lookup_method_invoke): Use lang_printable_name to + reliably build the type name during error report. Fixes PR gcj/97. + 1999-11-09 Tom Tromey * jcf-path.c: Include . diff --git a/gcc/java/parse.c b/gcc/java/parse.c index 6aad8130d48..58b96cad90c 100644 --- a/gcc/java/parse.c +++ b/gcc/java/parse.c @@ -743,24 +743,24 @@ static const short yyrline[] = { 0, 1608, 1612, 1615, 1617, 1619, 1623, 1626, 1628, 1630, 1634, 1637, 1639, 1641, 1645, 1651, 1653, 1657, 1664, 1666, 1668, 1670, 1674, 1686, 1689, 1691, 1696, 1700, 1702, 1709, 1717, - 1734, 1736, 1738, 1742, 1745, 1750, 1752, 1755, 1757, 1759, - 1761, 1762, 1763, 1764, 1768, 1770, 1772, 1777, 1779, 1781, - 1783, 1785, 1789, 1792, 1797, 1799, 1804, 1805, 1806, 1807, - 1808, 1810, 1812, 1814, 1816, 1818, 1822, 1824, 1827, 1833, - 1838, 1842, 1845, 1847, 1849, 1853, 1855, 1857, 1859, 1863, - 1866, 1870, 1876, 1878, 1886, 1913, 1915, 1919, 1924, 1931, - 1935, 1938, 1940, 1951, 1962, 1967, 1976, 1978, 1982, 1985, - 1987, 1992, 1997, 2002, 2009, 2011, 2012, 2013, 2016, 2021, - 2026, 2028, 2029, 2031, 2033, 2034, 2036, 2040, 2043, 2047, - 2050, 2054, 2056, 2058, 2060, 2061, 2063, 2067, 2076, 2078, - 2080, 2093, 2095, 2101, 2103, 2105, 2109, 2111, 2116, 2121, - 2126, 2128, 2130, 2134, 2136, 2141, 2146, 2148, 2152, 2154, - 2159, 2164, 2169, 2171, 2173, 2177, 2179, 2184, 2189, 2194, - 2199, 2201, 2203, 2205, 2207, 2209, 2213, 2215, 2220, 2225, - 2227, 2231, 2233, 2238, 2242, 2244, 2249, 2253, 2255, 2260, - 2264, 2266, 2271, 2275, 2277, 2282, 2286, 2288, 2293, 2299, - 2301, 2305, 2307, 2310, 2313, 2321, 2323, 2324, 2327, 2329, - 2332, 2336 + 1734, 1736, 1741, 1745, 1748, 1753, 1755, 1758, 1760, 1762, + 1764, 1765, 1766, 1767, 1771, 1773, 1775, 1780, 1782, 1784, + 1786, 1788, 1792, 1795, 1800, 1802, 1807, 1808, 1809, 1810, + 1811, 1813, 1815, 1817, 1819, 1821, 1825, 1827, 1830, 1836, + 1841, 1845, 1848, 1850, 1852, 1856, 1858, 1860, 1862, 1866, + 1869, 1873, 1879, 1881, 1889, 1916, 1918, 1922, 1927, 1934, + 1938, 1941, 1943, 1954, 1965, 1970, 1979, 1981, 1985, 1988, + 1990, 1995, 2000, 2005, 2012, 2014, 2015, 2016, 2019, 2024, + 2029, 2031, 2032, 2034, 2036, 2037, 2039, 2043, 2046, 2050, + 2053, 2057, 2059, 2061, 2063, 2064, 2066, 2070, 2079, 2081, + 2083, 2096, 2098, 2104, 2106, 2108, 2112, 2114, 2119, 2124, + 2129, 2131, 2133, 2137, 2139, 2144, 2149, 2151, 2155, 2157, + 2162, 2167, 2172, 2174, 2176, 2180, 2182, 2187, 2192, 2197, + 2202, 2204, 2206, 2208, 2210, 2212, 2216, 2218, 2223, 2228, + 2230, 2234, 2236, 2241, 2245, 2247, 2252, 2256, 2258, 2263, + 2267, 2269, 2274, 2278, 2280, 2285, 2289, 2291, 2296, 2302, + 2304, 2308, 2310, 2313, 2316, 2324, 2326, 2327, 2330, 2332, + 2335, 2339 }; #endif @@ -2256,7 +2256,7 @@ static const short yycheck[] = { 3, #define YYPURE 1 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/share/misc/bison.simple" +#line 3 "/usr/cygnus/gnupro-98r1/share/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -2273,7 +2273,7 @@ static const short yycheck[] = { 3, You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. @@ -2407,10 +2407,8 @@ int yydebug; /* nonzero means print parse trace */ /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ -#ifndef YYPARSE_PARAM int yyparse (void); #endif -#endif #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) @@ -2451,7 +2449,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/share/misc/bison.simple" +#line 196 "/usr/cygnus/gnupro-98r1/share/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 *. @@ -4058,175 +4056,178 @@ case 330: break;} case 331: #line 1735 "./parse.y" -{yyerror ("'(' expected"); RECOVER;; +{yyerror ("'(' expected"); RECOVER; yyval.node = NULL_TREE;; break;} case 332: #line 1737 "./parse.y" -{yyerror ("Missing term or ')' expected"); DRECOVER (2);; +{ + yyerror ("Missing term or ')' expected"); + RECOVER; yyval.node = NULL_TREE; + ; break;} case 333: -#line 1739 "./parse.y" -{yyerror ("')' expected"); DRECOVER (1);; +#line 1742 "./parse.y" +{yyerror ("Missing term"); RECOVER; yyval.node = NULL_TREE;; break;} case 334: -#line 1744 "./parse.y" +#line 1747 "./parse.y" { yyval.node = yyvsp[0].node; ; break;} case 335: -#line 1746 "./parse.y" +#line 1749 "./parse.y" {yyerror ("'{' expected"); RECOVER; ; break;} case 339: -#line 1758 "./parse.y" +#line 1761 "./parse.y" { yyval.node = build_this (yyvsp[0].operator.location); ; break;} case 340: -#line 1760 "./parse.y" +#line 1763 "./parse.y" {yyval.node = yyvsp[-1].node;; break;} case 345: -#line 1769 "./parse.y" +#line 1772 "./parse.y" { yyval.node = parse_jdk1_1_error ("named class literals"); ; break;} case 346: -#line 1771 "./parse.y" +#line 1774 "./parse.y" { yyval.node = build_class_ref (yyvsp[-2].node); ; break;} case 347: -#line 1773 "./parse.y" +#line 1776 "./parse.y" { yyval.node = build_class_ref (void_type_node); ; break;} case 348: -#line 1778 "./parse.y" +#line 1781 "./parse.y" { yyval.node = parse_jdk1_1_error ("class literals"); ; break;} case 349: -#line 1780 "./parse.y" +#line 1783 "./parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 350: -#line 1782 "./parse.y" +#line 1785 "./parse.y" {yyerror ("'class' or 'this' expected" ); RECOVER;; break;} case 351: -#line 1784 "./parse.y" +#line 1787 "./parse.y" {yyerror ("'class' expected" ); RECOVER;; break;} case 352: -#line 1786 "./parse.y" +#line 1789 "./parse.y" {yyerror ("'class' expected" ); RECOVER;; break;} case 353: -#line 1791 "./parse.y" +#line 1794 "./parse.y" { yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 354: -#line 1793 "./parse.y" +#line 1796 "./parse.y" { yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ; break;} case 355: -#line 1798 "./parse.y" +#line 1801 "./parse.y" { yyval.node = parse_jdk1_1_error ("inner class instance creation"); ; break;} case 356: -#line 1800 "./parse.y" +#line 1803 "./parse.y" { yyval.node = parse_jdk1_1_error ("inner class instance creation"); ; break;} case 361: -#line 1809 "./parse.y" +#line 1812 "./parse.y" {yyerror ("'(' expected"); DRECOVER(new_1);; break;} case 362: -#line 1811 "./parse.y" +#line 1814 "./parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 363: -#line 1813 "./parse.y" +#line 1816 "./parse.y" {yyerror ("')' or term expected"); RECOVER;; break;} case 364: -#line 1815 "./parse.y" +#line 1818 "./parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 365: -#line 1817 "./parse.y" +#line 1820 "./parse.y" {YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;; break;} case 366: -#line 1819 "./parse.y" +#line 1822 "./parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 369: -#line 1829 "./parse.y" +#line 1832 "./parse.y" { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE); ctxp->formal_parameter_number = 1; ; break;} case 370: -#line 1834 "./parse.y" +#line 1837 "./parse.y" { ctxp->formal_parameter_number += 1; yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node); ; break;} case 371: -#line 1839 "./parse.y" +#line 1842 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 372: -#line 1844 "./parse.y" +#line 1847 "./parse.y" { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ; break;} case 373: -#line 1846 "./parse.y" +#line 1849 "./parse.y" { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ; break;} case 374: -#line 1848 "./parse.y" +#line 1851 "./parse.y" { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, CURRENT_OSB (ctxp));; break;} case 375: -#line 1850 "./parse.y" +#line 1853 "./parse.y" { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, CURRENT_OSB (ctxp));; break;} case 376: -#line 1854 "./parse.y" +#line 1857 "./parse.y" { yyval.node = parse_jdk1_1_error ("anonymous array"); ; break;} case 377: -#line 1856 "./parse.y" +#line 1859 "./parse.y" { yyval.node = parse_jdk1_1_error ("anonymous array"); ; break;} case 378: -#line 1858 "./parse.y" +#line 1861 "./parse.y" {yyerror ("'[' expected"); DRECOVER ("]");; break;} case 379: -#line 1860 "./parse.y" +#line 1863 "./parse.y" {yyerror ("']' expected"); RECOVER;; break;} case 380: -#line 1865 "./parse.y" +#line 1868 "./parse.y" { yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ; break;} case 381: -#line 1867 "./parse.y" +#line 1870 "./parse.y" { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ; break;} case 382: -#line 1872 "./parse.y" +#line 1875 "./parse.y" { EXPR_WFL_LINECOL (yyvsp[-1].node) = yyvsp[-2].operator.location; yyval.node = yyvsp[-1].node; ; break;} case 383: -#line 1877 "./parse.y" +#line 1880 "./parse.y" {yyerror ("']' expected"); RECOVER;; break;} case 384: -#line 1879 "./parse.y" +#line 1882 "./parse.y" { yyerror ("Missing term"); yyerror ("']' expected"); @@ -4234,7 +4235,7 @@ case 384: ; break;} case 385: -#line 1888 "./parse.y" +#line 1891 "./parse.y" { int allocate = 0; /* If not initialized, allocate memory for the osb @@ -4262,19 +4263,19 @@ case 385: ; break;} case 386: -#line 1914 "./parse.y" +#line 1917 "./parse.y" { CURRENT_OSB (ctxp)++; ; break;} case 387: -#line 1916 "./parse.y" +#line 1919 "./parse.y" { yyerror ("']' expected"); RECOVER;; break;} case 388: -#line 1921 "./parse.y" +#line 1924 "./parse.y" { yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ; break;} case 389: -#line 1925 "./parse.y" +#line 1928 "./parse.y" { tree super_wfl = build_wfl_node (super_identifier_node); @@ -4283,19 +4284,19 @@ case 389: ; break;} case 390: -#line 1932 "./parse.y" +#line 1935 "./parse.y" {yyerror ("Field expected"); DRECOVER (super_field_acces);; break;} case 391: -#line 1937 "./parse.y" +#line 1940 "./parse.y" { yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ; break;} case 392: -#line 1939 "./parse.y" +#line 1942 "./parse.y" { yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 393: -#line 1941 "./parse.y" +#line 1944 "./parse.y" { if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR) yyval.node = build_this_super_qualified_invocation @@ -4308,7 +4309,7 @@ case 393: ; break;} case 394: -#line 1952 "./parse.y" +#line 1955 "./parse.y" { if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR) yyval.node = build_this_super_qualified_invocation @@ -4321,121 +4322,121 @@ case 394: ; break;} case 395: -#line 1963 "./parse.y" +#line 1966 "./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 396: -#line 1968 "./parse.y" +#line 1971 "./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 397: -#line 1977 "./parse.y" +#line 1980 "./parse.y" { yyerror ("'(' expected"); DRECOVER (method_invocation); ; break;} case 398: -#line 1979 "./parse.y" +#line 1982 "./parse.y" { yyerror ("'(' expected"); DRECOVER (method_invocation); ; break;} case 399: -#line 1984 "./parse.y" +#line 1987 "./parse.y" { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ; break;} case 400: -#line 1986 "./parse.y" +#line 1989 "./parse.y" { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ; break;} case 401: -#line 1988 "./parse.y" +#line 1991 "./parse.y" { yyerror ("Missing term and ']' expected"); DRECOVER(array_access); ; break;} case 402: -#line 1993 "./parse.y" +#line 1996 "./parse.y" { yyerror ("']' expected"); DRECOVER(array_access); ; break;} case 403: -#line 1998 "./parse.y" +#line 2001 "./parse.y" { yyerror ("Missing term and ']' expected"); DRECOVER(array_access); ; break;} case 404: -#line 2003 "./parse.y" +#line 2006 "./parse.y" { yyerror ("']' expected"); DRECOVER(array_access); ; break;} case 409: -#line 2018 "./parse.y" +#line 2021 "./parse.y" { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ; break;} case 410: -#line 2023 "./parse.y" +#line 2026 "./parse.y" { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ; break;} case 413: -#line 2030 "./parse.y" +#line 2033 "./parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 414: -#line 2032 "./parse.y" +#line 2035 "./parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 416: -#line 2035 "./parse.y" +#line 2038 "./parse.y" {yyerror ("Missing term"); RECOVER; break;} case 417: -#line 2037 "./parse.y" +#line 2040 "./parse.y" {yyerror ("Missing term"); RECOVER; break;} case 418: -#line 2042 "./parse.y" +#line 2045 "./parse.y" {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ; break;} case 419: -#line 2044 "./parse.y" +#line 2047 "./parse.y" {yyerror ("Missing term"); RECOVER; break;} case 420: -#line 2049 "./parse.y" +#line 2052 "./parse.y" {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ; break;} case 421: -#line 2051 "./parse.y" +#line 2054 "./parse.y" {yyerror ("Missing term"); RECOVER; break;} case 423: -#line 2057 "./parse.y" +#line 2060 "./parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 424: -#line 2059 "./parse.y" +#line 2062 "./parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 426: -#line 2062 "./parse.y" +#line 2065 "./parse.y" {yyerror ("Missing term"); RECOVER; break;} case 427: -#line 2064 "./parse.y" +#line 2067 "./parse.y" {yyerror ("Missing term"); RECOVER; break;} case 428: -#line 2069 "./parse.y" +#line 2072 "./parse.y" { tree type = yyvsp[-3].node; while (CURRENT_OSB (ctxp)--) @@ -4445,15 +4446,15 @@ case 428: ; break;} case 429: -#line 2077 "./parse.y" +#line 2080 "./parse.y" { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 430: -#line 2079 "./parse.y" +#line 2082 "./parse.y" { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 431: -#line 2081 "./parse.y" +#line 2084 "./parse.y" { const char *ptr; while (CURRENT_OSB (ctxp)--) @@ -4468,11 +4469,11 @@ case 431: ; break;} case 432: -#line 2094 "./parse.y" +#line 2097 "./parse.y" {yyerror ("']' expected, invalid type expression");; break;} case 433: -#line 2096 "./parse.y" +#line 2099 "./parse.y" { if (ctxp->prevent_ese != lineno) yyerror ("Invalid type expression"); RECOVER; @@ -4480,243 +4481,243 @@ case 433: ; break;} case 434: -#line 2102 "./parse.y" +#line 2105 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 435: -#line 2104 "./parse.y" +#line 2107 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 436: -#line 2106 "./parse.y" +#line 2109 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 438: -#line 2112 "./parse.y" +#line 2115 "./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 2117 "./parse.y" +#line 2120 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 440: -#line 2122 "./parse.y" +#line 2125 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 441: -#line 2127 "./parse.y" +#line 2130 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 442: -#line 2129 "./parse.y" +#line 2132 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 443: -#line 2131 "./parse.y" +#line 2134 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 445: -#line 2137 "./parse.y" +#line 2140 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 446: -#line 2142 "./parse.y" +#line 2145 "./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 2147 "./parse.y" +#line 2150 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 448: -#line 2149 "./parse.y" +#line 2152 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 450: -#line 2155 "./parse.y" +#line 2158 "./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 2160 "./parse.y" +#line 2163 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 452: -#line 2165 "./parse.y" +#line 2168 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 453: -#line 2170 "./parse.y" +#line 2173 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 454: -#line 2172 "./parse.y" +#line 2175 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 455: -#line 2174 "./parse.y" +#line 2177 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 457: -#line 2180 "./parse.y" +#line 2183 "./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 2185 "./parse.y" +#line 2188 "./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 2190 "./parse.y" +#line 2193 "./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 2195 "./parse.y" +#line 2198 "./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 2200 "./parse.y" +#line 2203 "./parse.y" { yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 462: -#line 2202 "./parse.y" +#line 2205 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 463: -#line 2204 "./parse.y" +#line 2207 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 464: -#line 2206 "./parse.y" +#line 2209 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 465: -#line 2208 "./parse.y" +#line 2211 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 466: -#line 2210 "./parse.y" +#line 2213 "./parse.y" {yyerror ("Invalid reference type"); RECOVER;; break;} case 468: -#line 2216 "./parse.y" +#line 2219 "./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 2221 "./parse.y" +#line 2224 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 470: -#line 2226 "./parse.y" +#line 2229 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 471: -#line 2228 "./parse.y" +#line 2231 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 473: -#line 2234 "./parse.y" +#line 2237 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 474: -#line 2239 "./parse.y" +#line 2242 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 476: -#line 2245 "./parse.y" +#line 2248 "./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 2250 "./parse.y" +#line 2253 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 479: -#line 2256 "./parse.y" +#line 2259 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 480: -#line 2261 "./parse.y" +#line 2264 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 482: -#line 2267 "./parse.y" +#line 2270 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 483: -#line 2272 "./parse.y" +#line 2275 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 485: -#line 2278 "./parse.y" +#line 2281 "./parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 486: -#line 2283 "./parse.y" +#line 2286 "./parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 488: -#line 2289 "./parse.y" +#line 2292 "./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 489: -#line 2294 "./parse.y" +#line 2297 "./parse.y" { YYERROR_NOW; yyerror ("Missing term"); @@ -4724,19 +4725,19 @@ case 489: ; break;} case 490: -#line 2300 "./parse.y" +#line 2303 "./parse.y" {yyerror ("Missing term"); DRECOVER (2);; break;} case 491: -#line 2302 "./parse.y" +#line 2305 "./parse.y" {yyerror ("Missing term"); DRECOVER (3);; break;} case 494: -#line 2312 "./parse.y" +#line 2315 "./parse.y" { yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 495: -#line 2314 "./parse.y" +#line 2317 "./parse.y" { if (ctxp->prevent_ese != lineno) yyerror ("Missing term"); @@ -4745,7 +4746,7 @@ case 495: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/share/misc/bison.simple" +#line 498 "/usr/cygnus/gnupro-98r1/share/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -4941,7 +4942,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 2340 "./parse.y" +#line 2343 "./parse.y" @@ -9319,6 +9320,15 @@ resolve_qualified_expression_name (wfl, found_decl, where_found, type_found) type = QUAL_DECL_TYPE (decl); continue; + case PLUS_EXPR: + if ((decl = java_complete_tree (qual_wfl)) == error_mark_node) + return 1; + if ((type = patch_string (decl))) + decl = type; + *where_found = QUAL_RESOLUTION (q) = decl; + *type_found = type = TREE_TYPE (decl); + break; + default: /* Fix for -Wall Just go to the next statement. Don't continue */ @@ -10154,6 +10164,7 @@ lookup_method_invoke (lc, cl, class, name, arg_list) tree atl = end_params_node; /* Arg Type List */ tree method, signature, list, node; const char *candidates; /* Used for error report */ + char *dup; /* Fix the arguments */ for (node = arg_list; node; node = TREE_CHAIN (node)) @@ -10203,14 +10214,13 @@ lookup_method_invoke (lc, cl, class, name, arg_list) method = make_node (FUNCTION_TYPE); TYPE_ARG_TYPES (method) = atl; signature = build_java_argument_signature (method); - parse_error_context (cl, "Can't find %s `%s(%s)' in class `%s'%s", + dup = strdup (lang_printable_name (class, 0)); + parse_error_context (cl, "Can't find %s `%s(%s)' in type `%s'%s", (lc ? "constructor" : "method"), - (lc ? - IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (class))) : - IDENTIFIER_POINTER (name)), - IDENTIFIER_POINTER (signature), - IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (class))), + (lc ? dup : IDENTIFIER_POINTER (name)), + IDENTIFIER_POINTER (signature), dup, (candidates ? candidates : "")); + free (dup); return NULL_TREE; } @@ -10490,7 +10500,8 @@ qualify_ambiguous_name (id) TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION) name = EXPR_WFL_NODE (TREE_OPERAND (qual_wfl, 0)); - else if (code == STRING_CST || code == CONDITIONAL_EXPR) + else if (code == STRING_CST || code == CONDITIONAL_EXPR + || code == PLUS_EXPR) { qual = TREE_CHAIN (qual); qual_wfl = QUAL_WFL (qual); diff --git a/gcc/java/parse.y b/gcc/java/parse.y index cf5c8631ac6..07e6cfa7201 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -7561,6 +7561,7 @@ lookup_method_invoke (lc, cl, class, name, arg_list) tree atl = end_params_node; /* Arg Type List */ tree method, signature, list, node; const char *candidates; /* Used for error report */ + char *dup; /* Fix the arguments */ for (node = arg_list; node; node = TREE_CHAIN (node)) @@ -7610,14 +7611,13 @@ lookup_method_invoke (lc, cl, class, name, arg_list) method = make_node (FUNCTION_TYPE); TYPE_ARG_TYPES (method) = atl; signature = build_java_argument_signature (method); - parse_error_context (cl, "Can't find %s `%s(%s)' in class `%s'%s", + dup = strdup (lang_printable_name (class, 0)); + parse_error_context (cl, "Can't find %s `%s(%s)' in type `%s'%s", (lc ? "constructor" : "method"), - (lc ? - IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (class))) : - IDENTIFIER_POINTER (name)), - IDENTIFIER_POINTER (signature), - IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (class))), + (lc ? dup : IDENTIFIER_POINTER (name)), + IDENTIFIER_POINTER (signature), dup, (candidates ? candidates : "")); + free (dup); return NULL_TREE; } -- 2.30.2