diff --git a/hphp/compiler/analysis/emitter.cpp b/hphp/compiler/analysis/emitter.cpp index 2c0ab26c5..6bc2bd7bd 100644 --- a/hphp/compiler/analysis/emitter.cpp +++ b/hphp/compiler/analysis/emitter.cpp @@ -5245,9 +5245,10 @@ void EmitterVisitor::emitPostponedMeths() { dynamic_pointer_cast(par->defaultValue()); bool nullable = ce && ce->isNull(); TypeConstraint tc = - TypeConstraint(StringData::GetStaticString( - par->getOriginalTypeHint()), - nullable); + TypeConstraint( + StringData::GetStaticString(par->getOriginalTypeHint()), + nullable, + par->hhType()); pi.setTypeConstraint(tc); TRACE(1, "Added constraint to %s\n", fe->name()->data()); } @@ -7375,7 +7376,7 @@ static void emitSystemLib() { AnalysisResultPtr ar(new AnalysisResult()); Scanner scanner(slib.c_str(), slib.size(), - RuntimeOption::ScannerType, "/:systemlib.php"); + RuntimeOption::GetScannerType(), "/:systemlib.php"); Parser parser(scanner, "/:systemlib.php", ar, slib.size()); parser.parse(); FileScopePtr fsp = parser.getFileScope(); @@ -7509,7 +7510,7 @@ Unit* hphp_compiler_parse(const char* code, int codeLen, const MD5& md5, } AnalysisResultPtr ar(new AnalysisResult()); - Scanner scanner(code, codeLen, RuntimeOption::ScannerType, filename); + Scanner scanner(code, codeLen, RuntimeOption::GetScannerType(), filename); Parser parser(scanner, filename, ar, codeLen); parser.parse(); FileScopePtr fsp = parser.getFileScope(); diff --git a/hphp/compiler/analysis/type.cpp b/hphp/compiler/analysis/type.cpp index e75c5545a..b8d703d72 100644 --- a/hphp/compiler/analysis/type.cpp +++ b/hphp/compiler/analysis/type.cpp @@ -49,28 +49,32 @@ TypePtr Type::Any (new Type(Type::KindOfAny )); TypePtr Type::Some (new Type(Type::KindOfSome )); Type::TypePtrMap Type::s_TypeHintTypes; +Type::TypePtrMap Type::s_HHTypeHintTypes; void Type::InitTypeHintMap() { assert(s_TypeHintTypes.empty()); + assert(s_HHTypeHintTypes.empty()); + s_TypeHintTypes["array"] = Type::Array; - if (Option::EnableHipHopSyntax) { - s_TypeHintTypes["bool"] = Type::Boolean; - s_TypeHintTypes["boolean"] = Type::Boolean; - s_TypeHintTypes["int"] = Type::Int64; - s_TypeHintTypes["integer"] = Type::Int64; - s_TypeHintTypes["real"] = Type::Double; - s_TypeHintTypes["double"] = Type::Double; - s_TypeHintTypes["float"] = Type::Double; - s_TypeHintTypes["string"] = Type::String; - } + + s_HHTypeHintTypes["array"] = Type::Array; + s_HHTypeHintTypes["bool"] = Type::Boolean; + s_HHTypeHintTypes["boolean"] = Type::Boolean; + s_HHTypeHintTypes["int"] = Type::Int64; + s_HHTypeHintTypes["integer"] = Type::Int64; + s_HHTypeHintTypes["real"] = Type::Double; + s_HHTypeHintTypes["double"] = Type::Double; + s_HHTypeHintTypes["float"] = Type::Double; + s_HHTypeHintTypes["string"] = Type::String; } -const Type::TypePtrMap &Type::GetTypeHintTypes() { - return s_TypeHintTypes; +const Type::TypePtrMap &Type::GetTypeHintTypes(bool hhType) { + return hhType ? s_HHTypeHintTypes : s_TypeHintTypes; } void Type::ResetTypeHintTypes() { s_TypeHintTypes.clear(); + s_HHTypeHintTypes.clear(); } TypePtr Type::CreateObjectType(const std::string &classname) { diff --git a/hphp/compiler/analysis/type.h b/hphp/compiler/analysis/type.h index 5f6dcbfbf..151e98f51 100644 --- a/hphp/compiler/analysis/type.h +++ b/hphp/compiler/analysis/type.h @@ -102,7 +102,7 @@ public: static TypePtr Some; typedef hphp_string_imap TypePtrMap; - static const TypePtrMap &GetTypeHintTypes(); + static const TypePtrMap &GetTypeHintTypes(bool hhType); /** * Uncertain types: types that are ambiguous yet. @@ -267,6 +267,7 @@ private: static void ResetTypeHintTypes(); static TypePtrMap s_TypeHintTypes; + static TypePtrMap s_HHTypeHintTypes; const KindOf m_kindOf; const std::string m_name; diff --git a/hphp/compiler/builtin_symbols.cpp b/hphp/compiler/builtin_symbols.cpp index c19b3cbe2..58ae8ebed 100644 --- a/hphp/compiler/builtin_symbols.cpp +++ b/hphp/compiler/builtin_symbols.cpp @@ -334,7 +334,7 @@ bool BuiltinSymbols::Load(AnalysisResultPtr ar, bool extOnly /* = false */) { string slib = get_systemlib(); Scanner scanner(slib.c_str(), slib.size(), - Option::ScannerType, "systemlib.php"); + Option::GetScannerType(), "systemlib.php"); Compiler::Parser parser(scanner, "systemlib.php", ar); if (!parser.parse()) { Logger::Error("Unable to parse systemlib.php: %s", @@ -406,7 +406,7 @@ AnalysisResultPtr BuiltinSymbols::LoadGlobalSymbols(const char *fileName) { fileName = s_strings.add(phpFileName.c_str()); try { - Scanner scanner(fileName, Option::ScannerType); + Scanner scanner(fileName, Option::GetScannerType()); Compiler::Parser parser(scanner, baseName, ar); if (!parser.parse()) { assert(false); diff --git a/hphp/compiler/compiler.cpp b/hphp/compiler/compiler.cpp index c91a04143..9cd75d0bf 100644 --- a/hphp/compiler/compiler.cpp +++ b/hphp/compiler/compiler.cpp @@ -702,7 +702,7 @@ int lintTarget(const CompilerOptions &po) { for (unsigned int i = 0; i < po.inputs.size(); i++) { string filename = po.inputDir + "/" + po.inputs[i]; try { - Scanner scanner(filename.c_str(), Option::ScannerType); + Scanner scanner(filename.c_str(), Option::GetScannerType()); Compiler::Parser parser(scanner, filename.c_str(), AnalysisResultPtr(new AnalysisResult())); if (!parser.parse()) { diff --git a/hphp/compiler/expression/parameter_expression.cpp b/hphp/compiler/expression/parameter_expression.cpp index 94ef1f643..8e65dd4d2 100644 --- a/hphp/compiler/expression/parameter_expression.cpp +++ b/hphp/compiler/expression/parameter_expression.cpp @@ -32,10 +32,10 @@ using namespace HPHP; ParameterExpression::ParameterExpression (EXPRESSION_CONSTRUCTOR_PARAMETERS, - TypeAnnotationPtr type, const std::string &name, bool ref, + TypeAnnotationPtr type, bool hhType, const std::string &name, bool ref, ExpressionPtr defaultValue, ExpressionPtr attributeList) : Expression(EXPRESSION_CONSTRUCTOR_PARAMETER_VALUES(ParameterExpression)), - m_originalType(type), m_name(name), m_ref(ref), + m_originalType(type), m_name(name), m_hhType(hhType), m_ref(ref), m_defaultValue(defaultValue), m_attributeList(attributeList) { m_type = Util::toLower(type ? type->simpleName() : ""); if (m_defaultValue) { @@ -150,7 +150,7 @@ TypePtr ParameterExpression::getTypeSpecForClass(AnalysisResultPtr ar, TypePtr ParameterExpression::getTypeSpec(AnalysisResultPtr ar, bool forInference) { - const Type::TypePtrMap &types = Type::GetTypeHintTypes(); + const Type::TypePtrMap &types = Type::GetTypeHintTypes(m_hhType); Type::TypePtrMap::const_iterator iter; TypePtr ret; @@ -231,7 +231,7 @@ void ParameterExpression::compatibleDefault() { const char* msg = "Default value for parameter %s with type %s " "needs to have the same type as the type hint %s"; - if (Option::EnableHipHopSyntax) { + if (m_hhType) { // Normally a named type like 'int' is compatable with Int but not integer // Since the default value's type is inferred from the value itself it is // ok to compare against the lower case version of the type hint in hint diff --git a/hphp/compiler/expression/parameter_expression.h b/hphp/compiler/expression/parameter_expression.h index 712513e0d..d75ae39a9 100644 --- a/hphp/compiler/expression/parameter_expression.h +++ b/hphp/compiler/expression/parameter_expression.h @@ -31,7 +31,8 @@ DECLARE_BOOST_TYPES(TypeAnnotation); class ParameterExpression : public Expression { public: ParameterExpression(EXPRESSION_CONSTRUCTOR_PARAMETERS, - TypeAnnotationPtr type, const std::string &name, + TypeAnnotationPtr type, bool hhType, + const std::string &name, bool ref, ExpressionPtr defaultValue, ExpressionPtr attributeList); @@ -56,12 +57,14 @@ public: void parseHandler(ClassScopePtr cls); void compatibleDefault(); void fixupSelfAndParentTypehints(ClassScopePtr cls); + bool hhType() { return m_hhType; } private: TypePtr getTypeSpecForClass(AnalysisResultPtr ar, bool forInference); std::string m_type; TypeAnnotationPtr m_originalType; std::string m_name; + bool m_hhType; bool m_ref; ExpressionPtr m_defaultValue; ExpressionPtr m_attributeList; diff --git a/hphp/compiler/option.cpp b/hphp/compiler/option.cpp index 0976419be..fcc4be184 100644 --- a/hphp/compiler/option.cpp +++ b/hphp/compiler/option.cpp @@ -120,9 +120,16 @@ bool Option::EnableShortTags = true; bool Option::EnableAspTags = false; bool Option::EnableXHP = true; bool Option::EnableFinallyStatement = false; -int Option::ScannerType = Scanner::AllowShortTags; int Option::ParserThreadCount = 0; +int Option::GetScannerType() { + int type = 0; + if (EnableShortTags) type |= Scanner::AllowShortTags; + if (EnableHipHopSyntax) type |= Scanner::AllowHipHopSyntax; + if (EnableAspTags) type |= Scanner::AllowAspTags; + return type; +} + int Option::InvokeFewArgsCount = 6; bool Option::InvokeWithSpecificArgs = true; bool Option::FlattenInvoke = true; @@ -277,17 +284,8 @@ void Option::Load(Hdf &config) { EnableHipHopExperimentalSyntax = config["EnableHipHopExperimentalSyntax"].getBool(); EnableShortTags = config["EnableShortTags"].getBool(true); - if (EnableShortTags) ScannerType |= Scanner::AllowShortTags; - else ScannerType &= ~Scanner::AllowShortTags; - if (EnableHipHopExperimentalSyntax) { - ScannerType |= Scanner::EnableHipHopKeywords; - } else { - ScannerType &= ~Scanner::EnableHipHopKeywords; - } EnableAspTags = config["EnableAspTags"].getBool(); - if (EnableAspTags) ScannerType |= Scanner::AllowAspTags; - else ScannerType &= ~Scanner::AllowAspTags; EnableXHP = config["EnableXHP"].getBool(true); diff --git a/hphp/compiler/option.h b/hphp/compiler/option.h index 96075501e..0828cf4f7 100644 --- a/hphp/compiler/option.h +++ b/hphp/compiler/option.h @@ -235,9 +235,10 @@ public: static bool EnableAspTags; static bool EnableXHP; static bool EnableFinallyStatement; - static int ScannerType; static int ParserThreadCount; + static int GetScannerType(); + /** * "Dynamic" means a function or a method can be invoked dynamically. * "Volatile" means a class or a function can be declared dynamically. diff --git a/hphp/compiler/package.cpp b/hphp/compiler/package.cpp index f7c837499..298a64879 100644 --- a/hphp/compiler/package.cpp +++ b/hphp/compiler/package.cpp @@ -297,7 +297,7 @@ bool Package::parseImpl(const char *fileName) { int lines = 0; try { Logger::Verbose("parsing %s ...", fullPath.c_str()); - Scanner scanner(fullPath.c_str(), Option::ScannerType, true); + Scanner scanner(fullPath.c_str(), Option::GetScannerType(), true); Compiler::Parser parser(scanner, fileName, m_ar, sb.st_size); parser.parse(); lines = parser.line1(); diff --git a/hphp/compiler/parser/hphp.tab.cpp b/hphp/compiler/parser/hphp.tab.cpp index fa1fc8dd1..6eab916dd 100644 --- a/hphp/compiler/parser/hphp.tab.cpp +++ b/hphp/compiler/parser/hphp.tab.cpp @@ -327,7 +327,7 @@ void create_generator(Parser *_p, Token &out, Token ¶ms, /////////////////////////////////////////////////////////////////////////////// static void user_attribute_check(Parser *_p) { - if (!_p->enableHipHopSyntax()) { + if (!_p->scanner().hipHopSyntaxEnabled()) { HPHP_PARSER_ERROR("User attributes are not enabled", _p); } } @@ -725,17 +725,10 @@ static void xhp_children_stmt(Parser *_p, Token &out, Token &children) { } } -/* This is called from hack productions (hh_*) to throw an - * error if we're not in hack mode */ -static void only_in_hack_mode(Parser *_p) { - if (!_p->scanner().isHackMode()) { - HPHP_PARSER_ERROR("Syntax only allowed in hack mode", _p); - } -} - -static void only_in_hphp_syntax(Parser *_p) { - if (!_p->enableHipHopSyntax()) { - HPHP_PARSER_ERROR("Syntax only allowed with -v Eval.EnableHipHopSyntax=true", _p); +static void only_in_hh_syntax(Parser *_p) { + if (!_p->scanner().hipHopSyntaxEnabled()) { + HPHP_PARSER_ERROR( + "Syntax only allowed with -v Eval.EnableHipHopSyntax=true", _p); } } @@ -759,7 +752,7 @@ static int yylex(YYSTYPE *token, HPHP::Location *loc, Parser *_p) { /* Line 189 of yacc.c */ -#line 763 "new_hphp.tab.cpp" +#line 756 "new_hphp.tab.cpp" /* Enabling traces. */ #ifndef YYDEBUG @@ -964,7 +957,7 @@ typedef struct YYLTYPE /* Line 264 of yacc.c */ -#line 968 "new_hphp.tab.cpp" +#line 961 "new_hphp.tab.cpp" #ifdef short # undef short @@ -1566,78 +1559,78 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 822, 822, 822, 827, 829, 832, 833, 834, 835, - 836, 837, 840, 842, 842, 844, 844, 846, 847, 852, - 853, 854, 855, 856, 857, 861, 863, 866, 867, 868, - 869, 874, 875, 879, 880, 882, 885, 891, 898, 905, - 909, 915, 917, 920, 921, 922, 923, 926, 927, 931, - 936, 936, 940, 940, 945, 944, 948, 948, 951, 952, - 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, - 963, 966, 964, 969, 971, 979, 982, 983, 987, 988, - 989, 990, 991, 998, 1004, 1008, 1008, 1014, 1015, 1019, - 1020, 1024, 1029, 1028, 1038, 1037, 1050, 1049, 1068, 1066, - 1085, 1084, 1093, 1091, 1103, 1102, 1114, 1112, 1125, 1126, - 1130, 1133, 1136, 1137, 1138, 1141, 1143, 1146, 1147, 1150, - 1151, 1154, 1155, 1159, 1160, 1165, 1166, 1169, 1170, 1174, - 1175, 1179, 1180, 1184, 1185, 1189, 1190, 1195, 1196, 1201, - 1202, 1203, 1204, 1207, 1210, 1212, 1215, 1216, 1220, 1222, - 1225, 1228, 1231, 1232, 1235, 1236, 1240, 1242, 1244, 1245, - 1249, 1251, 1253, 1256, 1259, 1262, 1265, 1269, 1276, 1278, - 1281, 1282, 1283, 1285, 1290, 1291, 1294, 1295, 1296, 1300, - 1301, 1303, 1304, 1308, 1310, 1313, 1313, 1317, 1316, 1320, - 1324, 1322, 1335, 1332, 1343, 1345, 1347, 1349, 1351, 1355, - 1356, 1357, 1360, 1366, 1369, 1375, 1378, 1383, 1385, 1390, - 1395, 1399, 1400, 1406, 1407, 1412, 1413, 1418, 1419, 1423, - 1424, 1428, 1430, 1436, 1441, 1442, 1444, 1448, 1449, 1450, - 1451, 1455, 1456, 1457, 1458, 1459, 1460, 1462, 1467, 1470, - 1471, 1475, 1476, 1479, 1480, 1483, 1484, 1487, 1488, 1492, - 1493, 1494, 1495, 1496, 1497, 1500, 1502, 1504, 1505, 1508, - 1510, 1514, 1516, 1520, 1524, 1525, 1529, 1530, 1534, 1538, - 1542, 1547, 1548, 1549, 1552, 1554, 1555, 1556, 1559, 1560, - 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, - 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, - 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, - 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, - 1602, 1603, 1605, 1607, 1608, 1609, 1610, 1611, 1612, 1613, - 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, - 1624, 1626, 1625, 1634, 1633, 1641, 1642, 1643, 1647, 1652, - 1659, 1664, 1671, 1673, 1677, 1679, 1683, 1688, 1689, 1693, - 1700, 1707, 1709, 1714, 1715, 1716, 1720, 1724, 1728, 1729, - 1730, 1731, 1735, 1741, 1746, 1755, 1756, 1759, 1762, 1765, - 1766, 1769, 1773, 1776, 1779, 1786, 1787, 1791, 1792, 1794, - 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, - 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, - 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, - 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, - 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, - 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, - 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, - 1868, 1869, 1870, 1871, 1872, 1876, 1881, 1882, 1885, 1886, - 1887, 1891, 1892, 1893, 1897, 1898, 1899, 1903, 1904, 1905, - 1908, 1910, 1914, 1915, 1916, 1918, 1919, 1920, 1921, 1922, - 1923, 1924, 1925, 1926, 1927, 1930, 1935, 1936, 1937, 1938, - 1939, 1941, 1944, 1945, 1949, 1952, 1958, 1959, 1960, 1961, - 1962, 1963, 1964, 1969, 1971, 1975, 1976, 1979, 1980, 1984, - 1987, 1989, 1991, 1995, 1996, 1997, 1999, 2002, 2006, 2007, - 2008, 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2024, 2026, - 2029, 2032, 2034, 2036, 2039, 2041, 2045, 2047, 2050, 2054, - 2061, 2063, 2066, 2067, 2072, 2075, 2079, 2079, 2084, 2087, - 2088, 2092, 2093, 2098, 2099, 2103, 2104, 2108, 2109, 2113, - 2115, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2129, - 2131, 2135, 2136, 2137, 2138, 2139, 2141, 2143, 2145, 2149, - 2150, 2151, 2155, 2158, 2161, 2164, 2167, 2170, 2176, 2180, - 2187, 2188, 2193, 2195, 2196, 2199, 2200, 2203, 2204, 2208, - 2209, 2213, 2214, 2215, 2216, 2217, 2220, 2223, 2224, 2225, - 2227, 2229, 2233, 2234, 2235, 2237, 2238, 2239, 2243, 2245, - 2248, 2250, 2251, 2252, 2253, 2256, 2258, 2259, 2263, 2265, - 2268, 2270, 2271, 2272, 2276, 2278, 2281, 2284, 2286, 2288, - 2292, 2293, 2295, 2296, 2302, 2303, 2305, 2307, 2309, 2311, - 2314, 2315, 2316, 2320, 2321, 2322, 2323, 2324, 2325, 2326, - 2330, 2331, 2335, 2344, 2351, 2352, 2358, 2359, 2367, 2370, - 2374, 2377, 2382, 2383, 2384, 2385, 2389, 2390, 2394, 2396, - 2397, 2399, 2402, 2404, 2409, 2415, 2417, 2421, 2424, 2427, - 2436, 2439, 2442, 2443, 2446, 2447, 2451, 2456, 2460, 2466, - 2474, 2475 + 0, 815, 815, 815, 820, 822, 825, 826, 827, 828, + 829, 830, 833, 835, 835, 837, 837, 839, 840, 845, + 846, 847, 848, 849, 850, 854, 856, 859, 860, 861, + 862, 867, 868, 872, 873, 875, 878, 884, 891, 898, + 902, 908, 910, 913, 914, 915, 916, 919, 920, 924, + 929, 929, 933, 933, 938, 937, 941, 941, 944, 945, + 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, + 956, 959, 957, 962, 964, 972, 975, 976, 980, 981, + 982, 983, 984, 991, 997, 1001, 1001, 1007, 1008, 1012, + 1013, 1017, 1022, 1021, 1031, 1030, 1043, 1042, 1061, 1059, + 1078, 1077, 1086, 1084, 1096, 1095, 1107, 1105, 1118, 1119, + 1123, 1126, 1129, 1130, 1131, 1134, 1136, 1139, 1140, 1143, + 1144, 1147, 1148, 1152, 1153, 1158, 1159, 1162, 1163, 1167, + 1168, 1172, 1173, 1177, 1178, 1182, 1183, 1188, 1189, 1194, + 1195, 1196, 1197, 1200, 1203, 1205, 1208, 1209, 1213, 1215, + 1218, 1221, 1224, 1225, 1228, 1229, 1233, 1235, 1237, 1238, + 1242, 1244, 1246, 1249, 1252, 1255, 1258, 1262, 1269, 1271, + 1274, 1275, 1276, 1278, 1283, 1284, 1287, 1288, 1289, 1293, + 1294, 1296, 1297, 1301, 1303, 1306, 1306, 1310, 1309, 1313, + 1317, 1315, 1328, 1325, 1336, 1338, 1340, 1342, 1344, 1348, + 1349, 1350, 1353, 1359, 1362, 1368, 1371, 1376, 1378, 1383, + 1388, 1392, 1393, 1399, 1400, 1405, 1406, 1411, 1412, 1416, + 1417, 1421, 1423, 1429, 1434, 1435, 1437, 1441, 1442, 1443, + 1444, 1448, 1449, 1450, 1451, 1452, 1453, 1455, 1460, 1463, + 1464, 1468, 1469, 1472, 1473, 1476, 1477, 1480, 1481, 1485, + 1486, 1487, 1488, 1489, 1490, 1493, 1495, 1497, 1498, 1501, + 1503, 1507, 1509, 1513, 1517, 1518, 1522, 1523, 1527, 1531, + 1535, 1540, 1541, 1542, 1545, 1547, 1548, 1549, 1552, 1553, + 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, + 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, + 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, + 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, + 1595, 1596, 1598, 1600, 1601, 1602, 1603, 1604, 1605, 1606, + 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, + 1617, 1619, 1618, 1627, 1626, 1634, 1635, 1636, 1640, 1645, + 1652, 1657, 1664, 1666, 1670, 1672, 1676, 1681, 1682, 1686, + 1693, 1700, 1702, 1707, 1708, 1709, 1713, 1717, 1721, 1722, + 1723, 1724, 1728, 1734, 1739, 1748, 1749, 1752, 1755, 1758, + 1759, 1762, 1766, 1769, 1772, 1779, 1780, 1784, 1785, 1787, + 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, + 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, + 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, + 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, + 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, + 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, + 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, + 1861, 1862, 1863, 1864, 1865, 1869, 1874, 1875, 1878, 1879, + 1880, 1884, 1885, 1886, 1890, 1891, 1892, 1896, 1897, 1898, + 1901, 1903, 1907, 1908, 1909, 1911, 1912, 1913, 1914, 1915, + 1916, 1917, 1918, 1919, 1920, 1923, 1928, 1929, 1930, 1931, + 1932, 1934, 1937, 1938, 1942, 1945, 1951, 1952, 1953, 1954, + 1955, 1956, 1957, 1962, 1964, 1968, 1969, 1972, 1973, 1977, + 1980, 1982, 1984, 1988, 1989, 1990, 1992, 1995, 1999, 2000, + 2001, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2017, 2019, + 2022, 2025, 2027, 2029, 2032, 2034, 2038, 2040, 2043, 2047, + 2054, 2056, 2059, 2060, 2065, 2068, 2072, 2072, 2077, 2080, + 2081, 2085, 2086, 2091, 2092, 2096, 2097, 2101, 2102, 2106, + 2108, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2122, + 2124, 2128, 2129, 2130, 2131, 2132, 2134, 2136, 2138, 2142, + 2143, 2144, 2148, 2151, 2154, 2157, 2160, 2163, 2169, 2173, + 2180, 2181, 2186, 2188, 2189, 2192, 2193, 2196, 2197, 2201, + 2202, 2206, 2207, 2208, 2209, 2210, 2213, 2216, 2217, 2218, + 2220, 2222, 2226, 2227, 2228, 2230, 2231, 2232, 2236, 2238, + 2241, 2243, 2244, 2245, 2246, 2249, 2251, 2252, 2256, 2258, + 2261, 2263, 2264, 2265, 2269, 2271, 2274, 2277, 2279, 2281, + 2285, 2286, 2288, 2289, 2295, 2296, 2298, 2300, 2302, 2304, + 2307, 2308, 2309, 2313, 2314, 2315, 2316, 2317, 2318, 2319, + 2323, 2324, 2328, 2337, 2344, 2345, 2351, 2352, 2360, 2363, + 2367, 2370, 2375, 2376, 2377, 2378, 2382, 2383, 2387, 2389, + 2390, 2392, 2395, 2397, 2402, 2408, 2410, 2414, 2417, 2420, + 2429, 2432, 2435, 2436, 2439, 2440, 2444, 2449, 2453, 2459, + 2467, 2468 }; #endif @@ -5485,14 +5478,14 @@ yyreduce: case 2: /* Line 1455 of yacc.c */ -#line 822 "hphp.y" +#line 815 "hphp.y" { _p->initParseTree(); ;} break; case 3: /* Line 1455 of yacc.c */ -#line 822 "hphp.y" +#line 815 "hphp.y" { _p->popLabelInfo(); _p->finiParseTree();;} break; @@ -5500,56 +5493,56 @@ yyreduce: case 4: /* Line 1455 of yacc.c */ -#line 828 "hphp.y" +#line 821 "hphp.y" { _p->addTopStatement((yyvsp[(2) - (2)]));;} break; case 5: /* Line 1455 of yacc.c */ -#line 829 "hphp.y" +#line 822 "hphp.y" { ;} break; case 6: /* Line 1455 of yacc.c */ -#line 832 "hphp.y" +#line 825 "hphp.y" { _p->nns((yyvsp[(1) - (1)]).num()); (yyval) = (yyvsp[(1) - (1)]);;} break; case 7: /* Line 1455 of yacc.c */ -#line 833 "hphp.y" +#line 826 "hphp.y" { _p->nns(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 8: /* Line 1455 of yacc.c */ -#line 834 "hphp.y" +#line 827 "hphp.y" { _p->nns(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 9: /* Line 1455 of yacc.c */ -#line 835 "hphp.y" +#line 828 "hphp.y" { _p->nns(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 10: /* Line 1455 of yacc.c */ -#line 836 "hphp.y" +#line 829 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 11: /* Line 1455 of yacc.c */ -#line 837 "hphp.y" +#line 830 "hphp.y" { _p->onHaltCompiler(); _p->finiParseTree(); YYACCEPT;;} @@ -5558,7 +5551,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 840 "hphp.y" +#line 833 "hphp.y" { _p->onNamespaceStart((yyvsp[(2) - (3)]).text(), true); (yyval).reset();;} break; @@ -5566,42 +5559,42 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 842 "hphp.y" +#line 835 "hphp.y" { _p->onNamespaceStart((yyvsp[(2) - (3)]).text());;} break; case 14: /* Line 1455 of yacc.c */ -#line 843 "hphp.y" +#line 836 "hphp.y" { _p->onNamespaceEnd(); (yyval) = (yyvsp[(5) - (6)]);;} break; case 15: /* Line 1455 of yacc.c */ -#line 844 "hphp.y" +#line 837 "hphp.y" { _p->onNamespaceStart("");;} break; case 16: /* Line 1455 of yacc.c */ -#line 845 "hphp.y" +#line 838 "hphp.y" { _p->onNamespaceEnd(); (yyval) = (yyvsp[(4) - (5)]);;} break; case 17: /* Line 1455 of yacc.c */ -#line 846 "hphp.y" +#line 839 "hphp.y" { _p->nns(); (yyval).reset();;} break; case 18: /* Line 1455 of yacc.c */ -#line 847 "hphp.y" +#line 840 "hphp.y" { _p->nns(); _p->finishStatement((yyval), (yyvsp[(1) - (2)])); (yyval) = 1;;} break; @@ -5609,126 +5602,126 @@ yyreduce: case 19: /* Line 1455 of yacc.c */ -#line 852 "hphp.y" +#line 845 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 20: /* Line 1455 of yacc.c */ -#line 853 "hphp.y" +#line 846 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 21: /* Line 1455 of yacc.c */ -#line 854 "hphp.y" +#line 847 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 22: /* Line 1455 of yacc.c */ -#line 855 "hphp.y" +#line 848 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 23: /* Line 1455 of yacc.c */ -#line 856 "hphp.y" +#line 849 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 24: /* Line 1455 of yacc.c */ -#line 857 "hphp.y" +#line 850 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 25: /* Line 1455 of yacc.c */ -#line 862 "hphp.y" +#line 855 "hphp.y" { ;} break; case 26: /* Line 1455 of yacc.c */ -#line 863 "hphp.y" +#line 856 "hphp.y" { ;} break; case 27: /* Line 1455 of yacc.c */ -#line 866 "hphp.y" +#line 859 "hphp.y" { _p->onUse((yyvsp[(1) - (1)]).text(),"");;} break; case 28: /* Line 1455 of yacc.c */ -#line 867 "hphp.y" +#line 860 "hphp.y" { _p->onUse((yyvsp[(2) - (2)]).text(),"");;} break; case 29: /* Line 1455 of yacc.c */ -#line 868 "hphp.y" +#line 861 "hphp.y" { _p->onUse((yyvsp[(1) - (3)]).text(),(yyvsp[(3) - (3)]).text());;} break; case 30: /* Line 1455 of yacc.c */ -#line 870 "hphp.y" +#line 863 "hphp.y" { _p->onUse((yyvsp[(2) - (4)]).text(),(yyvsp[(4) - (4)]).text());;} break; case 31: /* Line 1455 of yacc.c */ -#line 874 "hphp.y" +#line 867 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 32: /* Line 1455 of yacc.c */ -#line 876 "hphp.y" +#line 869 "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 879 "hphp.y" +#line 872 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = (yyval).num() | 1;;} break; case 34: /* Line 1455 of yacc.c */ -#line 881 "hphp.y" +#line 874 "hphp.y" { (yyval).set((yyvsp[(3) - (3)]).num() | 2, _p->nsDecl((yyvsp[(3) - (3)]).text()));;} break; case 35: /* Line 1455 of yacc.c */ -#line 882 "hphp.y" +#line 875 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = (yyval).num() | 2;;} break; case 36: /* Line 1455 of yacc.c */ -#line 885 "hphp.y" +#line 878 "hphp.y" { if ((yyvsp[(1) - (1)]).num() & 1) { (yyvsp[(1) - (1)]).setText(_p->resolve((yyvsp[(1) - (1)]).text(),0)); } @@ -5738,7 +5731,7 @@ yyreduce: case 37: /* Line 1455 of yacc.c */ -#line 892 "hphp.y" +#line 885 "hphp.y" { if ((yyvsp[(1) - (2)]).num() & 1) { (yyvsp[(1) - (2)]).setText(_p->resolve((yyvsp[(1) - (2)]).text(),0)); } @@ -5748,7 +5741,7 @@ yyreduce: case 38: /* Line 1455 of yacc.c */ -#line 899 "hphp.y" +#line 892 "hphp.y" { if ((yyvsp[(1) - (2)]).num() & 1) { (yyvsp[(1) - (2)]).setText(_p->resolve((yyvsp[(1) - (2)]).text(),1)); } @@ -5758,7 +5751,7 @@ yyreduce: case 39: /* Line 1455 of yacc.c */ -#line 907 "hphp.y" +#line 900 "hphp.y" { (yyvsp[(3) - (5)]).setText(_p->nsDecl((yyvsp[(3) - (5)]).text())); on_constant(_p,(yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; @@ -5766,7 +5759,7 @@ yyreduce: case 40: /* Line 1455 of yacc.c */ -#line 910 "hphp.y" +#line 903 "hphp.y" { (yyvsp[(2) - (4)]).setText(_p->nsDecl((yyvsp[(2) - (4)]).text())); on_constant(_p,(yyval), 0,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; @@ -5774,77 +5767,77 @@ yyreduce: case 41: /* Line 1455 of yacc.c */ -#line 916 "hphp.y" +#line 909 "hphp.y" { _p->addStatement((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 42: /* Line 1455 of yacc.c */ -#line 917 "hphp.y" +#line 910 "hphp.y" { _p->onStatementListStart((yyval));;} break; case 43: /* Line 1455 of yacc.c */ -#line 920 "hphp.y" +#line 913 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 44: /* Line 1455 of yacc.c */ -#line 921 "hphp.y" +#line 914 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 45: /* Line 1455 of yacc.c */ -#line 922 "hphp.y" +#line 915 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 46: /* Line 1455 of yacc.c */ -#line 923 "hphp.y" +#line 916 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 47: /* Line 1455 of yacc.c */ -#line 926 "hphp.y" +#line 919 "hphp.y" { _p->onBlock((yyval), (yyvsp[(2) - (3)]));;} break; case 48: /* Line 1455 of yacc.c */ -#line 930 "hphp.y" +#line 923 "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 935 "hphp.y" +#line 928 "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 936 "hphp.y" +#line 929 "hphp.y" { _p->pushLabelScope();;} break; case 51: /* Line 1455 of yacc.c */ -#line 937 "hphp.y" +#line 930 "hphp.y" { _p->popLabelScope(); _p->onWhile((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; @@ -5852,14 +5845,14 @@ yyreduce: case 52: /* Line 1455 of yacc.c */ -#line 940 "hphp.y" +#line 933 "hphp.y" { _p->pushLabelScope();;} break; case 53: /* Line 1455 of yacc.c */ -#line 942 "hphp.y" +#line 935 "hphp.y" { _p->popLabelScope(); _p->onDo((yyval),(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;} break; @@ -5867,14 +5860,14 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 945 "hphp.y" +#line 938 "hphp.y" { _p->pushLabelScope();;} break; case 55: /* Line 1455 of yacc.c */ -#line 946 "hphp.y" +#line 939 "hphp.y" { _p->popLabelScope(); _p->onFor((yyval),(yyvsp[(3) - (10)]),(yyvsp[(5) - (10)]),(yyvsp[(7) - (10)]),(yyvsp[(10) - (10)]));;} break; @@ -5882,14 +5875,14 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 948 "hphp.y" +#line 941 "hphp.y" { _p->pushLabelScope();;} break; case 57: /* Line 1455 of yacc.c */ -#line 949 "hphp.y" +#line 942 "hphp.y" { _p->popLabelScope(); _p->onSwitch((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; @@ -5897,105 +5890,105 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 951 "hphp.y" +#line 944 "hphp.y" { _p->onBreak((yyval), NULL);;} break; case 59: /* Line 1455 of yacc.c */ -#line 952 "hphp.y" +#line 945 "hphp.y" { _p->onBreak((yyval), &(yyvsp[(2) - (3)]));;} break; case 60: /* Line 1455 of yacc.c */ -#line 953 "hphp.y" +#line 946 "hphp.y" { _p->onContinue((yyval), NULL);;} break; case 61: /* Line 1455 of yacc.c */ -#line 954 "hphp.y" +#line 947 "hphp.y" { _p->onContinue((yyval), &(yyvsp[(2) - (3)]));;} break; case 62: /* Line 1455 of yacc.c */ -#line 955 "hphp.y" +#line 948 "hphp.y" { _p->onReturn((yyval), NULL);;} break; case 63: /* Line 1455 of yacc.c */ -#line 956 "hphp.y" +#line 949 "hphp.y" { _p->onReturn((yyval), &(yyvsp[(2) - (3)]));;} break; case 64: /* Line 1455 of yacc.c */ -#line 957 "hphp.y" +#line 950 "hphp.y" { _p->onYieldBreak((yyval));;} break; case 65: /* Line 1455 of yacc.c */ -#line 958 "hphp.y" +#line 951 "hphp.y" { _p->onGlobal((yyval), (yyvsp[(2) - (3)]));;} break; case 66: /* Line 1455 of yacc.c */ -#line 959 "hphp.y" +#line 952 "hphp.y" { _p->onStatic((yyval), (yyvsp[(2) - (3)]));;} break; case 67: /* Line 1455 of yacc.c */ -#line 960 "hphp.y" +#line 953 "hphp.y" { _p->onEcho((yyval), (yyvsp[(2) - (3)]), 0);;} break; case 68: /* Line 1455 of yacc.c */ -#line 961 "hphp.y" +#line 954 "hphp.y" { _p->onUnset((yyval), (yyvsp[(3) - (5)]));;} break; case 69: /* Line 1455 of yacc.c */ -#line 962 "hphp.y" +#line 955 "hphp.y" { (yyval).reset(); (yyval) = ';';} break; case 70: /* Line 1455 of yacc.c */ -#line 963 "hphp.y" +#line 956 "hphp.y" { _p->onEcho((yyval), (yyvsp[(1) - (1)]), 1);;} break; case 71: /* Line 1455 of yacc.c */ -#line 966 "hphp.y" +#line 959 "hphp.y" { _p->pushLabelScope();;} break; case 72: /* Line 1455 of yacc.c */ -#line 967 "hphp.y" +#line 960 "hphp.y" { _p->popLabelScope(); _p->onForEach((yyval),(yyvsp[(3) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(6) - (9)]),(yyvsp[(9) - (9)]));;} break; @@ -6003,35 +5996,35 @@ yyreduce: case 73: /* Line 1455 of yacc.c */ -#line 970 "hphp.y" +#line 963 "hphp.y" { _p->onBlock((yyval), (yyvsp[(5) - (5)])); (yyval) = T_DECLARE;;} break; case 74: /* Line 1455 of yacc.c */ -#line 978 "hphp.y" +#line 971 "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 981 "hphp.y" +#line 974 "hphp.y" { _p->onTry((yyval), (yyvsp[(3) - (5)]), (yyvsp[(5) - (5)]));;} break; case 76: /* Line 1455 of yacc.c */ -#line 982 "hphp.y" +#line 975 "hphp.y" { _p->onThrow((yyval), (yyvsp[(2) - (3)]));;} break; case 77: /* Line 1455 of yacc.c */ -#line 983 "hphp.y" +#line 976 "hphp.y" { _p->onGoto((yyval), (yyvsp[(2) - (3)]), true); _p->addGoto((yyvsp[(2) - (3)]).text(), _p->getLocation(), @@ -6041,35 +6034,35 @@ yyreduce: case 78: /* Line 1455 of yacc.c */ -#line 987 "hphp.y" +#line 980 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 79: /* Line 1455 of yacc.c */ -#line 988 "hphp.y" +#line 981 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 80: /* Line 1455 of yacc.c */ -#line 989 "hphp.y" +#line 982 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 81: /* Line 1455 of yacc.c */ -#line 990 "hphp.y" +#line 983 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 82: /* Line 1455 of yacc.c */ -#line 991 "hphp.y" +#line 984 "hphp.y" { _p->onLabel((yyval), (yyvsp[(1) - (2)])); _p->addLabel((yyvsp[(1) - (2)]).text(), _p->getLocation(), @@ -6079,63 +6072,63 @@ yyreduce: case 83: /* Line 1455 of yacc.c */ -#line 1003 "hphp.y" +#line 996 "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 1004 "hphp.y" +#line 997 "hphp.y" { (yyval).reset();;} break; case 85: /* Line 1455 of yacc.c */ -#line 1008 "hphp.y" +#line 1001 "hphp.y" { finally_statement(_p);;} break; case 86: /* Line 1455 of yacc.c */ -#line 1010 "hphp.y" +#line 1003 "hphp.y" { _p->onFinally((yyval), (yyvsp[(4) - (5)]));;} break; case 88: /* Line 1455 of yacc.c */ -#line 1015 "hphp.y" +#line 1008 "hphp.y" { (yyval).reset();;} break; case 89: /* Line 1455 of yacc.c */ -#line 1019 "hphp.y" +#line 1012 "hphp.y" { (yyval) = 1;;} break; case 90: /* Line 1455 of yacc.c */ -#line 1020 "hphp.y" +#line 1013 "hphp.y" { (yyval).reset();;} break; case 91: /* Line 1455 of yacc.c */ -#line 1024 "hphp.y" +#line 1017 "hphp.y" { _p->pushFuncLocation();;} break; case 92: /* Line 1455 of yacc.c */ -#line 1029 "hphp.y" +#line 1022 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onFunctionStart((yyvsp[(3) - (3)])); _p->pushLabelInfo();;} @@ -6144,7 +6137,7 @@ yyreduce: case 93: /* Line 1455 of yacc.c */ -#line 1034 "hphp.y" +#line 1027 "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();;} @@ -6153,7 +6146,7 @@ yyreduce: case 94: /* Line 1455 of yacc.c */ -#line 1038 "hphp.y" +#line 1031 "hphp.y" { (yyvsp[(4) - (4)]).setText(_p->nsDecl((yyvsp[(4) - (4)]).text())); _p->onFunctionStart((yyvsp[(4) - (4)])); _p->pushLabelInfo();;} @@ -6162,7 +6155,7 @@ yyreduce: case 95: /* Line 1455 of yacc.c */ -#line 1043 "hphp.y" +#line 1036 "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();;} @@ -6171,7 +6164,7 @@ yyreduce: case 96: /* Line 1455 of yacc.c */ -#line 1050 "hphp.y" +#line 1043 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart((yyvsp[(1) - (2)]).num(),(yyvsp[(2) - (2)]));;} break; @@ -6179,7 +6172,7 @@ yyreduce: case 97: /* Line 1455 of yacc.c */ -#line 1053 "hphp.y" +#line 1046 "hphp.y" { Token stmts; if (_p->peekClass()) { xhp_collect_attributes(_p,stmts,(yyvsp[(7) - (8)])); @@ -6198,7 +6191,7 @@ yyreduce: case 98: /* Line 1455 of yacc.c */ -#line 1068 "hphp.y" +#line 1061 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart((yyvsp[(2) - (3)]).num(),(yyvsp[(3) - (3)]));;} break; @@ -6206,7 +6199,7 @@ yyreduce: case 99: /* Line 1455 of yacc.c */ -#line 1071 "hphp.y" +#line 1064 "hphp.y" { Token stmts; if (_p->peekClass()) { xhp_collect_attributes(_p,stmts,(yyvsp[(8) - (9)])); @@ -6225,7 +6218,7 @@ yyreduce: case 100: /* Line 1455 of yacc.c */ -#line 1085 "hphp.y" +#line 1078 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_INTERFACE,(yyvsp[(2) - (2)]));;} break; @@ -6233,7 +6226,7 @@ yyreduce: case 101: /* Line 1455 of yacc.c */ -#line 1088 "hphp.y" +#line 1081 "hphp.y" { _p->onInterface((yyval),(yyvsp[(2) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(6) - (7)]),0); _p->popClass(); _p->popTypeScope();;} @@ -6242,7 +6235,7 @@ yyreduce: case 102: /* Line 1455 of yacc.c */ -#line 1093 "hphp.y" +#line 1086 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_INTERFACE,(yyvsp[(3) - (3)]));;} break; @@ -6250,7 +6243,7 @@ yyreduce: case 103: /* Line 1455 of yacc.c */ -#line 1096 "hphp.y" +#line 1089 "hphp.y" { _p->onInterface((yyval),(yyvsp[(3) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(7) - (8)]),&(yyvsp[(1) - (8)])); _p->popClass(); _p->popTypeScope();;} @@ -6259,7 +6252,7 @@ yyreduce: case 104: /* Line 1455 of yacc.c */ -#line 1103 "hphp.y" +#line 1096 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_TRAIT, (yyvsp[(2) - (2)]));;} break; @@ -6267,7 +6260,7 @@ yyreduce: case 105: /* Line 1455 of yacc.c */ -#line 1106 "hphp.y" +#line 1099 "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, @@ -6279,7 +6272,7 @@ yyreduce: case 106: /* Line 1455 of yacc.c */ -#line 1114 "hphp.y" +#line 1107 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_TRAIT, (yyvsp[(3) - (3)]));;} break; @@ -6287,7 +6280,7 @@ yyreduce: case 107: /* Line 1455 of yacc.c */ -#line 1117 "hphp.y" +#line 1110 "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, @@ -6299,14 +6292,14 @@ yyreduce: case 108: /* Line 1455 of yacc.c */ -#line 1125 "hphp.y" +#line 1118 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 109: /* Line 1455 of yacc.c */ -#line 1126 "hphp.y" +#line 1119 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); _p->pushTypeScope(); _p->pushClass(true); (yyval) = (yyvsp[(1) - (1)]);;} break; @@ -6314,525 +6307,525 @@ yyreduce: case 110: /* Line 1455 of yacc.c */ -#line 1130 "hphp.y" +#line 1123 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 111: /* Line 1455 of yacc.c */ -#line 1133 "hphp.y" +#line 1126 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 112: /* Line 1455 of yacc.c */ -#line 1136 "hphp.y" +#line 1129 "hphp.y" { (yyval) = T_CLASS;;} break; case 113: /* Line 1455 of yacc.c */ -#line 1137 "hphp.y" +#line 1130 "hphp.y" { (yyval) = T_ABSTRACT;;} break; case 114: /* Line 1455 of yacc.c */ -#line 1138 "hphp.y" +#line 1131 "hphp.y" { (yyval) = T_FINAL;;} break; case 115: /* Line 1455 of yacc.c */ -#line 1142 "hphp.y" +#line 1135 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 116: /* Line 1455 of yacc.c */ -#line 1143 "hphp.y" +#line 1136 "hphp.y" { (yyval).reset();;} break; case 117: /* Line 1455 of yacc.c */ -#line 1146 "hphp.y" +#line 1139 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 118: /* Line 1455 of yacc.c */ -#line 1147 "hphp.y" +#line 1140 "hphp.y" { (yyval).reset();;} break; case 119: /* Line 1455 of yacc.c */ -#line 1150 "hphp.y" +#line 1143 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 120: /* Line 1455 of yacc.c */ -#line 1151 "hphp.y" +#line 1144 "hphp.y" { (yyval).reset();;} break; case 121: /* Line 1455 of yacc.c */ -#line 1154 "hphp.y" +#line 1147 "hphp.y" { _p->onInterfaceName((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 122: /* Line 1455 of yacc.c */ -#line 1156 "hphp.y" +#line 1149 "hphp.y" { _p->onInterfaceName((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 123: /* Line 1455 of yacc.c */ -#line 1159 "hphp.y" +#line 1152 "hphp.y" { _p->onTraitName((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 124: /* Line 1455 of yacc.c */ -#line 1161 "hphp.y" +#line 1154 "hphp.y" { _p->onTraitName((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 125: /* Line 1455 of yacc.c */ -#line 1165 "hphp.y" +#line 1158 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 126: /* Line 1455 of yacc.c */ -#line 1166 "hphp.y" +#line 1159 "hphp.y" { (yyval).reset();;} break; case 127: /* Line 1455 of yacc.c */ -#line 1169 "hphp.y" +#line 1162 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 128: /* Line 1455 of yacc.c */ -#line 1170 "hphp.y" +#line 1163 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = 1;;} break; case 129: /* Line 1455 of yacc.c */ -#line 1174 "hphp.y" +#line 1167 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 130: /* Line 1455 of yacc.c */ -#line 1176 "hphp.y" +#line 1169 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 131: /* Line 1455 of yacc.c */ -#line 1179 "hphp.y" +#line 1172 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 132: /* Line 1455 of yacc.c */ -#line 1181 "hphp.y" +#line 1174 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 133: /* Line 1455 of yacc.c */ -#line 1184 "hphp.y" +#line 1177 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 134: /* Line 1455 of yacc.c */ -#line 1186 "hphp.y" +#line 1179 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 135: /* Line 1455 of yacc.c */ -#line 1189 "hphp.y" +#line 1182 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 136: /* Line 1455 of yacc.c */ -#line 1191 "hphp.y" +#line 1184 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 139: /* Line 1455 of yacc.c */ -#line 1201 "hphp.y" +#line 1194 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 140: /* Line 1455 of yacc.c */ -#line 1202 "hphp.y" +#line 1195 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]);;} break; case 141: /* Line 1455 of yacc.c */ -#line 1203 "hphp.y" +#line 1196 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 142: /* Line 1455 of yacc.c */ -#line 1204 "hphp.y" +#line 1197 "hphp.y" { (yyval) = (yyvsp[(3) - (5)]);;} break; case 143: /* Line 1455 of yacc.c */ -#line 1209 "hphp.y" +#line 1202 "hphp.y" { _p->onCase((yyval),(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 144: /* Line 1455 of yacc.c */ -#line 1211 "hphp.y" +#line 1204 "hphp.y" { _p->onCase((yyval),(yyvsp[(1) - (4)]),NULL,(yyvsp[(4) - (4)]));;} break; case 145: /* Line 1455 of yacc.c */ -#line 1212 "hphp.y" +#line 1205 "hphp.y" { (yyval).reset();;} break; case 146: /* Line 1455 of yacc.c */ -#line 1215 "hphp.y" +#line 1208 "hphp.y" { (yyval).reset();;} break; case 147: /* Line 1455 of yacc.c */ -#line 1216 "hphp.y" +#line 1209 "hphp.y" { (yyval).reset();;} break; case 148: /* Line 1455 of yacc.c */ -#line 1221 "hphp.y" +#line 1214 "hphp.y" { _p->onElseIf((yyval),(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]));;} break; case 149: /* Line 1455 of yacc.c */ -#line 1222 "hphp.y" +#line 1215 "hphp.y" { (yyval).reset();;} break; case 150: /* Line 1455 of yacc.c */ -#line 1227 "hphp.y" +#line 1220 "hphp.y" { _p->onElseIf((yyval),(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 151: /* Line 1455 of yacc.c */ -#line 1228 "hphp.y" +#line 1221 "hphp.y" { (yyval).reset();;} break; case 152: /* Line 1455 of yacc.c */ -#line 1231 "hphp.y" +#line 1224 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 153: /* Line 1455 of yacc.c */ -#line 1232 "hphp.y" +#line 1225 "hphp.y" { (yyval).reset();;} break; case 154: /* Line 1455 of yacc.c */ -#line 1235 "hphp.y" +#line 1228 "hphp.y" { (yyval) = (yyvsp[(3) - (3)]);;} break; case 155: /* Line 1455 of yacc.c */ -#line 1236 "hphp.y" +#line 1229 "hphp.y" { (yyval).reset();;} break; case 156: /* Line 1455 of yacc.c */ -#line 1241 "hphp.y" - { only_in_hack_mode(_p); (yyval) = (yyvsp[(1) - (3)]); ;} +#line 1234 "hphp.y" + { only_in_hh_syntax(_p); (yyval) = (yyvsp[(1) - (3)]); ;} break; case 157: /* Line 1455 of yacc.c */ -#line 1243 "hphp.y" +#line 1236 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 158: /* Line 1455 of yacc.c */ -#line 1244 "hphp.y" - { only_in_hack_mode(_p); (yyval).reset(); ;} +#line 1237 "hphp.y" + { only_in_hh_syntax(_p); (yyval).reset(); ;} break; case 159: /* Line 1455 of yacc.c */ -#line 1245 "hphp.y" +#line 1238 "hphp.y" { (yyval).reset();;} break; case 160: /* Line 1455 of yacc.c */ -#line 1250 "hphp.y" +#line 1243 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)]),0,NULL,&(yyvsp[(1) - (3)]));;} break; case 161: /* Line 1455 of yacc.c */ -#line 1252 "hphp.y" +#line 1245 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]),1,NULL,&(yyvsp[(1) - (4)]));;} break; case 162: /* Line 1455 of yacc.c */ -#line 1255 "hphp.y" +#line 1248 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (6)]),(yyvsp[(4) - (6)]),1,&(yyvsp[(6) - (6)]),&(yyvsp[(1) - (6)]));;} break; case 163: /* Line 1455 of yacc.c */ -#line 1258 "hphp.y" +#line 1251 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (5)]),(yyvsp[(3) - (5)]),0,&(yyvsp[(5) - (5)]),&(yyvsp[(1) - (5)]));;} break; case 164: /* Line 1455 of yacc.c */ -#line 1261 "hphp.y" +#line 1254 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)]),0,NULL,&(yyvsp[(3) - (5)]));;} break; case 165: /* Line 1455 of yacc.c */ -#line 1264 "hphp.y" +#line 1257 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(4) - (6)]),(yyvsp[(6) - (6)]),1,NULL,&(yyvsp[(3) - (6)]));;} break; case 166: /* Line 1455 of yacc.c */ -#line 1268 "hphp.y" +#line 1261 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(4) - (8)]),(yyvsp[(6) - (8)]),1,&(yyvsp[(8) - (8)]),&(yyvsp[(3) - (8)]));;} break; case 167: /* Line 1455 of yacc.c */ -#line 1272 "hphp.y" +#line 1265 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(5) - (7)]),0,&(yyvsp[(7) - (7)]),&(yyvsp[(3) - (7)]));;} break; case 168: /* Line 1455 of yacc.c */ -#line 1277 "hphp.y" +#line 1270 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 169: /* Line 1455 of yacc.c */ -#line 1278 "hphp.y" +#line 1271 "hphp.y" { (yyval).reset();;} break; case 170: /* Line 1455 of yacc.c */ -#line 1281 "hphp.y" +#line 1274 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(1) - (1)]),0);;} break; case 171: /* Line 1455 of yacc.c */ -#line 1282 "hphp.y" +#line 1275 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(2) - (2)]),1);;} break; case 172: /* Line 1455 of yacc.c */ -#line 1284 "hphp.y" +#line 1277 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 173: /* Line 1455 of yacc.c */ -#line 1286 "hphp.y" +#line 1279 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 174: /* Line 1455 of yacc.c */ -#line 1290 "hphp.y" +#line 1283 "hphp.y" { _p->onGlobalVar((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 175: /* Line 1455 of yacc.c */ -#line 1291 "hphp.y" +#line 1284 "hphp.y" { _p->onGlobalVar((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 176: /* Line 1455 of yacc.c */ -#line 1294 "hphp.y" +#line 1287 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 177: /* Line 1455 of yacc.c */ -#line 1295 "hphp.y" +#line 1288 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = 1;;} break; case 178: /* Line 1455 of yacc.c */ -#line 1296 "hphp.y" +#line 1289 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval) = 1;;} break; case 179: /* Line 1455 of yacc.c */ -#line 1300 "hphp.y" +#line 1293 "hphp.y" { _p->onStaticVariable((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 180: /* Line 1455 of yacc.c */ -#line 1302 "hphp.y" +#line 1295 "hphp.y" { _p->onStaticVariable((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),&(yyvsp[(5) - (5)]));;} break; case 181: /* Line 1455 of yacc.c */ -#line 1303 "hphp.y" +#line 1296 "hphp.y" { _p->onStaticVariable((yyval),0,(yyvsp[(1) - (1)]),0);;} break; case 182: /* Line 1455 of yacc.c */ -#line 1304 "hphp.y" +#line 1297 "hphp.y" { _p->onStaticVariable((yyval),0,(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 183: /* Line 1455 of yacc.c */ -#line 1309 "hphp.y" +#line 1302 "hphp.y" { _p->onClassStatement((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 184: /* Line 1455 of yacc.c */ -#line 1310 "hphp.y" +#line 1303 "hphp.y" { (yyval).reset();;} break; case 185: /* Line 1455 of yacc.c */ -#line 1313 "hphp.y" +#line 1306 "hphp.y" { _p->onClassVariableModifer((yyvsp[(1) - (1)]));;} break; case 186: /* Line 1455 of yacc.c */ -#line 1314 "hphp.y" +#line 1307 "hphp.y" { _p->onClassVariableStart ((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; @@ -6840,14 +6833,14 @@ yyreduce: case 187: /* Line 1455 of yacc.c */ -#line 1317 "hphp.y" +#line 1310 "hphp.y" { _p->onClassVariableModifer((yyvsp[(1) - (2)]));;} break; case 188: /* Line 1455 of yacc.c */ -#line 1318 "hphp.y" +#line 1311 "hphp.y" { _p->onClassVariableStart ((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(4) - (5)]),&(yyvsp[(2) - (5)]));;} break; @@ -6855,7 +6848,7 @@ yyreduce: case 189: /* Line 1455 of yacc.c */ -#line 1320 "hphp.y" +#line 1313 "hphp.y" { _p->onClassVariableStart ((yyval),NULL,(yyvsp[(1) - (2)]),NULL);;} break; @@ -6863,7 +6856,7 @@ yyreduce: case 190: /* Line 1455 of yacc.c */ -#line 1324 "hphp.y" +#line 1317 "hphp.y" { _p->onMethodStart((yyvsp[(4) - (5)]), (yyvsp[(1) - (5)])); _p->pushLabelInfo();;} break; @@ -6871,7 +6864,7 @@ yyreduce: case 191: /* Line 1455 of yacc.c */ -#line 1329 "hphp.y" +#line 1322 "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();;} @@ -6880,7 +6873,7 @@ yyreduce: case 192: /* Line 1455 of yacc.c */ -#line 1335 "hphp.y" +#line 1328 "hphp.y" { _p->onMethodStart((yyvsp[(5) - (6)]), (yyvsp[(2) - (6)])); _p->pushLabelInfo();;} break; @@ -6888,7 +6881,7 @@ yyreduce: case 193: /* Line 1455 of yacc.c */ -#line 1340 "hphp.y" +#line 1333 "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();;} @@ -6897,28 +6890,28 @@ yyreduce: case 194: /* Line 1455 of yacc.c */ -#line 1344 "hphp.y" +#line 1337 "hphp.y" { _p->xhpSetAttributes((yyvsp[(2) - (3)]));;} break; case 195: /* Line 1455 of yacc.c */ -#line 1346 "hphp.y" +#line 1339 "hphp.y" { xhp_category_stmt(_p,(yyval),(yyvsp[(2) - (3)]));;} break; case 196: /* Line 1455 of yacc.c */ -#line 1348 "hphp.y" +#line 1341 "hphp.y" { xhp_children_stmt(_p,(yyval),(yyvsp[(2) - (3)]));;} break; case 197: /* Line 1455 of yacc.c */ -#line 1349 "hphp.y" +#line 1342 "hphp.y" { Token t; t.reset(); _p->onTraitUse((yyval),(yyvsp[(2) - (3)]),t); ;} break; @@ -6926,42 +6919,42 @@ yyreduce: case 198: /* Line 1455 of yacc.c */ -#line 1352 "hphp.y" +#line 1345 "hphp.y" { _p->onTraitUse((yyval),(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)])); ;} break; case 199: /* Line 1455 of yacc.c */ -#line 1355 "hphp.y" +#line 1348 "hphp.y" { _p->onTraitRule((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} break; case 200: /* Line 1455 of yacc.c */ -#line 1356 "hphp.y" +#line 1349 "hphp.y" { _p->onTraitRule((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} break; case 201: /* Line 1455 of yacc.c */ -#line 1357 "hphp.y" +#line 1350 "hphp.y" { (yyval).reset(); ;} break; case 202: /* Line 1455 of yacc.c */ -#line 1363 "hphp.y" +#line 1356 "hphp.y" { _p->onTraitPrecRule((yyval),(yyvsp[(1) - (6)]),(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;} break; case 203: /* Line 1455 of yacc.c */ -#line 1367 "hphp.y" +#line 1360 "hphp.y" { _p->onTraitAliasRuleModify((yyval),(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]));;} break; @@ -6969,7 +6962,7 @@ yyreduce: case 204: /* Line 1455 of yacc.c */ -#line 1370 "hphp.y" +#line 1363 "hphp.y" { Token t; t.reset(); _p->onTraitAliasRuleModify((yyval),(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]), t);;} @@ -6978,14 +6971,14 @@ yyreduce: case 205: /* Line 1455 of yacc.c */ -#line 1377 "hphp.y" +#line 1370 "hphp.y" { _p->onTraitAliasRuleStart((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 206: /* Line 1455 of yacc.c */ -#line 1378 "hphp.y" +#line 1371 "hphp.y" { Token t; t.reset(); _p->onTraitAliasRuleStart((yyval),t,(yyvsp[(1) - (1)]));;} break; @@ -6993,7 +6986,7 @@ yyreduce: case 207: /* Line 1455 of yacc.c */ -#line 1383 "hphp.y" +#line 1376 "hphp.y" { xhp_attribute_list(_p,(yyval), _p->xhpGetAttributes(),(yyvsp[(1) - (1)]));;} break; @@ -7001,14 +6994,14 @@ yyreduce: case 208: /* Line 1455 of yacc.c */ -#line 1386 "hphp.y" +#line 1379 "hphp.y" { xhp_attribute_list(_p,(yyval), &(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 209: /* Line 1455 of yacc.c */ -#line 1393 "hphp.y" +#line 1386 "hphp.y" { xhp_attribute(_p,(yyval),(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); (yyval) = 1;;} break; @@ -7016,21 +7009,21 @@ yyreduce: case 210: /* Line 1455 of yacc.c */ -#line 1395 "hphp.y" +#line 1388 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 0;;} break; case 211: /* Line 1455 of yacc.c */ -#line 1399 "hphp.y" +#line 1392 "hphp.y" { (yyval) = 4;;} break; case 212: /* Line 1455 of yacc.c */ -#line 1400 "hphp.y" +#line 1393 "hphp.y" { /* This case handles all types other than "array", "var" and "enum". For now we just use type code 5; @@ -7042,63 +7035,63 @@ yyreduce: case 213: /* Line 1455 of yacc.c */ -#line 1406 "hphp.y" +#line 1399 "hphp.y" { (yyval) = 6;;} break; case 214: /* Line 1455 of yacc.c */ -#line 1408 "hphp.y" +#line 1401 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval) = 7;;} break; case 215: /* Line 1455 of yacc.c */ -#line 1412 "hphp.y" +#line 1405 "hphp.y" { _p->onArrayPair((yyval), 0,0,(yyvsp[(1) - (1)]),0);;} break; case 216: /* Line 1455 of yacc.c */ -#line 1414 "hphp.y" +#line 1407 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]),0,(yyvsp[(3) - (3)]),0);;} break; case 217: /* Line 1455 of yacc.c */ -#line 1418 "hphp.y" +#line 1411 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 218: /* Line 1455 of yacc.c */ -#line 1419 "hphp.y" +#line 1412 "hphp.y" { scalar_null(_p, (yyval));;} break; case 219: /* Line 1455 of yacc.c */ -#line 1423 "hphp.y" +#line 1416 "hphp.y" { scalar_num(_p, (yyval), "1");;} break; case 220: /* Line 1455 of yacc.c */ -#line 1424 "hphp.y" +#line 1417 "hphp.y" { scalar_num(_p, (yyval), "0");;} break; case 221: /* Line 1455 of yacc.c */ -#line 1428 "hphp.y" +#line 1421 "hphp.y" { Token t; scalar_num(_p, t, "1"); _p->onArrayPair((yyval),0,&(yyvsp[(1) - (1)]),t,0);;} break; @@ -7106,7 +7099,7 @@ yyreduce: case 222: /* Line 1455 of yacc.c */ -#line 1431 "hphp.y" +#line 1424 "hphp.y" { Token t; scalar_num(_p, t, "1"); _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]),t,0);;} break; @@ -7114,7 +7107,7 @@ yyreduce: case 223: /* Line 1455 of yacc.c */ -#line 1436 "hphp.y" +#line 1429 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -7122,14 +7115,14 @@ yyreduce: case 224: /* Line 1455 of yacc.c */ -#line 1441 "hphp.y" +#line 1434 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 2;;} break; case 225: /* Line 1455 of yacc.c */ -#line 1442 "hphp.y" +#line 1435 "hphp.y" { (yyval) = -1; if ((yyvsp[(1) - (1)]).same("any")) (yyval) = 1;;} break; @@ -7137,91 +7130,91 @@ yyreduce: case 226: /* Line 1455 of yacc.c */ -#line 1444 "hphp.y" +#line 1437 "hphp.y" { (yyval) = 0;;} break; case 227: /* Line 1455 of yacc.c */ -#line 1448 "hphp.y" +#line 1441 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (3)]), 0);;} break; case 228: /* Line 1455 of yacc.c */ -#line 1449 "hphp.y" +#line 1442 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 1);;} break; case 229: /* Line 1455 of yacc.c */ -#line 1450 "hphp.y" +#line 1443 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 2);;} break; case 230: /* Line 1455 of yacc.c */ -#line 1451 "hphp.y" +#line 1444 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 3);;} break; case 231: /* Line 1455 of yacc.c */ -#line 1455 "hphp.y" +#line 1448 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 232: /* Line 1455 of yacc.c */ -#line 1456 "hphp.y" +#line 1449 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (1)]),0, 0);;} break; case 233: /* Line 1455 of yacc.c */ -#line 1457 "hphp.y" +#line 1450 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),1, 0);;} break; case 234: /* Line 1455 of yacc.c */ -#line 1458 "hphp.y" +#line 1451 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),2, 0);;} break; case 235: /* Line 1455 of yacc.c */ -#line 1459 "hphp.y" +#line 1452 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),3, 0);;} break; case 236: /* Line 1455 of yacc.c */ -#line 1461 "hphp.y" +#line 1454 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (3)]),4,&(yyvsp[(3) - (3)]));;} break; case 237: /* Line 1455 of yacc.c */ -#line 1463 "hphp.y" +#line 1456 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (3)]),5,&(yyvsp[(3) - (3)]));;} break; case 238: /* Line 1455 of yacc.c */ -#line 1467 "hphp.y" +#line 1460 "hphp.y" { (yyval) = -1; if ((yyvsp[(1) - (1)]).same("any")) (yyval) = 1; else if ((yyvsp[(1) - (1)]).same("pcdata")) (yyval) = 2;;} @@ -7230,567 +7223,567 @@ yyreduce: case 239: /* Line 1455 of yacc.c */ -#line 1470 "hphp.y" +#line 1463 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); (yyval) = (yyvsp[(1) - (1)]); (yyval) = 3;;} break; case 240: /* Line 1455 of yacc.c */ -#line 1471 "hphp.y" +#line 1464 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(0); (yyval) = (yyvsp[(1) - (1)]); (yyval) = 4;;} break; case 241: /* Line 1455 of yacc.c */ -#line 1475 "hphp.y" +#line 1468 "hphp.y" { (yyval).reset();;} break; case 242: /* Line 1455 of yacc.c */ -#line 1476 "hphp.y" +#line 1469 "hphp.y" { _p->finishStatement((yyval), (yyvsp[(2) - (3)])); (yyval) = 1;;} break; case 243: /* Line 1455 of yacc.c */ -#line 1479 "hphp.y" +#line 1472 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 244: /* Line 1455 of yacc.c */ -#line 1480 "hphp.y" +#line 1473 "hphp.y" { (yyval).reset();;} break; case 245: /* Line 1455 of yacc.c */ -#line 1483 "hphp.y" +#line 1476 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 246: /* Line 1455 of yacc.c */ -#line 1484 "hphp.y" +#line 1477 "hphp.y" { (yyval).reset();;} break; case 247: /* Line 1455 of yacc.c */ -#line 1487 "hphp.y" +#line 1480 "hphp.y" { _p->onMemberModifier((yyval),NULL,(yyvsp[(1) - (1)]));;} break; case 248: /* Line 1455 of yacc.c */ -#line 1489 "hphp.y" +#line 1482 "hphp.y" { _p->onMemberModifier((yyval),&(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 249: /* Line 1455 of yacc.c */ -#line 1492 "hphp.y" +#line 1485 "hphp.y" { (yyval) = T_PUBLIC;;} break; case 250: /* Line 1455 of yacc.c */ -#line 1493 "hphp.y" +#line 1486 "hphp.y" { (yyval) = T_PROTECTED;;} break; case 251: /* Line 1455 of yacc.c */ -#line 1494 "hphp.y" +#line 1487 "hphp.y" { (yyval) = T_PRIVATE;;} break; case 252: /* Line 1455 of yacc.c */ -#line 1495 "hphp.y" +#line 1488 "hphp.y" { (yyval) = T_STATIC;;} break; case 253: /* Line 1455 of yacc.c */ -#line 1496 "hphp.y" +#line 1489 "hphp.y" { (yyval) = T_ABSTRACT;;} break; case 254: /* Line 1455 of yacc.c */ -#line 1497 "hphp.y" +#line 1490 "hphp.y" { (yyval) = T_FINAL;;} break; case 255: /* Line 1455 of yacc.c */ -#line 1501 "hphp.y" +#line 1494 "hphp.y" { _p->onClassVariable((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 256: /* Line 1455 of yacc.c */ -#line 1503 "hphp.y" +#line 1496 "hphp.y" { _p->onClassVariable((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),&(yyvsp[(5) - (5)]));;} break; case 257: /* Line 1455 of yacc.c */ -#line 1504 "hphp.y" +#line 1497 "hphp.y" { _p->onClassVariable((yyval),0,(yyvsp[(1) - (1)]),0);;} break; case 258: /* Line 1455 of yacc.c */ -#line 1505 "hphp.y" +#line 1498 "hphp.y" { _p->onClassVariable((yyval),0,(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 259: /* Line 1455 of yacc.c */ -#line 1509 "hphp.y" +#line 1502 "hphp.y" { _p->onClassConstant((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 260: /* Line 1455 of yacc.c */ -#line 1510 "hphp.y" +#line 1503 "hphp.y" { _p->onClassConstant((yyval),0,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 261: /* Line 1455 of yacc.c */ -#line 1515 "hphp.y" +#line 1508 "hphp.y" { _p->onNewObject((yyval), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));;} break; case 262: /* Line 1455 of yacc.c */ -#line 1516 "hphp.y" +#line 1509 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 263: /* Line 1455 of yacc.c */ -#line 1520 "hphp.y" +#line 1513 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 264: /* Line 1455 of yacc.c */ -#line 1524 "hphp.y" +#line 1517 "hphp.y" { _p->onExprListElem((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 265: /* Line 1455 of yacc.c */ -#line 1525 "hphp.y" +#line 1518 "hphp.y" { _p->onExprListElem((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 266: /* Line 1455 of yacc.c */ -#line 1529 "hphp.y" +#line 1522 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 267: /* Line 1455 of yacc.c */ -#line 1530 "hphp.y" +#line 1523 "hphp.y" { (yyval).reset();;} break; case 268: /* Line 1455 of yacc.c */ -#line 1534 "hphp.y" +#line 1527 "hphp.y" { _p->onYield((yyval), (yyvsp[(2) - (2)]));;} break; case 269: /* Line 1455 of yacc.c */ -#line 1538 "hphp.y" +#line 1531 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0, true);;} break; case 270: /* Line 1455 of yacc.c */ -#line 1543 "hphp.y" +#line 1536 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]), true);;} break; case 271: /* Line 1455 of yacc.c */ -#line 1547 "hphp.y" +#line 1540 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 272: /* Line 1455 of yacc.c */ -#line 1548 "hphp.y" +#line 1541 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 273: /* Line 1455 of yacc.c */ -#line 1549 "hphp.y" +#line 1542 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 274: /* Line 1455 of yacc.c */ -#line 1553 "hphp.y" +#line 1546 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]));;} break; case 275: /* Line 1455 of yacc.c */ -#line 1554 "hphp.y" +#line 1547 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 276: /* Line 1455 of yacc.c */ -#line 1555 "hphp.y" +#line 1548 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (4)]), (yyvsp[(4) - (4)]), 1);;} break; case 277: /* Line 1455 of yacc.c */ -#line 1558 "hphp.y" +#line 1551 "hphp.y" { _p->onAssignNew((yyval),(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)]));;} break; case 278: /* Line 1455 of yacc.c */ -#line 1559 "hphp.y" +#line 1552 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_CLONE,1);;} break; case 279: /* Line 1455 of yacc.c */ -#line 1560 "hphp.y" +#line 1553 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_PLUS_EQUAL);;} break; case 280: /* Line 1455 of yacc.c */ -#line 1561 "hphp.y" +#line 1554 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MINUS_EQUAL);;} break; case 281: /* Line 1455 of yacc.c */ -#line 1562 "hphp.y" +#line 1555 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MUL_EQUAL);;} break; case 282: /* Line 1455 of yacc.c */ -#line 1563 "hphp.y" +#line 1556 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_DIV_EQUAL);;} break; case 283: /* Line 1455 of yacc.c */ -#line 1564 "hphp.y" +#line 1557 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_CONCAT_EQUAL);;} break; case 284: /* Line 1455 of yacc.c */ -#line 1565 "hphp.y" +#line 1558 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MOD_EQUAL);;} break; case 285: /* Line 1455 of yacc.c */ -#line 1566 "hphp.y" +#line 1559 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_AND_EQUAL);;} break; case 286: /* Line 1455 of yacc.c */ -#line 1567 "hphp.y" +#line 1560 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_OR_EQUAL);;} break; case 287: /* Line 1455 of yacc.c */ -#line 1568 "hphp.y" +#line 1561 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_XOR_EQUAL);;} break; case 288: /* Line 1455 of yacc.c */ -#line 1569 "hphp.y" +#line 1562 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL_EQUAL);;} break; case 289: /* Line 1455 of yacc.c */ -#line 1570 "hphp.y" +#line 1563 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR_EQUAL);;} break; case 290: /* Line 1455 of yacc.c */ -#line 1571 "hphp.y" +#line 1564 "hphp.y" { UEXP((yyval),(yyvsp[(1) - (2)]),T_INC,0);;} break; case 291: /* Line 1455 of yacc.c */ -#line 1572 "hphp.y" +#line 1565 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INC,1);;} break; case 292: /* Line 1455 of yacc.c */ -#line 1573 "hphp.y" +#line 1566 "hphp.y" { UEXP((yyval),(yyvsp[(1) - (2)]),T_DEC,0);;} break; case 293: /* Line 1455 of yacc.c */ -#line 1574 "hphp.y" +#line 1567 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_DEC,1);;} break; case 294: /* Line 1455 of yacc.c */ -#line 1575 "hphp.y" +#line 1568 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_OR);;} break; case 295: /* Line 1455 of yacc.c */ -#line 1576 "hphp.y" +#line 1569 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_AND);;} break; case 296: /* Line 1455 of yacc.c */ -#line 1577 "hphp.y" +#line 1570 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_OR);;} break; case 297: /* Line 1455 of yacc.c */ -#line 1578 "hphp.y" +#line 1571 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_AND);;} break; case 298: /* Line 1455 of yacc.c */ -#line 1579 "hphp.y" +#line 1572 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_XOR);;} break; case 299: /* Line 1455 of yacc.c */ -#line 1580 "hphp.y" +#line 1573 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'|');;} break; case 300: /* Line 1455 of yacc.c */ -#line 1581 "hphp.y" +#line 1574 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'&');;} break; case 301: /* Line 1455 of yacc.c */ -#line 1582 "hphp.y" +#line 1575 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'^');;} break; case 302: /* Line 1455 of yacc.c */ -#line 1583 "hphp.y" +#line 1576 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'.');;} break; case 303: /* Line 1455 of yacc.c */ -#line 1584 "hphp.y" +#line 1577 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'+');;} break; case 304: /* Line 1455 of yacc.c */ -#line 1585 "hphp.y" +#line 1578 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'-');;} break; case 305: /* Line 1455 of yacc.c */ -#line 1586 "hphp.y" +#line 1579 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'*');;} break; case 306: /* Line 1455 of yacc.c */ -#line 1587 "hphp.y" +#line 1580 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'/');;} break; case 307: /* Line 1455 of yacc.c */ -#line 1588 "hphp.y" +#line 1581 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'%');;} break; case 308: /* Line 1455 of yacc.c */ -#line 1589 "hphp.y" +#line 1582 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL);;} break; case 309: /* Line 1455 of yacc.c */ -#line 1590 "hphp.y" +#line 1583 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR);;} break; case 310: /* Line 1455 of yacc.c */ -#line 1591 "hphp.y" +#line 1584 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 311: /* Line 1455 of yacc.c */ -#line 1592 "hphp.y" +#line 1585 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 312: /* Line 1455 of yacc.c */ -#line 1593 "hphp.y" +#line 1586 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'!',1);;} break; case 313: /* Line 1455 of yacc.c */ -#line 1594 "hphp.y" +#line 1587 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'~',1);;} break; case 314: /* Line 1455 of yacc.c */ -#line 1595 "hphp.y" +#line 1588 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_IDENTICAL);;} break; case 315: /* Line 1455 of yacc.c */ -#line 1596 "hphp.y" +#line 1589 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_IDENTICAL);;} break; case 316: /* Line 1455 of yacc.c */ -#line 1597 "hphp.y" +#line 1590 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_EQUAL);;} break; case 317: /* Line 1455 of yacc.c */ -#line 1598 "hphp.y" +#line 1591 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_EQUAL);;} break; case 318: /* Line 1455 of yacc.c */ -#line 1599 "hphp.y" +#line 1592 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'<');;} break; case 319: /* Line 1455 of yacc.c */ -#line 1600 "hphp.y" +#line 1593 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_SMALLER_OR_EQUAL);;} break; @@ -7798,14 +7791,14 @@ yyreduce: case 320: /* Line 1455 of yacc.c */ -#line 1602 "hphp.y" +#line 1595 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'>');;} break; case 321: /* Line 1455 of yacc.c */ -#line 1603 "hphp.y" +#line 1596 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_GREATER_OR_EQUAL);;} break; @@ -7813,140 +7806,140 @@ yyreduce: case 322: /* Line 1455 of yacc.c */ -#line 1606 "hphp.y" +#line 1599 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_INSTANCEOF);;} break; case 323: /* Line 1455 of yacc.c */ -#line 1607 "hphp.y" +#line 1600 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 324: /* Line 1455 of yacc.c */ -#line 1608 "hphp.y" +#line 1601 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (5)]), &(yyvsp[(3) - (5)]), (yyvsp[(5) - (5)]));;} break; case 325: /* Line 1455 of yacc.c */ -#line 1609 "hphp.y" +#line 1602 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (4)]), 0, (yyvsp[(4) - (4)]));;} break; case 326: /* Line 1455 of yacc.c */ -#line 1610 "hphp.y" +#line 1603 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 327: /* Line 1455 of yacc.c */ -#line 1611 "hphp.y" +#line 1604 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INT_CAST,1);;} break; case 328: /* Line 1455 of yacc.c */ -#line 1612 "hphp.y" +#line 1605 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_DOUBLE_CAST,1);;} break; case 329: /* Line 1455 of yacc.c */ -#line 1613 "hphp.y" +#line 1606 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_STRING_CAST,1);;} break; case 330: /* Line 1455 of yacc.c */ -#line 1614 "hphp.y" +#line 1607 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_ARRAY_CAST,1);;} break; case 331: /* Line 1455 of yacc.c */ -#line 1615 "hphp.y" +#line 1608 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_OBJECT_CAST,1);;} break; case 332: /* Line 1455 of yacc.c */ -#line 1616 "hphp.y" +#line 1609 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_BOOL_CAST,1);;} break; case 333: /* Line 1455 of yacc.c */ -#line 1617 "hphp.y" +#line 1610 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_UNSET_CAST,1);;} break; case 334: /* Line 1455 of yacc.c */ -#line 1618 "hphp.y" +#line 1611 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_EXIT,1);;} break; case 335: /* Line 1455 of yacc.c */ -#line 1619 "hphp.y" +#line 1612 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'@',1);;} break; case 336: /* Line 1455 of yacc.c */ -#line 1620 "hphp.y" +#line 1613 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 337: /* Line 1455 of yacc.c */ -#line 1621 "hphp.y" +#line 1614 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 338: /* Line 1455 of yacc.c */ -#line 1622 "hphp.y" +#line 1615 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 339: /* Line 1455 of yacc.c */ -#line 1623 "hphp.y" +#line 1616 "hphp.y" { _p->onEncapsList((yyval),'`',(yyvsp[(2) - (3)]));;} break; case 340: /* Line 1455 of yacc.c */ -#line 1624 "hphp.y" +#line 1617 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_PRINT,1);;} break; case 341: /* Line 1455 of yacc.c */ -#line 1626 "hphp.y" +#line 1619 "hphp.y" { Token t; _p->onClosureStart(t); _p->pushLabelInfo();;} break; @@ -7954,7 +7947,7 @@ yyreduce: case 342: /* Line 1455 of yacc.c */ -#line 1630 "hphp.y" +#line 1623 "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();;} @@ -7963,7 +7956,7 @@ yyreduce: case 343: /* Line 1455 of yacc.c */ -#line 1634 "hphp.y" +#line 1627 "hphp.y" { Token t; _p->onClosureStart(t); _p->pushLabelInfo();;} break; @@ -7971,7 +7964,7 @@ yyreduce: case 344: /* Line 1455 of yacc.c */ -#line 1638 "hphp.y" +#line 1631 "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();;} @@ -7980,28 +7973,28 @@ yyreduce: case 345: /* Line 1455 of yacc.c */ -#line 1641 "hphp.y" +#line 1634 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 346: /* Line 1455 of yacc.c */ -#line 1642 "hphp.y" +#line 1635 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 347: /* Line 1455 of yacc.c */ -#line 1643 "hphp.y" +#line 1636 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 348: /* Line 1455 of yacc.c */ -#line 1650 "hphp.y" +#line 1643 "hphp.y" { validate_shape_keyname((yyvsp[(3) - (5)]), _p); _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; @@ -8009,7 +8002,7 @@ yyreduce: case 349: /* Line 1455 of yacc.c */ -#line 1654 "hphp.y" +#line 1647 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (3)]), _p); _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; @@ -8017,7 +8010,7 @@ yyreduce: case 350: /* Line 1455 of yacc.c */ -#line 1662 "hphp.y" +#line 1655 "hphp.y" { validate_shape_keyname((yyvsp[(3) - (5)]), _p); _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; @@ -8025,7 +8018,7 @@ yyreduce: case 351: /* Line 1455 of yacc.c */ -#line 1666 "hphp.y" +#line 1659 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (3)]), _p); _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; @@ -8033,57 +8026,57 @@ yyreduce: case 352: /* Line 1455 of yacc.c */ -#line 1672 "hphp.y" +#line 1665 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 353: /* Line 1455 of yacc.c */ -#line 1673 "hphp.y" +#line 1666 "hphp.y" { (yyval).reset(); ;} break; case 354: /* Line 1455 of yacc.c */ -#line 1678 "hphp.y" +#line 1671 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 355: /* Line 1455 of yacc.c */ -#line 1679 "hphp.y" +#line 1672 "hphp.y" { (yyval).reset(); ;} break; case 356: /* Line 1455 of yacc.c */ -#line 1683 "hphp.y" - { only_in_hack_mode(_p); +#line 1676 "hphp.y" + { only_in_hh_syntax(_p); _p->onArray((yyval), (yyvsp[(3) - (4)]), T_ARRAY); ;} break; case 357: /* Line 1455 of yacc.c */ -#line 1688 "hphp.y" +#line 1681 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY);;} break; case 358: /* Line 1455 of yacc.c */ -#line 1689 "hphp.y" +#line 1682 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 359: /* Line 1455 of yacc.c */ -#line 1694 "hphp.y" +#line 1687 "hphp.y" { Token t; _p->onName(t,(yyvsp[(1) - (4)]),Parser::StringName); BEXP((yyval),t,(yyvsp[(3) - (4)]),T_COLLECTION);;} @@ -8092,7 +8085,7 @@ yyreduce: case 360: /* Line 1455 of yacc.c */ -#line 1701 "hphp.y" +#line 1694 "hphp.y" { Token t; _p->onName(t,(yyvsp[(1) - (4)]),Parser::StringName); BEXP((yyval),t,(yyvsp[(3) - (4)]),T_COLLECTION);;} @@ -8101,91 +8094,91 @@ yyreduce: case 361: /* Line 1455 of yacc.c */ -#line 1708 "hphp.y" +#line 1701 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 362: /* Line 1455 of yacc.c */ -#line 1710 "hphp.y" +#line 1703 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 363: /* Line 1455 of yacc.c */ -#line 1714 "hphp.y" +#line 1707 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 364: /* Line 1455 of yacc.c */ -#line 1715 "hphp.y" +#line 1708 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 365: /* Line 1455 of yacc.c */ -#line 1716 "hphp.y" +#line 1709 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 366: /* Line 1455 of yacc.c */ -#line 1723 "hphp.y" +#line 1716 "hphp.y" { (yyval) = (yyvsp[(3) - (5)]);;} break; case 367: /* Line 1455 of yacc.c */ -#line 1724 "hphp.y" +#line 1717 "hphp.y" { (yyval).reset();;} break; case 368: /* Line 1455 of yacc.c */ -#line 1728 "hphp.y" +#line 1721 "hphp.y" { _p->onClosureParam((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 369: /* Line 1455 of yacc.c */ -#line 1729 "hphp.y" +#line 1722 "hphp.y" { _p->onClosureParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 370: /* Line 1455 of yacc.c */ -#line 1730 "hphp.y" +#line 1723 "hphp.y" { _p->onClosureParam((yyval), 0,(yyvsp[(1) - (1)]),0);;} break; case 371: /* Line 1455 of yacc.c */ -#line 1731 "hphp.y" +#line 1724 "hphp.y" { _p->onClosureParam((yyval), 0,(yyvsp[(2) - (2)]),1);;} break; case 372: /* Line 1455 of yacc.c */ -#line 1738 "hphp.y" +#line 1731 "hphp.y" { xhp_tag(_p,(yyval),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]));;} break; case 373: /* Line 1455 of yacc.c */ -#line 1741 "hphp.y" +#line 1734 "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); @@ -8196,7 +8189,7 @@ yyreduce: case 374: /* Line 1455 of yacc.c */ -#line 1748 "hphp.y" +#line 1741 "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); @@ -8207,49 +8200,49 @@ yyreduce: case 375: /* Line 1455 of yacc.c */ -#line 1755 "hphp.y" +#line 1748 "hphp.y" { (yyval).reset(); (yyval).setText("");;} break; case 376: /* Line 1455 of yacc.c */ -#line 1756 "hphp.y" +#line 1749 "hphp.y" { (yyval).reset(); (yyval).setText((yyvsp[(1) - (1)]));;} break; case 377: /* Line 1455 of yacc.c */ -#line 1761 "hphp.y" +#line 1754 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (4)]),&(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]),0);;} break; case 378: /* Line 1455 of yacc.c */ -#line 1762 "hphp.y" +#line 1755 "hphp.y" { (yyval).reset();;} break; case 379: /* Line 1455 of yacc.c */ -#line 1765 "hphp.y" +#line 1758 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (2)]),0,(yyvsp[(2) - (2)]),0);;} break; case 380: /* Line 1455 of yacc.c */ -#line 1766 "hphp.y" +#line 1759 "hphp.y" { (yyval).reset();;} break; case 381: /* Line 1455 of yacc.c */ -#line 1769 "hphp.y" +#line 1762 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -8257,7 +8250,7 @@ yyreduce: case 382: /* Line 1455 of yacc.c */ -#line 1773 "hphp.y" +#line 1766 "hphp.y" { (yyvsp[(1) - (1)]).xhpDecode(); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} @@ -8266,14 +8259,14 @@ yyreduce: case 383: /* Line 1455 of yacc.c */ -#line 1776 "hphp.y" +#line 1769 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 384: /* Line 1455 of yacc.c */ -#line 1779 "hphp.y" +#line 1772 "hphp.y" { (yyval).reset(); if ((yyvsp[(1) - (1)]).htmlTrim()) { (yyvsp[(1) - (1)]).xhpDecode(); @@ -8286,602 +8279,602 @@ yyreduce: case 385: /* Line 1455 of yacc.c */ -#line 1786 "hphp.y" +#line 1779 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); ;} break; case 386: /* Line 1455 of yacc.c */ -#line 1787 "hphp.y" +#line 1780 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 387: /* Line 1455 of yacc.c */ -#line 1791 "hphp.y" +#line 1784 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 388: /* Line 1455 of yacc.c */ -#line 1793 "hphp.y" +#line 1786 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + ":" + (yyvsp[(3) - (3)]);;} break; case 389: /* Line 1455 of yacc.c */ -#line 1795 "hphp.y" +#line 1788 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + "-" + (yyvsp[(3) - (3)]);;} break; case 390: /* Line 1455 of yacc.c */ -#line 1798 "hphp.y" +#line 1791 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 391: /* Line 1455 of yacc.c */ -#line 1799 "hphp.y" +#line 1792 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 392: /* Line 1455 of yacc.c */ -#line 1800 "hphp.y" +#line 1793 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 393: /* Line 1455 of yacc.c */ -#line 1801 "hphp.y" +#line 1794 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 394: /* Line 1455 of yacc.c */ -#line 1802 "hphp.y" +#line 1795 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 395: /* Line 1455 of yacc.c */ -#line 1803 "hphp.y" +#line 1796 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 396: /* Line 1455 of yacc.c */ -#line 1804 "hphp.y" +#line 1797 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 397: /* Line 1455 of yacc.c */ -#line 1805 "hphp.y" +#line 1798 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 398: /* Line 1455 of yacc.c */ -#line 1806 "hphp.y" +#line 1799 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 399: /* Line 1455 of yacc.c */ -#line 1807 "hphp.y" +#line 1800 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 400: /* Line 1455 of yacc.c */ -#line 1808 "hphp.y" +#line 1801 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 401: /* Line 1455 of yacc.c */ -#line 1809 "hphp.y" +#line 1802 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 402: /* Line 1455 of yacc.c */ -#line 1810 "hphp.y" +#line 1803 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 403: /* Line 1455 of yacc.c */ -#line 1811 "hphp.y" +#line 1804 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 404: /* Line 1455 of yacc.c */ -#line 1812 "hphp.y" +#line 1805 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 405: /* Line 1455 of yacc.c */ -#line 1813 "hphp.y" +#line 1806 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 406: /* Line 1455 of yacc.c */ -#line 1814 "hphp.y" +#line 1807 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 407: /* Line 1455 of yacc.c */ -#line 1815 "hphp.y" +#line 1808 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 408: /* Line 1455 of yacc.c */ -#line 1816 "hphp.y" +#line 1809 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 409: /* Line 1455 of yacc.c */ -#line 1817 "hphp.y" +#line 1810 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 410: /* Line 1455 of yacc.c */ -#line 1818 "hphp.y" +#line 1811 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 411: /* Line 1455 of yacc.c */ -#line 1819 "hphp.y" +#line 1812 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 412: /* Line 1455 of yacc.c */ -#line 1820 "hphp.y" +#line 1813 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 413: /* Line 1455 of yacc.c */ -#line 1821 "hphp.y" +#line 1814 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 414: /* Line 1455 of yacc.c */ -#line 1822 "hphp.y" +#line 1815 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 415: /* Line 1455 of yacc.c */ -#line 1823 "hphp.y" +#line 1816 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 416: /* Line 1455 of yacc.c */ -#line 1824 "hphp.y" +#line 1817 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 417: /* Line 1455 of yacc.c */ -#line 1825 "hphp.y" +#line 1818 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 418: /* Line 1455 of yacc.c */ -#line 1826 "hphp.y" +#line 1819 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 419: /* Line 1455 of yacc.c */ -#line 1827 "hphp.y" +#line 1820 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 420: /* Line 1455 of yacc.c */ -#line 1828 "hphp.y" +#line 1821 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 421: /* Line 1455 of yacc.c */ -#line 1829 "hphp.y" +#line 1822 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 422: /* Line 1455 of yacc.c */ -#line 1830 "hphp.y" +#line 1823 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 423: /* Line 1455 of yacc.c */ -#line 1831 "hphp.y" +#line 1824 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 424: /* Line 1455 of yacc.c */ -#line 1832 "hphp.y" +#line 1825 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 425: /* Line 1455 of yacc.c */ -#line 1833 "hphp.y" +#line 1826 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 426: /* Line 1455 of yacc.c */ -#line 1834 "hphp.y" +#line 1827 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 427: /* Line 1455 of yacc.c */ -#line 1835 "hphp.y" +#line 1828 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 428: /* Line 1455 of yacc.c */ -#line 1836 "hphp.y" +#line 1829 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 429: /* Line 1455 of yacc.c */ -#line 1837 "hphp.y" +#line 1830 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 430: /* Line 1455 of yacc.c */ -#line 1838 "hphp.y" +#line 1831 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 431: /* Line 1455 of yacc.c */ -#line 1839 "hphp.y" +#line 1832 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 432: /* Line 1455 of yacc.c */ -#line 1840 "hphp.y" +#line 1833 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 433: /* Line 1455 of yacc.c */ -#line 1841 "hphp.y" +#line 1834 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 434: /* Line 1455 of yacc.c */ -#line 1842 "hphp.y" +#line 1835 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 435: /* Line 1455 of yacc.c */ -#line 1843 "hphp.y" +#line 1836 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 436: /* Line 1455 of yacc.c */ -#line 1844 "hphp.y" +#line 1837 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 437: /* Line 1455 of yacc.c */ -#line 1845 "hphp.y" +#line 1838 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 438: /* Line 1455 of yacc.c */ -#line 1846 "hphp.y" +#line 1839 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 439: /* Line 1455 of yacc.c */ -#line 1847 "hphp.y" +#line 1840 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 440: /* Line 1455 of yacc.c */ -#line 1848 "hphp.y" +#line 1841 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 441: /* Line 1455 of yacc.c */ -#line 1849 "hphp.y" +#line 1842 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 442: /* Line 1455 of yacc.c */ -#line 1850 "hphp.y" +#line 1843 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 443: /* Line 1455 of yacc.c */ -#line 1851 "hphp.y" +#line 1844 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 444: /* Line 1455 of yacc.c */ -#line 1852 "hphp.y" +#line 1845 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 445: /* Line 1455 of yacc.c */ -#line 1853 "hphp.y" +#line 1846 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 446: /* Line 1455 of yacc.c */ -#line 1854 "hphp.y" +#line 1847 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 447: /* Line 1455 of yacc.c */ -#line 1855 "hphp.y" +#line 1848 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 448: /* Line 1455 of yacc.c */ -#line 1856 "hphp.y" +#line 1849 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 449: /* Line 1455 of yacc.c */ -#line 1857 "hphp.y" +#line 1850 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 450: /* Line 1455 of yacc.c */ -#line 1858 "hphp.y" +#line 1851 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 451: /* Line 1455 of yacc.c */ -#line 1859 "hphp.y" +#line 1852 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 452: /* Line 1455 of yacc.c */ -#line 1860 "hphp.y" +#line 1853 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 453: /* Line 1455 of yacc.c */ -#line 1861 "hphp.y" +#line 1854 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 454: /* Line 1455 of yacc.c */ -#line 1862 "hphp.y" +#line 1855 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 455: /* Line 1455 of yacc.c */ -#line 1863 "hphp.y" +#line 1856 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 456: /* Line 1455 of yacc.c */ -#line 1864 "hphp.y" +#line 1857 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 457: /* Line 1455 of yacc.c */ -#line 1865 "hphp.y" +#line 1858 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 458: /* Line 1455 of yacc.c */ -#line 1866 "hphp.y" +#line 1859 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 459: /* Line 1455 of yacc.c */ -#line 1867 "hphp.y" +#line 1860 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 460: /* Line 1455 of yacc.c */ -#line 1868 "hphp.y" +#line 1861 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 461: /* Line 1455 of yacc.c */ -#line 1869 "hphp.y" +#line 1862 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 462: /* Line 1455 of yacc.c */ -#line 1870 "hphp.y" +#line 1863 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 463: /* Line 1455 of yacc.c */ -#line 1871 "hphp.y" +#line 1864 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 464: /* Line 1455 of yacc.c */ -#line 1872 "hphp.y" +#line 1865 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 465: /* Line 1455 of yacc.c */ -#line 1877 "hphp.y" +#line 1870 "hphp.y" { _p->onCall((yyval),0,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 466: /* Line 1455 of yacc.c */ -#line 1881 "hphp.y" +#line 1874 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 467: /* Line 1455 of yacc.c */ -#line 1882 "hphp.y" +#line 1875 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 468: /* Line 1455 of yacc.c */ -#line 1885 "hphp.y" +#line 1878 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 469: /* Line 1455 of yacc.c */ -#line 1886 "hphp.y" +#line 1879 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StaticName);;} break; case 470: /* Line 1455 of yacc.c */ -#line 1887 "hphp.y" +#line 1880 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]), Parser::StaticClassExprName);;} break; @@ -8889,98 +8882,98 @@ yyreduce: case 471: /* Line 1455 of yacc.c */ -#line 1891 "hphp.y" +#line 1884 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 472: /* Line 1455 of yacc.c */ -#line 1892 "hphp.y" +#line 1885 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StaticName);;} break; case 473: /* Line 1455 of yacc.c */ -#line 1893 "hphp.y" +#line 1886 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::ExprName);;} break; case 474: /* Line 1455 of yacc.c */ -#line 1897 "hphp.y" +#line 1890 "hphp.y" { (yyval).reset();;} break; case 475: /* Line 1455 of yacc.c */ -#line 1898 "hphp.y" +#line 1891 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 476: /* Line 1455 of yacc.c */ -#line 1899 "hphp.y" +#line 1892 "hphp.y" { (yyval).reset();;} break; case 477: /* Line 1455 of yacc.c */ -#line 1903 "hphp.y" +#line 1896 "hphp.y" { (yyval).reset();;} break; case 478: /* Line 1455 of yacc.c */ -#line 1904 "hphp.y" +#line 1897 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (1)]), 0);;} break; case 479: /* Line 1455 of yacc.c */ -#line 1905 "hphp.y" +#line 1898 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 480: /* Line 1455 of yacc.c */ -#line 1909 "hphp.y" +#line 1902 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 481: /* Line 1455 of yacc.c */ -#line 1910 "hphp.y" +#line 1903 "hphp.y" { (yyval).reset();;} break; case 482: /* Line 1455 of yacc.c */ -#line 1914 "hphp.y" +#line 1907 "hphp.y" { _p->onScalar((yyval), T_LNUMBER, (yyvsp[(1) - (1)]));;} break; case 483: /* Line 1455 of yacc.c */ -#line 1915 "hphp.y" +#line 1908 "hphp.y" { _p->onScalar((yyval), T_DNUMBER, (yyvsp[(1) - (1)]));;} break; case 484: /* Line 1455 of yacc.c */ -#line 1916 "hphp.y" +#line 1909 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -8988,148 +8981,148 @@ yyreduce: case 485: /* Line 1455 of yacc.c */ -#line 1918 "hphp.y" +#line 1911 "hphp.y" { _p->onScalar((yyval), T_LINE, (yyvsp[(1) - (1)]));;} break; case 486: /* Line 1455 of yacc.c */ -#line 1919 "hphp.y" +#line 1912 "hphp.y" { _p->onScalar((yyval), T_FILE, (yyvsp[(1) - (1)]));;} break; case 487: /* Line 1455 of yacc.c */ -#line 1920 "hphp.y" +#line 1913 "hphp.y" { _p->onScalar((yyval), T_DIR, (yyvsp[(1) - (1)]));;} break; case 488: /* Line 1455 of yacc.c */ -#line 1921 "hphp.y" +#line 1914 "hphp.y" { _p->onScalar((yyval), T_CLASS_C, (yyvsp[(1) - (1)]));;} break; case 489: /* Line 1455 of yacc.c */ -#line 1922 "hphp.y" +#line 1915 "hphp.y" { _p->onScalar((yyval), T_TRAIT_C, (yyvsp[(1) - (1)]));;} break; case 490: /* Line 1455 of yacc.c */ -#line 1923 "hphp.y" +#line 1916 "hphp.y" { _p->onScalar((yyval), T_METHOD_C, (yyvsp[(1) - (1)]));;} break; case 491: /* Line 1455 of yacc.c */ -#line 1924 "hphp.y" +#line 1917 "hphp.y" { _p->onScalar((yyval), T_FUNC_C, (yyvsp[(1) - (1)]));;} break; case 492: /* Line 1455 of yacc.c */ -#line 1925 "hphp.y" +#line 1918 "hphp.y" { _p->onScalar((yyval), T_NS_C, (yyvsp[(1) - (1)]));;} break; case 493: /* Line 1455 of yacc.c */ -#line 1926 "hphp.y" +#line 1919 "hphp.y" { _p->onScalar((yyval), T_COMPILER_HALT_OFFSET, (yyvsp[(1) - (1)]));;} break; case 494: /* Line 1455 of yacc.c */ -#line 1929 "hphp.y" +#line 1922 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(2) - (3)]));;} break; case 495: /* Line 1455 of yacc.c */ -#line 1931 "hphp.y" +#line 1924 "hphp.y" { (yyval).setText(""); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyval));;} break; case 496: /* Line 1455 of yacc.c */ -#line 1935 "hphp.y" +#line 1928 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 497: /* Line 1455 of yacc.c */ -#line 1936 "hphp.y" +#line 1929 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 498: /* Line 1455 of yacc.c */ -#line 1937 "hphp.y" +#line 1930 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 499: /* Line 1455 of yacc.c */ -#line 1938 "hphp.y" +#line 1931 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 500: /* Line 1455 of yacc.c */ -#line 1940 "hphp.y" +#line 1933 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 501: /* Line 1455 of yacc.c */ -#line 1942 "hphp.y" - { only_in_hack_mode(_p); +#line 1935 "hphp.y" + { only_in_hh_syntax(_p); _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 502: /* Line 1455 of yacc.c */ -#line 1944 "hphp.y" +#line 1937 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 503: /* Line 1455 of yacc.c */ -#line 1945 "hphp.y" +#line 1938 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 504: /* Line 1455 of yacc.c */ -#line 1951 "hphp.y" +#line 1944 "hphp.y" { _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; case 505: /* Line 1455 of yacc.c */ -#line 1953 "hphp.y" +#line 1946 "hphp.y" { (yyvsp[(1) - (3)]).xhpLabel(); _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; @@ -9137,49 +9130,49 @@ yyreduce: case 506: /* Line 1455 of yacc.c */ -#line 1958 "hphp.y" +#line 1951 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 507: /* Line 1455 of yacc.c */ -#line 1959 "hphp.y" +#line 1952 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 508: /* Line 1455 of yacc.c */ -#line 1960 "hphp.y" +#line 1953 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 509: /* Line 1455 of yacc.c */ -#line 1961 "hphp.y" +#line 1954 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 510: /* Line 1455 of yacc.c */ -#line 1962 "hphp.y" +#line 1955 "hphp.y" { _p->onEncapsList((yyval),'"',(yyvsp[(2) - (3)]));;} break; case 511: /* Line 1455 of yacc.c */ -#line 1963 "hphp.y" +#line 1956 "hphp.y" { _p->onEncapsList((yyval),'\'',(yyvsp[(2) - (3)]));;} break; case 512: /* Line 1455 of yacc.c */ -#line 1965 "hphp.y" +#line 1958 "hphp.y" { _p->onEncapsList((yyval),T_START_HEREDOC, (yyvsp[(2) - (3)]));;} break; @@ -9187,91 +9180,91 @@ yyreduce: case 513: /* Line 1455 of yacc.c */ -#line 1970 "hphp.y" +#line 1963 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 514: /* Line 1455 of yacc.c */ -#line 1971 "hphp.y" +#line 1964 "hphp.y" { (yyval).reset();;} break; case 515: /* Line 1455 of yacc.c */ -#line 1975 "hphp.y" +#line 1968 "hphp.y" { (yyval).reset();;} break; case 516: /* Line 1455 of yacc.c */ -#line 1976 "hphp.y" +#line 1969 "hphp.y" { (yyval).reset();;} break; case 517: /* Line 1455 of yacc.c */ -#line 1979 "hphp.y" - { only_in_hphp_syntax(_p); (yyval).reset();;} +#line 1972 "hphp.y" + { only_in_hh_syntax(_p); (yyval).reset();;} break; case 518: /* Line 1455 of yacc.c */ -#line 1980 "hphp.y" +#line 1973 "hphp.y" { (yyval).reset();;} break; case 519: /* Line 1455 of yacc.c */ -#line 1986 "hphp.y" +#line 1979 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 520: /* Line 1455 of yacc.c */ -#line 1988 "hphp.y" +#line 1981 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 521: /* Line 1455 of yacc.c */ -#line 1990 "hphp.y" +#line 1983 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 522: /* Line 1455 of yacc.c */ -#line 1991 "hphp.y" +#line 1984 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 523: /* Line 1455 of yacc.c */ -#line 1995 "hphp.y" +#line 1988 "hphp.y" { _p->onScalar((yyval), T_LNUMBER, (yyvsp[(1) - (1)]));;} break; case 524: /* Line 1455 of yacc.c */ -#line 1996 "hphp.y" +#line 1989 "hphp.y" { _p->onScalar((yyval), T_DNUMBER, (yyvsp[(1) - (1)]));;} break; case 525: /* Line 1455 of yacc.c */ -#line 1997 "hphp.y" +#line 1990 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -9279,162 +9272,162 @@ yyreduce: case 526: /* Line 1455 of yacc.c */ -#line 2001 "hphp.y" +#line 1994 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(2) - (3)]));;} break; case 527: /* Line 1455 of yacc.c */ -#line 2003 "hphp.y" +#line 1996 "hphp.y" { (yyval).setText(""); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyval));;} break; case 528: /* Line 1455 of yacc.c */ -#line 2006 "hphp.y" +#line 1999 "hphp.y" { _p->onScalar((yyval),T_LNUMBER,(yyvsp[(1) - (1)]));;} break; case 529: /* Line 1455 of yacc.c */ -#line 2007 "hphp.y" +#line 2000 "hphp.y" { _p->onScalar((yyval),T_DNUMBER,(yyvsp[(1) - (1)]));;} break; case 530: /* Line 1455 of yacc.c */ -#line 2008 "hphp.y" +#line 2001 "hphp.y" { constant_ae(_p,(yyval),(yyvsp[(1) - (1)]));;} break; case 531: /* Line 1455 of yacc.c */ -#line 2011 "hphp.y" +#line 2004 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 532: /* Line 1455 of yacc.c */ -#line 2012 "hphp.y" +#line 2005 "hphp.y" { constant_ae(_p,(yyval),(yyvsp[(1) - (1)]));;} break; case 533: /* Line 1455 of yacc.c */ -#line 2013 "hphp.y" +#line 2006 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 534: /* Line 1455 of yacc.c */ -#line 2014 "hphp.y" +#line 2007 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 535: /* Line 1455 of yacc.c */ -#line 2016 "hphp.y" +#line 2009 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY);;} break; case 536: /* Line 1455 of yacc.c */ -#line 2017 "hphp.y" +#line 2010 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 537: /* Line 1455 of yacc.c */ -#line 2019 "hphp.y" - { only_in_hack_mode(_p); +#line 2012 "hphp.y" + { only_in_hh_syntax(_p); _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 538: /* Line 1455 of yacc.c */ -#line 2025 "hphp.y" +#line 2018 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 539: /* Line 1455 of yacc.c */ -#line 2026 "hphp.y" +#line 2019 "hphp.y" { (yyval).reset();;} break; case 540: /* Line 1455 of yacc.c */ -#line 2031 "hphp.y" +#line 2024 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 541: /* Line 1455 of yacc.c */ -#line 2033 "hphp.y" +#line 2026 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 542: /* Line 1455 of yacc.c */ -#line 2035 "hphp.y" +#line 2028 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 543: /* Line 1455 of yacc.c */ -#line 2036 "hphp.y" +#line 2029 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 544: /* Line 1455 of yacc.c */ -#line 2040 "hphp.y" +#line 2033 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 545: /* Line 1455 of yacc.c */ -#line 2041 "hphp.y" +#line 2034 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 546: /* Line 1455 of yacc.c */ -#line 2046 "hphp.y" +#line 2039 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 547: /* Line 1455 of yacc.c */ -#line 2047 "hphp.y" +#line 2040 "hphp.y" { (yyval).reset(); ;} break; case 548: /* Line 1455 of yacc.c */ -#line 2052 "hphp.y" +#line 2045 "hphp.y" { validate_shape_keyname((yyvsp[(3) - (5)]), _p); _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; @@ -9442,7 +9435,7 @@ yyreduce: case 549: /* Line 1455 of yacc.c */ -#line 2056 "hphp.y" +#line 2049 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (3)]), _p); _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; @@ -9450,28 +9443,28 @@ yyreduce: case 550: /* Line 1455 of yacc.c */ -#line 2062 "hphp.y" +#line 2055 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 551: /* Line 1455 of yacc.c */ -#line 2063 "hphp.y" +#line 2056 "hphp.y" { (yyval).reset();;} break; case 552: /* Line 1455 of yacc.c */ -#line 2066 "hphp.y" +#line 2059 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 553: /* Line 1455 of yacc.c */ -#line 2067 "hphp.y" +#line 2060 "hphp.y" { Token t; t.reset(); _p->onArray((yyval),t,T_ARRAY);;} break; @@ -9479,693 +9472,693 @@ yyreduce: case 554: /* Line 1455 of yacc.c */ -#line 2074 "hphp.y" +#line 2067 "hphp.y" { _p->onUserAttribute((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]));;} break; case 555: /* Line 1455 of yacc.c */ -#line 2076 "hphp.y" +#line 2069 "hphp.y" { _p->onUserAttribute((yyval), 0,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 556: /* Line 1455 of yacc.c */ -#line 2079 "hphp.y" +#line 2072 "hphp.y" { user_attribute_check(_p);;} break; case 557: /* Line 1455 of yacc.c */ -#line 2081 "hphp.y" +#line 2074 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 558: /* Line 1455 of yacc.c */ -#line 2084 "hphp.y" +#line 2077 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 559: /* Line 1455 of yacc.c */ -#line 2087 "hphp.y" +#line 2080 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 560: /* Line 1455 of yacc.c */ -#line 2088 "hphp.y" +#line 2081 "hphp.y" { (yyval).reset();;} break; case 561: /* Line 1455 of yacc.c */ -#line 2092 "hphp.y" +#line 2085 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 562: /* Line 1455 of yacc.c */ -#line 2094 "hphp.y" +#line 2087 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 563: /* Line 1455 of yacc.c */ -#line 2098 "hphp.y" +#line 2091 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 564: /* Line 1455 of yacc.c */ -#line 2099 "hphp.y" +#line 2092 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]);;} break; case 565: /* Line 1455 of yacc.c */ -#line 2103 "hphp.y" +#line 2096 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 566: /* Line 1455 of yacc.c */ -#line 2104 "hphp.y" +#line 2097 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 567: /* Line 1455 of yacc.c */ -#line 2108 "hphp.y" +#line 2101 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 568: /* Line 1455 of yacc.c */ -#line 2109 "hphp.y" +#line 2102 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 569: /* Line 1455 of yacc.c */ -#line 2114 "hphp.y" +#line 2107 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 570: /* Line 1455 of yacc.c */ -#line 2115 "hphp.y" +#line 2108 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 571: /* Line 1455 of yacc.c */ -#line 2119 "hphp.y" +#line 2112 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 572: /* Line 1455 of yacc.c */ -#line 2120 "hphp.y" +#line 2113 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 573: /* Line 1455 of yacc.c */ -#line 2121 "hphp.y" +#line 2114 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 574: /* Line 1455 of yacc.c */ -#line 2122 "hphp.y" +#line 2115 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 575: /* Line 1455 of yacc.c */ -#line 2123 "hphp.y" +#line 2116 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 576: /* Line 1455 of yacc.c */ -#line 2124 "hphp.y" +#line 2117 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 577: /* Line 1455 of yacc.c */ -#line 2125 "hphp.y" +#line 2118 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 578: /* Line 1455 of yacc.c */ -#line 2128 "hphp.y" +#line 2121 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 579: /* Line 1455 of yacc.c */ -#line 2130 "hphp.y" +#line 2123 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 580: /* Line 1455 of yacc.c */ -#line 2131 "hphp.y" +#line 2124 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 581: /* Line 1455 of yacc.c */ -#line 2135 "hphp.y" +#line 2128 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 582: /* Line 1455 of yacc.c */ -#line 2136 "hphp.y" +#line 2129 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 583: /* Line 1455 of yacc.c */ -#line 2137 "hphp.y" +#line 2130 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 584: /* Line 1455 of yacc.c */ -#line 2138 "hphp.y" +#line 2131 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 585: /* Line 1455 of yacc.c */ -#line 2140 "hphp.y" +#line 2133 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 586: /* Line 1455 of yacc.c */ -#line 2142 "hphp.y" +#line 2135 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 587: /* Line 1455 of yacc.c */ -#line 2144 "hphp.y" +#line 2137 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 588: /* Line 1455 of yacc.c */ -#line 2145 "hphp.y" +#line 2138 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 589: /* Line 1455 of yacc.c */ -#line 2149 "hphp.y" +#line 2142 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 590: /* Line 1455 of yacc.c */ -#line 2150 "hphp.y" +#line 2143 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 591: /* Line 1455 of yacc.c */ -#line 2151 "hphp.y" +#line 2144 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 592: /* Line 1455 of yacc.c */ -#line 2157 "hphp.y" +#line 2150 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(1) - (7)]),(yyvsp[(3) - (7)]),(yyvsp[(6) - (7)]));;} break; case 593: /* Line 1455 of yacc.c */ -#line 2160 "hphp.y" +#line 2153 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(1) - (6)]),(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;} break; case 594: /* Line 1455 of yacc.c */ -#line 2163 "hphp.y" +#line 2156 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(1) - (8)]),(yyvsp[(4) - (8)]),(yyvsp[(7) - (8)]));;} break; case 595: /* Line 1455 of yacc.c */ -#line 2166 "hphp.y" +#line 2159 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(2) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(8) - (9)]));;} break; case 596: /* Line 1455 of yacc.c */ -#line 2169 "hphp.y" +#line 2162 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(2) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(7) - (8)]));;} break; case 597: /* Line 1455 of yacc.c */ -#line 2172 "hphp.y" +#line 2165 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(2) - (10)]),(yyvsp[(6) - (10)]),(yyvsp[(9) - (10)]));;} break; case 598: /* Line 1455 of yacc.c */ -#line 2179 "hphp.y" +#line 2172 "hphp.y" { _p->onCall((yyval),0,(yyvsp[(3) - (7)]),(yyvsp[(6) - (7)]),&(yyvsp[(1) - (7)]));;} break; case 599: /* Line 1455 of yacc.c */ -#line 2183 "hphp.y" +#line 2176 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]),&(yyvsp[(1) - (6)]));;} break; case 600: /* Line 1455 of yacc.c */ -#line 2187 "hphp.y" +#line 2180 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 601: /* Line 1455 of yacc.c */ -#line 2189 "hphp.y" +#line 2182 "hphp.y" { _p->onIndirectRef((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 602: /* Line 1455 of yacc.c */ -#line 2194 "hphp.y" +#line 2187 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 603: /* Line 1455 of yacc.c */ -#line 2195 "hphp.y" +#line 2188 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 604: /* Line 1455 of yacc.c */ -#line 2196 "hphp.y" +#line 2189 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 605: /* Line 1455 of yacc.c */ -#line 2199 "hphp.y" +#line 2192 "hphp.y" { _p->onSimpleVariable((yyval), (yyvsp[(1) - (1)]));;} break; case 606: /* Line 1455 of yacc.c */ -#line 2200 "hphp.y" +#line 2193 "hphp.y" { _p->onDynamicVariable((yyval), (yyvsp[(3) - (4)]), 0);;} break; case 607: /* Line 1455 of yacc.c */ -#line 2203 "hphp.y" +#line 2196 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 608: /* Line 1455 of yacc.c */ -#line 2204 "hphp.y" +#line 2197 "hphp.y" { (yyval).reset();;} break; case 609: /* Line 1455 of yacc.c */ -#line 2208 "hphp.y" +#line 2201 "hphp.y" { (yyval) = 1;;} break; case 610: /* Line 1455 of yacc.c */ -#line 2209 "hphp.y" +#line 2202 "hphp.y" { (yyval)++;;} break; case 611: /* Line 1455 of yacc.c */ -#line 2213 "hphp.y" +#line 2206 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 612: /* Line 1455 of yacc.c */ -#line 2214 "hphp.y" +#line 2207 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 613: /* Line 1455 of yacc.c */ -#line 2215 "hphp.y" +#line 2208 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 614: /* Line 1455 of yacc.c */ -#line 2216 "hphp.y" +#line 2209 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 615: /* Line 1455 of yacc.c */ -#line 2219 "hphp.y" +#line 2212 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 616: /* Line 1455 of yacc.c */ -#line 2220 "hphp.y" +#line 2213 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 618: /* Line 1455 of yacc.c */ -#line 2224 "hphp.y" +#line 2217 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 619: /* Line 1455 of yacc.c */ -#line 2226 "hphp.y" +#line 2219 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 620: /* Line 1455 of yacc.c */ -#line 2228 "hphp.y" +#line 2221 "hphp.y" { _p->onObjectProperty((yyval),(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 621: /* Line 1455 of yacc.c */ -#line 2229 "hphp.y" +#line 2222 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 622: /* Line 1455 of yacc.c */ -#line 2233 "hphp.y" +#line 2226 "hphp.y" { _p->onAListVar((yyval),&(yyvsp[(1) - (2)]),NULL);;} break; case 623: /* Line 1455 of yacc.c */ -#line 2234 "hphp.y" +#line 2227 "hphp.y" { _p->onAListVar((yyval),&(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 624: /* Line 1455 of yacc.c */ -#line 2236 "hphp.y" +#line 2229 "hphp.y" { _p->onAListSub((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]));;} break; case 625: /* Line 1455 of yacc.c */ -#line 2237 "hphp.y" +#line 2230 "hphp.y" { _p->onAListVar((yyval),NULL,NULL);;} break; case 626: /* Line 1455 of yacc.c */ -#line 2238 "hphp.y" +#line 2231 "hphp.y" { _p->onAListVar((yyval),NULL,&(yyvsp[(1) - (1)]));;} break; case 627: /* Line 1455 of yacc.c */ -#line 2239 "hphp.y" +#line 2232 "hphp.y" { _p->onAListSub((yyval),NULL,(yyvsp[(3) - (4)]));;} break; case 628: /* Line 1455 of yacc.c */ -#line 2244 "hphp.y" +#line 2237 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 629: /* Line 1455 of yacc.c */ -#line 2245 "hphp.y" +#line 2238 "hphp.y" { (yyval).reset();;} break; case 630: /* Line 1455 of yacc.c */ -#line 2249 "hphp.y" +#line 2242 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 631: /* Line 1455 of yacc.c */ -#line 2250 "hphp.y" +#line 2243 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 632: /* Line 1455 of yacc.c */ -#line 2251 "hphp.y" +#line 2244 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 633: /* Line 1455 of yacc.c */ -#line 2252 "hphp.y" +#line 2245 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 634: /* Line 1455 of yacc.c */ -#line 2255 "hphp.y" +#line 2248 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (6)]),&(yyvsp[(3) - (6)]),(yyvsp[(6) - (6)]),1);;} break; case 635: /* Line 1455 of yacc.c */ -#line 2257 "hphp.y" +#line 2250 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (4)]), 0,(yyvsp[(4) - (4)]),1);;} break; case 636: /* Line 1455 of yacc.c */ -#line 2258 "hphp.y" +#line 2251 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 637: /* Line 1455 of yacc.c */ -#line 2259 "hphp.y" +#line 2252 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(2) - (2)]),1);;} break; case 638: /* Line 1455 of yacc.c */ -#line 2264 "hphp.y" +#line 2257 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 639: /* Line 1455 of yacc.c */ -#line 2265 "hphp.y" +#line 2258 "hphp.y" { _p->onEmptyCollection((yyval));;} break; case 640: /* Line 1455 of yacc.c */ -#line 2269 "hphp.y" +#line 2262 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 641: /* Line 1455 of yacc.c */ -#line 2270 "hphp.y" +#line 2263 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]));;} break; case 642: /* Line 1455 of yacc.c */ -#line 2271 "hphp.y" +#line 2264 "hphp.y" { _p->onCollectionPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 643: /* Line 1455 of yacc.c */ -#line 2272 "hphp.y" +#line 2265 "hphp.y" { _p->onCollectionPair((yyval), 0, 0,(yyvsp[(1) - (1)]));;} break; case 644: /* Line 1455 of yacc.c */ -#line 2277 "hphp.y" +#line 2270 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 645: /* Line 1455 of yacc.c */ -#line 2278 "hphp.y" +#line 2271 "hphp.y" { _p->onEmptyCollection((yyval));;} break; case 646: /* Line 1455 of yacc.c */ -#line 2283 "hphp.y" +#line 2276 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 647: /* Line 1455 of yacc.c */ -#line 2285 "hphp.y" +#line 2278 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]));;} break; case 648: /* Line 1455 of yacc.c */ -#line 2287 "hphp.y" +#line 2280 "hphp.y" { _p->onCollectionPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 649: /* Line 1455 of yacc.c */ -#line 2288 "hphp.y" +#line 2281 "hphp.y" { _p->onCollectionPair((yyval), 0, 0,(yyvsp[(1) - (1)]));;} break; case 650: /* Line 1455 of yacc.c */ -#line 2292 "hphp.y" +#line 2285 "hphp.y" { _p->addEncap((yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]), -1);;} break; case 651: /* Line 1455 of yacc.c */ -#line 2294 "hphp.y" +#line 2287 "hphp.y" { _p->addEncap((yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]), 0);;} break; case 652: /* Line 1455 of yacc.c */ -#line 2295 "hphp.y" +#line 2288 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (1)]), -1);;} break; case 653: /* Line 1455 of yacc.c */ -#line 2297 "hphp.y" +#line 2290 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (2)]), 0); _p->addEncap((yyval), &(yyval), (yyvsp[(2) - (2)]), -1); ;} break; @@ -10173,141 +10166,141 @@ yyreduce: case 654: /* Line 1455 of yacc.c */ -#line 2302 "hphp.y" +#line 2295 "hphp.y" { _p->onSimpleVariable((yyval), (yyvsp[(1) - (1)]));;} break; case 655: /* Line 1455 of yacc.c */ -#line 2304 "hphp.y" +#line 2297 "hphp.y" { _p->encapRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 656: /* Line 1455 of yacc.c */ -#line 2306 "hphp.y" +#line 2299 "hphp.y" { _p->encapObjProp((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 657: /* Line 1455 of yacc.c */ -#line 2308 "hphp.y" +#line 2301 "hphp.y" { _p->onDynamicVariable((yyval), (yyvsp[(2) - (3)]), 1);;} break; case 658: /* Line 1455 of yacc.c */ -#line 2310 "hphp.y" +#line 2303 "hphp.y" { _p->encapArray((yyval), (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]));;} break; case 659: /* Line 1455 of yacc.c */ -#line 2311 "hphp.y" +#line 2304 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 660: /* Line 1455 of yacc.c */ -#line 2314 "hphp.y" +#line 2307 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_STRING;;} break; case 661: /* Line 1455 of yacc.c */ -#line 2315 "hphp.y" +#line 2308 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_NUM_STRING;;} break; case 662: /* Line 1455 of yacc.c */ -#line 2316 "hphp.y" +#line 2309 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_VARIABLE;;} break; case 663: /* Line 1455 of yacc.c */ -#line 2320 "hphp.y" +#line 2313 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_ISSET,1);;} break; case 664: /* Line 1455 of yacc.c */ -#line 2321 "hphp.y" +#line 2314 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_EMPTY,1);;} break; case 665: /* Line 1455 of yacc.c */ -#line 2322 "hphp.y" +#line 2315 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INCLUDE,1);;} break; case 666: /* Line 1455 of yacc.c */ -#line 2323 "hphp.y" +#line 2316 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INCLUDE_ONCE,1);;} break; case 667: /* Line 1455 of yacc.c */ -#line 2324 "hphp.y" +#line 2317 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_EVAL,1);;} break; case 668: /* Line 1455 of yacc.c */ -#line 2325 "hphp.y" +#line 2318 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_REQUIRE,1);;} break; case 669: /* Line 1455 of yacc.c */ -#line 2326 "hphp.y" +#line 2319 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_REQUIRE_ONCE,1);;} break; case 670: /* Line 1455 of yacc.c */ -#line 2330 "hphp.y" +#line 2323 "hphp.y" { _p->onExprListElem((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 671: /* Line 1455 of yacc.c */ -#line 2331 "hphp.y" +#line 2324 "hphp.y" { _p->onExprListElem((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 672: /* Line 1455 of yacc.c */ -#line 2336 "hphp.y" +#line 2329 "hphp.y" { _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 673: /* Line 1455 of yacc.c */ -#line 2345 "hphp.y" - { only_in_hack_mode(_p); +#line 2338 "hphp.y" + { only_in_hh_syntax(_p); _p->onTypedef((yyval), (yyvsp[(2) - (5)]), (yyvsp[(4) - (5)])); _p->popTypeScope(); ;} break; @@ -10315,50 +10308,50 @@ yyreduce: case 674: /* Line 1455 of yacc.c */ -#line 2351 "hphp.y" +#line 2344 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 675: /* Line 1455 of yacc.c */ -#line 2352 "hphp.y" - { only_in_hack_mode(_p); (yyval) = (yyvsp[(2) - (2)]); ;} +#line 2345 "hphp.y" + { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} break; case 676: /* Line 1455 of yacc.c */ -#line 2358 "hphp.y" +#line 2351 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 677: /* Line 1455 of yacc.c */ -#line 2362 "hphp.y" +#line 2355 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (4)]); - only_in_hack_mode(_p); ;} + only_in_hh_syntax(_p); ;} break; case 678: /* Line 1455 of yacc.c */ -#line 2369 "hphp.y" - { only_in_hack_mode(_p); (yyval) = (yyvsp[(2) - (3)]); ;} +#line 2362 "hphp.y" + { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (3)]); ;} break; case 679: /* Line 1455 of yacc.c */ -#line 2370 "hphp.y" +#line 2363 "hphp.y" { (yyval).reset(); ;} break; case 680: /* Line 1455 of yacc.c */ -#line 2374 "hphp.y" +#line 2367 "hphp.y" { Token t; t.reset(); _p->onTypeList((yyvsp[(1) - (1)]), t); (yyval) = (yyvsp[(1) - (1)]); ;} @@ -10367,7 +10360,7 @@ yyreduce: case 681: /* Line 1455 of yacc.c */ -#line 2377 "hphp.y" +#line 2370 "hphp.y" { _p->onTypeList((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); (yyval) = (yyvsp[(1) - (3)]); ;} break; @@ -10375,107 +10368,107 @@ yyreduce: case 682: /* Line 1455 of yacc.c */ -#line 2382 "hphp.y" +#line 2375 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]); ;} break; case 683: /* Line 1455 of yacc.c */ -#line 2383 "hphp.y" +#line 2376 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 684: /* Line 1455 of yacc.c */ -#line 2384 "hphp.y" +#line 2377 "hphp.y" { (yyval).reset(); ;} break; case 685: /* Line 1455 of yacc.c */ -#line 2385 "hphp.y" +#line 2378 "hphp.y" { (yyval).reset(); ;} break; case 686: /* Line 1455 of yacc.c */ -#line 2389 "hphp.y" +#line 2382 "hphp.y" { (yyval).reset(); ;} break; case 687: /* Line 1455 of yacc.c */ -#line 2390 "hphp.y" - { only_in_hack_mode(_p); (yyval) = (yyvsp[(2) - (2)]); ;} +#line 2383 "hphp.y" + { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} break; case 688: /* Line 1455 of yacc.c */ -#line 2395 "hphp.y" +#line 2388 "hphp.y" { _p->addTypeVar((yyvsp[(1) - (3)]).text()); ;} break; case 689: /* Line 1455 of yacc.c */ -#line 2396 "hphp.y" +#line 2389 "hphp.y" { _p->addTypeVar((yyvsp[(1) - (1)]).text()); ;} break; case 691: /* Line 1455 of yacc.c */ -#line 2401 "hphp.y" +#line 2394 "hphp.y" { _p->addTypeVar((yyvsp[(1) - (5)]).text()); ;} break; case 692: /* Line 1455 of yacc.c */ -#line 2403 "hphp.y" +#line 2396 "hphp.y" { _p->addTypeVar((yyvsp[(1) - (3)]).text()); ;} break; case 694: /* Line 1455 of yacc.c */ -#line 2411 "hphp.y" +#line 2404 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (3)]), _p); ;} break; case 697: /* Line 1455 of yacc.c */ -#line 2422 "hphp.y" +#line 2415 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 698: /* Line 1455 of yacc.c */ -#line 2424 "hphp.y" +#line 2417 "hphp.y" {;} break; case 699: /* Line 1455 of yacc.c */ -#line 2428 "hphp.y" - { only_in_hack_mode(_p); +#line 2421 "hphp.y" + { only_in_hh_syntax(_p); (yyval).setText("array"); ;} break; case 700: /* Line 1455 of yacc.c */ -#line 2436 "hphp.y" - { only_in_hack_mode(_p); +#line 2429 "hphp.y" + { only_in_hh_syntax(_p); _p->onTypeSpecialization((yyvsp[(2) - (2)]), '?'); (yyval) = (yyvsp[(2) - (2)]); ;} break; @@ -10483,8 +10476,8 @@ yyreduce: case 701: /* Line 1455 of yacc.c */ -#line 2439 "hphp.y" - { only_in_hack_mode(_p); +#line 2432 "hphp.y" + { only_in_hh_syntax(_p); _p->onTypeSpecialization((yyvsp[(2) - (2)]), '@'); (yyval) = (yyvsp[(2) - (2)]); ;} break; @@ -10492,14 +10485,14 @@ yyreduce: case 702: /* Line 1455 of yacc.c */ -#line 2442 "hphp.y" +#line 2435 "hphp.y" { _p->onTypeAnnotation((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); ;} break; case 703: /* Line 1455 of yacc.c */ -#line 2443 "hphp.y" +#line 2436 "hphp.y" { Token t; t.reset(); (yyvsp[(1) - (1)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); ;} @@ -10508,15 +10501,15 @@ yyreduce: case 704: /* Line 1455 of yacc.c */ -#line 2446 "hphp.y" +#line 2439 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 705: /* Line 1455 of yacc.c */ -#line 2448 "hphp.y" - { only_in_hack_mode(_p); +#line 2441 "hphp.y" + { only_in_hh_syntax(_p); (yyvsp[(1) - (4)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)])); ;} break; @@ -10524,8 +10517,8 @@ yyreduce: case 706: /* Line 1455 of yacc.c */ -#line 2452 "hphp.y" - { only_in_hack_mode(_p); +#line 2445 "hphp.y" + { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(3) - (6)]), (yyvsp[(5) - (6)])); (yyvsp[(1) - (6)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (6)]), (yyvsp[(3) - (6)])); ;} @@ -10534,7 +10527,7 @@ yyreduce: case 707: /* Line 1455 of yacc.c */ -#line 2456 "hphp.y" +#line 2449 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); Token t; t.reset(); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); @@ -10544,8 +10537,8 @@ yyreduce: case 708: /* Line 1455 of yacc.c */ -#line 2462 "hphp.y" - { only_in_hack_mode(_p); +#line 2455 "hphp.y" + { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(7) - (8)]), (yyvsp[(4) - (8)])); _p->onTypeAnnotation((yyval), (yyvsp[(2) - (8)]), (yyvsp[(7) - (8)])); _p->onTypeSpecialization((yyval), 'f'); ;} @@ -10554,8 +10547,8 @@ yyreduce: case 709: /* Line 1455 of yacc.c */ -#line 2466 "hphp.y" - { only_in_hack_mode(_p); +#line 2459 "hphp.y" + { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(2) - (5)]), (yyvsp[(4) - (5)])); Token t; t.reset(); t.setText("array"); _p->onTypeAnnotation((yyval), t, (yyvsp[(2) - (5)])); @@ -10565,21 +10558,21 @@ yyreduce: case 710: /* Line 1455 of yacc.c */ -#line 2474 "hphp.y" +#line 2467 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 711: /* Line 1455 of yacc.c */ -#line 2475 "hphp.y" +#line 2468 "hphp.y" { (yyval).reset(); ;} break; /* Line 1455 of yacc.c */ -#line 10583 "new_hphp.tab.cpp" +#line 10576 "new_hphp.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -10798,7 +10791,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 2478 "hphp.y" +#line 2471 "hphp.y" bool Parser::parseImpl() { return yyparse(this) == 0; diff --git a/hphp/compiler/parser/parser.cpp b/hphp/compiler/parser/parser.cpp index 0d204e610..3db95e559 100644 --- a/hphp/compiler/parser/parser.cpp +++ b/hphp/compiler/parser/parser.cpp @@ -141,7 +141,7 @@ StatementListPtr Parser::ParseString(CStrRef input, AnalysisResultPtr ar, if (!fileName || !*fileName) fileName = "string"; int len = input.size(); - Scanner scanner(input.data(), len, Option::ScannerType, fileName, true); + Scanner scanner(input.data(), len, Option::GetScannerType(), fileName, true); Parser parser(scanner, fileName, ar, len); parser.m_lambdaMode = lambdaMode; if (parser.parse()) { @@ -209,10 +209,6 @@ bool Parser::enableXHP() { return Option::EnableXHP; } -bool Parser::enableHipHopSyntax() { - return Option::EnableHipHopSyntax; -} - bool Parser::enableFinallyStatement() { return Option::EnableFinallyStatement; } @@ -686,7 +682,7 @@ void Parser::onQOp(Token &out, Token &exprCond, Token *expYes, Token &expNo) { } void Parser::onArray(Token &out, Token &pairs, int op /* = T_ARRAY */) { - if (op != T_ARRAY && !Option::EnableHipHopSyntax) { + if (op != T_ARRAY && !m_scanner.hipHopSyntaxEnabled()) { PARSE_ERROR("Typed collection is not enabled"); return; } @@ -922,16 +918,18 @@ void Parser::onParam(Token &out, Token *params, Token &type, Token &var, attrList = dynamic_pointer_cast(attr->exp); } TypeAnnotationPtr typeAnnotation = type.typeAnnotation; - expList->addElement(NEW_EXP(ParameterExpression, typeAnnotation, var->text(), + expList->addElement(NEW_EXP(ParameterExpression, typeAnnotation, + m_scanner.hipHopSyntaxEnabled(), var->text(), ref, defValue ? defValue->exp : ExpressionPtr(), attrList)); out->exp = expList; } void Parser::onClassStart(int type, Token &name) { + const Type::TypePtrMap& typeHintTypes = + Type::GetTypeHintTypes(m_scanner.hipHopSyntaxEnabled()); if (name.text() == "self" || name.text() == "parent" || - Type::GetTypeHintTypes().find(name.text()) != - Type::GetTypeHintTypes().end()) { + typeHintTypes.find(name.text()) != typeHintTypes.end()) { PARSE_ERROR("Cannot use '%s' as class name as it is reserved", name.text().c_str()); } @@ -1589,8 +1587,8 @@ void Parser::onClosureParam(Token &out, Token *params, Token ¶m, expList = NEW_EXP0(ExpressionList); } expList->addElement(NEW_EXP(ParameterExpression, TypeAnnotationPtr(), - param->text(), ref, - ExpressionPtr(), ExpressionPtr())); + m_scanner.hipHopSyntaxEnabled(), param->text(), + ref, ExpressionPtr(), ExpressionPtr())); out->exp = expList; } @@ -1778,7 +1776,7 @@ TStatementPtr Parser::extractStatement(ScannerToken *stmt) { bool Parser::hasType(Token &type) { if (!type.text().empty()) { - if (!Option::EnableHipHopSyntax && !m_scanner.isHackMode()) { + if (!m_scanner.hipHopSyntaxEnabled()) { PARSE_ERROR("Type hint is not enabled"); return false; } diff --git a/hphp/compiler/parser/parser.h b/hphp/compiler/parser/parser.h index 1b148659c..05eb4dc6a 100644 --- a/hphp/compiler/parser/parser.h +++ b/hphp/compiler/parser/parser.h @@ -113,7 +113,6 @@ public: bool parse(); virtual void error(const char* fmt, ...); virtual bool enableXHP(); - virtual bool enableHipHopSyntax(); virtual bool enableFinallyStatement(); IMPLEMENT_XHP_ATTRIBUTES; diff --git a/hphp/runtime/base/runtime_option.cpp b/hphp/runtime/base/runtime_option.cpp index 5d511f2db..7ddcf8db1 100644 --- a/hphp/runtime/base/runtime_option.cpp +++ b/hphp/runtime/base/runtime_option.cpp @@ -366,11 +366,18 @@ bool RuntimeOption::EnableEmitSwitch = true; bool RuntimeOption::EnableEmitterStats = true; bool RuntimeOption::EnableInstructionCounts = false; bool RuntimeOption::CheckSymLink = false; -int RuntimeOption::ScannerType = 0; int RuntimeOption::MaxUserFunctionId = (2 * 65536); bool RuntimeOption::EnableFinallyStatement = false; bool RuntimeOption::EnableArgsInBacktraces = true; +int RuntimeOption::GetScannerType() { + int type = 0; + if (EnableHipHopSyntax) type |= Scanner::AllowHipHopSyntax; + if (EnableShortTags) type |= Scanner::AllowShortTags; + if (EnableAspTags) type |= Scanner::AllowAspTags; + return type; +} + // Initializers for Eval flags. static inline bool evalJitDefault() { // --mode server or --mode daemon @@ -1114,13 +1121,6 @@ void RuntimeOption::Load(Hdf &config, StringVec *overwrites /* = NULL */, MaxUserFunctionId = eval["MaxUserFunctionId"].getInt32(2 * 65536); CheckSymLink = eval["CheckSymLink"].getBool(false); - if (EnableHipHopSyntax) ScannerType |= Scanner::EnableHipHopKeywords; - else ScannerType &= ~Scanner::EnableHipHopKeywords; - if (EnableShortTags) ScannerType |= Scanner::AllowShortTags; - else ScannerType &= ~Scanner::AllowShortTags; - if (EnableAspTags) ScannerType |= Scanner::AllowAspTags; - else ScannerType &= ~Scanner::AllowAspTags; - EnableAlternative = eval["EnableAlternative"].getInt32(0); EnableFinallyStatement = eval["EnableFinallyStatement"].getBool(); diff --git a/hphp/runtime/base/runtime_option.h b/hphp/runtime/base/runtime_option.h index fef5d7878..586a3d9e1 100644 --- a/hphp/runtime/base/runtime_option.h +++ b/hphp/runtime/base/runtime_option.h @@ -369,11 +369,12 @@ public: static bool EnableEmitterStats; static bool EnableInstructionCounts; static bool CheckSymLink; - static int ScannerType; static int MaxUserFunctionId; static bool EnableFinallyStatement; static bool EnableArgsInBacktraces; + static int GetScannerType(); + static std::set DynamicInvokeFunctions; #define EVALFLAGS() \ diff --git a/hphp/runtime/ext/ext_misc.cpp b/hphp/runtime/ext/ext_misc.cpp index 9b554042f..04c6b6c64 100644 --- a/hphp/runtime/ext/ext_misc.cpp +++ b/hphp/runtime/ext/ext_misc.cpp @@ -303,7 +303,7 @@ Array f_sys_getloadavg() { Array f_token_get_all(CStrRef source) { Scanner scanner(source.data(), source.size(), - Scanner::AllowShortTags | Scanner::ReturnAllTokens); + RuntimeOption::GetScannerType() | Scanner::ReturnAllTokens); ScannerToken tok; Location loc; int tokid; diff --git a/hphp/runtime/vm/func.h b/hphp/runtime/vm/func.h index d34f79954..bf1bc4a13 100644 --- a/hphp/runtime/vm/func.h +++ b/hphp/runtime/vm/func.h @@ -49,22 +49,21 @@ struct Func { template void serde(SerDe& sd) { - const StringData* tcName = m_typeConstraint.typeName(); - bool tcNullable = m_typeConstraint.nullable(); + const StringData* tcName = m_typeConstraint.typeName(); + TypeConstraint::Flags tcFlags = m_typeConstraint.flags(); sd(m_builtinType) (m_funcletOff) (m_defVal) (m_phpCode) (tcName) - (tcNullable) + (tcFlags) (m_userAttributes) (m_userType) ; if (SerDe::deserializing) { - setTypeConstraint(TypeConstraint(tcName, - tcNullable)); + setTypeConstraint(TypeConstraint(tcName, tcFlags)); } } diff --git a/hphp/runtime/vm/type_constraint.cpp b/hphp/runtime/vm/type_constraint.cpp index 9588ac794..7354ff162 100644 --- a/hphp/runtime/vm/type_constraint.cpp +++ b/hphp/runtime/vm/type_constraint.cpp @@ -32,9 +32,9 @@ TRACE_SET_MOD(runtime); TypeConstraint::TypeMap TypeConstraint::s_typeNamesToTypes; -TypeConstraint::TypeConstraint(const StringData* typeName /* = NULL */, - bool nullable /* = false */) - : m_nullable(nullable), m_typeName(typeName), m_namedEntity(0) { +void TypeConstraint::init() { + const StringData* typeName = m_typeName; + if (UNLIKELY(s_typeNamesToTypes.empty())) { const struct Pair { const StringData* name; @@ -71,7 +71,7 @@ TypeConstraint::TypeConstraint(const StringData* typeName /* = NULL */, Type dtype; TRACE(5, "TypeConstraint: this %p type %s, nullable %d\n", - this, typeName->data(), nullable); + this, typeName->data(), nullable()); if (!mapGet(s_typeNamesToTypes, typeName, &dtype)) { TRACE(5, "TypeConstraint: this %p no such type %s, treating as object\n", this, typeName->data()); @@ -80,8 +80,8 @@ TypeConstraint::TypeConstraint(const StringData* typeName /* = NULL */, TRACE(5, "TypeConstraint: NamedEntity: %p\n", m_namedEntity); return; } - if (RuntimeOption::EnableHipHopSyntax || dtype.m_dt == KindOfArray || - dtype.isParent() || dtype.isSelf()) { + if (hhType() || dtype.m_dt == KindOfArray || dtype.isParent() || + dtype.isSelf()) { m_type = dtype; } else { m_type = { KindOfObject, Precise }; @@ -140,7 +140,7 @@ TypeConstraint::check(const TypedValue* tv, const Func* func) const { if (tv->m_type == KindOfRef) { tv = tv->m_data.pref->tv(); } - if (m_nullable && IS_NULL_TYPE(tv->m_type)) return true; + if (nullable() && IS_NULL_TYPE(tv->m_type)) return true; if (tv->m_type == KindOfObject) { if (!isObjectOrTypedef()) return false; @@ -185,7 +185,7 @@ bool TypeConstraint::checkPrimitive(DataType dt) const { assert(m_type.m_dt != KindOfObject); assert(dt != KindOfRef); - if (m_nullable && IS_NULL_TYPE(dt)) return true; + if (nullable() && IS_NULL_TYPE(dt)) return true; return equivDataTypes(m_type.m_dt, dt); } diff --git a/hphp/runtime/vm/type_constraint.h b/hphp/runtime/vm/type_constraint.h index 2ead28d8d..40140fcb6 100644 --- a/hphp/runtime/vm/type_constraint.h +++ b/hphp/runtime/vm/type_constraint.h @@ -30,6 +30,13 @@ namespace VM { class Func; class TypeConstraint { +public: + enum Flags { + NoFlags = 0x0, + Nullable = 0x1, + HHType = 0x2 + }; + protected: enum MetaType { Precise, @@ -57,24 +64,39 @@ protected: // when this is set to KindOfObject we may have to look up a typedef // name and test for a different DataType. Type m_type; - bool m_nullable; + Flags m_flags; const StringData* m_typeName; const NamedEntity* m_namedEntity; typedef hphp_hash_map TypeMap; static TypeMap s_typeNamesToTypes; + void init(); + public: void verifyFail(const Func* func, int paramNum, const TypedValue* tv) const; - explicit TypeConstraint(const StringData* typeName=nullptr, bool nullable=false); + explicit TypeConstraint(const StringData* typeName, Flags flags) + : m_flags(flags), m_typeName(typeName), m_namedEntity(0) { + init(); + } + + explicit TypeConstraint(const StringData* typeName = nullptr, + bool nullable = false, bool hhType = false) + : m_flags(NoFlags), m_typeName(typeName), m_namedEntity(0) { + if (nullable) m_flags = (Flags)(m_flags | Nullable); + if (hhType) m_flags = (Flags)(m_flags | HHType); + init(); + } bool exists() const { return m_typeName; } const StringData* typeName() const { return m_typeName; } const NamedEntity* namedEntity() const { return m_namedEntity; } - bool nullable() const { return m_nullable; } + bool nullable() const { return m_flags & Nullable; } + bool hhType() const { return m_flags & HHType; } + Flags flags() const { return m_flags; } bool isSelf() const { return m_type.isSelf(); diff --git a/hphp/test/slow/hack_mode/hh-1.php b/hphp/test/slow/hack_mode/hh-1.php new file mode 100644 index 000000000..00a2c97e0 --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-1.php @@ -0,0 +1,4 @@ + $a) {} +function bar(string $x) { echo $x . "\n"; } +bar("Done"); diff --git a/hphp/test/slow/hack_mode/hh-1.php.expect b/hphp/test/slow/hack_mode/hh-1.php.expect new file mode 100644 index 000000000..a965a70ed --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-1.php.expect @@ -0,0 +1 @@ +Done diff --git a/hphp/test/slow/hack_mode/hh-1.php.hphp_opts b/hphp/test/slow/hack_mode/hh-1.php.hphp_opts new file mode 100644 index 000000000..1606d3eb0 --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-1.php.hphp_opts @@ -0,0 +1 @@ +-vEnableHipHopSyntax=1 diff --git a/hphp/test/slow/hack_mode/hh-1.php.opts b/hphp/test/slow/hack_mode/hh-1.php.opts new file mode 100644 index 000000000..cd5952509 --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-1.php.opts @@ -0,0 +1 @@ +-vEval.EnableHipHopSyntax=1 diff --git a/hphp/test/slow/hack_mode/hh-2.php b/hphp/test/slow/hack_mode/hh-2.php new file mode 100644 index 000000000..301225c29 --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-2.php @@ -0,0 +1,4 @@ + $a) {} +function bar(string $x) { echo $x . "\n"; } +bar("Done"); diff --git a/hphp/test/slow/hack_mode/hh-2.php.expect b/hphp/test/slow/hack_mode/hh-2.php.expect new file mode 100644 index 000000000..a965a70ed --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-2.php.expect @@ -0,0 +1 @@ +Done diff --git a/hphp/test/slow/hack_mode/hh-3.php b/hphp/test/slow/hack_mode/hh-3.php new file mode 100644 index 000000000..6d32e3f4f --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-3.php @@ -0,0 +1,7 @@ + $a) {} +function bar(string $x) { echo $x . "\n"; } +bar("Done"); +EOD +); diff --git a/hphp/test/slow/hack_mode/hh-3.php.expect b/hphp/test/slow/hack_mode/hh-3.php.expect new file mode 100644 index 000000000..a965a70ed --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-3.php.expect @@ -0,0 +1 @@ +Done diff --git a/hphp/test/slow/hack_mode/hh-3.php.hphp_opts b/hphp/test/slow/hack_mode/hh-3.php.hphp_opts new file mode 100644 index 000000000..1606d3eb0 --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-3.php.hphp_opts @@ -0,0 +1 @@ +-vEnableHipHopSyntax=1 diff --git a/hphp/test/slow/hack_mode/hh-3.php.opts b/hphp/test/slow/hack_mode/hh-3.php.opts new file mode 100644 index 000000000..cd5952509 --- /dev/null +++ b/hphp/test/slow/hack_mode/hh-3.php.opts @@ -0,0 +1 @@ +-vEval.EnableHipHopSyntax=1 diff --git a/hphp/test/test_parser_expr.cpp b/hphp/test/test_parser_expr.cpp index 75933246c..39c7359fc 100644 --- a/hphp/test/test_parser_expr.cpp +++ b/hphp/test/test_parser_expr.cpp @@ -387,9 +387,6 @@ bool TestParserExpr::TestClosure() { } bool TestParserExpr::TestXHP() { - //HPHP::Option::ScannerType |= HPHP::Scanner::PreprocessXHP; - //HPHP::RuntimeOption::ScannerType |= HPHP::Scanner::PreprocessXHP; - // basics V(";", "$x = new xhp_thing(array(), array());\n"); diff --git a/hphp/util/parser/hphp.ll b/hphp/util/parser/hphp.ll index 36766eb35..ee488b092 100644 --- a/hphp/util/parser/hphp.ll +++ b/hphp/util/parser/hphp.ll @@ -32,7 +32,7 @@ #define HH_ONLY_KEYWORD(tok) do { \ SETTOKEN; \ - return _scanner->hipHopKeywordsEnabled() ? tok : T_STRING; \ + return _scanner->hipHopSyntaxEnabled() ? tok : T_STRING; \ } while (0) #define IS_LABEL_START(c) \ @@ -435,7 +435,7 @@ BACKQUOTE_CHARS ("{"*([^$`\\{]|("\\"{ANY_CHAR}))|{BACKQUOTE_LITERAL_DOLLAR}) } yyless(1); STEPPOS; - if (_scanner->isHackMode() && (ntt & NextTokenType::TypeListMaybe)) { + if (_scanner->hipHopSyntaxEnabled() && (ntt & NextTokenType::TypeListMaybe)) { // Return T_UNRESOLVED_LT; the scanner will inspect subseqent tokens // to resolve this. return T_UNRESOLVED_LT; @@ -445,7 +445,7 @@ BACKQUOTE_CHARS ("{"*([^$`\\{]|("\\"{ANY_CHAR}))|{BACKQUOTE_LITERAL_DOLLAR}) "<" { STEPPOS; - if (_scanner->isHackMode()) { + if (_scanner->hipHopSyntaxEnabled()) { int ntt = getNextTokenType(_scanner->lastToken()); if (ntt & NextTokenType::TypeListMaybe) { // Return T_UNRESOLVED_LT; the scanner will inspect subseqent tokens diff --git a/hphp/util/parser/hphp.y b/hphp/util/parser/hphp.y index eb3865942..de33f69e6 100644 --- a/hphp/util/parser/hphp.y +++ b/hphp/util/parser/hphp.y @@ -248,7 +248,7 @@ void create_generator(Parser *_p, Token &out, Token ¶ms, /////////////////////////////////////////////////////////////////////////////// static void user_attribute_check(Parser *_p) { - if (!_p->enableHipHopSyntax()) { + if (!_p->scanner().hipHopSyntaxEnabled()) { HPHP_PARSER_ERROR("User attributes are not enabled", _p); } } @@ -646,17 +646,10 @@ static void xhp_children_stmt(Parser *_p, Token &out, Token &children) { } } -/* This is called from hack productions (hh_*) to throw an - * error if we're not in hack mode */ -static void only_in_hack_mode(Parser *_p) { - if (!_p->scanner().isHackMode()) { - HPHP_PARSER_ERROR("Syntax only allowed in hack mode", _p); - } -} - -static void only_in_hphp_syntax(Parser *_p) { - if (!_p->enableHipHopSyntax()) { - HPHP_PARSER_ERROR("Syntax only allowed with -v Eval.EnableHipHopSyntax=true", _p); +static void only_in_hh_syntax(Parser *_p) { + if (!_p->scanner().hipHopSyntaxEnabled()) { + HPHP_PARSER_ERROR( + "Syntax only allowed with -v Eval.EnableHipHopSyntax=true", _p); } } @@ -1238,10 +1231,10 @@ new_else_single: parameter_list: non_empty_parameter_list ',' T_VARARG - { only_in_hack_mode(_p); $$ = $1; } + { only_in_hh_syntax(_p); $$ = $1; } | non_empty_parameter_list possible_comma_in_hphp_syntax { $$ = $1;} - | T_VARARG { only_in_hack_mode(_p); $$.reset(); } + | T_VARARG { only_in_hh_syntax(_p); $$.reset(); } | { $$.reset();} ; @@ -1680,7 +1673,7 @@ static_shape_pair_list: ; shape_literal: - T_SHAPE '(' shape_pair_list ')' { only_in_hack_mode(_p); + T_SHAPE '(' shape_pair_list ')' { only_in_hh_syntax(_p); _p->onArray($$, $3, T_ARRAY); } ; @@ -1939,7 +1932,7 @@ static_scalar: | T_ARRAY '(' static_array_pair_list ')' { _p->onArray($$,$3,T_ARRAY); } | T_SHAPE '(' - static_shape_pair_list ')' { only_in_hack_mode(_p); + static_shape_pair_list ')' { only_in_hh_syntax(_p); _p->onArray($$,$3,T_ARRAY); } | static_class_constant { $$ = $1;} | static_collection_literal { $$ = $1;} @@ -1976,7 +1969,7 @@ possible_comma: | { $$.reset();} ; possible_comma_in_hphp_syntax: - ',' { only_in_hphp_syntax(_p); $$.reset();} + ',' { only_in_hh_syntax(_p); $$.reset();} | { $$.reset();} ; @@ -2016,7 +2009,7 @@ static_scalar_ae: static_array_pair_list_ae ')' { _p->onArray($$,$3,T_ARRAY);} | '[' static_array_pair_list_ae ']' { _p->onArray($$,$2,T_ARRAY);} | T_SHAPE '(' - static_shape_pair_list_ae ')' { only_in_hack_mode(_p); + static_shape_pair_list_ae ')' { only_in_hh_syntax(_p); _p->onArray($$,$3,T_ARRAY); } ; @@ -2342,14 +2335,14 @@ class_constant: hh_typedef_statement: T_TYPE hh_name_with_typevar - '=' hh_type ';' { only_in_hack_mode(_p); + '=' hh_type ';' { only_in_hh_syntax(_p); _p->onTypedef($$, $2, $4); _p->popTypeScope(); } ; hh_name_with_type: /* foo -> int foo */ ident { $$ = $1; } - | hh_type ident { only_in_hack_mode(_p); $$ = $2; } + | hh_type ident { only_in_hh_syntax(_p); $$ = $2; } ; hh_name_with_typevar: /* foo -> foo; this adds a typevar scope @@ -2360,13 +2353,13 @@ hh_name_with_typevar: /* foo -> foo; this adds a typevar scope T_TYPELIST_LT hh_typevar_list T_TYPELIST_GT { _p->pushTypeScope(); $$ = $1; - only_in_hack_mode(_p); } + only_in_hh_syntax(_p); } ; hh_typeargs_opt: T_TYPELIST_LT hh_type_list - T_TYPELIST_GT { only_in_hack_mode(_p); $$ = $2; } + T_TYPELIST_GT { only_in_hh_syntax(_p); $$ = $2; } | { $$.reset(); } ; @@ -2387,7 +2380,7 @@ hh_func_type_list: hh_opt_return_type: { $$.reset(); } - | ':' hh_type { only_in_hack_mode(_p); $$ = $2; } + | ':' hh_type { only_in_hh_syntax(_p); $$ = $2; } ; hh_typevar_list: @@ -2425,7 +2418,7 @@ hh_shape_member_list: hh_shape_type: T_SHAPE - '(' hh_shape_member_list ')' { only_in_hack_mode(_p); + '(' hh_shape_member_list ')' { only_in_hh_syntax(_p); $$.setText("array"); } ; @@ -2433,10 +2426,10 @@ hh_shape_type: hh_type: /* double-optional types will be rejected by the typechecker; we * already allow plenty of nonsense types anyway */ - '?' hh_type { only_in_hack_mode(_p); + '?' hh_type { only_in_hh_syntax(_p); _p->onTypeSpecialization($2, '?'); $$ = $2; } - | '@' hh_type { only_in_hack_mode(_p); + | '@' hh_type { only_in_hh_syntax(_p); _p->onTypeSpecialization($2, '@'); $$ = $2; } | namespace_string hh_typeargs_opt { _p->onTypeAnnotation($$, $1, $2); } @@ -2445,11 +2438,11 @@ hh_type: _p->onTypeAnnotation($$, $1, t); } | hh_shape_type { $$ = $1; } | T_ARRAY T_TYPELIST_LT hh_type - T_TYPELIST_GT { only_in_hack_mode(_p); + T_TYPELIST_GT { only_in_hh_syntax(_p); $1.setText("array"); _p->onTypeAnnotation($$, $1, $3); } | T_ARRAY T_TYPELIST_LT hh_type ',' - hh_type T_TYPELIST_GT { only_in_hack_mode(_p); + hh_type T_TYPELIST_GT { only_in_hh_syntax(_p); _p->onTypeList($3, $5); $1.setText("array"); _p->onTypeAnnotation($$, $1, $3); } @@ -2459,11 +2452,11 @@ hh_type: _p->onTypeSpecialization($$, 'x'); } | '(' T_FUNCTION '(' hh_func_type_list ')' - ':' hh_type ')' { only_in_hack_mode(_p); + ':' hh_type ')' { only_in_hh_syntax(_p); _p->onTypeList($7, $4); _p->onTypeAnnotation($$, $2, $7); _p->onTypeSpecialization($$, 'f'); } - | '(' hh_type_list ',' hh_type ')' { only_in_hack_mode(_p); + | '(' hh_type_list ',' hh_type ')' { only_in_hh_syntax(_p); _p->onTypeList($2, $4); Token t; t.reset(); t.setText("array"); _p->onTypeAnnotation($$, t, $2); diff --git a/hphp/util/parser/lex.yy.cpp b/hphp/util/parser/lex.yy.cpp index 654bb98f9..142af6511 100644 --- a/hphp/util/parser/lex.yy.cpp +++ b/hphp/util/parser/lex.yy.cpp @@ -77821,7 +77821,7 @@ static yyconst yy_state_type yy_NUL_trans[2432] = #define HH_ONLY_KEYWORD(tok) do { \ SETTOKEN; \ - return _scanner->hipHopKeywordsEnabled() ? tok : T_STRING; \ + return _scanner->hipHopSyntaxEnabled() ? tok : T_STRING; \ } while (0) #define IS_LABEL_START(c) \ @@ -78974,7 +78974,7 @@ YY_RULE_SETUP } yyless(1); STEPPOS; - if (_scanner->isHackMode() && (ntt & NextTokenType::TypeListMaybe)) { + if (_scanner->hipHopSyntaxEnabled() && (ntt & NextTokenType::TypeListMaybe)) { // Return T_UNRESOLVED_LT; the scanner will inspect subseqent tokens // to resolve this. return T_UNRESOLVED_LT; @@ -78987,7 +78987,7 @@ YY_RULE_SETUP #line 446 "hphp.ll" { STEPPOS; - if (_scanner->isHackMode()) { + if (_scanner->hipHopSyntaxEnabled()) { int ntt = getNextTokenType(_scanner->lastToken()); if (ntt & NextTokenType::TypeListMaybe) { // Return T_UNRESOLVED_LT; the scanner will inspect subseqent tokens diff --git a/hphp/util/parser/parser.h b/hphp/util/parser/parser.h index c4435a297..0548b41ac 100644 --- a/hphp/util/parser/parser.h +++ b/hphp/util/parser/parser.h @@ -113,11 +113,6 @@ public: */ virtual bool enableXHP() = 0; - /** - * Check if HipHop syntax is enabled. - */ - virtual bool enableHipHopSyntax() = 0; - /** * Public accessors. */ diff --git a/hphp/util/parser/scanner.h b/hphp/util/parser/scanner.h index 23dc45600..5a332e667 100644 --- a/hphp/util/parser/scanner.h +++ b/hphp/util/parser/scanner.h @@ -171,7 +171,7 @@ public: AllowShortTags = 0x01, // allow ReturnAllTokens = 0x08, // return comments and whitespaces - EnableHipHopKeywords = 0x10, // allow hip-hop specific reserved words + AllowHipHopSyntax = 0x10, // allow hip-hop specific reserved words }; public: @@ -285,11 +285,8 @@ public: return m_isHackMode; } - /* - * Returns: whether HipHop-extension keywords are enabled. - */ - bool hipHopKeywordsEnabled() const { - return m_type & EnableHipHopKeywords; + bool hipHopSyntaxEnabled() const { + return (m_type & AllowHipHopSyntax) || m_isHackMode; } int getLookaheadLtDepth() { diff --git a/hphp/util/parser/test/parse_tester.cpp b/hphp/util/parser/test/parse_tester.cpp index a4dcef6fa..ff412b719 100644 --- a/hphp/util/parser/test/parse_tester.cpp +++ b/hphp/util/parser/test/parse_tester.cpp @@ -56,7 +56,7 @@ int main(int argc, char** argv) try { using HPHP::Scanner; using HPHP::Test::Parser; Scanner scan(in, Scanner::AllowShortTags | - Scanner::EnableHipHopKeywords); + Scanner::AllowHipHopSyntax); Parser parser(scan, argv[1]); parser.parse(); } catch (const std::exception& e) { diff --git a/hphp/util/parser/test/parser.h b/hphp/util/parser/test/parser.h index caeee385d..1fe78cc54 100644 --- a/hphp/util/parser/test/parser.h +++ b/hphp/util/parser/test/parser.h @@ -139,7 +139,6 @@ struct Parser : ParserBase { void* extractStatement(ScannerToken*) { X(); return nullptr; } bool enableFinallyStatement() { return true; } - bool enableHipHopSyntax() { return true; } bool enableXHP() { return true; } IMPLEMENT_XHP_ATTRIBUTES;