From 90b7170582a6713e4a79d7ed9b5e01727f7a0d58 Mon Sep 17 00:00:00 2001 From: Mirek Klimos Date: Wed, 17 Jul 2013 22:32:40 -0700 Subject: [PATCH] Remove Continuation from local 0 No emitted bytecode relies on Continuation being stored in local 0 anymore. Stop using local 0 for this purpose and compute offset to the Continuation at JIT time. 16 bytes of memory freed. At this point all locals of Continuation construction wrapper share the same indices with their respective locals of Continuation body, which should allow further optimizations. --- hphp/compiler/analysis/emitter.cpp | 16 +- hphp/compiler/analysis/function_scope.cpp | 5 +- hphp/compiler/expression/simple_variable.cpp | 9 - hphp/compiler/expression/simple_variable.h | 2 - hphp/compiler/parser/hphp.tab.cpp | 1619 ++++++++--------- hphp/compiler/parser/parser.cpp | 14 +- hphp/compiler/statement/method_statement.cpp | 3 - hphp/runtime/debugger/cmd/cmd_next.cpp | 5 +- hphp/runtime/ext/ext_continuation.cpp | 15 +- hphp/runtime/vm/bytecode.cpp | 23 +- hphp/runtime/vm/jit/ir.cpp | 0 hphp/runtime/vm/jit/ir.h | 2 +- hphp/runtime/vm/jit/translator.cpp | 20 +- hphp/runtime/vm/runtime.cpp | 7 +- hphp/runtime/vm/runtime.h | 9 + hphp/test/ext/test_parser_stmt.cpp | 6 +- hphp/test/quick/Setprofile.php.expectf | 15 +- .../debug_backtrace_continuation.php.expectf | 10 +- hphp/test/quick/generator_vars.php.expect | 27 +- hphp/util/parser/hphp.y | 11 +- hphp/util/parser/parser.h | 3 - 21 files changed, 853 insertions(+), 968 deletions(-) mode change 100644 => 100755 hphp/compiler/analysis/emitter.cpp mode change 100644 => 100755 hphp/runtime/ext/ext_continuation.cpp mode change 100644 => 100755 hphp/runtime/vm/jit/ir.cpp mode change 100644 => 100755 hphp/runtime/vm/jit/translator.cpp mode change 100644 => 100755 hphp/util/parser/hphp.y diff --git a/hphp/compiler/analysis/emitter.cpp b/hphp/compiler/analysis/emitter.cpp old mode 100644 new mode 100755 index e2fb91cb9..0002d1cb8 --- a/hphp/compiler/analysis/emitter.cpp +++ b/hphp/compiler/analysis/emitter.cpp @@ -2243,8 +2243,6 @@ bool EmitterVisitor::visitImpl(ConstructPtr node) { if (m_curFunc->isGenerator()) { assert(!retV); - m_metaInfo.addKnownDataType( - KindOfObject, false, m_ue.bcPos(), false, 1); assert(m_evalStack.size() == 1); e.ContRetC(); return false; @@ -3147,10 +3145,6 @@ bool EmitterVisitor::visitImpl(ConstructPtr node) { SimpleFunctionCallPtr call( static_pointer_cast(node)); ExpressionListPtr params = call->getParams(); - auto inputIsAnObject = [&](int inputIndex) { - m_metaInfo.addKnownDataType(KindOfObject, /* predicted */ false, - m_ue.bcPos(), false, inputIndex); - }; if (call->isFatalFunction()) { if (params && params->getCount() == 1) { @@ -3241,7 +3235,6 @@ bool EmitterVisitor::visitImpl(ConstructPtr node) { } else if (call->isCompilerCallToFunction("hphp_unpack_continuation")) { assert(!params || params->getCount() == 0); int yieldLabelCount = call->getFunctionScope()->getYieldLabelCount(); - inputIsAnObject(0); emitContinuationSwitch(e, yieldLabelCount); return false; } else if (call->isCompilerCallToFunction("hphp_create_continuation")) { @@ -3273,7 +3266,6 @@ bool EmitterVisitor::visitImpl(ConstructPtr node) { assert(params && params->getCount() == 1); visit((*params)[0]); emitConvertToCell(e); - inputIsAnObject(1); assert(m_evalStack.size() == 1); e.ContRetC(); e.Null(); @@ -3971,16 +3963,12 @@ bool EmitterVisitor::visitImpl(ConstructPtr node) { int64_t normalLabel = 2 * y->getLabel(); int64_t exceptLabel = normalLabel - 1; - // pack continuation and set the return label + // suspend continuation and set the return label if (keyExp) { assert(m_evalStack.size() == 2); - m_metaInfo.addKnownDataType( - KindOfObject, false, m_ue.bcPos(), false, 2); e.ContSuspendK(normalLabel); } else { assert(m_evalStack.size() == 1); - m_metaInfo.addKnownDataType( - KindOfObject, false, m_ue.bcPos(), false, 1); e.ContSuspend(normalLabel); } @@ -5620,8 +5608,6 @@ void EmitterVisitor::emitPostponedMeths() { if (currentPositionIsReachable()) { e.Null(); if (p.m_meth->getFunctionScope()->isGenerator()) { - m_metaInfo.addKnownDataType( - KindOfObject, false, m_ue.bcPos(), false, 1); assert(m_evalStack.size() == 1); e.ContRetC(); } else { diff --git a/hphp/compiler/analysis/function_scope.cpp b/hphp/compiler/analysis/function_scope.cpp index 5d23a1b86..552476eed 100644 --- a/hphp/compiler/analysis/function_scope.cpp +++ b/hphp/compiler/analysis/function_scope.cpp @@ -344,10 +344,7 @@ bool FunctionScope::isClosure() const { } bool FunctionScope::isGenerator() const { - assert(!getOrigGenStmt() || - (ParserBase::IsContinuationName(name()) && - m_paramNames.size() == 1 && - m_paramNames[0] == CONTINUATION_OBJECT_NAME)); + assert(!getOrigGenStmt() || ParserBase::IsContinuationName(name())); return !!getOrigGenStmt(); } diff --git a/hphp/compiler/expression/simple_variable.cpp b/hphp/compiler/expression/simple_variable.cpp index 32b29f5a4..c1b17bf45 100644 --- a/hphp/compiler/expression/simple_variable.cpp +++ b/hphp/compiler/expression/simple_variable.cpp @@ -105,15 +105,6 @@ void SimpleVariable::coalesce(SimpleVariablePtr other) { m_name = m_sym->getName(); } -string SimpleVariable::getNamePrefix() const { - bool needsCont = getFunctionScope()->isGenerator(); - bool isHidden = m_sym && m_sym->isHidden(); - return (needsCont && - m_name != CONTINUATION_OBJECT_NAME && - !isHidden) ? - string(TYPED_CONTINUATION_OBJECT_NAME) + "->" : string(""); -} - /* This simple variable is about to go out of scope. Is it ok to kill the last assignment? diff --git a/hphp/compiler/expression/simple_variable.h b/hphp/compiler/expression/simple_variable.h index 2828d77c0..d5a783d40 100644 --- a/hphp/compiler/expression/simple_variable.h +++ b/hphp/compiler/expression/simple_variable.h @@ -59,8 +59,6 @@ public: void updateSymbol(SimpleVariablePtr src); void coalesce(SimpleVariablePtr other); private: - std::string getNamePrefix() const; - std::string m_name; std::string m_docComment; diff --git a/hphp/compiler/parser/hphp.tab.cpp b/hphp/compiler/parser/hphp.tab.cpp index 0db35297a..30dc790a9 100644 --- a/hphp/compiler/parser/hphp.tab.cpp +++ b/hphp/compiler/parser/hphp.tab.cpp @@ -221,7 +221,7 @@ static void on_constant(Parser *_p, Token &out, Token &name, Token &value) { /////////////////////////////////////////////////////////////////////////////// // continuation transformations -void prepare_generator(Parser *_p, Token &stmt, Token ¶ms) { +void prepare_generator(Parser *_p, Token &stmt) { // 1. add prologue and epilogue to original body and store it back to "stmt" { // hphp_unpack_continuation() @@ -237,15 +237,6 @@ void prepare_generator(Parser *_p, Token &stmt, Token ¶ms) { stmt.reset(); _p->finishStatement(stmt, stmts2); stmt = 1; } - - // 2. prepare a single continuation parameter list and store it in "params" - { - Token type; type.setText("Continuation"); - Token var; var.setText(CONTINUATION_OBJECT_NAME); - params.reset(); - type.reset(); - _p->onParam(params, NULL, type, var, false, NULL, NULL, NULL); - } } // create a generator function with original name and parameters @@ -748,7 +739,7 @@ static int yylex(YYSTYPE *token, HPHP::Location *loc, Parser *_p) { /* Line 189 of yacc.c */ -#line 752 "new_hphp.tab.cpp" +#line 743 "new_hphp.tab.cpp" /* Enabling traces. */ #ifndef YYDEBUG @@ -955,7 +946,7 @@ typedef struct YYLTYPE /* Line 264 of yacc.c */ -#line 959 "new_hphp.tab.cpp" +#line 950 "new_hphp.tab.cpp" #ifdef short # undef short @@ -1569,80 +1560,80 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 813, 813, 813, 818, 820, 823, 824, 825, 826, - 827, 828, 831, 833, 833, 835, 835, 837, 838, 843, - 844, 845, 846, 847, 848, 852, 854, 857, 858, 859, - 860, 865, 866, 870, 871, 873, 876, 882, 889, 896, - 900, 906, 908, 911, 912, 913, 914, 917, 918, 922, - 927, 927, 931, 931, 936, 935, 939, 939, 942, 943, - 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, - 954, 957, 955, 960, 962, 970, 973, 974, 978, 979, - 980, 981, 982, 989, 995, 999, 999, 1005, 1006, 1010, - 1011, 1015, 1020, 1019, 1029, 1028, 1041, 1040, 1059, 1057, - 1076, 1075, 1084, 1082, 1094, 1093, 1105, 1103, 1116, 1117, - 1121, 1124, 1127, 1128, 1129, 1132, 1134, 1137, 1138, 1141, - 1142, 1145, 1146, 1150, 1151, 1156, 1157, 1160, 1161, 1165, - 1166, 1170, 1171, 1175, 1176, 1180, 1181, 1186, 1187, 1192, - 1193, 1194, 1195, 1198, 1201, 1203, 1206, 1207, 1211, 1213, - 1216, 1219, 1222, 1223, 1226, 1227, 1231, 1233, 1235, 1236, - 1240, 1244, 1248, 1253, 1258, 1263, 1268, 1274, 1283, 1285, - 1287, 1288, 1292, 1295, 1298, 1302, 1306, 1310, 1314, 1319, - 1327, 1329, 1332, 1333, 1334, 1336, 1341, 1342, 1345, 1346, - 1347, 1351, 1352, 1354, 1355, 1359, 1361, 1364, 1364, 1368, - 1367, 1371, 1375, 1373, 1386, 1383, 1394, 1396, 1398, 1400, - 1402, 1406, 1407, 1408, 1411, 1417, 1420, 1426, 1429, 1434, - 1436, 1441, 1446, 1450, 1451, 1457, 1458, 1463, 1464, 1469, - 1470, 1474, 1475, 1479, 1481, 1487, 1492, 1493, 1495, 1499, - 1500, 1501, 1502, 1506, 1507, 1508, 1509, 1510, 1511, 1513, - 1518, 1521, 1522, 1526, 1527, 1530, 1531, 1534, 1535, 1538, - 1539, 1543, 1544, 1545, 1546, 1547, 1548, 1551, 1552, 1555, - 1556, 1557, 1560, 1562, 1564, 1565, 1568, 1570, 1574, 1575, - 1577, 1578, 1581, 1585, 1586, 1590, 1591, 1595, 1596, 1600, - 1604, 1609, 1610, 1611, 1614, 1616, 1617, 1618, 1621, 1622, - 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, - 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, - 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, - 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1663, - 1664, 1666, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, - 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, - 1687, 1686, 1695, 1694, 1702, 1703, 1707, 1711, 1715, 1721, - 1725, 1731, 1733, 1737, 1739, 1743, 1748, 1749, 1753, 1760, - 1767, 1769, 1774, 1775, 1776, 1780, 1784, 1788, 1789, 1790, - 1791, 1795, 1801, 1806, 1815, 1816, 1819, 1822, 1825, 1826, - 1829, 1833, 1836, 1839, 1846, 1847, 1851, 1852, 1854, 1858, - 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, - 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, - 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, - 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, - 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, - 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, - 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1939, 1944, 1945, - 1948, 1949, 1950, 1954, 1955, 1956, 1960, 1961, 1962, 1966, - 1967, 1968, 1971, 1973, 1977, 1978, 1979, 1981, 1982, 1983, - 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1993, 1998, 1999, - 2000, 2001, 2002, 2004, 2005, 2008, 2009, 2013, 2016, 2022, - 2023, 2024, 2025, 2026, 2027, 2028, 2033, 2035, 2039, 2040, - 2043, 2044, 2048, 2051, 2053, 2055, 2059, 2060, 2061, 2063, - 2066, 2070, 2071, 2072, 2075, 2076, 2077, 2078, 2079, 2081, - 2082, 2088, 2090, 2093, 2096, 2098, 2100, 2103, 2105, 2109, - 2111, 2114, 2117, 2123, 2125, 2128, 2129, 2134, 2137, 2141, - 2141, 2146, 2149, 2150, 2154, 2155, 2160, 2161, 2165, 2166, - 2170, 2171, 2176, 2178, 2183, 2184, 2185, 2186, 2187, 2188, - 2189, 2191, 2194, 2196, 2200, 2201, 2202, 2203, 2204, 2206, - 2208, 2210, 2214, 2215, 2216, 2220, 2223, 2226, 2229, 2233, - 2237, 2244, 2248, 2255, 2256, 2261, 2263, 2264, 2267, 2268, - 2271, 2272, 2276, 2277, 2281, 2282, 2283, 2284, 2286, 2289, - 2292, 2293, 2294, 2296, 2298, 2302, 2303, 2304, 2306, 2307, - 2308, 2312, 2314, 2317, 2319, 2320, 2321, 2322, 2325, 2327, - 2328, 2332, 2334, 2337, 2339, 2340, 2341, 2345, 2347, 2350, - 2353, 2355, 2357, 2361, 2362, 2364, 2365, 2371, 2372, 2374, - 2376, 2378, 2380, 2383, 2384, 2385, 2389, 2390, 2391, 2392, - 2393, 2394, 2395, 2399, 2400, 2404, 2412, 2414, 2418, 2422, - 2430, 2431, 2437, 2438, 2446, 2449, 2453, 2456, 2461, 2462, - 2463, 2464, 2468, 2469, 2473, 2475, 2476, 2478, 2482, 2488, - 2490, 2494, 2497, 2500, 2509, 2512, 2515, 2516, 2519, 2520, - 2524, 2529, 2533, 2539, 2547, 2548 + 0, 804, 804, 804, 809, 811, 814, 815, 816, 817, + 818, 819, 822, 824, 824, 826, 826, 828, 829, 834, + 835, 836, 837, 838, 839, 843, 845, 848, 849, 850, + 851, 856, 857, 861, 862, 864, 867, 873, 880, 887, + 891, 897, 899, 902, 903, 904, 905, 908, 909, 913, + 918, 918, 922, 922, 927, 926, 930, 930, 933, 934, + 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, + 945, 948, 946, 951, 953, 961, 964, 965, 969, 970, + 971, 972, 973, 980, 986, 990, 990, 996, 997, 1001, + 1002, 1006, 1011, 1010, 1020, 1019, 1032, 1031, 1050, 1048, + 1067, 1066, 1075, 1073, 1085, 1084, 1096, 1094, 1107, 1108, + 1112, 1115, 1118, 1119, 1120, 1123, 1125, 1128, 1129, 1132, + 1133, 1136, 1137, 1141, 1142, 1147, 1148, 1151, 1152, 1156, + 1157, 1161, 1162, 1166, 1167, 1171, 1172, 1177, 1178, 1183, + 1184, 1185, 1186, 1189, 1192, 1194, 1197, 1198, 1202, 1204, + 1207, 1210, 1213, 1214, 1217, 1218, 1222, 1224, 1226, 1227, + 1231, 1235, 1239, 1244, 1249, 1254, 1259, 1265, 1274, 1276, + 1278, 1279, 1283, 1286, 1289, 1293, 1297, 1301, 1305, 1310, + 1318, 1320, 1323, 1324, 1325, 1327, 1332, 1333, 1336, 1337, + 1338, 1342, 1343, 1345, 1346, 1350, 1352, 1355, 1355, 1359, + 1358, 1362, 1366, 1364, 1377, 1374, 1385, 1387, 1389, 1391, + 1393, 1397, 1398, 1399, 1402, 1408, 1411, 1417, 1420, 1425, + 1427, 1432, 1437, 1441, 1442, 1448, 1449, 1454, 1455, 1460, + 1461, 1465, 1466, 1470, 1472, 1478, 1483, 1484, 1486, 1490, + 1491, 1492, 1493, 1497, 1498, 1499, 1500, 1501, 1502, 1504, + 1509, 1512, 1513, 1517, 1518, 1521, 1522, 1525, 1526, 1529, + 1530, 1534, 1535, 1536, 1537, 1538, 1539, 1542, 1543, 1546, + 1547, 1548, 1551, 1553, 1555, 1556, 1559, 1561, 1565, 1566, + 1568, 1569, 1572, 1576, 1577, 1581, 1582, 1586, 1587, 1591, + 1595, 1600, 1601, 1602, 1605, 1607, 1608, 1609, 1612, 1613, + 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, + 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, + 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, + 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1654, + 1655, 1657, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, + 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, + 1678, 1677, 1686, 1685, 1693, 1694, 1698, 1702, 1706, 1712, + 1716, 1722, 1724, 1728, 1730, 1734, 1739, 1740, 1744, 1751, + 1758, 1760, 1765, 1766, 1767, 1771, 1775, 1779, 1780, 1781, + 1782, 1786, 1792, 1797, 1806, 1807, 1810, 1813, 1816, 1817, + 1820, 1824, 1827, 1830, 1837, 1838, 1842, 1843, 1845, 1849, + 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, + 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, + 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, + 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, + 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, + 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, + 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, + 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1930, 1935, 1936, + 1939, 1940, 1941, 1945, 1946, 1947, 1951, 1952, 1953, 1957, + 1958, 1959, 1962, 1964, 1968, 1969, 1970, 1972, 1973, 1974, + 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1984, 1989, 1990, + 1991, 1992, 1993, 1995, 1996, 1999, 2000, 2004, 2007, 2013, + 2014, 2015, 2016, 2017, 2018, 2019, 2024, 2026, 2030, 2031, + 2034, 2035, 2039, 2042, 2044, 2046, 2050, 2051, 2052, 2054, + 2057, 2061, 2062, 2063, 2066, 2067, 2068, 2069, 2070, 2072, + 2073, 2079, 2081, 2084, 2087, 2089, 2091, 2094, 2096, 2100, + 2102, 2105, 2108, 2114, 2116, 2119, 2120, 2125, 2128, 2132, + 2132, 2137, 2140, 2141, 2145, 2146, 2151, 2152, 2156, 2157, + 2161, 2162, 2167, 2169, 2174, 2175, 2176, 2177, 2178, 2179, + 2180, 2182, 2185, 2187, 2191, 2192, 2193, 2194, 2195, 2197, + 2199, 2201, 2205, 2206, 2207, 2211, 2214, 2217, 2220, 2224, + 2228, 2235, 2239, 2246, 2247, 2252, 2254, 2255, 2258, 2259, + 2262, 2263, 2267, 2268, 2272, 2273, 2274, 2275, 2277, 2280, + 2283, 2284, 2285, 2287, 2289, 2293, 2294, 2295, 2297, 2298, + 2299, 2303, 2305, 2308, 2310, 2311, 2312, 2313, 2316, 2318, + 2319, 2323, 2325, 2328, 2330, 2331, 2332, 2336, 2338, 2341, + 2344, 2346, 2348, 2352, 2353, 2355, 2356, 2362, 2363, 2365, + 2367, 2369, 2371, 2374, 2375, 2376, 2380, 2381, 2382, 2383, + 2384, 2385, 2386, 2390, 2391, 2395, 2403, 2405, 2409, 2413, + 2421, 2422, 2428, 2429, 2437, 2440, 2444, 2447, 2452, 2453, + 2454, 2455, 2459, 2460, 2464, 2466, 2467, 2469, 2473, 2479, + 2481, 2485, 2488, 2491, 2500, 2503, 2506, 2507, 2510, 2511, + 2515, 2520, 2524, 2530, 2538, 2539 }; #endif @@ -5480,14 +5471,14 @@ yyreduce: case 2: /* Line 1455 of yacc.c */ -#line 813 "hphp.y" +#line 804 "hphp.y" { _p->initParseTree(); ;} break; case 3: /* Line 1455 of yacc.c */ -#line 813 "hphp.y" +#line 804 "hphp.y" { _p->popLabelInfo(); _p->finiParseTree();;} break; @@ -5495,56 +5486,56 @@ yyreduce: case 4: /* Line 1455 of yacc.c */ -#line 819 "hphp.y" +#line 810 "hphp.y" { _p->addTopStatement((yyvsp[(2) - (2)]));;} break; case 5: /* Line 1455 of yacc.c */ -#line 820 "hphp.y" +#line 811 "hphp.y" { ;} break; case 6: /* Line 1455 of yacc.c */ -#line 823 "hphp.y" +#line 814 "hphp.y" { _p->nns((yyvsp[(1) - (1)]).num()); (yyval) = (yyvsp[(1) - (1)]);;} break; case 7: /* Line 1455 of yacc.c */ -#line 824 "hphp.y" +#line 815 "hphp.y" { _p->nns(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 8: /* Line 1455 of yacc.c */ -#line 825 "hphp.y" +#line 816 "hphp.y" { _p->nns(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 9: /* Line 1455 of yacc.c */ -#line 826 "hphp.y" +#line 817 "hphp.y" { _p->nns(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 10: /* Line 1455 of yacc.c */ -#line 827 "hphp.y" +#line 818 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 11: /* Line 1455 of yacc.c */ -#line 828 "hphp.y" +#line 819 "hphp.y" { _p->onHaltCompiler(); _p->finiParseTree(); YYACCEPT;;} @@ -5553,7 +5544,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 831 "hphp.y" +#line 822 "hphp.y" { _p->onNamespaceStart((yyvsp[(2) - (3)]).text(), true); (yyval).reset();;} break; @@ -5561,42 +5552,42 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 833 "hphp.y" +#line 824 "hphp.y" { _p->onNamespaceStart((yyvsp[(2) - (3)]).text());;} break; case 14: /* Line 1455 of yacc.c */ -#line 834 "hphp.y" +#line 825 "hphp.y" { _p->onNamespaceEnd(); (yyval) = (yyvsp[(5) - (6)]);;} break; case 15: /* Line 1455 of yacc.c */ -#line 835 "hphp.y" +#line 826 "hphp.y" { _p->onNamespaceStart("");;} break; case 16: /* Line 1455 of yacc.c */ -#line 836 "hphp.y" +#line 827 "hphp.y" { _p->onNamespaceEnd(); (yyval) = (yyvsp[(4) - (5)]);;} break; case 17: /* Line 1455 of yacc.c */ -#line 837 "hphp.y" +#line 828 "hphp.y" { _p->nns(); (yyval).reset();;} break; case 18: /* Line 1455 of yacc.c */ -#line 838 "hphp.y" +#line 829 "hphp.y" { _p->nns(); _p->finishStatement((yyval), (yyvsp[(1) - (2)])); (yyval) = 1;;} break; @@ -5604,126 +5595,126 @@ yyreduce: case 19: /* Line 1455 of yacc.c */ -#line 843 "hphp.y" +#line 834 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 20: /* Line 1455 of yacc.c */ -#line 844 "hphp.y" +#line 835 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 21: /* Line 1455 of yacc.c */ -#line 845 "hphp.y" +#line 836 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 22: /* Line 1455 of yacc.c */ -#line 846 "hphp.y" +#line 837 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 23: /* Line 1455 of yacc.c */ -#line 847 "hphp.y" +#line 838 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 24: /* Line 1455 of yacc.c */ -#line 848 "hphp.y" +#line 839 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 25: /* Line 1455 of yacc.c */ -#line 853 "hphp.y" +#line 844 "hphp.y" { ;} break; case 26: /* Line 1455 of yacc.c */ -#line 854 "hphp.y" +#line 845 "hphp.y" { ;} break; case 27: /* Line 1455 of yacc.c */ -#line 857 "hphp.y" +#line 848 "hphp.y" { _p->onUse((yyvsp[(1) - (1)]).text(),"");;} break; case 28: /* Line 1455 of yacc.c */ -#line 858 "hphp.y" +#line 849 "hphp.y" { _p->onUse((yyvsp[(2) - (2)]).text(),"");;} break; case 29: /* Line 1455 of yacc.c */ -#line 859 "hphp.y" +#line 850 "hphp.y" { _p->onUse((yyvsp[(1) - (3)]).text(),(yyvsp[(3) - (3)]).text());;} break; case 30: /* Line 1455 of yacc.c */ -#line 861 "hphp.y" +#line 852 "hphp.y" { _p->onUse((yyvsp[(2) - (4)]).text(),(yyvsp[(4) - (4)]).text());;} break; case 31: /* Line 1455 of yacc.c */ -#line 865 "hphp.y" +#line 856 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 32: /* Line 1455 of yacc.c */ -#line 867 "hphp.y" +#line 858 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + (yyvsp[(2) - (3)]) + (yyvsp[(3) - (3)]); (yyval) = (yyvsp[(1) - (3)]).num() | 2;;} break; case 33: /* Line 1455 of yacc.c */ -#line 870 "hphp.y" +#line 861 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = (yyval).num() | 1;;} break; case 34: /* Line 1455 of yacc.c */ -#line 872 "hphp.y" +#line 863 "hphp.y" { (yyval).set((yyvsp[(3) - (3)]).num() | 2, _p->nsDecl((yyvsp[(3) - (3)]).text()));;} break; case 35: /* Line 1455 of yacc.c */ -#line 873 "hphp.y" +#line 864 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = (yyval).num() | 2;;} break; case 36: /* Line 1455 of yacc.c */ -#line 876 "hphp.y" +#line 867 "hphp.y" { if ((yyvsp[(1) - (1)]).num() & 1) { (yyvsp[(1) - (1)]).setText(_p->resolve((yyvsp[(1) - (1)]).text(),0)); } @@ -5733,7 +5724,7 @@ yyreduce: case 37: /* Line 1455 of yacc.c */ -#line 883 "hphp.y" +#line 874 "hphp.y" { if ((yyvsp[(1) - (2)]).num() & 1) { (yyvsp[(1) - (2)]).setText(_p->resolve((yyvsp[(1) - (2)]).text(),0)); } @@ -5743,7 +5734,7 @@ yyreduce: case 38: /* Line 1455 of yacc.c */ -#line 890 "hphp.y" +#line 881 "hphp.y" { if ((yyvsp[(1) - (2)]).num() & 1) { (yyvsp[(1) - (2)]).setText(_p->resolve((yyvsp[(1) - (2)]).text(),1)); } @@ -5753,7 +5744,7 @@ yyreduce: case 39: /* Line 1455 of yacc.c */ -#line 898 "hphp.y" +#line 889 "hphp.y" { (yyvsp[(3) - (5)]).setText(_p->nsDecl((yyvsp[(3) - (5)]).text())); on_constant(_p,(yyval),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; @@ -5761,7 +5752,7 @@ yyreduce: case 40: /* Line 1455 of yacc.c */ -#line 901 "hphp.y" +#line 892 "hphp.y" { (yyvsp[(2) - (4)]).setText(_p->nsDecl((yyvsp[(2) - (4)]).text())); on_constant(_p,(yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; @@ -5769,77 +5760,77 @@ yyreduce: case 41: /* Line 1455 of yacc.c */ -#line 907 "hphp.y" +#line 898 "hphp.y" { _p->addStatement((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 42: /* Line 1455 of yacc.c */ -#line 908 "hphp.y" +#line 899 "hphp.y" { _p->onStatementListStart((yyval));;} break; case 43: /* Line 1455 of yacc.c */ -#line 911 "hphp.y" +#line 902 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 44: /* Line 1455 of yacc.c */ -#line 912 "hphp.y" +#line 903 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 45: /* Line 1455 of yacc.c */ -#line 913 "hphp.y" +#line 904 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 46: /* Line 1455 of yacc.c */ -#line 914 "hphp.y" +#line 905 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 47: /* Line 1455 of yacc.c */ -#line 917 "hphp.y" +#line 908 "hphp.y" { _p->onBlock((yyval), (yyvsp[(2) - (3)]));;} break; case 48: /* Line 1455 of yacc.c */ -#line 921 "hphp.y" +#line 912 "hphp.y" { _p->onIf((yyval),(yyvsp[(2) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)]));;} break; case 49: /* Line 1455 of yacc.c */ -#line 926 "hphp.y" +#line 917 "hphp.y" { _p->onIf((yyval),(yyvsp[(2) - (8)]),(yyvsp[(4) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(6) - (8)]));;} break; case 50: /* Line 1455 of yacc.c */ -#line 927 "hphp.y" +#line 918 "hphp.y" { _p->pushLabelScope();;} break; case 51: /* Line 1455 of yacc.c */ -#line 928 "hphp.y" +#line 919 "hphp.y" { _p->popLabelScope(); _p->onWhile((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; @@ -5847,14 +5838,14 @@ yyreduce: case 52: /* Line 1455 of yacc.c */ -#line 931 "hphp.y" +#line 922 "hphp.y" { _p->pushLabelScope();;} break; case 53: /* Line 1455 of yacc.c */ -#line 933 "hphp.y" +#line 924 "hphp.y" { _p->popLabelScope(); _p->onDo((yyval),(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;} break; @@ -5862,14 +5853,14 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 936 "hphp.y" +#line 927 "hphp.y" { _p->pushLabelScope();;} break; case 55: /* Line 1455 of yacc.c */ -#line 937 "hphp.y" +#line 928 "hphp.y" { _p->popLabelScope(); _p->onFor((yyval),(yyvsp[(3) - (10)]),(yyvsp[(5) - (10)]),(yyvsp[(7) - (10)]),(yyvsp[(10) - (10)]));;} break; @@ -5877,14 +5868,14 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 939 "hphp.y" +#line 930 "hphp.y" { _p->pushLabelScope();;} break; case 57: /* Line 1455 of yacc.c */ -#line 940 "hphp.y" +#line 931 "hphp.y" { _p->popLabelScope(); _p->onSwitch((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; @@ -5892,105 +5883,105 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 942 "hphp.y" +#line 933 "hphp.y" { _p->onBreakContinue((yyval), true, NULL);;} break; case 59: /* Line 1455 of yacc.c */ -#line 943 "hphp.y" +#line 934 "hphp.y" { _p->onBreakContinue((yyval), true, &(yyvsp[(2) - (3)]));;} break; case 60: /* Line 1455 of yacc.c */ -#line 944 "hphp.y" +#line 935 "hphp.y" { _p->onBreakContinue((yyval), false, NULL);;} break; case 61: /* Line 1455 of yacc.c */ -#line 945 "hphp.y" +#line 936 "hphp.y" { _p->onBreakContinue((yyval), false, &(yyvsp[(2) - (3)]));;} break; case 62: /* Line 1455 of yacc.c */ -#line 946 "hphp.y" +#line 937 "hphp.y" { _p->onReturn((yyval), NULL);;} break; case 63: /* Line 1455 of yacc.c */ -#line 947 "hphp.y" +#line 938 "hphp.y" { _p->onReturn((yyval), &(yyvsp[(2) - (3)]));;} break; case 64: /* Line 1455 of yacc.c */ -#line 948 "hphp.y" +#line 939 "hphp.y" { _p->onYieldBreak((yyval));;} break; case 65: /* Line 1455 of yacc.c */ -#line 949 "hphp.y" +#line 940 "hphp.y" { _p->onGlobal((yyval), (yyvsp[(2) - (3)]));;} break; case 66: /* Line 1455 of yacc.c */ -#line 950 "hphp.y" +#line 941 "hphp.y" { _p->onStatic((yyval), (yyvsp[(2) - (3)]));;} break; case 67: /* Line 1455 of yacc.c */ -#line 951 "hphp.y" +#line 942 "hphp.y" { _p->onEcho((yyval), (yyvsp[(2) - (3)]), 0);;} break; case 68: /* Line 1455 of yacc.c */ -#line 952 "hphp.y" +#line 943 "hphp.y" { _p->onUnset((yyval), (yyvsp[(3) - (5)]));;} break; case 69: /* Line 1455 of yacc.c */ -#line 953 "hphp.y" +#line 944 "hphp.y" { (yyval).reset(); (yyval) = ';';} break; case 70: /* Line 1455 of yacc.c */ -#line 954 "hphp.y" +#line 945 "hphp.y" { _p->onEcho((yyval), (yyvsp[(1) - (1)]), 1);;} break; case 71: /* Line 1455 of yacc.c */ -#line 957 "hphp.y" +#line 948 "hphp.y" { _p->pushLabelScope();;} break; case 72: /* Line 1455 of yacc.c */ -#line 958 "hphp.y" +#line 949 "hphp.y" { _p->popLabelScope(); _p->onForEach((yyval),(yyvsp[(3) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(6) - (9)]),(yyvsp[(9) - (9)]));;} break; @@ -5998,35 +5989,35 @@ yyreduce: case 73: /* Line 1455 of yacc.c */ -#line 961 "hphp.y" +#line 952 "hphp.y" { _p->onBlock((yyval), (yyvsp[(5) - (5)])); (yyval) = T_DECLARE;;} break; case 74: /* Line 1455 of yacc.c */ -#line 969 "hphp.y" +#line 960 "hphp.y" { _p->onTry((yyval),(yyvsp[(3) - (14)]),(yyvsp[(7) - (14)]),(yyvsp[(8) - (14)]),(yyvsp[(11) - (14)]),(yyvsp[(13) - (14)]),(yyvsp[(14) - (14)]));;} break; case 75: /* Line 1455 of yacc.c */ -#line 972 "hphp.y" +#line 963 "hphp.y" { _p->onTry((yyval), (yyvsp[(3) - (5)]), (yyvsp[(5) - (5)]));;} break; case 76: /* Line 1455 of yacc.c */ -#line 973 "hphp.y" +#line 964 "hphp.y" { _p->onThrow((yyval), (yyvsp[(2) - (3)]));;} break; case 77: /* Line 1455 of yacc.c */ -#line 974 "hphp.y" +#line 965 "hphp.y" { _p->onGoto((yyval), (yyvsp[(2) - (3)]), true); _p->addGoto((yyvsp[(2) - (3)]).text(), _p->getLocation(), @@ -6036,35 +6027,35 @@ yyreduce: case 78: /* Line 1455 of yacc.c */ -#line 978 "hphp.y" +#line 969 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 79: /* Line 1455 of yacc.c */ -#line 979 "hphp.y" +#line 970 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 80: /* Line 1455 of yacc.c */ -#line 980 "hphp.y" +#line 971 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 81: /* Line 1455 of yacc.c */ -#line 981 "hphp.y" +#line 972 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 82: /* Line 1455 of yacc.c */ -#line 982 "hphp.y" +#line 973 "hphp.y" { _p->onLabel((yyval), (yyvsp[(1) - (2)])); _p->addLabel((yyvsp[(1) - (2)]).text(), _p->getLocation(), @@ -6074,63 +6065,63 @@ yyreduce: case 83: /* Line 1455 of yacc.c */ -#line 994 "hphp.y" +#line 985 "hphp.y" { _p->onCatch((yyval), (yyvsp[(1) - (9)]), (yyvsp[(4) - (9)]), (yyvsp[(5) - (9)]), (yyvsp[(8) - (9)]));;} break; case 84: /* Line 1455 of yacc.c */ -#line 995 "hphp.y" +#line 986 "hphp.y" { (yyval).reset();;} break; case 85: /* Line 1455 of yacc.c */ -#line 999 "hphp.y" +#line 990 "hphp.y" { finally_statement(_p);;} break; case 86: /* Line 1455 of yacc.c */ -#line 1001 "hphp.y" +#line 992 "hphp.y" { _p->onFinally((yyval), (yyvsp[(4) - (5)]));;} break; case 88: /* Line 1455 of yacc.c */ -#line 1006 "hphp.y" +#line 997 "hphp.y" { (yyval).reset();;} break; case 89: /* Line 1455 of yacc.c */ -#line 1010 "hphp.y" +#line 1001 "hphp.y" { (yyval) = 1;;} break; case 90: /* Line 1455 of yacc.c */ -#line 1011 "hphp.y" +#line 1002 "hphp.y" { (yyval).reset();;} break; case 91: /* Line 1455 of yacc.c */ -#line 1015 "hphp.y" +#line 1006 "hphp.y" { _p->pushFuncLocation();;} break; case 92: /* Line 1455 of yacc.c */ -#line 1020 "hphp.y" +#line 1011 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onFunctionStart((yyvsp[(3) - (3)])); _p->pushLabelInfo();;} @@ -6139,7 +6130,7 @@ yyreduce: case 93: /* Line 1455 of yacc.c */ -#line 1025 "hphp.y" +#line 1016 "hphp.y" { _p->onFunction((yyval),0,(yyvsp[(8) - (11)]),(yyvsp[(2) - (11)]),(yyvsp[(3) - (11)]),(yyvsp[(6) - (11)]),(yyvsp[(10) - (11)]),0); _p->popLabelInfo(); _p->popTypeScope();;} @@ -6148,7 +6139,7 @@ yyreduce: case 94: /* Line 1455 of yacc.c */ -#line 1029 "hphp.y" +#line 1020 "hphp.y" { (yyvsp[(4) - (4)]).setText(_p->nsDecl((yyvsp[(4) - (4)]).text())); _p->onFunctionStart((yyvsp[(4) - (4)])); _p->pushLabelInfo();;} @@ -6157,7 +6148,7 @@ yyreduce: case 95: /* Line 1455 of yacc.c */ -#line 1034 "hphp.y" +#line 1025 "hphp.y" { _p->onFunction((yyval),0,(yyvsp[(9) - (12)]),(yyvsp[(3) - (12)]),(yyvsp[(4) - (12)]),(yyvsp[(7) - (12)]),(yyvsp[(11) - (12)]),&(yyvsp[(1) - (12)])); _p->popLabelInfo(); _p->popTypeScope();;} @@ -6166,7 +6157,7 @@ yyreduce: case 96: /* Line 1455 of yacc.c */ -#line 1041 "hphp.y" +#line 1032 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart((yyvsp[(1) - (2)]).num(),(yyvsp[(2) - (2)]));;} break; @@ -6174,7 +6165,7 @@ yyreduce: case 97: /* Line 1455 of yacc.c */ -#line 1044 "hphp.y" +#line 1035 "hphp.y" { Token stmts; if (_p->peekClass()) { xhp_collect_attributes(_p,stmts,(yyvsp[(7) - (8)])); @@ -6193,7 +6184,7 @@ yyreduce: case 98: /* Line 1455 of yacc.c */ -#line 1059 "hphp.y" +#line 1050 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart((yyvsp[(2) - (3)]).num(),(yyvsp[(3) - (3)]));;} break; @@ -6201,7 +6192,7 @@ yyreduce: case 99: /* Line 1455 of yacc.c */ -#line 1062 "hphp.y" +#line 1053 "hphp.y" { Token stmts; if (_p->peekClass()) { xhp_collect_attributes(_p,stmts,(yyvsp[(8) - (9)])); @@ -6220,7 +6211,7 @@ yyreduce: case 100: /* Line 1455 of yacc.c */ -#line 1076 "hphp.y" +#line 1067 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_INTERFACE,(yyvsp[(2) - (2)]));;} break; @@ -6228,7 +6219,7 @@ yyreduce: case 101: /* Line 1455 of yacc.c */ -#line 1079 "hphp.y" +#line 1070 "hphp.y" { _p->onInterface((yyval),(yyvsp[(2) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(6) - (7)]),0); _p->popClass(); _p->popTypeScope();;} @@ -6237,7 +6228,7 @@ yyreduce: case 102: /* Line 1455 of yacc.c */ -#line 1084 "hphp.y" +#line 1075 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_INTERFACE,(yyvsp[(3) - (3)]));;} break; @@ -6245,7 +6236,7 @@ yyreduce: case 103: /* Line 1455 of yacc.c */ -#line 1087 "hphp.y" +#line 1078 "hphp.y" { _p->onInterface((yyval),(yyvsp[(3) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(7) - (8)]),&(yyvsp[(1) - (8)])); _p->popClass(); _p->popTypeScope();;} @@ -6254,7 +6245,7 @@ yyreduce: case 104: /* Line 1455 of yacc.c */ -#line 1094 "hphp.y" +#line 1085 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_TRAIT, (yyvsp[(2) - (2)]));;} break; @@ -6262,7 +6253,7 @@ yyreduce: case 105: /* Line 1455 of yacc.c */ -#line 1097 "hphp.y" +#line 1088 "hphp.y" { Token t_ext, t_imp; t_ext.reset(); t_imp.reset(); _p->onClass((yyval),T_TRAIT,(yyvsp[(2) - (7)]),t_ext,t_imp, @@ -6274,7 +6265,7 @@ yyreduce: case 106: /* Line 1455 of yacc.c */ -#line 1105 "hphp.y" +#line 1096 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_TRAIT, (yyvsp[(3) - (3)]));;} break; @@ -6282,7 +6273,7 @@ yyreduce: case 107: /* Line 1455 of yacc.c */ -#line 1108 "hphp.y" +#line 1099 "hphp.y" { Token t_ext, t_imp; t_ext.reset(); t_imp.reset(); _p->onClass((yyval),T_TRAIT,(yyvsp[(3) - (8)]),t_ext,t_imp, @@ -6294,14 +6285,14 @@ yyreduce: case 108: /* Line 1455 of yacc.c */ -#line 1116 "hphp.y" +#line 1107 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 109: /* Line 1455 of yacc.c */ -#line 1117 "hphp.y" +#line 1108 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); _p->pushTypeScope(); _p->pushClass(true); (yyval) = (yyvsp[(1) - (1)]);;} break; @@ -6309,343 +6300,343 @@ yyreduce: case 110: /* Line 1455 of yacc.c */ -#line 1121 "hphp.y" +#line 1112 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 111: /* Line 1455 of yacc.c */ -#line 1124 "hphp.y" +#line 1115 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 112: /* Line 1455 of yacc.c */ -#line 1127 "hphp.y" +#line 1118 "hphp.y" { (yyval) = T_CLASS;;} break; case 113: /* Line 1455 of yacc.c */ -#line 1128 "hphp.y" +#line 1119 "hphp.y" { (yyval) = T_ABSTRACT;;} break; case 114: /* Line 1455 of yacc.c */ -#line 1129 "hphp.y" +#line 1120 "hphp.y" { (yyval) = T_FINAL;;} break; case 115: /* Line 1455 of yacc.c */ -#line 1133 "hphp.y" +#line 1124 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 116: /* Line 1455 of yacc.c */ -#line 1134 "hphp.y" +#line 1125 "hphp.y" { (yyval).reset();;} break; case 117: /* Line 1455 of yacc.c */ -#line 1137 "hphp.y" +#line 1128 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 118: /* Line 1455 of yacc.c */ -#line 1138 "hphp.y" +#line 1129 "hphp.y" { (yyval).reset();;} break; case 119: /* Line 1455 of yacc.c */ -#line 1141 "hphp.y" +#line 1132 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 120: /* Line 1455 of yacc.c */ -#line 1142 "hphp.y" +#line 1133 "hphp.y" { (yyval).reset();;} break; case 121: /* Line 1455 of yacc.c */ -#line 1145 "hphp.y" +#line 1136 "hphp.y" { _p->onInterfaceName((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 122: /* Line 1455 of yacc.c */ -#line 1147 "hphp.y" +#line 1138 "hphp.y" { _p->onInterfaceName((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 123: /* Line 1455 of yacc.c */ -#line 1150 "hphp.y" +#line 1141 "hphp.y" { _p->onTraitName((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 124: /* Line 1455 of yacc.c */ -#line 1152 "hphp.y" +#line 1143 "hphp.y" { _p->onTraitName((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 125: /* Line 1455 of yacc.c */ -#line 1156 "hphp.y" +#line 1147 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 126: /* Line 1455 of yacc.c */ -#line 1157 "hphp.y" +#line 1148 "hphp.y" { (yyval).reset();;} break; case 127: /* Line 1455 of yacc.c */ -#line 1160 "hphp.y" +#line 1151 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 128: /* Line 1455 of yacc.c */ -#line 1161 "hphp.y" +#line 1152 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = 1;;} break; case 129: /* Line 1455 of yacc.c */ -#line 1165 "hphp.y" +#line 1156 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 130: /* Line 1455 of yacc.c */ -#line 1167 "hphp.y" +#line 1158 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 131: /* Line 1455 of yacc.c */ -#line 1170 "hphp.y" +#line 1161 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 132: /* Line 1455 of yacc.c */ -#line 1172 "hphp.y" +#line 1163 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 133: /* Line 1455 of yacc.c */ -#line 1175 "hphp.y" +#line 1166 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 134: /* Line 1455 of yacc.c */ -#line 1177 "hphp.y" +#line 1168 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 135: /* Line 1455 of yacc.c */ -#line 1180 "hphp.y" +#line 1171 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 136: /* Line 1455 of yacc.c */ -#line 1182 "hphp.y" +#line 1173 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 139: /* Line 1455 of yacc.c */ -#line 1192 "hphp.y" +#line 1183 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 140: /* Line 1455 of yacc.c */ -#line 1193 "hphp.y" +#line 1184 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]);;} break; case 141: /* Line 1455 of yacc.c */ -#line 1194 "hphp.y" +#line 1185 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 142: /* Line 1455 of yacc.c */ -#line 1195 "hphp.y" +#line 1186 "hphp.y" { (yyval) = (yyvsp[(3) - (5)]);;} break; case 143: /* Line 1455 of yacc.c */ -#line 1200 "hphp.y" +#line 1191 "hphp.y" { _p->onCase((yyval),(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 144: /* Line 1455 of yacc.c */ -#line 1202 "hphp.y" +#line 1193 "hphp.y" { _p->onCase((yyval),(yyvsp[(1) - (4)]),NULL,(yyvsp[(4) - (4)]));;} break; case 145: /* Line 1455 of yacc.c */ -#line 1203 "hphp.y" +#line 1194 "hphp.y" { (yyval).reset();;} break; case 146: /* Line 1455 of yacc.c */ -#line 1206 "hphp.y" +#line 1197 "hphp.y" { (yyval).reset();;} break; case 147: /* Line 1455 of yacc.c */ -#line 1207 "hphp.y" +#line 1198 "hphp.y" { (yyval).reset();;} break; case 148: /* Line 1455 of yacc.c */ -#line 1212 "hphp.y" +#line 1203 "hphp.y" { _p->onElseIf((yyval),(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]));;} break; case 149: /* Line 1455 of yacc.c */ -#line 1213 "hphp.y" +#line 1204 "hphp.y" { (yyval).reset();;} break; case 150: /* Line 1455 of yacc.c */ -#line 1218 "hphp.y" +#line 1209 "hphp.y" { _p->onElseIf((yyval),(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 151: /* Line 1455 of yacc.c */ -#line 1219 "hphp.y" +#line 1210 "hphp.y" { (yyval).reset();;} break; case 152: /* Line 1455 of yacc.c */ -#line 1222 "hphp.y" +#line 1213 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 153: /* Line 1455 of yacc.c */ -#line 1223 "hphp.y" +#line 1214 "hphp.y" { (yyval).reset();;} break; case 154: /* Line 1455 of yacc.c */ -#line 1226 "hphp.y" +#line 1217 "hphp.y" { (yyval) = (yyvsp[(3) - (3)]);;} break; case 155: /* Line 1455 of yacc.c */ -#line 1227 "hphp.y" +#line 1218 "hphp.y" { (yyval).reset();;} break; case 156: /* Line 1455 of yacc.c */ -#line 1232 "hphp.y" +#line 1223 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(1) - (3)]); ;} break; case 157: /* Line 1455 of yacc.c */ -#line 1234 "hphp.y" +#line 1225 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 158: /* Line 1455 of yacc.c */ -#line 1235 "hphp.y" +#line 1226 "hphp.y" { only_in_hh_syntax(_p); (yyval).reset(); ;} break; case 159: /* Line 1455 of yacc.c */ -#line 1236 "hphp.y" +#line 1227 "hphp.y" { (yyval).reset();;} break; case 160: /* Line 1455 of yacc.c */ -#line 1242 "hphp.y" +#line 1233 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]),0, NULL,&(yyvsp[(1) - (4)]),&(yyvsp[(2) - (4)]));;} break; @@ -6653,7 +6644,7 @@ yyreduce: case 161: /* Line 1455 of yacc.c */ -#line 1246 "hphp.y" +#line 1237 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),1, NULL,&(yyvsp[(1) - (5)]),&(yyvsp[(2) - (5)]));;} break; @@ -6661,7 +6652,7 @@ yyreduce: case 162: /* Line 1455 of yacc.c */ -#line 1251 "hphp.y" +#line 1242 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (7)]),(yyvsp[(5) - (7)]),1, &(yyvsp[(7) - (7)]),&(yyvsp[(1) - (7)]),&(yyvsp[(2) - (7)]));;} break; @@ -6669,7 +6660,7 @@ yyreduce: case 163: /* Line 1455 of yacc.c */ -#line 1256 "hphp.y" +#line 1247 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (6)]),(yyvsp[(4) - (6)]),0, &(yyvsp[(6) - (6)]),&(yyvsp[(1) - (6)]),&(yyvsp[(2) - (6)]));;} break; @@ -6677,7 +6668,7 @@ yyreduce: case 164: /* Line 1455 of yacc.c */ -#line 1261 "hphp.y" +#line 1252 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)]),0, NULL,&(yyvsp[(4) - (6)]),&(yyvsp[(3) - (6)]));;} break; @@ -6685,7 +6676,7 @@ yyreduce: case 165: /* Line 1455 of yacc.c */ -#line 1266 "hphp.y" +#line 1257 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(5) - (7)]),(yyvsp[(7) - (7)]),1, NULL,&(yyvsp[(4) - (7)]),&(yyvsp[(3) - (7)]));;} break; @@ -6693,7 +6684,7 @@ yyreduce: case 166: /* Line 1455 of yacc.c */ -#line 1272 "hphp.y" +#line 1263 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(7) - (9)]),1, &(yyvsp[(9) - (9)]),&(yyvsp[(4) - (9)]),&(yyvsp[(3) - (9)]));;} break; @@ -6701,7 +6692,7 @@ yyreduce: case 167: /* Line 1455 of yacc.c */ -#line 1278 "hphp.y" +#line 1269 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(6) - (8)]),0, &(yyvsp[(8) - (8)]),&(yyvsp[(4) - (8)]),&(yyvsp[(3) - (8)]));;} break; @@ -6709,35 +6700,35 @@ yyreduce: case 168: /* Line 1455 of yacc.c */ -#line 1284 "hphp.y" +#line 1275 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(1) - (3)]); ;} break; case 169: /* Line 1455 of yacc.c */ -#line 1286 "hphp.y" +#line 1277 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 170: /* Line 1455 of yacc.c */ -#line 1287 "hphp.y" +#line 1278 "hphp.y" { only_in_hh_syntax(_p); (yyval).reset(); ;} break; case 171: /* Line 1455 of yacc.c */ -#line 1288 "hphp.y" +#line 1279 "hphp.y" { (yyval).reset();;} break; case 172: /* Line 1455 of yacc.c */ -#line 1293 "hphp.y" +#line 1284 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)]),0, NULL,&(yyvsp[(1) - (3)]),NULL);;} break; @@ -6745,7 +6736,7 @@ yyreduce: case 173: /* Line 1455 of yacc.c */ -#line 1296 "hphp.y" +#line 1287 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]),1, NULL,&(yyvsp[(1) - (4)]),NULL);;} break; @@ -6753,7 +6744,7 @@ yyreduce: case 174: /* Line 1455 of yacc.c */ -#line 1300 "hphp.y" +#line 1291 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (6)]),(yyvsp[(4) - (6)]),1, &(yyvsp[(6) - (6)]),&(yyvsp[(1) - (6)]),NULL);;} break; @@ -6761,7 +6752,7 @@ yyreduce: case 175: /* Line 1455 of yacc.c */ -#line 1304 "hphp.y" +#line 1295 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (5)]),(yyvsp[(3) - (5)]),0, &(yyvsp[(5) - (5)]),&(yyvsp[(1) - (5)]),NULL);;} break; @@ -6769,7 +6760,7 @@ yyreduce: case 176: /* Line 1455 of yacc.c */ -#line 1308 "hphp.y" +#line 1299 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)]),0, NULL,&(yyvsp[(3) - (5)]),NULL);;} break; @@ -6777,7 +6768,7 @@ yyreduce: case 177: /* Line 1455 of yacc.c */ -#line 1312 "hphp.y" +#line 1303 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(4) - (6)]),(yyvsp[(6) - (6)]),1, NULL,&(yyvsp[(3) - (6)]),NULL);;} break; @@ -6785,7 +6776,7 @@ yyreduce: case 178: /* Line 1455 of yacc.c */ -#line 1317 "hphp.y" +#line 1308 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(4) - (8)]),(yyvsp[(6) - (8)]),1, &(yyvsp[(8) - (8)]),&(yyvsp[(3) - (8)]),NULL);;} break; @@ -6793,7 +6784,7 @@ yyreduce: case 179: /* Line 1455 of yacc.c */ -#line 1322 "hphp.y" +#line 1313 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(5) - (7)]),0, &(yyvsp[(7) - (7)]),&(yyvsp[(3) - (7)]),NULL);;} break; @@ -6801,133 +6792,133 @@ yyreduce: case 180: /* Line 1455 of yacc.c */ -#line 1328 "hphp.y" +#line 1319 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 181: /* Line 1455 of yacc.c */ -#line 1329 "hphp.y" +#line 1320 "hphp.y" { (yyval).reset();;} break; case 182: /* Line 1455 of yacc.c */ -#line 1332 "hphp.y" +#line 1323 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(1) - (1)]),0);;} break; case 183: /* Line 1455 of yacc.c */ -#line 1333 "hphp.y" +#line 1324 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(2) - (2)]),1);;} break; case 184: /* Line 1455 of yacc.c */ -#line 1335 "hphp.y" +#line 1326 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 185: /* Line 1455 of yacc.c */ -#line 1337 "hphp.y" +#line 1328 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 186: /* Line 1455 of yacc.c */ -#line 1341 "hphp.y" +#line 1332 "hphp.y" { _p->onGlobalVar((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 187: /* Line 1455 of yacc.c */ -#line 1342 "hphp.y" +#line 1333 "hphp.y" { _p->onGlobalVar((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 188: /* Line 1455 of yacc.c */ -#line 1345 "hphp.y" +#line 1336 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 189: /* Line 1455 of yacc.c */ -#line 1346 "hphp.y" +#line 1337 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = 1;;} break; case 190: /* Line 1455 of yacc.c */ -#line 1347 "hphp.y" +#line 1338 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval) = 1;;} break; case 191: /* Line 1455 of yacc.c */ -#line 1351 "hphp.y" +#line 1342 "hphp.y" { _p->onStaticVariable((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 192: /* Line 1455 of yacc.c */ -#line 1353 "hphp.y" +#line 1344 "hphp.y" { _p->onStaticVariable((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),&(yyvsp[(5) - (5)]));;} break; case 193: /* Line 1455 of yacc.c */ -#line 1354 "hphp.y" +#line 1345 "hphp.y" { _p->onStaticVariable((yyval),0,(yyvsp[(1) - (1)]),0);;} break; case 194: /* Line 1455 of yacc.c */ -#line 1355 "hphp.y" +#line 1346 "hphp.y" { _p->onStaticVariable((yyval),0,(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 195: /* Line 1455 of yacc.c */ -#line 1360 "hphp.y" +#line 1351 "hphp.y" { _p->onClassStatement((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 196: /* Line 1455 of yacc.c */ -#line 1361 "hphp.y" +#line 1352 "hphp.y" { (yyval).reset();;} break; case 197: /* Line 1455 of yacc.c */ -#line 1364 "hphp.y" +#line 1355 "hphp.y" { _p->onClassVariableModifer((yyvsp[(1) - (1)]));;} break; case 198: /* Line 1455 of yacc.c */ -#line 1365 "hphp.y" +#line 1356 "hphp.y" { _p->onClassVariableStart ((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; @@ -6935,14 +6926,14 @@ yyreduce: case 199: /* Line 1455 of yacc.c */ -#line 1368 "hphp.y" +#line 1359 "hphp.y" { _p->onClassVariableModifer((yyvsp[(1) - (2)]));;} break; case 200: /* Line 1455 of yacc.c */ -#line 1369 "hphp.y" +#line 1360 "hphp.y" { _p->onClassVariableStart ((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(4) - (5)]),&(yyvsp[(2) - (5)]));;} break; @@ -6950,7 +6941,7 @@ yyreduce: case 201: /* Line 1455 of yacc.c */ -#line 1371 "hphp.y" +#line 1362 "hphp.y" { _p->onClassVariableStart ((yyval),NULL,(yyvsp[(1) - (2)]),NULL);;} break; @@ -6958,7 +6949,7 @@ yyreduce: case 202: /* Line 1455 of yacc.c */ -#line 1375 "hphp.y" +#line 1366 "hphp.y" { _p->onMethodStart((yyvsp[(4) - (5)]), (yyvsp[(1) - (5)])); _p->pushLabelInfo();;} break; @@ -6966,7 +6957,7 @@ yyreduce: case 203: /* Line 1455 of yacc.c */ -#line 1380 "hphp.y" +#line 1371 "hphp.y" { _p->onMethod((yyval),(yyvsp[(1) - (10)]),(yyvsp[(9) - (10)]),(yyvsp[(3) - (10)]),(yyvsp[(4) - (10)]),(yyvsp[(7) - (10)]),(yyvsp[(10) - (10)]),0); _p->popLabelInfo(); _p->popTypeScope();;} @@ -6975,7 +6966,7 @@ yyreduce: case 204: /* Line 1455 of yacc.c */ -#line 1386 "hphp.y" +#line 1377 "hphp.y" { _p->onMethodStart((yyvsp[(5) - (6)]), (yyvsp[(2) - (6)])); _p->pushLabelInfo();;} break; @@ -6983,7 +6974,7 @@ yyreduce: case 205: /* Line 1455 of yacc.c */ -#line 1391 "hphp.y" +#line 1382 "hphp.y" { _p->onMethod((yyval),(yyvsp[(2) - (11)]),(yyvsp[(10) - (11)]),(yyvsp[(4) - (11)]),(yyvsp[(5) - (11)]),(yyvsp[(8) - (11)]),(yyvsp[(11) - (11)]),&(yyvsp[(1) - (11)])); _p->popLabelInfo(); _p->popTypeScope();;} @@ -6992,28 +6983,28 @@ yyreduce: case 206: /* Line 1455 of yacc.c */ -#line 1395 "hphp.y" +#line 1386 "hphp.y" { _p->xhpSetAttributes((yyvsp[(2) - (3)]));;} break; case 207: /* Line 1455 of yacc.c */ -#line 1397 "hphp.y" +#line 1388 "hphp.y" { xhp_category_stmt(_p,(yyval),(yyvsp[(2) - (3)]));;} break; case 208: /* Line 1455 of yacc.c */ -#line 1399 "hphp.y" +#line 1390 "hphp.y" { xhp_children_stmt(_p,(yyval),(yyvsp[(2) - (3)]));;} break; case 209: /* Line 1455 of yacc.c */ -#line 1400 "hphp.y" +#line 1391 "hphp.y" { Token t; t.reset(); _p->onTraitUse((yyval),(yyvsp[(2) - (3)]),t); ;} break; @@ -7021,42 +7012,42 @@ yyreduce: case 210: /* Line 1455 of yacc.c */ -#line 1403 "hphp.y" +#line 1394 "hphp.y" { _p->onTraitUse((yyval),(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)])); ;} break; case 211: /* Line 1455 of yacc.c */ -#line 1406 "hphp.y" +#line 1397 "hphp.y" { _p->onTraitRule((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} break; case 212: /* Line 1455 of yacc.c */ -#line 1407 "hphp.y" +#line 1398 "hphp.y" { _p->onTraitRule((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} break; case 213: /* Line 1455 of yacc.c */ -#line 1408 "hphp.y" +#line 1399 "hphp.y" { (yyval).reset(); ;} break; case 214: /* Line 1455 of yacc.c */ -#line 1414 "hphp.y" +#line 1405 "hphp.y" { _p->onTraitPrecRule((yyval),(yyvsp[(1) - (6)]),(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;} break; case 215: /* Line 1455 of yacc.c */ -#line 1418 "hphp.y" +#line 1409 "hphp.y" { _p->onTraitAliasRuleModify((yyval),(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]));;} break; @@ -7064,7 +7055,7 @@ yyreduce: case 216: /* Line 1455 of yacc.c */ -#line 1421 "hphp.y" +#line 1412 "hphp.y" { Token t; t.reset(); _p->onTraitAliasRuleModify((yyval),(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]), t);;} @@ -7073,14 +7064,14 @@ yyreduce: case 217: /* Line 1455 of yacc.c */ -#line 1428 "hphp.y" +#line 1419 "hphp.y" { _p->onTraitAliasRuleStart((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 218: /* Line 1455 of yacc.c */ -#line 1429 "hphp.y" +#line 1420 "hphp.y" { Token t; t.reset(); _p->onTraitAliasRuleStart((yyval),t,(yyvsp[(1) - (1)]));;} break; @@ -7088,7 +7079,7 @@ yyreduce: case 219: /* Line 1455 of yacc.c */ -#line 1434 "hphp.y" +#line 1425 "hphp.y" { xhp_attribute_list(_p,(yyval), _p->xhpGetAttributes(),(yyvsp[(1) - (1)]));;} break; @@ -7096,14 +7087,14 @@ yyreduce: case 220: /* Line 1455 of yacc.c */ -#line 1437 "hphp.y" +#line 1428 "hphp.y" { xhp_attribute_list(_p,(yyval), &(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 221: /* Line 1455 of yacc.c */ -#line 1444 "hphp.y" +#line 1435 "hphp.y" { xhp_attribute(_p,(yyval),(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); (yyval) = 1;;} break; @@ -7111,21 +7102,21 @@ yyreduce: case 222: /* Line 1455 of yacc.c */ -#line 1446 "hphp.y" +#line 1437 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 0;;} break; case 223: /* Line 1455 of yacc.c */ -#line 1450 "hphp.y" +#line 1441 "hphp.y" { (yyval) = 4;;} break; case 224: /* Line 1455 of yacc.c */ -#line 1451 "hphp.y" +#line 1442 "hphp.y" { /* This case handles all types other than "array", "var" and "enum". For now we just use type code 5; @@ -7137,63 +7128,63 @@ yyreduce: case 225: /* Line 1455 of yacc.c */ -#line 1457 "hphp.y" +#line 1448 "hphp.y" { (yyval) = 6;;} break; case 226: /* Line 1455 of yacc.c */ -#line 1459 "hphp.y" +#line 1450 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval) = 7;;} break; case 227: /* Line 1455 of yacc.c */ -#line 1463 "hphp.y" +#line 1454 "hphp.y" { _p->onArrayPair((yyval), 0,0,(yyvsp[(1) - (1)]),0);;} break; case 228: /* Line 1455 of yacc.c */ -#line 1465 "hphp.y" +#line 1456 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]),0,(yyvsp[(3) - (3)]),0);;} break; case 229: /* Line 1455 of yacc.c */ -#line 1469 "hphp.y" +#line 1460 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 230: /* Line 1455 of yacc.c */ -#line 1470 "hphp.y" +#line 1461 "hphp.y" { scalar_null(_p, (yyval));;} break; case 231: /* Line 1455 of yacc.c */ -#line 1474 "hphp.y" +#line 1465 "hphp.y" { scalar_num(_p, (yyval), "1");;} break; case 232: /* Line 1455 of yacc.c */ -#line 1475 "hphp.y" +#line 1466 "hphp.y" { scalar_num(_p, (yyval), "0");;} break; case 233: /* Line 1455 of yacc.c */ -#line 1479 "hphp.y" +#line 1470 "hphp.y" { Token t; scalar_num(_p, t, "1"); _p->onArrayPair((yyval),0,&(yyvsp[(1) - (1)]),t,0);;} break; @@ -7201,7 +7192,7 @@ yyreduce: case 234: /* Line 1455 of yacc.c */ -#line 1482 "hphp.y" +#line 1473 "hphp.y" { Token t; scalar_num(_p, t, "1"); _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]),t,0);;} break; @@ -7209,7 +7200,7 @@ yyreduce: case 235: /* Line 1455 of yacc.c */ -#line 1487 "hphp.y" +#line 1478 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -7217,14 +7208,14 @@ yyreduce: case 236: /* Line 1455 of yacc.c */ -#line 1492 "hphp.y" +#line 1483 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 2;;} break; case 237: /* Line 1455 of yacc.c */ -#line 1493 "hphp.y" +#line 1484 "hphp.y" { (yyval) = -1; if ((yyvsp[(1) - (1)]).same("any")) (yyval) = 1;;} break; @@ -7232,91 +7223,91 @@ yyreduce: case 238: /* Line 1455 of yacc.c */ -#line 1495 "hphp.y" +#line 1486 "hphp.y" { (yyval) = 0;;} break; case 239: /* Line 1455 of yacc.c */ -#line 1499 "hphp.y" +#line 1490 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (3)]), 0);;} break; case 240: /* Line 1455 of yacc.c */ -#line 1500 "hphp.y" +#line 1491 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 1);;} break; case 241: /* Line 1455 of yacc.c */ -#line 1501 "hphp.y" +#line 1492 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 2);;} break; case 242: /* Line 1455 of yacc.c */ -#line 1502 "hphp.y" +#line 1493 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 3);;} break; case 243: /* Line 1455 of yacc.c */ -#line 1506 "hphp.y" +#line 1497 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 244: /* Line 1455 of yacc.c */ -#line 1507 "hphp.y" +#line 1498 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (1)]),0, 0);;} break; case 245: /* Line 1455 of yacc.c */ -#line 1508 "hphp.y" +#line 1499 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),1, 0);;} break; case 246: /* Line 1455 of yacc.c */ -#line 1509 "hphp.y" +#line 1500 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),2, 0);;} break; case 247: /* Line 1455 of yacc.c */ -#line 1510 "hphp.y" +#line 1501 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),3, 0);;} break; case 248: /* Line 1455 of yacc.c */ -#line 1512 "hphp.y" +#line 1503 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (3)]),4,&(yyvsp[(3) - (3)]));;} break; case 249: /* Line 1455 of yacc.c */ -#line 1514 "hphp.y" +#line 1505 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (3)]),5,&(yyvsp[(3) - (3)]));;} break; case 250: /* Line 1455 of yacc.c */ -#line 1518 "hphp.y" +#line 1509 "hphp.y" { (yyval) = -1; if ((yyvsp[(1) - (1)]).same("any")) (yyval) = 1; else if ((yyvsp[(1) - (1)]).same("pcdata")) (yyval) = 2;;} @@ -7325,616 +7316,616 @@ yyreduce: case 251: /* Line 1455 of yacc.c */ -#line 1521 "hphp.y" +#line 1512 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); (yyval) = (yyvsp[(1) - (1)]); (yyval) = 3;;} break; case 252: /* Line 1455 of yacc.c */ -#line 1522 "hphp.y" +#line 1513 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(0); (yyval) = (yyvsp[(1) - (1)]); (yyval) = 4;;} break; case 253: /* Line 1455 of yacc.c */ -#line 1526 "hphp.y" +#line 1517 "hphp.y" { (yyval).reset();;} break; case 254: /* Line 1455 of yacc.c */ -#line 1527 "hphp.y" +#line 1518 "hphp.y" { _p->finishStatement((yyval), (yyvsp[(2) - (3)])); (yyval) = 1;;} break; case 255: /* Line 1455 of yacc.c */ -#line 1530 "hphp.y" +#line 1521 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 256: /* Line 1455 of yacc.c */ -#line 1531 "hphp.y" +#line 1522 "hphp.y" { (yyval).reset();;} break; case 257: /* Line 1455 of yacc.c */ -#line 1534 "hphp.y" +#line 1525 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 258: /* Line 1455 of yacc.c */ -#line 1535 "hphp.y" +#line 1526 "hphp.y" { (yyval).reset();;} break; case 259: /* Line 1455 of yacc.c */ -#line 1538 "hphp.y" +#line 1529 "hphp.y" { _p->onMemberModifier((yyval),NULL,(yyvsp[(1) - (1)]));;} break; case 260: /* Line 1455 of yacc.c */ -#line 1540 "hphp.y" +#line 1531 "hphp.y" { _p->onMemberModifier((yyval),&(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 261: /* Line 1455 of yacc.c */ -#line 1543 "hphp.y" +#line 1534 "hphp.y" { (yyval) = T_PUBLIC;;} break; case 262: /* Line 1455 of yacc.c */ -#line 1544 "hphp.y" +#line 1535 "hphp.y" { (yyval) = T_PROTECTED;;} break; case 263: /* Line 1455 of yacc.c */ -#line 1545 "hphp.y" +#line 1536 "hphp.y" { (yyval) = T_PRIVATE;;} break; case 264: /* Line 1455 of yacc.c */ -#line 1546 "hphp.y" +#line 1537 "hphp.y" { (yyval) = T_STATIC;;} break; case 265: /* Line 1455 of yacc.c */ -#line 1547 "hphp.y" +#line 1538 "hphp.y" { (yyval) = T_ABSTRACT;;} break; case 266: /* Line 1455 of yacc.c */ -#line 1548 "hphp.y" +#line 1539 "hphp.y" { (yyval) = T_FINAL;;} break; case 267: /* Line 1455 of yacc.c */ -#line 1551 "hphp.y" +#line 1542 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 268: /* Line 1455 of yacc.c */ -#line 1552 "hphp.y" +#line 1543 "hphp.y" { (yyval).reset();;} break; case 269: /* Line 1455 of yacc.c */ -#line 1555 "hphp.y" +#line 1546 "hphp.y" { (yyval) = T_PUBLIC;;} break; case 270: /* Line 1455 of yacc.c */ -#line 1556 "hphp.y" +#line 1547 "hphp.y" { (yyval) = T_PROTECTED;;} break; case 271: /* Line 1455 of yacc.c */ -#line 1557 "hphp.y" +#line 1548 "hphp.y" { (yyval) = T_PRIVATE;;} break; case 272: /* Line 1455 of yacc.c */ -#line 1561 "hphp.y" +#line 1552 "hphp.y" { _p->onClassVariable((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 273: /* Line 1455 of yacc.c */ -#line 1563 "hphp.y" +#line 1554 "hphp.y" { _p->onClassVariable((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),&(yyvsp[(5) - (5)]));;} break; case 274: /* Line 1455 of yacc.c */ -#line 1564 "hphp.y" +#line 1555 "hphp.y" { _p->onClassVariable((yyval),0,(yyvsp[(1) - (1)]),0);;} break; case 275: /* Line 1455 of yacc.c */ -#line 1565 "hphp.y" +#line 1556 "hphp.y" { _p->onClassVariable((yyval),0,(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 276: /* Line 1455 of yacc.c */ -#line 1569 "hphp.y" +#line 1560 "hphp.y" { _p->onClassConstant((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 277: /* Line 1455 of yacc.c */ -#line 1570 "hphp.y" +#line 1561 "hphp.y" { _p->onClassConstant((yyval),0,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 278: /* Line 1455 of yacc.c */ -#line 1574 "hphp.y" +#line 1565 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 279: /* Line 1455 of yacc.c */ -#line 1576 "hphp.y" +#line 1567 "hphp.y" { _p->onNewObject((yyval), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));;} break; case 280: /* Line 1455 of yacc.c */ -#line 1577 "hphp.y" +#line 1568 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_CLONE,1);;} break; case 281: /* Line 1455 of yacc.c */ -#line 1578 "hphp.y" +#line 1569 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 282: /* Line 1455 of yacc.c */ -#line 1581 "hphp.y" +#line 1572 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 283: /* Line 1455 of yacc.c */ -#line 1585 "hphp.y" +#line 1576 "hphp.y" { _p->onExprListElem((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 284: /* Line 1455 of yacc.c */ -#line 1586 "hphp.y" +#line 1577 "hphp.y" { _p->onExprListElem((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 285: /* Line 1455 of yacc.c */ -#line 1590 "hphp.y" +#line 1581 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 286: /* Line 1455 of yacc.c */ -#line 1591 "hphp.y" +#line 1582 "hphp.y" { (yyval).reset();;} break; case 287: /* Line 1455 of yacc.c */ -#line 1595 "hphp.y" +#line 1586 "hphp.y" { _p->onYield((yyval), (yyvsp[(2) - (2)]));;} break; case 288: /* Line 1455 of yacc.c */ -#line 1596 "hphp.y" +#line 1587 "hphp.y" { _p->onYieldPair((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 289: /* Line 1455 of yacc.c */ -#line 1600 "hphp.y" +#line 1591 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0, true);;} break; case 290: /* Line 1455 of yacc.c */ -#line 1605 "hphp.y" +#line 1596 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]), true);;} break; case 291: /* Line 1455 of yacc.c */ -#line 1609 "hphp.y" +#line 1600 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 292: /* Line 1455 of yacc.c */ -#line 1610 "hphp.y" +#line 1601 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 293: /* Line 1455 of yacc.c */ -#line 1611 "hphp.y" +#line 1602 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 294: /* Line 1455 of yacc.c */ -#line 1615 "hphp.y" +#line 1606 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]));;} break; case 295: /* Line 1455 of yacc.c */ -#line 1616 "hphp.y" +#line 1607 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 296: /* Line 1455 of yacc.c */ -#line 1617 "hphp.y" +#line 1608 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (4)]), (yyvsp[(4) - (4)]), 1);;} break; case 297: /* Line 1455 of yacc.c */ -#line 1620 "hphp.y" +#line 1611 "hphp.y" { _p->onAssignNew((yyval),(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)]));;} break; case 298: /* Line 1455 of yacc.c */ -#line 1621 "hphp.y" +#line 1612 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_PLUS_EQUAL);;} break; case 299: /* Line 1455 of yacc.c */ -#line 1622 "hphp.y" +#line 1613 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MINUS_EQUAL);;} break; case 300: /* Line 1455 of yacc.c */ -#line 1623 "hphp.y" +#line 1614 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MUL_EQUAL);;} break; case 301: /* Line 1455 of yacc.c */ -#line 1624 "hphp.y" +#line 1615 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_DIV_EQUAL);;} break; case 302: /* Line 1455 of yacc.c */ -#line 1625 "hphp.y" +#line 1616 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_CONCAT_EQUAL);;} break; case 303: /* Line 1455 of yacc.c */ -#line 1626 "hphp.y" +#line 1617 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MOD_EQUAL);;} break; case 304: /* Line 1455 of yacc.c */ -#line 1627 "hphp.y" +#line 1618 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_AND_EQUAL);;} break; case 305: /* Line 1455 of yacc.c */ -#line 1628 "hphp.y" +#line 1619 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_OR_EQUAL);;} break; case 306: /* Line 1455 of yacc.c */ -#line 1629 "hphp.y" +#line 1620 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_XOR_EQUAL);;} break; case 307: /* Line 1455 of yacc.c */ -#line 1630 "hphp.y" +#line 1621 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL_EQUAL);;} break; case 308: /* Line 1455 of yacc.c */ -#line 1631 "hphp.y" +#line 1622 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR_EQUAL);;} break; case 309: /* Line 1455 of yacc.c */ -#line 1632 "hphp.y" +#line 1623 "hphp.y" { UEXP((yyval),(yyvsp[(1) - (2)]),T_INC,0);;} break; case 310: /* Line 1455 of yacc.c */ -#line 1633 "hphp.y" +#line 1624 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INC,1);;} break; case 311: /* Line 1455 of yacc.c */ -#line 1634 "hphp.y" +#line 1625 "hphp.y" { UEXP((yyval),(yyvsp[(1) - (2)]),T_DEC,0);;} break; case 312: /* Line 1455 of yacc.c */ -#line 1635 "hphp.y" +#line 1626 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_DEC,1);;} break; case 313: /* Line 1455 of yacc.c */ -#line 1636 "hphp.y" +#line 1627 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_OR);;} break; case 314: /* Line 1455 of yacc.c */ -#line 1637 "hphp.y" +#line 1628 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_AND);;} break; case 315: /* Line 1455 of yacc.c */ -#line 1638 "hphp.y" +#line 1629 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_OR);;} break; case 316: /* Line 1455 of yacc.c */ -#line 1639 "hphp.y" +#line 1630 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_AND);;} break; case 317: /* Line 1455 of yacc.c */ -#line 1640 "hphp.y" +#line 1631 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_XOR);;} break; case 318: /* Line 1455 of yacc.c */ -#line 1641 "hphp.y" +#line 1632 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'|');;} break; case 319: /* Line 1455 of yacc.c */ -#line 1642 "hphp.y" +#line 1633 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'&');;} break; case 320: /* Line 1455 of yacc.c */ -#line 1643 "hphp.y" +#line 1634 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'^');;} break; case 321: /* Line 1455 of yacc.c */ -#line 1644 "hphp.y" +#line 1635 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'.');;} break; case 322: /* Line 1455 of yacc.c */ -#line 1645 "hphp.y" +#line 1636 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'+');;} break; case 323: /* Line 1455 of yacc.c */ -#line 1646 "hphp.y" +#line 1637 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'-');;} break; case 324: /* Line 1455 of yacc.c */ -#line 1647 "hphp.y" +#line 1638 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'*');;} break; case 325: /* Line 1455 of yacc.c */ -#line 1648 "hphp.y" +#line 1639 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'/');;} break; case 326: /* Line 1455 of yacc.c */ -#line 1649 "hphp.y" +#line 1640 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'%');;} break; case 327: /* Line 1455 of yacc.c */ -#line 1650 "hphp.y" +#line 1641 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL);;} break; case 328: /* Line 1455 of yacc.c */ -#line 1651 "hphp.y" +#line 1642 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR);;} break; case 329: /* Line 1455 of yacc.c */ -#line 1652 "hphp.y" +#line 1643 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 330: /* Line 1455 of yacc.c */ -#line 1653 "hphp.y" +#line 1644 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 331: /* Line 1455 of yacc.c */ -#line 1654 "hphp.y" +#line 1645 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'!',1);;} break; case 332: /* Line 1455 of yacc.c */ -#line 1655 "hphp.y" +#line 1646 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'~',1);;} break; case 333: /* Line 1455 of yacc.c */ -#line 1656 "hphp.y" +#line 1647 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_IDENTICAL);;} break; case 334: /* Line 1455 of yacc.c */ -#line 1657 "hphp.y" +#line 1648 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_IDENTICAL);;} break; case 335: /* Line 1455 of yacc.c */ -#line 1658 "hphp.y" +#line 1649 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_EQUAL);;} break; case 336: /* Line 1455 of yacc.c */ -#line 1659 "hphp.y" +#line 1650 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_EQUAL);;} break; case 337: /* Line 1455 of yacc.c */ -#line 1660 "hphp.y" +#line 1651 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'<');;} break; case 338: /* Line 1455 of yacc.c */ -#line 1661 "hphp.y" +#line 1652 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_SMALLER_OR_EQUAL);;} break; @@ -7942,14 +7933,14 @@ yyreduce: case 339: /* Line 1455 of yacc.c */ -#line 1663 "hphp.y" +#line 1654 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'>');;} break; case 340: /* Line 1455 of yacc.c */ -#line 1664 "hphp.y" +#line 1655 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_GREATER_OR_EQUAL);;} break; @@ -7957,140 +7948,140 @@ yyreduce: case 341: /* Line 1455 of yacc.c */ -#line 1667 "hphp.y" +#line 1658 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_INSTANCEOF);;} break; case 342: /* Line 1455 of yacc.c */ -#line 1668 "hphp.y" +#line 1659 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 343: /* Line 1455 of yacc.c */ -#line 1669 "hphp.y" +#line 1660 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (5)]), &(yyvsp[(3) - (5)]), (yyvsp[(5) - (5)]));;} break; case 344: /* Line 1455 of yacc.c */ -#line 1670 "hphp.y" +#line 1661 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (4)]), 0, (yyvsp[(4) - (4)]));;} break; case 345: /* Line 1455 of yacc.c */ -#line 1671 "hphp.y" +#line 1662 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 346: /* Line 1455 of yacc.c */ -#line 1672 "hphp.y" +#line 1663 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INT_CAST,1);;} break; case 347: /* Line 1455 of yacc.c */ -#line 1673 "hphp.y" +#line 1664 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_DOUBLE_CAST,1);;} break; case 348: /* Line 1455 of yacc.c */ -#line 1674 "hphp.y" +#line 1665 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_STRING_CAST,1);;} break; case 349: /* Line 1455 of yacc.c */ -#line 1675 "hphp.y" +#line 1666 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_ARRAY_CAST,1);;} break; case 350: /* Line 1455 of yacc.c */ -#line 1676 "hphp.y" +#line 1667 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_OBJECT_CAST,1);;} break; case 351: /* Line 1455 of yacc.c */ -#line 1677 "hphp.y" +#line 1668 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_BOOL_CAST,1);;} break; case 352: /* Line 1455 of yacc.c */ -#line 1678 "hphp.y" +#line 1669 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_UNSET_CAST,1);;} break; case 353: /* Line 1455 of yacc.c */ -#line 1679 "hphp.y" +#line 1670 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_EXIT,1);;} break; case 354: /* Line 1455 of yacc.c */ -#line 1680 "hphp.y" +#line 1671 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'@',1);;} break; case 355: /* Line 1455 of yacc.c */ -#line 1681 "hphp.y" +#line 1672 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 356: /* Line 1455 of yacc.c */ -#line 1682 "hphp.y" +#line 1673 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 357: /* Line 1455 of yacc.c */ -#line 1683 "hphp.y" +#line 1674 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 358: /* Line 1455 of yacc.c */ -#line 1684 "hphp.y" +#line 1675 "hphp.y" { _p->onEncapsList((yyval),'`',(yyvsp[(2) - (3)]));;} break; case 359: /* Line 1455 of yacc.c */ -#line 1685 "hphp.y" +#line 1676 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_PRINT,1);;} break; case 360: /* Line 1455 of yacc.c */ -#line 1687 "hphp.y" +#line 1678 "hphp.y" { Token t; _p->onClosureStart(t); _p->pushLabelInfo();;} break; @@ -8098,7 +8089,7 @@ yyreduce: case 361: /* Line 1455 of yacc.c */ -#line 1691 "hphp.y" +#line 1682 "hphp.y" { Token u; u.reset(); _p->onClosure((yyval),u,(yyvsp[(2) - (11)]),(yyvsp[(5) - (11)]),(yyvsp[(8) - (11)]),(yyvsp[(10) - (11)]),0); _p->popLabelInfo();;} @@ -8107,7 +8098,7 @@ yyreduce: case 362: /* Line 1455 of yacc.c */ -#line 1695 "hphp.y" +#line 1686 "hphp.y" { Token t; _p->onClosureStart(t); _p->pushLabelInfo();;} break; @@ -8115,7 +8106,7 @@ yyreduce: case 363: /* Line 1455 of yacc.c */ -#line 1699 "hphp.y" +#line 1690 "hphp.y" { Token u; u.reset(); _p->onClosure((yyval),u,(yyvsp[(3) - (12)]),(yyvsp[(6) - (12)]),(yyvsp[(9) - (12)]),(yyvsp[(11) - (12)]),1); _p->popLabelInfo();;} @@ -8124,21 +8115,21 @@ yyreduce: case 364: /* Line 1455 of yacc.c */ -#line 1702 "hphp.y" +#line 1693 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 365: /* Line 1455 of yacc.c */ -#line 1703 "hphp.y" +#line 1694 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 366: /* Line 1455 of yacc.c */ -#line 1707 "hphp.y" +#line 1698 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (1)]), _p); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)])); ;} break; @@ -8146,63 +8137,63 @@ yyreduce: case 367: /* Line 1455 of yacc.c */ -#line 1714 "hphp.y" +#line 1705 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 368: /* Line 1455 of yacc.c */ -#line 1717 "hphp.y" +#line 1708 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 369: /* Line 1455 of yacc.c */ -#line 1724 "hphp.y" +#line 1715 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 370: /* Line 1455 of yacc.c */ -#line 1727 "hphp.y" +#line 1718 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 371: /* Line 1455 of yacc.c */ -#line 1732 "hphp.y" +#line 1723 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 372: /* Line 1455 of yacc.c */ -#line 1733 "hphp.y" +#line 1724 "hphp.y" { (yyval).reset(); ;} break; case 373: /* Line 1455 of yacc.c */ -#line 1738 "hphp.y" +#line 1729 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 374: /* Line 1455 of yacc.c */ -#line 1739 "hphp.y" +#line 1730 "hphp.y" { (yyval).reset(); ;} break; case 375: /* Line 1455 of yacc.c */ -#line 1743 "hphp.y" +#line 1734 "hphp.y" { only_in_hh_syntax(_p); _p->onArray((yyval), (yyvsp[(3) - (4)]), T_ARRAY); ;} break; @@ -8210,21 +8201,21 @@ yyreduce: case 376: /* Line 1455 of yacc.c */ -#line 1748 "hphp.y" +#line 1739 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY);;} break; case 377: /* Line 1455 of yacc.c */ -#line 1749 "hphp.y" +#line 1740 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 378: /* Line 1455 of yacc.c */ -#line 1754 "hphp.y" +#line 1745 "hphp.y" { Token t; _p->onName(t,(yyvsp[(1) - (4)]),Parser::StringName); BEXP((yyval),t,(yyvsp[(3) - (4)]),T_COLLECTION);;} @@ -8233,7 +8224,7 @@ yyreduce: case 379: /* Line 1455 of yacc.c */ -#line 1761 "hphp.y" +#line 1752 "hphp.y" { Token t; _p->onName(t,(yyvsp[(1) - (4)]),Parser::StringName); BEXP((yyval),t,(yyvsp[(3) - (4)]),T_COLLECTION);;} @@ -8242,91 +8233,91 @@ yyreduce: case 380: /* Line 1455 of yacc.c */ -#line 1768 "hphp.y" +#line 1759 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 381: /* Line 1455 of yacc.c */ -#line 1770 "hphp.y" +#line 1761 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 382: /* Line 1455 of yacc.c */ -#line 1774 "hphp.y" +#line 1765 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 383: /* Line 1455 of yacc.c */ -#line 1775 "hphp.y" +#line 1766 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 384: /* Line 1455 of yacc.c */ -#line 1776 "hphp.y" +#line 1767 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 385: /* Line 1455 of yacc.c */ -#line 1783 "hphp.y" +#line 1774 "hphp.y" { (yyval) = (yyvsp[(3) - (5)]);;} break; case 386: /* Line 1455 of yacc.c */ -#line 1784 "hphp.y" +#line 1775 "hphp.y" { (yyval).reset();;} break; case 387: /* Line 1455 of yacc.c */ -#line 1788 "hphp.y" +#line 1779 "hphp.y" { _p->onClosureParam((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 388: /* Line 1455 of yacc.c */ -#line 1789 "hphp.y" +#line 1780 "hphp.y" { _p->onClosureParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 389: /* Line 1455 of yacc.c */ -#line 1790 "hphp.y" +#line 1781 "hphp.y" { _p->onClosureParam((yyval), 0,(yyvsp[(1) - (1)]),0);;} break; case 390: /* Line 1455 of yacc.c */ -#line 1791 "hphp.y" +#line 1782 "hphp.y" { _p->onClosureParam((yyval), 0,(yyvsp[(2) - (2)]),1);;} break; case 391: /* Line 1455 of yacc.c */ -#line 1798 "hphp.y" +#line 1789 "hphp.y" { xhp_tag(_p,(yyval),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]));;} break; case 392: /* Line 1455 of yacc.c */ -#line 1801 "hphp.y" +#line 1792 "hphp.y" { Token t1; _p->onArray(t1,(yyvsp[(1) - (2)])); Token t2; _p->onArray(t2,(yyvsp[(2) - (2)])); _p->onCallParam((yyvsp[(1) - (2)]),NULL,t1,0); @@ -8337,7 +8328,7 @@ yyreduce: case 393: /* Line 1455 of yacc.c */ -#line 1808 "hphp.y" +#line 1799 "hphp.y" { _p->onArray((yyvsp[(4) - (6)]),(yyvsp[(1) - (6)])); _p->onArray((yyvsp[(5) - (6)]),(yyvsp[(3) - (6)])); _p->onCallParam((yyvsp[(2) - (6)]),NULL,(yyvsp[(4) - (6)]),0); @@ -8348,49 +8339,49 @@ yyreduce: case 394: /* Line 1455 of yacc.c */ -#line 1815 "hphp.y" +#line 1806 "hphp.y" { (yyval).reset(); (yyval).setText("");;} break; case 395: /* Line 1455 of yacc.c */ -#line 1816 "hphp.y" +#line 1807 "hphp.y" { (yyval).reset(); (yyval).setText((yyvsp[(1) - (1)]));;} break; case 396: /* Line 1455 of yacc.c */ -#line 1821 "hphp.y" +#line 1812 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (4)]),&(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]),0);;} break; case 397: /* Line 1455 of yacc.c */ -#line 1822 "hphp.y" +#line 1813 "hphp.y" { (yyval).reset();;} break; case 398: /* Line 1455 of yacc.c */ -#line 1825 "hphp.y" +#line 1816 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (2)]),0,(yyvsp[(2) - (2)]),0);;} break; case 399: /* Line 1455 of yacc.c */ -#line 1826 "hphp.y" +#line 1817 "hphp.y" { (yyval).reset();;} break; case 400: /* Line 1455 of yacc.c */ -#line 1829 "hphp.y" +#line 1820 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -8398,7 +8389,7 @@ yyreduce: case 401: /* Line 1455 of yacc.c */ -#line 1833 "hphp.y" +#line 1824 "hphp.y" { (yyvsp[(1) - (1)]).xhpDecode(); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} @@ -8407,14 +8398,14 @@ yyreduce: case 402: /* Line 1455 of yacc.c */ -#line 1836 "hphp.y" +#line 1827 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 403: /* Line 1455 of yacc.c */ -#line 1839 "hphp.y" +#line 1830 "hphp.y" { (yyval).reset(); if ((yyvsp[(1) - (1)]).htmlTrim()) { (yyvsp[(1) - (1)]).xhpDecode(); @@ -8427,623 +8418,623 @@ yyreduce: case 404: /* Line 1455 of yacc.c */ -#line 1846 "hphp.y" +#line 1837 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); ;} break; case 405: /* Line 1455 of yacc.c */ -#line 1847 "hphp.y" +#line 1838 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 406: /* Line 1455 of yacc.c */ -#line 1851 "hphp.y" +#line 1842 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 407: /* Line 1455 of yacc.c */ -#line 1853 "hphp.y" +#line 1844 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + ":" + (yyvsp[(3) - (3)]);;} break; case 408: /* Line 1455 of yacc.c */ -#line 1855 "hphp.y" +#line 1846 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + "-" + (yyvsp[(3) - (3)]);;} break; case 409: /* Line 1455 of yacc.c */ -#line 1858 "hphp.y" +#line 1849 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 410: /* Line 1455 of yacc.c */ -#line 1859 "hphp.y" +#line 1850 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 411: /* Line 1455 of yacc.c */ -#line 1860 "hphp.y" +#line 1851 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 412: /* Line 1455 of yacc.c */ -#line 1861 "hphp.y" +#line 1852 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 413: /* Line 1455 of yacc.c */ -#line 1862 "hphp.y" +#line 1853 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 414: /* Line 1455 of yacc.c */ -#line 1863 "hphp.y" +#line 1854 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 415: /* Line 1455 of yacc.c */ -#line 1864 "hphp.y" +#line 1855 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 416: /* Line 1455 of yacc.c */ -#line 1865 "hphp.y" +#line 1856 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 417: /* Line 1455 of yacc.c */ -#line 1866 "hphp.y" +#line 1857 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 418: /* Line 1455 of yacc.c */ -#line 1867 "hphp.y" +#line 1858 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 419: /* Line 1455 of yacc.c */ -#line 1868 "hphp.y" +#line 1859 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 420: /* Line 1455 of yacc.c */ -#line 1869 "hphp.y" +#line 1860 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 421: /* Line 1455 of yacc.c */ -#line 1870 "hphp.y" +#line 1861 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 422: /* Line 1455 of yacc.c */ -#line 1871 "hphp.y" +#line 1862 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 423: /* Line 1455 of yacc.c */ -#line 1872 "hphp.y" +#line 1863 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 424: /* Line 1455 of yacc.c */ -#line 1873 "hphp.y" +#line 1864 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 425: /* Line 1455 of yacc.c */ -#line 1874 "hphp.y" +#line 1865 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 426: /* Line 1455 of yacc.c */ -#line 1875 "hphp.y" +#line 1866 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 427: /* Line 1455 of yacc.c */ -#line 1876 "hphp.y" +#line 1867 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 428: /* Line 1455 of yacc.c */ -#line 1877 "hphp.y" +#line 1868 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 429: /* Line 1455 of yacc.c */ -#line 1878 "hphp.y" +#line 1869 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 430: /* Line 1455 of yacc.c */ -#line 1879 "hphp.y" +#line 1870 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 431: /* Line 1455 of yacc.c */ -#line 1880 "hphp.y" +#line 1871 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 432: /* Line 1455 of yacc.c */ -#line 1881 "hphp.y" +#line 1872 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 433: /* Line 1455 of yacc.c */ -#line 1882 "hphp.y" +#line 1873 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 434: /* Line 1455 of yacc.c */ -#line 1883 "hphp.y" +#line 1874 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 435: /* Line 1455 of yacc.c */ -#line 1884 "hphp.y" +#line 1875 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 436: /* Line 1455 of yacc.c */ -#line 1885 "hphp.y" +#line 1876 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 437: /* Line 1455 of yacc.c */ -#line 1886 "hphp.y" +#line 1877 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 438: /* Line 1455 of yacc.c */ -#line 1887 "hphp.y" +#line 1878 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 439: /* Line 1455 of yacc.c */ -#line 1888 "hphp.y" +#line 1879 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 440: /* Line 1455 of yacc.c */ -#line 1889 "hphp.y" +#line 1880 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 441: /* Line 1455 of yacc.c */ -#line 1890 "hphp.y" +#line 1881 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 442: /* Line 1455 of yacc.c */ -#line 1891 "hphp.y" +#line 1882 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 443: /* Line 1455 of yacc.c */ -#line 1892 "hphp.y" +#line 1883 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 444: /* Line 1455 of yacc.c */ -#line 1893 "hphp.y" +#line 1884 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 445: /* Line 1455 of yacc.c */ -#line 1894 "hphp.y" +#line 1885 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 446: /* Line 1455 of yacc.c */ -#line 1895 "hphp.y" +#line 1886 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 447: /* Line 1455 of yacc.c */ -#line 1896 "hphp.y" +#line 1887 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 448: /* Line 1455 of yacc.c */ -#line 1897 "hphp.y" +#line 1888 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 449: /* Line 1455 of yacc.c */ -#line 1898 "hphp.y" +#line 1889 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 450: /* Line 1455 of yacc.c */ -#line 1899 "hphp.y" +#line 1890 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 451: /* Line 1455 of yacc.c */ -#line 1900 "hphp.y" +#line 1891 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 452: /* Line 1455 of yacc.c */ -#line 1901 "hphp.y" +#line 1892 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 453: /* Line 1455 of yacc.c */ -#line 1902 "hphp.y" +#line 1893 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 454: /* Line 1455 of yacc.c */ -#line 1903 "hphp.y" +#line 1894 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 455: /* Line 1455 of yacc.c */ -#line 1904 "hphp.y" +#line 1895 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 456: /* Line 1455 of yacc.c */ -#line 1905 "hphp.y" +#line 1896 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 457: /* Line 1455 of yacc.c */ -#line 1906 "hphp.y" +#line 1897 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 458: /* Line 1455 of yacc.c */ -#line 1907 "hphp.y" +#line 1898 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 459: /* Line 1455 of yacc.c */ -#line 1908 "hphp.y" +#line 1899 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 460: /* Line 1455 of yacc.c */ -#line 1909 "hphp.y" +#line 1900 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 461: /* Line 1455 of yacc.c */ -#line 1910 "hphp.y" +#line 1901 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 462: /* Line 1455 of yacc.c */ -#line 1911 "hphp.y" +#line 1902 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 463: /* Line 1455 of yacc.c */ -#line 1912 "hphp.y" +#line 1903 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 464: /* Line 1455 of yacc.c */ -#line 1913 "hphp.y" +#line 1904 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 465: /* Line 1455 of yacc.c */ -#line 1914 "hphp.y" +#line 1905 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 466: /* Line 1455 of yacc.c */ -#line 1915 "hphp.y" +#line 1906 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 467: /* Line 1455 of yacc.c */ -#line 1916 "hphp.y" +#line 1907 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 468: /* Line 1455 of yacc.c */ -#line 1917 "hphp.y" +#line 1908 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 469: /* Line 1455 of yacc.c */ -#line 1918 "hphp.y" +#line 1909 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 470: /* Line 1455 of yacc.c */ -#line 1919 "hphp.y" +#line 1910 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 471: /* Line 1455 of yacc.c */ -#line 1920 "hphp.y" +#line 1911 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 472: /* Line 1455 of yacc.c */ -#line 1921 "hphp.y" +#line 1912 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 473: /* Line 1455 of yacc.c */ -#line 1922 "hphp.y" +#line 1913 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 474: /* Line 1455 of yacc.c */ -#line 1923 "hphp.y" +#line 1914 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 475: /* Line 1455 of yacc.c */ -#line 1924 "hphp.y" +#line 1915 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 476: /* Line 1455 of yacc.c */ -#line 1925 "hphp.y" +#line 1916 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 477: /* Line 1455 of yacc.c */ -#line 1926 "hphp.y" +#line 1917 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 478: /* Line 1455 of yacc.c */ -#line 1927 "hphp.y" +#line 1918 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 479: /* Line 1455 of yacc.c */ -#line 1928 "hphp.y" +#line 1919 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 480: /* Line 1455 of yacc.c */ -#line 1929 "hphp.y" +#line 1920 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 481: /* Line 1455 of yacc.c */ -#line 1930 "hphp.y" +#line 1921 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 482: /* Line 1455 of yacc.c */ -#line 1931 "hphp.y" +#line 1922 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 483: /* Line 1455 of yacc.c */ -#line 1932 "hphp.y" +#line 1923 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 484: /* Line 1455 of yacc.c */ -#line 1933 "hphp.y" +#line 1924 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 485: /* Line 1455 of yacc.c */ -#line 1934 "hphp.y" +#line 1925 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 486: /* Line 1455 of yacc.c */ -#line 1935 "hphp.y" +#line 1926 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 487: /* Line 1455 of yacc.c */ -#line 1940 "hphp.y" +#line 1931 "hphp.y" { _p->onCall((yyval),0,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 488: /* Line 1455 of yacc.c */ -#line 1944 "hphp.y" +#line 1935 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 489: /* Line 1455 of yacc.c */ -#line 1945 "hphp.y" +#line 1936 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 490: /* Line 1455 of yacc.c */ -#line 1948 "hphp.y" +#line 1939 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 491: /* Line 1455 of yacc.c */ -#line 1949 "hphp.y" +#line 1940 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StaticName);;} break; case 492: /* Line 1455 of yacc.c */ -#line 1950 "hphp.y" +#line 1941 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]), Parser::StaticClassExprName);;} break; @@ -9051,98 +9042,98 @@ yyreduce: case 493: /* Line 1455 of yacc.c */ -#line 1954 "hphp.y" +#line 1945 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 494: /* Line 1455 of yacc.c */ -#line 1955 "hphp.y" +#line 1946 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StaticName);;} break; case 495: /* Line 1455 of yacc.c */ -#line 1956 "hphp.y" +#line 1947 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::ExprName);;} break; case 496: /* Line 1455 of yacc.c */ -#line 1960 "hphp.y" +#line 1951 "hphp.y" { (yyval).reset();;} break; case 497: /* Line 1455 of yacc.c */ -#line 1961 "hphp.y" +#line 1952 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 498: /* Line 1455 of yacc.c */ -#line 1962 "hphp.y" +#line 1953 "hphp.y" { (yyval).reset();;} break; case 499: /* Line 1455 of yacc.c */ -#line 1966 "hphp.y" +#line 1957 "hphp.y" { (yyval).reset();;} break; case 500: /* Line 1455 of yacc.c */ -#line 1967 "hphp.y" +#line 1958 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (1)]), 0);;} break; case 501: /* Line 1455 of yacc.c */ -#line 1968 "hphp.y" +#line 1959 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 502: /* Line 1455 of yacc.c */ -#line 1972 "hphp.y" +#line 1963 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 503: /* Line 1455 of yacc.c */ -#line 1973 "hphp.y" +#line 1964 "hphp.y" { (yyval).reset();;} break; case 504: /* Line 1455 of yacc.c */ -#line 1977 "hphp.y" +#line 1968 "hphp.y" { _p->onScalar((yyval), T_LNUMBER, (yyvsp[(1) - (1)]));;} break; case 505: /* Line 1455 of yacc.c */ -#line 1978 "hphp.y" +#line 1969 "hphp.y" { _p->onScalar((yyval), T_DNUMBER, (yyvsp[(1) - (1)]));;} break; case 506: /* Line 1455 of yacc.c */ -#line 1979 "hphp.y" +#line 1970 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -9150,126 +9141,126 @@ yyreduce: case 507: /* Line 1455 of yacc.c */ -#line 1981 "hphp.y" +#line 1972 "hphp.y" { _p->onScalar((yyval), T_LINE, (yyvsp[(1) - (1)]));;} break; case 508: /* Line 1455 of yacc.c */ -#line 1982 "hphp.y" +#line 1973 "hphp.y" { _p->onScalar((yyval), T_FILE, (yyvsp[(1) - (1)]));;} break; case 509: /* Line 1455 of yacc.c */ -#line 1983 "hphp.y" +#line 1974 "hphp.y" { _p->onScalar((yyval), T_DIR, (yyvsp[(1) - (1)]));;} break; case 510: /* Line 1455 of yacc.c */ -#line 1984 "hphp.y" +#line 1975 "hphp.y" { _p->onScalar((yyval), T_CLASS_C, (yyvsp[(1) - (1)]));;} break; case 511: /* Line 1455 of yacc.c */ -#line 1985 "hphp.y" +#line 1976 "hphp.y" { _p->onScalar((yyval), T_TRAIT_C, (yyvsp[(1) - (1)]));;} break; case 512: /* Line 1455 of yacc.c */ -#line 1986 "hphp.y" +#line 1977 "hphp.y" { _p->onScalar((yyval), T_METHOD_C, (yyvsp[(1) - (1)]));;} break; case 513: /* Line 1455 of yacc.c */ -#line 1987 "hphp.y" +#line 1978 "hphp.y" { _p->onScalar((yyval), T_FUNC_C, (yyvsp[(1) - (1)]));;} break; case 514: /* Line 1455 of yacc.c */ -#line 1988 "hphp.y" +#line 1979 "hphp.y" { _p->onScalar((yyval), T_NS_C, (yyvsp[(1) - (1)]));;} break; case 515: /* Line 1455 of yacc.c */ -#line 1989 "hphp.y" +#line 1980 "hphp.y" { _p->onScalar((yyval), T_COMPILER_HALT_OFFSET, (yyvsp[(1) - (1)]));;} break; case 516: /* Line 1455 of yacc.c */ -#line 1992 "hphp.y" +#line 1983 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(2) - (3)]));;} break; case 517: /* Line 1455 of yacc.c */ -#line 1994 "hphp.y" +#line 1985 "hphp.y" { (yyval).setText(""); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyval));;} break; case 518: /* Line 1455 of yacc.c */ -#line 1998 "hphp.y" +#line 1989 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 519: /* Line 1455 of yacc.c */ -#line 1999 "hphp.y" +#line 1990 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 520: /* Line 1455 of yacc.c */ -#line 2000 "hphp.y" +#line 1991 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 521: /* Line 1455 of yacc.c */ -#line 2001 "hphp.y" +#line 1992 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 522: /* Line 1455 of yacc.c */ -#line 2003 "hphp.y" +#line 1994 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 523: /* Line 1455 of yacc.c */ -#line 2004 "hphp.y" +#line 1995 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY); ;} break; case 524: /* Line 1455 of yacc.c */ -#line 2006 "hphp.y" +#line 1997 "hphp.y" { only_in_hh_syntax(_p); _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; @@ -9277,28 +9268,28 @@ yyreduce: case 525: /* Line 1455 of yacc.c */ -#line 2008 "hphp.y" +#line 1999 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 526: /* Line 1455 of yacc.c */ -#line 2009 "hphp.y" +#line 2000 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 527: /* Line 1455 of yacc.c */ -#line 2015 "hphp.y" +#line 2006 "hphp.y" { _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; case 528: /* Line 1455 of yacc.c */ -#line 2017 "hphp.y" +#line 2008 "hphp.y" { (yyvsp[(1) - (3)]).xhpLabel(); _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; @@ -9306,49 +9297,49 @@ yyreduce: case 529: /* Line 1455 of yacc.c */ -#line 2022 "hphp.y" +#line 2013 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 530: /* Line 1455 of yacc.c */ -#line 2023 "hphp.y" +#line 2014 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 531: /* Line 1455 of yacc.c */ -#line 2024 "hphp.y" +#line 2015 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 532: /* Line 1455 of yacc.c */ -#line 2025 "hphp.y" +#line 2016 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 533: /* Line 1455 of yacc.c */ -#line 2026 "hphp.y" +#line 2017 "hphp.y" { _p->onEncapsList((yyval),'"',(yyvsp[(2) - (3)]));;} break; case 534: /* Line 1455 of yacc.c */ -#line 2027 "hphp.y" +#line 2018 "hphp.y" { _p->onEncapsList((yyval),'\'',(yyvsp[(2) - (3)]));;} break; case 535: /* Line 1455 of yacc.c */ -#line 2029 "hphp.y" +#line 2020 "hphp.y" { _p->onEncapsList((yyval),T_START_HEREDOC, (yyvsp[(2) - (3)]));;} break; @@ -9356,91 +9347,91 @@ yyreduce: case 536: /* Line 1455 of yacc.c */ -#line 2034 "hphp.y" +#line 2025 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 537: /* Line 1455 of yacc.c */ -#line 2035 "hphp.y" +#line 2026 "hphp.y" { (yyval).reset();;} break; case 538: /* Line 1455 of yacc.c */ -#line 2039 "hphp.y" +#line 2030 "hphp.y" { (yyval).reset();;} break; case 539: /* Line 1455 of yacc.c */ -#line 2040 "hphp.y" +#line 2031 "hphp.y" { (yyval).reset();;} break; case 540: /* Line 1455 of yacc.c */ -#line 2043 "hphp.y" +#line 2034 "hphp.y" { only_in_hh_syntax(_p); (yyval).reset();;} break; case 541: /* Line 1455 of yacc.c */ -#line 2044 "hphp.y" +#line 2035 "hphp.y" { (yyval).reset();;} break; case 542: /* Line 1455 of yacc.c */ -#line 2050 "hphp.y" +#line 2041 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 543: /* Line 1455 of yacc.c */ -#line 2052 "hphp.y" +#line 2043 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 544: /* Line 1455 of yacc.c */ -#line 2054 "hphp.y" +#line 2045 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 545: /* Line 1455 of yacc.c */ -#line 2055 "hphp.y" +#line 2046 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 546: /* Line 1455 of yacc.c */ -#line 2059 "hphp.y" +#line 2050 "hphp.y" { _p->onScalar((yyval), T_LNUMBER, (yyvsp[(1) - (1)]));;} break; case 547: /* Line 1455 of yacc.c */ -#line 2060 "hphp.y" +#line 2051 "hphp.y" { _p->onScalar((yyval), T_DNUMBER, (yyvsp[(1) - (1)]));;} break; case 548: /* Line 1455 of yacc.c */ -#line 2061 "hphp.y" +#line 2052 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -9448,84 +9439,84 @@ yyreduce: case 549: /* Line 1455 of yacc.c */ -#line 2065 "hphp.y" +#line 2056 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(2) - (3)]));;} break; case 550: /* Line 1455 of yacc.c */ -#line 2067 "hphp.y" +#line 2058 "hphp.y" { (yyval).setText(""); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyval));;} break; case 551: /* Line 1455 of yacc.c */ -#line 2070 "hphp.y" +#line 2061 "hphp.y" { _p->onScalar((yyval),T_LNUMBER,(yyvsp[(1) - (1)]));;} break; case 552: /* Line 1455 of yacc.c */ -#line 2071 "hphp.y" +#line 2062 "hphp.y" { _p->onScalar((yyval),T_DNUMBER,(yyvsp[(1) - (1)]));;} break; case 553: /* Line 1455 of yacc.c */ -#line 2072 "hphp.y" +#line 2063 "hphp.y" { constant_ae(_p,(yyval),(yyvsp[(1) - (1)]));;} break; case 554: /* Line 1455 of yacc.c */ -#line 2075 "hphp.y" +#line 2066 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 555: /* Line 1455 of yacc.c */ -#line 2076 "hphp.y" +#line 2067 "hphp.y" { constant_ae(_p,(yyval),(yyvsp[(1) - (1)]));;} break; case 556: /* Line 1455 of yacc.c */ -#line 2077 "hphp.y" +#line 2068 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 557: /* Line 1455 of yacc.c */ -#line 2078 "hphp.y" +#line 2069 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 558: /* Line 1455 of yacc.c */ -#line 2080 "hphp.y" +#line 2071 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY);;} break; case 559: /* Line 1455 of yacc.c */ -#line 2081 "hphp.y" +#line 2072 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 560: /* Line 1455 of yacc.c */ -#line 2083 "hphp.y" +#line 2074 "hphp.y" { only_in_hh_syntax(_p); _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; @@ -9533,112 +9524,112 @@ yyreduce: case 561: /* Line 1455 of yacc.c */ -#line 2089 "hphp.y" +#line 2080 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 562: /* Line 1455 of yacc.c */ -#line 2090 "hphp.y" +#line 2081 "hphp.y" { (yyval).reset();;} break; case 563: /* Line 1455 of yacc.c */ -#line 2095 "hphp.y" +#line 2086 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 564: /* Line 1455 of yacc.c */ -#line 2097 "hphp.y" +#line 2088 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 565: /* Line 1455 of yacc.c */ -#line 2099 "hphp.y" +#line 2090 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 566: /* Line 1455 of yacc.c */ -#line 2100 "hphp.y" +#line 2091 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 567: /* Line 1455 of yacc.c */ -#line 2104 "hphp.y" +#line 2095 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 568: /* Line 1455 of yacc.c */ -#line 2105 "hphp.y" +#line 2096 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 569: /* Line 1455 of yacc.c */ -#line 2110 "hphp.y" +#line 2101 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 570: /* Line 1455 of yacc.c */ -#line 2111 "hphp.y" +#line 2102 "hphp.y" { (yyval).reset(); ;} break; case 571: /* Line 1455 of yacc.c */ -#line 2116 "hphp.y" +#line 2107 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 572: /* Line 1455 of yacc.c */ -#line 2119 "hphp.y" +#line 2110 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 573: /* Line 1455 of yacc.c */ -#line 2124 "hphp.y" +#line 2115 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 574: /* Line 1455 of yacc.c */ -#line 2125 "hphp.y" +#line 2116 "hphp.y" { (yyval).reset();;} break; case 575: /* Line 1455 of yacc.c */ -#line 2128 "hphp.y" +#line 2119 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 576: /* Line 1455 of yacc.c */ -#line 2129 "hphp.y" +#line 2120 "hphp.y" { Token t; t.reset(); _p->onArray((yyval),t,T_ARRAY);;} break; @@ -9646,693 +9637,693 @@ yyreduce: case 577: /* Line 1455 of yacc.c */ -#line 2136 "hphp.y" +#line 2127 "hphp.y" { _p->onUserAttribute((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]));;} break; case 578: /* Line 1455 of yacc.c */ -#line 2138 "hphp.y" +#line 2129 "hphp.y" { _p->onUserAttribute((yyval), 0,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 579: /* Line 1455 of yacc.c */ -#line 2141 "hphp.y" +#line 2132 "hphp.y" { user_attribute_check(_p);;} break; case 580: /* Line 1455 of yacc.c */ -#line 2143 "hphp.y" +#line 2134 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 581: /* Line 1455 of yacc.c */ -#line 2146 "hphp.y" +#line 2137 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 582: /* Line 1455 of yacc.c */ -#line 2149 "hphp.y" +#line 2140 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 583: /* Line 1455 of yacc.c */ -#line 2150 "hphp.y" +#line 2141 "hphp.y" { (yyval).reset();;} break; case 584: /* Line 1455 of yacc.c */ -#line 2154 "hphp.y" +#line 2145 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 585: /* Line 1455 of yacc.c */ -#line 2156 "hphp.y" +#line 2147 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 586: /* Line 1455 of yacc.c */ -#line 2160 "hphp.y" +#line 2151 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 587: /* Line 1455 of yacc.c */ -#line 2161 "hphp.y" +#line 2152 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]);;} break; case 588: /* Line 1455 of yacc.c */ -#line 2165 "hphp.y" +#line 2156 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 589: /* Line 1455 of yacc.c */ -#line 2166 "hphp.y" +#line 2157 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 590: /* Line 1455 of yacc.c */ -#line 2170 "hphp.y" +#line 2161 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 591: /* Line 1455 of yacc.c */ -#line 2172 "hphp.y" +#line 2163 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 592: /* Line 1455 of yacc.c */ -#line 2177 "hphp.y" +#line 2168 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 593: /* Line 1455 of yacc.c */ -#line 2179 "hphp.y" +#line 2170 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 594: /* Line 1455 of yacc.c */ -#line 2183 "hphp.y" +#line 2174 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 595: /* Line 1455 of yacc.c */ -#line 2184 "hphp.y" +#line 2175 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 596: /* Line 1455 of yacc.c */ -#line 2185 "hphp.y" +#line 2176 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 597: /* Line 1455 of yacc.c */ -#line 2186 "hphp.y" +#line 2177 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 598: /* Line 1455 of yacc.c */ -#line 2187 "hphp.y" +#line 2178 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 599: /* Line 1455 of yacc.c */ -#line 2188 "hphp.y" +#line 2179 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 600: /* Line 1455 of yacc.c */ -#line 2190 "hphp.y" +#line 2181 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 601: /* Line 1455 of yacc.c */ -#line 2193 "hphp.y" +#line 2184 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 602: /* Line 1455 of yacc.c */ -#line 2195 "hphp.y" +#line 2186 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 603: /* Line 1455 of yacc.c */ -#line 2196 "hphp.y" +#line 2187 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 604: /* Line 1455 of yacc.c */ -#line 2200 "hphp.y" +#line 2191 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 605: /* Line 1455 of yacc.c */ -#line 2201 "hphp.y" +#line 2192 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 606: /* Line 1455 of yacc.c */ -#line 2202 "hphp.y" +#line 2193 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 607: /* Line 1455 of yacc.c */ -#line 2203 "hphp.y" +#line 2194 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 608: /* Line 1455 of yacc.c */ -#line 2205 "hphp.y" +#line 2196 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 609: /* Line 1455 of yacc.c */ -#line 2207 "hphp.y" +#line 2198 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 610: /* Line 1455 of yacc.c */ -#line 2209 "hphp.y" +#line 2200 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 611: /* Line 1455 of yacc.c */ -#line 2210 "hphp.y" +#line 2201 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 612: /* Line 1455 of yacc.c */ -#line 2214 "hphp.y" +#line 2205 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 613: /* Line 1455 of yacc.c */ -#line 2215 "hphp.y" +#line 2206 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 614: /* Line 1455 of yacc.c */ -#line 2216 "hphp.y" +#line 2207 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 615: /* Line 1455 of yacc.c */ -#line 2222 "hphp.y" +#line 2213 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(1) - (7)]),(yyvsp[(3) - (7)]),(yyvsp[(6) - (7)]));;} break; case 616: /* Line 1455 of yacc.c */ -#line 2225 "hphp.y" +#line 2216 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(1) - (6)]),(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;} break; case 617: /* Line 1455 of yacc.c */ -#line 2228 "hphp.y" +#line 2219 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(1) - (8)]),(yyvsp[(4) - (8)]),(yyvsp[(7) - (8)]));;} break; case 618: /* Line 1455 of yacc.c */ -#line 2232 "hphp.y" +#line 2223 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(2) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(8) - (9)]));;} break; case 619: /* Line 1455 of yacc.c */ -#line 2236 "hphp.y" +#line 2227 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(2) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(7) - (8)]));;} break; case 620: /* Line 1455 of yacc.c */ -#line 2240 "hphp.y" +#line 2231 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(2) - (10)]),(yyvsp[(6) - (10)]),(yyvsp[(9) - (10)]));;} break; case 621: /* Line 1455 of yacc.c */ -#line 2247 "hphp.y" +#line 2238 "hphp.y" { _p->onCall((yyval),0,(yyvsp[(3) - (7)]),(yyvsp[(6) - (7)]),&(yyvsp[(1) - (7)]));;} break; case 622: /* Line 1455 of yacc.c */ -#line 2251 "hphp.y" +#line 2242 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]),&(yyvsp[(1) - (6)]));;} break; case 623: /* Line 1455 of yacc.c */ -#line 2255 "hphp.y" +#line 2246 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 624: /* Line 1455 of yacc.c */ -#line 2257 "hphp.y" +#line 2248 "hphp.y" { _p->onIndirectRef((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 625: /* Line 1455 of yacc.c */ -#line 2262 "hphp.y" +#line 2253 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 626: /* Line 1455 of yacc.c */ -#line 2263 "hphp.y" +#line 2254 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 627: /* Line 1455 of yacc.c */ -#line 2264 "hphp.y" +#line 2255 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 628: /* Line 1455 of yacc.c */ -#line 2267 "hphp.y" +#line 2258 "hphp.y" { _p->onSimpleVariable((yyval), (yyvsp[(1) - (1)]));;} break; case 629: /* Line 1455 of yacc.c */ -#line 2268 "hphp.y" +#line 2259 "hphp.y" { _p->onDynamicVariable((yyval), (yyvsp[(3) - (4)]), 0);;} break; case 630: /* Line 1455 of yacc.c */ -#line 2271 "hphp.y" +#line 2262 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 631: /* Line 1455 of yacc.c */ -#line 2272 "hphp.y" +#line 2263 "hphp.y" { (yyval).reset();;} break; case 632: /* Line 1455 of yacc.c */ -#line 2276 "hphp.y" +#line 2267 "hphp.y" { (yyval) = 1;;} break; case 633: /* Line 1455 of yacc.c */ -#line 2277 "hphp.y" +#line 2268 "hphp.y" { (yyval)++;;} break; case 634: /* Line 1455 of yacc.c */ -#line 2281 "hphp.y" +#line 2272 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 635: /* Line 1455 of yacc.c */ -#line 2282 "hphp.y" +#line 2273 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 636: /* Line 1455 of yacc.c */ -#line 2283 "hphp.y" +#line 2274 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 637: /* Line 1455 of yacc.c */ -#line 2285 "hphp.y" +#line 2276 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 638: /* Line 1455 of yacc.c */ -#line 2288 "hphp.y" +#line 2279 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 639: /* Line 1455 of yacc.c */ -#line 2289 "hphp.y" +#line 2280 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 641: /* Line 1455 of yacc.c */ -#line 2293 "hphp.y" +#line 2284 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 642: /* Line 1455 of yacc.c */ -#line 2295 "hphp.y" +#line 2286 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 643: /* Line 1455 of yacc.c */ -#line 2297 "hphp.y" +#line 2288 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 644: /* Line 1455 of yacc.c */ -#line 2298 "hphp.y" +#line 2289 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 645: /* Line 1455 of yacc.c */ -#line 2302 "hphp.y" +#line 2293 "hphp.y" { _p->onAListVar((yyval),&(yyvsp[(1) - (2)]),NULL);;} break; case 646: /* Line 1455 of yacc.c */ -#line 2303 "hphp.y" +#line 2294 "hphp.y" { _p->onAListVar((yyval),&(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 647: /* Line 1455 of yacc.c */ -#line 2305 "hphp.y" +#line 2296 "hphp.y" { _p->onAListSub((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]));;} break; case 648: /* Line 1455 of yacc.c */ -#line 2306 "hphp.y" +#line 2297 "hphp.y" { _p->onAListVar((yyval),NULL,NULL);;} break; case 649: /* Line 1455 of yacc.c */ -#line 2307 "hphp.y" +#line 2298 "hphp.y" { _p->onAListVar((yyval),NULL,&(yyvsp[(1) - (1)]));;} break; case 650: /* Line 1455 of yacc.c */ -#line 2308 "hphp.y" +#line 2299 "hphp.y" { _p->onAListSub((yyval),NULL,(yyvsp[(3) - (4)]));;} break; case 651: /* Line 1455 of yacc.c */ -#line 2313 "hphp.y" +#line 2304 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 652: /* Line 1455 of yacc.c */ -#line 2314 "hphp.y" +#line 2305 "hphp.y" { (yyval).reset();;} break; case 653: /* Line 1455 of yacc.c */ -#line 2318 "hphp.y" +#line 2309 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 654: /* Line 1455 of yacc.c */ -#line 2319 "hphp.y" +#line 2310 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 655: /* Line 1455 of yacc.c */ -#line 2320 "hphp.y" +#line 2311 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 656: /* Line 1455 of yacc.c */ -#line 2321 "hphp.y" +#line 2312 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 657: /* Line 1455 of yacc.c */ -#line 2324 "hphp.y" +#line 2315 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (6)]),&(yyvsp[(3) - (6)]),(yyvsp[(6) - (6)]),1);;} break; case 658: /* Line 1455 of yacc.c */ -#line 2326 "hphp.y" +#line 2317 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (4)]), 0,(yyvsp[(4) - (4)]),1);;} break; case 659: /* Line 1455 of yacc.c */ -#line 2327 "hphp.y" +#line 2318 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 660: /* Line 1455 of yacc.c */ -#line 2328 "hphp.y" +#line 2319 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(2) - (2)]),1);;} break; case 661: /* Line 1455 of yacc.c */ -#line 2333 "hphp.y" +#line 2324 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 662: /* Line 1455 of yacc.c */ -#line 2334 "hphp.y" +#line 2325 "hphp.y" { _p->onEmptyCollection((yyval));;} break; case 663: /* Line 1455 of yacc.c */ -#line 2338 "hphp.y" +#line 2329 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 664: /* Line 1455 of yacc.c */ -#line 2339 "hphp.y" +#line 2330 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]));;} break; case 665: /* Line 1455 of yacc.c */ -#line 2340 "hphp.y" +#line 2331 "hphp.y" { _p->onCollectionPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 666: /* Line 1455 of yacc.c */ -#line 2341 "hphp.y" +#line 2332 "hphp.y" { _p->onCollectionPair((yyval), 0, 0,(yyvsp[(1) - (1)]));;} break; case 667: /* Line 1455 of yacc.c */ -#line 2346 "hphp.y" +#line 2337 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 668: /* Line 1455 of yacc.c */ -#line 2347 "hphp.y" +#line 2338 "hphp.y" { _p->onEmptyCollection((yyval));;} break; case 669: /* Line 1455 of yacc.c */ -#line 2352 "hphp.y" +#line 2343 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 670: /* Line 1455 of yacc.c */ -#line 2354 "hphp.y" +#line 2345 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]));;} break; case 671: /* Line 1455 of yacc.c */ -#line 2356 "hphp.y" +#line 2347 "hphp.y" { _p->onCollectionPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 672: /* Line 1455 of yacc.c */ -#line 2357 "hphp.y" +#line 2348 "hphp.y" { _p->onCollectionPair((yyval), 0, 0,(yyvsp[(1) - (1)]));;} break; case 673: /* Line 1455 of yacc.c */ -#line 2361 "hphp.y" +#line 2352 "hphp.y" { _p->addEncap((yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]), -1);;} break; case 674: /* Line 1455 of yacc.c */ -#line 2363 "hphp.y" +#line 2354 "hphp.y" { _p->addEncap((yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]), 0);;} break; case 675: /* Line 1455 of yacc.c */ -#line 2364 "hphp.y" +#line 2355 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (1)]), -1);;} break; case 676: /* Line 1455 of yacc.c */ -#line 2366 "hphp.y" +#line 2357 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (2)]), 0); _p->addEncap((yyval), &(yyval), (yyvsp[(2) - (2)]), -1); ;} break; @@ -10340,140 +10331,140 @@ yyreduce: case 677: /* Line 1455 of yacc.c */ -#line 2371 "hphp.y" +#line 2362 "hphp.y" { _p->onSimpleVariable((yyval), (yyvsp[(1) - (1)]));;} break; case 678: /* Line 1455 of yacc.c */ -#line 2373 "hphp.y" +#line 2364 "hphp.y" { _p->encapRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 679: /* Line 1455 of yacc.c */ -#line 2375 "hphp.y" +#line 2366 "hphp.y" { _p->encapObjProp((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 680: /* Line 1455 of yacc.c */ -#line 2377 "hphp.y" +#line 2368 "hphp.y" { _p->onDynamicVariable((yyval), (yyvsp[(2) - (3)]), 1);;} break; case 681: /* Line 1455 of yacc.c */ -#line 2379 "hphp.y" +#line 2370 "hphp.y" { _p->encapArray((yyval), (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]));;} break; case 682: /* Line 1455 of yacc.c */ -#line 2380 "hphp.y" +#line 2371 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 683: /* Line 1455 of yacc.c */ -#line 2383 "hphp.y" +#line 2374 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_STRING;;} break; case 684: /* Line 1455 of yacc.c */ -#line 2384 "hphp.y" +#line 2375 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_NUM_STRING;;} break; case 685: /* Line 1455 of yacc.c */ -#line 2385 "hphp.y" +#line 2376 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_VARIABLE;;} break; case 686: /* Line 1455 of yacc.c */ -#line 2389 "hphp.y" +#line 2380 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_ISSET,1);;} break; case 687: /* Line 1455 of yacc.c */ -#line 2390 "hphp.y" +#line 2381 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_EMPTY,1);;} break; case 688: /* Line 1455 of yacc.c */ -#line 2391 "hphp.y" +#line 2382 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INCLUDE,1);;} break; case 689: /* Line 1455 of yacc.c */ -#line 2392 "hphp.y" +#line 2383 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INCLUDE_ONCE,1);;} break; case 690: /* Line 1455 of yacc.c */ -#line 2393 "hphp.y" +#line 2384 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_EVAL,1);;} break; case 691: /* Line 1455 of yacc.c */ -#line 2394 "hphp.y" +#line 2385 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_REQUIRE,1);;} break; case 692: /* Line 1455 of yacc.c */ -#line 2395 "hphp.y" +#line 2386 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_REQUIRE_ONCE,1);;} break; case 693: /* Line 1455 of yacc.c */ -#line 2399 "hphp.y" +#line 2390 "hphp.y" { _p->onExprListElem((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 694: /* Line 1455 of yacc.c */ -#line 2400 "hphp.y" +#line 2391 "hphp.y" { _p->onExprListElem((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 695: /* Line 1455 of yacc.c */ -#line 2405 "hphp.y" +#line 2396 "hphp.y" { _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 698: /* Line 1455 of yacc.c */ -#line 2419 "hphp.y" +#line 2410 "hphp.y" { only_in_hh_syntax(_p); _p->onTypedef((yyval), (yyvsp[(2) - (5)]), (yyvsp[(4) - (5)])); _p->popTypeScope(); ;} @@ -10482,7 +10473,7 @@ yyreduce: case 699: /* Line 1455 of yacc.c */ -#line 2424 "hphp.y" +#line 2415 "hphp.y" { only_in_hh_syntax(_p); _p->onTypedef((yyval), (yyvsp[(2) - (6)]), (yyvsp[(5) - (6)])); _p->popTypeScope(); ;} @@ -10491,28 +10482,28 @@ yyreduce: case 700: /* Line 1455 of yacc.c */ -#line 2430 "hphp.y" +#line 2421 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 701: /* Line 1455 of yacc.c */ -#line 2431 "hphp.y" +#line 2422 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} break; case 702: /* Line 1455 of yacc.c */ -#line 2437 "hphp.y" +#line 2428 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 703: /* Line 1455 of yacc.c */ -#line 2441 "hphp.y" +#line 2432 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (4)]); only_in_hh_syntax(_p); ;} break; @@ -10520,21 +10511,21 @@ yyreduce: case 704: /* Line 1455 of yacc.c */ -#line 2448 "hphp.y" +#line 2439 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (3)]); ;} break; case 705: /* Line 1455 of yacc.c */ -#line 2449 "hphp.y" +#line 2440 "hphp.y" { (yyval).reset(); ;} break; case 706: /* Line 1455 of yacc.c */ -#line 2453 "hphp.y" +#line 2444 "hphp.y" { Token t; t.reset(); _p->onTypeList((yyvsp[(1) - (1)]), t); (yyval) = (yyvsp[(1) - (1)]); ;} @@ -10543,7 +10534,7 @@ yyreduce: case 707: /* Line 1455 of yacc.c */ -#line 2456 "hphp.y" +#line 2447 "hphp.y" { _p->onTypeList((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); (yyval) = (yyvsp[(1) - (3)]); ;} break; @@ -10551,98 +10542,98 @@ yyreduce: case 708: /* Line 1455 of yacc.c */ -#line 2461 "hphp.y" +#line 2452 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]); ;} break; case 709: /* Line 1455 of yacc.c */ -#line 2462 "hphp.y" +#line 2453 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 710: /* Line 1455 of yacc.c */ -#line 2463 "hphp.y" +#line 2454 "hphp.y" { (yyval).reset(); ;} break; case 711: /* Line 1455 of yacc.c */ -#line 2464 "hphp.y" +#line 2455 "hphp.y" { (yyval).reset(); ;} break; case 712: /* Line 1455 of yacc.c */ -#line 2468 "hphp.y" +#line 2459 "hphp.y" { (yyval).reset(); ;} break; case 713: /* Line 1455 of yacc.c */ -#line 2469 "hphp.y" +#line 2460 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} break; case 714: /* Line 1455 of yacc.c */ -#line 2474 "hphp.y" +#line 2465 "hphp.y" { _p->addTypeVar((yyvsp[(3) - (3)]).text()); ;} break; case 715: /* Line 1455 of yacc.c */ -#line 2475 "hphp.y" +#line 2466 "hphp.y" { _p->addTypeVar((yyvsp[(1) - (1)]).text()); ;} break; case 716: /* Line 1455 of yacc.c */ -#line 2477 "hphp.y" +#line 2468 "hphp.y" { _p->addTypeVar((yyvsp[(3) - (5)]).text()); ;} break; case 717: /* Line 1455 of yacc.c */ -#line 2478 "hphp.y" +#line 2469 "hphp.y" { _p->addTypeVar((yyvsp[(1) - (3)]).text()); ;} break; case 718: /* Line 1455 of yacc.c */ -#line 2484 "hphp.y" +#line 2475 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (3)]), _p); ;} break; case 721: /* Line 1455 of yacc.c */ -#line 2495 "hphp.y" +#line 2486 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 722: /* Line 1455 of yacc.c */ -#line 2497 "hphp.y" +#line 2488 "hphp.y" {;} break; case 723: /* Line 1455 of yacc.c */ -#line 2501 "hphp.y" +#line 2492 "hphp.y" { only_in_hh_syntax(_p); (yyval).setText("array"); ;} break; @@ -10650,7 +10641,7 @@ yyreduce: case 724: /* Line 1455 of yacc.c */ -#line 2509 "hphp.y" +#line 2500 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeSpecialization((yyvsp[(2) - (2)]), '?'); (yyval) = (yyvsp[(2) - (2)]); ;} @@ -10659,7 +10650,7 @@ yyreduce: case 725: /* Line 1455 of yacc.c */ -#line 2512 "hphp.y" +#line 2503 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeSpecialization((yyvsp[(2) - (2)]), '@'); (yyval) = (yyvsp[(2) - (2)]); ;} @@ -10668,14 +10659,14 @@ yyreduce: case 726: /* Line 1455 of yacc.c */ -#line 2515 "hphp.y" +#line 2506 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 727: /* Line 1455 of yacc.c */ -#line 2516 "hphp.y" +#line 2507 "hphp.y" { Token t; t.reset(); (yyvsp[(1) - (1)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); ;} @@ -10684,14 +10675,14 @@ yyreduce: case 728: /* Line 1455 of yacc.c */ -#line 2519 "hphp.y" +#line 2510 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 729: /* Line 1455 of yacc.c */ -#line 2521 "hphp.y" +#line 2512 "hphp.y" { only_in_hh_syntax(_p); (yyvsp[(1) - (4)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)])); ;} @@ -10700,7 +10691,7 @@ yyreduce: case 730: /* Line 1455 of yacc.c */ -#line 2525 "hphp.y" +#line 2516 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(3) - (6)]), (yyvsp[(5) - (6)])); (yyvsp[(1) - (6)]).setText("array"); @@ -10710,7 +10701,7 @@ yyreduce: case 731: /* Line 1455 of yacc.c */ -#line 2529 "hphp.y" +#line 2520 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); Token t; t.reset(); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); @@ -10720,7 +10711,7 @@ yyreduce: case 732: /* Line 1455 of yacc.c */ -#line 2535 "hphp.y" +#line 2526 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(7) - (8)]), (yyvsp[(4) - (8)])); _p->onTypeAnnotation((yyval), (yyvsp[(2) - (8)]), (yyvsp[(7) - (8)])); @@ -10730,7 +10721,7 @@ yyreduce: case 733: /* Line 1455 of yacc.c */ -#line 2539 "hphp.y" +#line 2530 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(2) - (5)]), (yyvsp[(4) - (5)])); Token t; t.reset(); t.setText("array"); @@ -10741,21 +10732,21 @@ yyreduce: case 734: /* Line 1455 of yacc.c */ -#line 2547 "hphp.y" +#line 2538 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 735: /* Line 1455 of yacc.c */ -#line 2548 "hphp.y" +#line 2539 "hphp.y" { (yyval).reset(); ;} break; /* Line 1455 of yacc.c */ -#line 10759 "new_hphp.tab.cpp" +#line 10750 "new_hphp.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -10974,7 +10965,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 2551 "hphp.y" +#line 2542 "hphp.y" bool Parser::parseImpl() { return yyparse(this) == 0; diff --git a/hphp/compiler/parser/parser.cpp b/hphp/compiler/parser/parser.cpp index af9cff003..292117295 100644 --- a/hphp/compiler/parser/parser.cpp +++ b/hphp/compiler/parser/parser.cpp @@ -113,7 +113,7 @@ using namespace HPHP::Compiler; -extern void prepare_generator(Parser *_p, Token &stmt, Token ¶ms); +extern void prepare_generator(Parser *_p, Token &stmt); extern void create_generator(Parser *_p, Token &out, Token ¶ms, Token &name, const std::string &genName, const char *clsname, Token *modifiers, @@ -844,12 +844,10 @@ void Parser::onFunction(Token &out, Token *modifiers, Token &ret, Token &ref, if (funcContext.isGenerator) { string genName = newContinuationName(funcName); - Token new_params; - prepare_generator(this, stmt, new_params); + prepare_generator(this, stmt); func = NEW_STMT(FunctionStatement, exp, ref->num(), genName, - dynamic_pointer_cast(new_params->exp), - ret.typeAnnotationName(), + ExpressionListPtr(), ret.typeAnnotationName(), dynamic_pointer_cast(stmt->stmt), attribute, comment, ExpressionListPtr()); out->stmt = func; @@ -1225,12 +1223,10 @@ void Parser::onMethod(Token &out, Token &modifiers, Token &ret, Token &ref, genName = newContinuationName(funcName + "@" + m_clsName); } - Token new_params; - prepare_generator(this, stmt, new_params); + prepare_generator(this, stmt); ModifierExpressionPtr exp2 = Construct::Clone(exp); mth = NEW_STMT(MethodStatement, exp2, ref->num(), genName, - dynamic_pointer_cast(new_params->exp), - ret.typeAnnotationName(), + ExpressionListPtr(), ret.typeAnnotationName(), dynamic_pointer_cast(stmt->stmt), attribute, comment, ExpressionListPtr()); out->stmt = mth; diff --git a/hphp/compiler/statement/method_statement.cpp b/hphp/compiler/statement/method_statement.cpp index b39758fa1..ac90c0334 100644 --- a/hphp/compiler/statement/method_statement.cpp +++ b/hphp/compiler/statement/method_statement.cpp @@ -380,9 +380,6 @@ void MethodStatement::analyzeProgram(AnalysisResultPtr ar) { MethodStatementRawPtr orig = getOrigGeneratorFunc(); VariableTablePtr variables = funcScope->getVariables(); - Symbol *cont = variables->getSymbol(CONTINUATION_OBJECT_NAME); - cont->setHidden(); - orig->getFunctionScope()->addUse(funcScope, BlockScope::UseKindClosure); orig->getFunctionScope()->setContainsBareThis( funcScope->containsBareThis(), funcScope->containsRefThis()); diff --git a/hphp/runtime/debugger/cmd/cmd_next.cpp b/hphp/runtime/debugger/cmd/cmd_next.cpp index 6519c545e..43fb1c1ef 100644 --- a/hphp/runtime/debugger/cmd/cmd_next.cpp +++ b/hphp/runtime/debugger/cmd/cmd_next.cpp @@ -245,10 +245,7 @@ void CmdNext::cleanupStepCont() { // continuation, or we'll stop when we get back into it, we know the object // will remain alive. void* CmdNext::getContinuationTag(ActRec* fp) { - TypedValue* tv = frame_local(fp, 0); - assert(tv->m_type == HPHP::KindOfObject); - assert(dynamic_cast(tv->m_data.pobj)); - c_Continuation* cont = static_cast(tv->m_data.pobj); + c_Continuation* cont = frame_continuation(fp); TRACE(2, "CmdNext: continuation tag %p for %s\n", cont, cont->t_getorigfuncname()->data()); return cont; diff --git a/hphp/runtime/ext/ext_continuation.cpp b/hphp/runtime/ext/ext_continuation.cpp old mode 100644 new mode 100755 index 1cd10b103..94cb070ee --- a/hphp/runtime/ext/ext_continuation.cpp +++ b/hphp/runtime/ext/ext_continuation.cpp @@ -42,8 +42,6 @@ p_Continuation f_hphp_create_continuation(CStrRef clsname, /////////////////////////////////////////////////////////////////////////////// -static StaticString s___cont__("__cont__"); - c_Continuation::c_Continuation(Class* cb) : ExtObjectData(cb) , m_label(0) @@ -57,13 +55,6 @@ c_Continuation::c_Continuation(Class* cb) c_Continuation::~c_Continuation() { ActRec* ar = actRec(); - // The first local is the object itself, and it wasn't increffed at creation - // time (see createContinuation()). Overwrite its type to exempt it from - // refcounting here. - TypedValue* contLocal = frame_local(ar, 0); - assert(contLocal->m_data.pobj == this); - contLocal->m_type = KindOfNull; - if (ar->hasVarEnv()) { ar->getVarEnv()->detach(ar); } else { @@ -191,17 +182,13 @@ void c_Continuation::copyContinuationVars(ActRec* fp) { skipThis = definedVariables.exists(s_this, true); for (ArrayIter iter(definedVariables); !iter.end(); iter.next()) { - if (iter.first().getStringData()->same(s___cont__.get())) { - continue; - } dupContVar(iter.first().getStringData(), const_cast(iter.secondRef().asTypedValue())); } } else { const Func *genFunc = actRec()->m_func; skipThis = genFunc->lookupVarId(thisStr) != kInvalidId; - // skip local 0 because that's the old continuation - for (Id i = 1; i < genFunc->numNamedLocals(); ++i) { + for (Id i = 0; i < genFunc->numNamedLocals(); ++i) { dupContVar(genFunc->localVarName(i), frame_local(fp, i)); } } diff --git a/hphp/runtime/vm/bytecode.cpp b/hphp/runtime/vm/bytecode.cpp index f6b0f5c31..c41d897a0 100644 --- a/hphp/runtime/vm/bytecode.cpp +++ b/hphp/runtime/vm/bytecode.cpp @@ -2067,10 +2067,7 @@ Array VMExecutionContext::debugBacktrace(bool skip /* = false */, String funcname = const_cast(fp->m_func->name()); if (fp->m_func->isGenerator()) { // retrieve the original function name from the inner continuation - TypedValue* tv = frame_local(fp, 0); - assert(tv->m_type == HPHP::KindOfObject); - funcname = static_cast( - tv->m_data.pobj)->t_getorigfuncname(); + funcname = frame_continuation(fp)->t_getorigfuncname(); } if (fp->m_func->isClosureBody()) { @@ -6605,17 +6602,9 @@ static inline c_Continuation* createCont(const Func* origFunc, // we enter the generator body. ActRec* ar = cont->actRec(); ar->m_func = genFunc; - ar->initNumArgs(1); + ar->initNumArgs(0); ar->setVarEnv(nullptr); - TypedValue* contLocal = frame_local(ar, 0); - contLocal->m_type = KindOfObject; - contLocal->m_data.pobj = cont; - // Do not incref the continuation here! Doing so will create a reference - // cycle, since this reference is a local in the continuation frame and thus - // will be decreffed when the continuation is destroyed. The corresponding - // non-decref is in ~c_Continuation. - return cont; } @@ -6728,13 +6717,7 @@ inline void OPTBLD_INLINE VMExecutionContext::iopCreateCont(PC& pc) { ret->m_data.pobj = cont; } -static inline c_Continuation* frame_continuation(ActRec* fp) { - ObjectData* obj = frame_local(fp, 0)->m_data.pobj; - assert(dynamic_cast(obj)); - return static_cast(obj); -} - -static inline c_Continuation* this_continuation(ActRec* fp) { +static inline c_Continuation* this_continuation(const ActRec* fp) { ObjectData* obj = fp->getThis(); assert(dynamic_cast(obj)); return static_cast(obj); diff --git a/hphp/runtime/vm/jit/ir.cpp b/hphp/runtime/vm/jit/ir.cpp old mode 100644 new mode 100755 diff --git a/hphp/runtime/vm/jit/ir.h b/hphp/runtime/vm/jit/ir.h index 2ac47c142..a2f4f24e3 100755 --- a/hphp/runtime/vm/jit/ir.h +++ b/hphp/runtime/vm/jit/ir.h @@ -899,7 +899,7 @@ class RawMemSlot { } static RawMemSlot& GetContEntry() { static RawMemSlot m( - Func::prologueTableOff() + sizeof(HPHP::Transl::TCA), + Func::prologueTableOff(), Transl::sz::qword, Type::TCA); return m; } diff --git a/hphp/runtime/vm/jit/translator.cpp b/hphp/runtime/vm/jit/translator.cpp old mode 100644 new mode 100755 index 902c7a35c..3b345b498 --- a/hphp/runtime/vm/jit/translator.cpp +++ b/hphp/runtime/vm/jit/translator.cpp @@ -1266,10 +1266,10 @@ static const struct { { OpCreateCont, {None, Stack1, OutObject, 1 }}, { OpContEnter, {Stack1, None, OutNone, -1 }}, - { OpUnpackCont, {Local, StackTop2, OutInt64, 2 }}, - { OpContSuspend, {Local|Stack1, None, OutNone, -1 }}, - { OpContSuspendK,{Local|StackTop2, None, OutNone, -2 }}, - { OpContRetC, {Local|Stack1, None, OutNone, -1 }}, + { OpUnpackCont, {None, StackTop2, OutInt64, 2 }}, + { OpContSuspend, {Stack1, None, OutNone, -1 }}, + { OpContSuspendK,{StackTop2, None, OutNone, -2 }}, + { OpContRetC, {Stack1, None, OutNone, -1 }}, { OpContCheck, {None, None, OutNone, 0 }}, { OpContRaise, {None, None, OutNone, 0 }}, { OpContValid, {None, Stack1, OutBoolean, 1 }}, @@ -1862,19 +1862,11 @@ void getInputsImpl(SrcKey startSk, addMVectorInputs(*ni, currentStackOffset, inputs); } if (input & Local) { - // Many of the continuation instructions read local 0. All other - // instructions that take a Local have its index at their first + // All instructions that take a Local have its index at their first // immediate. int loc; auto insertAt = inputs.end(); switch (ni->op()) { - case OpUnpackCont: - case OpContSuspend: - case OpContSuspendK: - case OpContRetC: - loc = 0; - break; - case OpSetWithRefLM: insertAt = inputs.begin(); // fallthrough @@ -2751,7 +2743,7 @@ Translator::getOperandConstraintCategory(NormalizedInstruction* instr, case OpContSuspendK: case OpContRetC: // The stack input is teleported to the continuation's m_value field - return opndIdx == 0 ? DataTypeGeneric : DataTypeSpecific; + return DataTypeGeneric; case OpContHandle: // This always calls the interpreter diff --git a/hphp/runtime/vm/runtime.cpp b/hphp/runtime/vm/runtime.cpp index a6a6a2310..549dfef59 100644 --- a/hphp/runtime/vm/runtime.cpp +++ b/hphp/runtime/vm/runtime.cpp @@ -360,11 +360,8 @@ HphpArray* get_static_locals(const ActRec* ar) { assert(dynamic_cast(closureLoc->m_data.pobj)); return static_cast(closureLoc->m_data.pobj)->getStaticLocals(); } else if (ar->m_func->isGeneratorFromClosure()) { - TypedValue* contLoc = frame_local(ar, 0); - assert(dynamic_cast(contLoc->m_data.pobj)); - c_Continuation* cont = static_cast(contLoc->m_data.pobj); - - TypedValue* closureLoc = frame_local(ar, cont->m_origFunc->numParams() + 1); + c_Continuation* cont = frame_continuation(ar); + TypedValue* closureLoc = frame_local(ar, cont->m_origFunc->numParams()); assert(dynamic_cast(closureLoc->m_data.pobj)); return static_cast(closureLoc->m_data.pobj)->getStaticLocals(); } else { diff --git a/hphp/runtime/vm/runtime.h b/hphp/runtime/vm/runtime.h index c37522c64..56a683f4a 100644 --- a/hphp/runtime/vm/runtime.h +++ b/hphp/runtime/vm/runtime.h @@ -16,6 +16,7 @@ #ifndef incl_HPHP_VM_RUNTIME_H_ #define incl_HPHP_VM_RUNTIME_H_ +#include "hphp/runtime/ext/ext_continuation.h" #include "hphp/runtime/vm/event_hook.h" #include "hphp/runtime/vm/func.h" #include "hphp/runtime/vm/funcdict.h" @@ -80,6 +81,14 @@ frame_local_inner(const ActRec* fp, int n) { return ret->m_type == KindOfRef ? ret->m_data.pref->tv() : ret; } +inline c_Continuation* +frame_continuation(const ActRec* fp) { + size_t arOffset = c_Continuation::getArOffset(fp->m_func); + ObjectData* obj = (ObjectData*)((char*)fp - arOffset); + assert(dynamic_cast(obj)); + return static_cast(obj); +} + /* * 'Unwinding' versions of the below frame_free_locals_* functions * zero locals and the $this pointer. diff --git a/hphp/test/ext/test_parser_stmt.cpp b/hphp/test/ext/test_parser_stmt.cpp index 917d3861e..5273dfad1 100644 --- a/hphp/test/ext/test_parser_stmt.cpp +++ b/hphp/test/ext/test_parser_stmt.cpp @@ -660,7 +660,7 @@ bool TestParserStmt::TestYieldStatement() { WithOpt w1(Option::EnableHipHopSyntax); V(" array(1) { ["args"]=> - array(1) { - [0]=> - object(Continuation)#2 (0) { - } + array(0) { } } } @@ -674,10 +671,7 @@ array(3) { [2]=> array(1) { ["args"]=> - array(1) { - [0]=> - object(Continuation)#2 (0) { - } + array(0) { } } } @@ -766,10 +760,7 @@ array(3) { [2]=> array(1) { ["args"]=> - array(1) { - [0]=> - object(Continuation)#2 (0) { - } + array(0) { } } } diff --git a/hphp/test/quick/debug_backtrace_continuation.php.expectf b/hphp/test/quick/debug_backtrace_continuation.php.expectf index d1d4a6378..8f26d63be 100644 --- a/hphp/test/quick/debug_backtrace_continuation.php.expectf +++ b/hphp/test/quick/debug_backtrace_continuation.php.expectf @@ -4,10 +4,7 @@ array(3) { ["function"]=> string(12) "my_generator" ["args"]=> - array(1) { - [0]=> - object(Continuation)#1 (0) { - } + array(0) { } } [1]=> @@ -54,10 +51,7 @@ array(3) { ["type"]=> string(2) "::" ["args"]=> - array(1) { - [0]=> - object(Continuation)#1 (0) { - } + array(0) { } } [1]=> diff --git a/hphp/test/quick/generator_vars.php.expect b/hphp/test/quick/generator_vars.php.expect index 5340faaa7..d46779e3e 100644 --- a/hphp/test/quick/generator_vars.php.expect +++ b/hphp/test/quick/generator_vars.php.expect @@ -48,7 +48,7 @@ array(5) { } int(4) string(32) "Continuation is already finished" -array(13) { +array(12) { ["b"]=> int(2) ["g"]=> @@ -61,23 +61,20 @@ array(13) { int(4) ["e"]=> int(5) - ["__cont__"]=> - object(Continuation)#5 (0) { - } ["c"]=> int(3) ["j"]=> int(10) + ["k"]=> + int(11) ["h"]=> int(8) ["a"]=> int(1) - ["k"]=> - int(11) ["l"]=> int(12) } -array(13) { +array(12) { ["b"]=> int(3735928559) ["g"]=> @@ -90,24 +87,21 @@ array(13) { int(4) ["e"]=> int(5) - ["__cont__"]=> - object(Continuation)#5 (0) { - } ["c"]=> int(3) ["j"]=> int(10) + ["k"]=> + int(11) ["h"]=> int(8) ["a"]=> object(stdClass)#6 (0) { } - ["k"]=> - int(11) ["l"]=> int(12) } -array(13) { +array(12) { ["b"]=> int(3735928559) ["g"]=> @@ -120,21 +114,18 @@ array(13) { int(3126047761) ["e"]=> int(3126047761) - ["__cont__"]=> - object(Continuation)#5 (0) { - } ["c"]=> object(Continuation)#5 (0) { } ["j"]=> int(10) + ["k"]=> + int(11) ["h"]=> int(8) ["a"]=> object(stdClass)#6 (0) { } - ["k"]=> - int(11) ["l"]=> int(12) } diff --git a/hphp/util/parser/hphp.y b/hphp/util/parser/hphp.y old mode 100644 new mode 100755 index 5a1b2d5d6..a5ac96343 --- a/hphp/util/parser/hphp.y +++ b/hphp/util/parser/hphp.y @@ -142,7 +142,7 @@ static void on_constant(Parser *_p, Token &out, Token &name, Token &value) { /////////////////////////////////////////////////////////////////////////////// // continuation transformations -void prepare_generator(Parser *_p, Token &stmt, Token ¶ms) { +void prepare_generator(Parser *_p, Token &stmt) { // 1. add prologue and epilogue to original body and store it back to "stmt" { // hphp_unpack_continuation() @@ -158,15 +158,6 @@ void prepare_generator(Parser *_p, Token &stmt, Token ¶ms) { stmt.reset(); _p->finishStatement(stmt, stmts2); stmt = 1; } - - // 2. prepare a single continuation parameter list and store it in "params" - { - Token type; type.setText("Continuation"); - Token var; var.setText(CONTINUATION_OBJECT_NAME); - params.reset(); - type.reset(); - _p->onParam(params, NULL, type, var, false, NULL, NULL, NULL); - } } // create a generator function with original name and parameters diff --git a/hphp/util/parser/parser.h b/hphp/util/parser/parser.h index e5a08c96b..b266ed926 100644 --- a/hphp/util/parser/parser.h +++ b/hphp/util/parser/parser.h @@ -37,9 +37,6 @@ m_xhpAttributes.reset(); \ } \ -#define CONTINUATION_OBJECT_NAME "__cont__" -#define TYPED_CONTINUATION_OBJECT_NAME "__typedCont__" -#define FOREACH_VAR_PREFIX "__foreach__" #define NAMESPACE_SEP '\\' namespace HPHP {