diff --git a/hphp/compiler/analysis/emitter.cpp b/hphp/compiler/analysis/emitter.cpp index 1986656664bcf..2e4241bc417ca 100644 --- a/hphp/compiler/analysis/emitter.cpp +++ b/hphp/compiler/analysis/emitter.cpp @@ -98,6 +98,7 @@ #include "hphp/compiler/statement/trait_prec_statement.h" #include "hphp/compiler/statement/trait_alias_statement.h" #include "hphp/compiler/statement/typedef_statement.h" +#include "hphp/compiler/statement/declare_statement.h" #include "hphp/compiler/parser/parser.h" #include "hphp/hhbbc/hhbbc.h" @@ -2558,6 +2559,7 @@ void EmitterVisitor::visit(FileScopePtr file) { const std::string& filename = file->getName(); m_ue.m_filepath = makeStaticString(filename); m_ue.m_isHHFile = file->isHHFile(); + m_ue.m_useStrictTypes = file->useStrictTypes(); FunctionScopePtr func(file->getPseudoMain()); if (!func) return; @@ -2630,6 +2632,26 @@ void EmitterVisitor::visit(FileScopePtr file) { } break; } + case Construct::KindOfDeclareStatement: { + auto ds = static_pointer_cast(s); + for (auto& decl : ds->getDeclareMap()) { + if (decl.first == "strict_types") { + if (ds->getBlock()->getStmts()->getCount()) { + emitMakeUnitFatal(e, "strict_types declaration must not use " + "block mode"); + break; + } + if (!RuntimeOption::PHP7_ScalarTypes) { + emitMakeUnitFatal(e, "strict_types can only be used when" + "hhvm.php7.scalar_types = true"); + break; + } + } + } + + visit(ds->getBlock()); + break; + } case Statement::KindOfTypedefStatement: { auto const id = emitTypedef(e, static_pointer_cast(s)); @@ -2955,6 +2977,19 @@ bool EmitterVisitor::visit(ConstructPtr node) { return false; } + case Construct::KindOfDeclareStatement: { + auto ds = static_pointer_cast(node); + for (auto& decl : ds->getDeclareMap()) { + if (decl.first == "strict_types") { + emitMakeUnitFatal(e, "strict_types declaration must not use " + "block mode"); + } + } + + visit(ds->getBlock()); + return false; + } + case Construct::KindOfContinueStatement: case Construct::KindOfBreakStatement: { auto s = static_pointer_cast(node); diff --git a/hphp/compiler/analysis/file_scope.cpp b/hphp/compiler/analysis/file_scope.cpp index 4657e0d668296..8831f22be3a93 100644 --- a/hphp/compiler/analysis/file_scope.cpp +++ b/hphp/compiler/analysis/file_scope.cpp @@ -50,7 +50,7 @@ namespace HPHP { FileScope::FileScope(const std::string &fileName, int fileSize, const MD5 &md5) : BlockScope("", "", StatementPtr(), BlockScope::FileScope), m_size(fileSize), m_md5(md5), m_system(false), - m_isHHFile(false), m_preloadPriority(0), + m_isHHFile(false), m_useStrictTypes(false), m_preloadPriority(0), m_fileName(fileName), m_redeclaredFunctions(0) { pushAttribute(); // for global scope } @@ -82,6 +82,10 @@ void FileScope::setHHFile() { m_isHHFile = true; } +void FileScope::setUseStrictTypes() { + m_useStrictTypes = true; +} + FunctionScopePtr FileScope::setTree(AnalysisResultConstPtr ar, StatementListPtr tree) { m_tree = tree; diff --git a/hphp/compiler/analysis/file_scope.h b/hphp/compiler/analysis/file_scope.h index 5e0bda9410f50..87ceac2a72c44 100644 --- a/hphp/compiler/analysis/file_scope.h +++ b/hphp/compiler/analysis/file_scope.h @@ -165,6 +165,9 @@ class FileScope : public BlockScope, void setHHFile(); bool isHHFile() const { return m_isHHFile; } + void setUseStrictTypes(); + bool useStrictTypes() const { return m_useStrictTypes; } + void setPreloadPriority(int p) { m_preloadPriority = p; } int preloadPriority() const { return m_preloadPriority; } @@ -190,6 +193,7 @@ class FileScope : public BlockScope, MD5 m_md5; unsigned m_system : 1; unsigned m_isHHFile : 1; + unsigned m_useStrictTypes : 1; int m_preloadPriority; std::vector m_attributes; diff --git a/hphp/compiler/construct.h b/hphp/compiler/construct.h index 232000951f9e7..071db37011bac 100644 --- a/hphp/compiler/construct.h +++ b/hphp/compiler/construct.h @@ -104,7 +104,8 @@ class IParseHandler { x(TraitPrecStatement) \ x(TraitAliasStatement) \ x(TypedefStatement) \ - x(UseDeclarationStatementFragment) + x(UseDeclarationStatementFragment) \ + x(DeclareStatement) #define DECLARE_EXPRESSION_TYPES(x) \ x(Expression, None) \ diff --git a/hphp/compiler/parser/parser.cpp b/hphp/compiler/parser/parser.cpp index 8ea4533859645..003a0277aeaed 100644 --- a/hphp/compiler/parser/parser.cpp +++ b/hphp/compiler/parser/parser.cpp @@ -86,6 +86,7 @@ #include "hphp/compiler/statement/trait_alias_statement.h" #include "hphp/compiler/statement/typedef_statement.h" #include "hphp/compiler/statement/use_declaration_statement_fragment.h" +#include "hphp/compiler/statement/declare_statement.h" #include "hphp/compiler/analysis/function_scope.h" @@ -99,6 +100,7 @@ #include "hphp/runtime/base/unit-cache.h" #include "hphp/runtime/base/annot-type.h" +#include "hphp/system/systemlib.h" #define NEW_EXP0(cls) \ std::make_shared(BlockScopePtr(), \ @@ -172,7 +174,8 @@ Parser::Parser(Scanner &scanner, const char *fileName, AnalysisResultPtr ar, int fileSize /* = 0 */) : ParserBase(scanner, fileName), m_ar(ar), m_lambdaMode(false), m_closureGenerator(false), m_nsState(SeenNothing), - m_nsAliasTable(getAutoAliasedClasses(), [&] { return isAutoAliasOn(); }) { + m_nsAliasTable(getAutoAliasedClasses(), + [&] { return getAliasFlags(); }) { auto const md5str = mangleUnitMd5(scanner.getMd5()); MD5 md5 = MD5(md5str.c_str()); @@ -202,6 +205,12 @@ bool Parser::parse() { } if (scanner().isHHFile()) { m_file->setHHFile(); + m_file->setUseStrictTypes(); + } + // Default to strict types in force_hh mode and when not using PHP 7 scalar + // types. + if (RuntimeOption::EnableHipHopSyntax || !RuntimeOption::PHP7_ScalarTypes) { + m_file->setUseStrictTypes(); } return true; } catch (const ParseTimeFatalException& e) { @@ -533,7 +542,7 @@ void Parser::onCall(Token &out, bool dynamic, Token &name, Token ¶ms, } // Auto import a few functions from the HH namespace // TODO(#4245628): merge those into m_fnAliasTable - if (isAutoAliasOn() && + if (getAliasFlags() & AliasFlags::HH && (stripped == "fun" || stripped == "meth_caller" || stripped == "class_meth" || @@ -1356,21 +1365,23 @@ void Parser::checkClassDeclName(const std::string& name) { bool isHHNamespace = (strcasecmp(m_namespace.c_str(), "HH") == 0); auto const* at = nameToAnnotType( [&]() -> const std::string& { - if (isHHNamespace || - (m_namespace.empty() && m_scanner.isHHSyntaxEnabled())) { - auto const& autoAliases = getAutoAliasedClasses(); + if (isHHNamespace || (m_namespace.empty() && + getAliasFlags() != AliasFlags::None)) { // For the HH namespace, it's important to apply the Hack auto- // alias rules so that we catch cases involving synonyms such // as "class Boolean {..}". - auto it = autoAliases.find( + auto it = getAutoAliasedClasses().find( // "self" and "parent" are treated specially when namespace // resolution is performed, so when we're in the HH namespace // we can't just assume the name starts with "HH\", we need // to actually check. (isHHNamespace && boost::starts_with(name, "HH\\")) ? name.substr(3) : name); - if (it != autoAliases.end()) { - return it->second; + auto const flags = isHHNamespace + ? getAliasFlags() | AliasFlags::HH + : getAliasFlags(); + if (it != getAutoAliasedClasses().end() && it->second.flags & flags) { + return it->second.name; } } return name; @@ -1388,7 +1399,8 @@ void Parser::checkClassDeclName(const std::string& name) { case AnnotType::Mixed: case AnnotType::Number: case AnnotType::ArrayKey: - if (!m_scanner.isHHSyntaxEnabled() && !isHHNamespace) { + if (!RuntimeOption::PHP7_ScalarTypes && + !m_scanner.isHHSyntaxEnabled() && !isHHNamespace) { // If HH syntax is not enabled and we're not in the HH namespace, // allow Hack-specific reserved names such "string" to be used break; @@ -2227,6 +2239,22 @@ void Parser::onTypedef(Token& out, const Token& name, const Token& type, void Parser::onTypeAnnotation(Token& out, const Token& name, const Token& typeArgs) { + if (RuntimeOption::PHP7_ScalarTypes) { + auto text = name.text(); + auto const pos = text.rfind(NAMESPACE_SEP); + if (pos != std::string::npos && text.substr(0, pos + 1) != "HH\\" && + text.substr(0, pos + 1) != "\\HH\\") { + auto const key = text.substr(pos + 1); + auto& table = getAutoAliasedClasses(); + auto it = table.find(key); + if (it != table.end() && + it->second.flags & AliasFlags::PHP7_ScalarTypes) { + error("Cannot use '%s' as class name as it is reserved: %s", + key.c_str(), getMessage(false,true).c_str()); + return; + } + } + } out.set(name.num(), name.text()); out.typeAnnotation = std::make_shared( name.text(), typeArgs.typeAnnotation); @@ -2297,16 +2325,27 @@ void Parser::onTypeSpecialization(Token& type, char specialization) { //////////////////// AliasTable ///////////////////// -Parser::AliasTable::AliasTable(const hphp_string_imap& autoAliases, - std::function autoOracle) - : m_autoAliases(autoAliases), m_autoOracle(autoOracle) { +Parser::AliasTable::AliasTable( + const Parser::AutoAliasMap& aliases, + std::function autoOracle) + : m_autoAliases(aliases) + , m_autoOracle(autoOracle) { if (!m_autoOracle) { setFalseOracle(); } } +const Parser::AutoAliasMap& +Parser::AliasTable::getAutoAliases() { + static AutoAliasMap emptyAliases; + + return m_autoOracle() != AliasFlags::None + ? m_autoAliases + : emptyAliases; +} + void Parser::AliasTable::setFalseOracle() { - m_autoOracle = [] () { return false; }; + m_autoOracle = [] () { return AliasFlags::None; }; } std::string Parser::AliasTable::getName(const std::string& alias, int line_no) { @@ -2314,10 +2353,11 @@ std::string Parser::AliasTable::getName(const std::string& alias, int line_no) { if (it != m_aliases.end()) { return it->second.name; } - auto autoIt = m_autoAliases.find(alias); - if (autoIt != m_autoAliases.end()) { - set(alias, autoIt->second, AliasType::AUTO_USE, line_no); - return autoIt->second; + auto autoIt = getAutoAliases().find(alias); + if (autoIt != getAutoAliases().end() && + autoIt->second.flags & m_autoOracle()) { + set(alias, autoIt->second.name, AliasType::AUTO_USE, line_no); + return autoIt->second.name; } return ""; } @@ -2347,7 +2387,9 @@ bool Parser::AliasTable::isAliased(const std::string& alias) { if (t == AliasType::USE || t == AliasType::AUTO_USE) { return true; } - return m_autoOracle() && m_autoAliases.find(alias) != m_autoAliases.end(); + auto autoIt = getAutoAliases().find(alias); + return + autoIt != getAutoAliases().end() && autoIt->second.flags & m_autoOracle(); } void Parser::AliasTable::set(const std::string& alias, @@ -2370,10 +2412,20 @@ void Parser::AliasTable::clear() { /* * We auto-alias classes only on HH mode. */ -bool Parser::isAutoAliasOn() { - return m_scanner.isHHSyntaxEnabled(); +Parser::AliasFlags Parser::getAliasFlags() { + auto flags = AliasFlags::None; + if (m_scanner.isHHSyntaxEnabled()) { + flags = AliasFlags::HH; + } + + if (RuntimeOption::PHP7_ScalarTypes) { + flags = flags | AliasFlags::PHP7_ScalarTypes; + } + + return flags; } +namespace { /** * This is the authoritative map that drives Hack's auto-importation * mechanism for core types and classes defined in the HH namespace. @@ -2385,84 +2437,94 @@ bool Parser::isAutoAliasOn() { * Note that this map serves a different purpose than the AnnotType * map in "runtime/base/annot-type.cpp". */ -hphp_string_imap Parser::getAutoAliasedClassesHelper() { - hphp_string_imap autoAliases; - typedef AliasTable::AliasEntry AliasEntry; - std::vector aliases { - AliasEntry{"AsyncIterator", "HH\\AsyncIterator"}, - AliasEntry{"AsyncKeyedIterator", "HH\\AsyncKeyedIterator"}, - AliasEntry{"Traversable", "HH\\Traversable"}, - AliasEntry{"Container", "HH\\Container"}, - AliasEntry{"KeyedTraversable", "HH\\KeyedTraversable"}, - AliasEntry{"KeyedContainer", "HH\\KeyedContainer"}, - AliasEntry{"Iterator", "HH\\Iterator"}, - AliasEntry{"KeyedIterator", "HH\\KeyedIterator"}, - AliasEntry{"Iterable", "HH\\Iterable"}, - AliasEntry{"KeyedIterable", "HH\\KeyedIterable"}, - AliasEntry{"Collection", "HH\\Collection"}, - AliasEntry{"Vector", "HH\\Vector"}, - AliasEntry{"Map", "HH\\Map"}, - AliasEntry{"Set", "HH\\Set"}, - AliasEntry{"Pair", "HH\\Pair"}, - AliasEntry{"ImmVector", "HH\\ImmVector"}, - AliasEntry{"ImmMap", "HH\\ImmMap"}, - AliasEntry{"ImmSet", "HH\\ImmSet"}, - AliasEntry{"InvariantException", "HH\\InvariantException"}, - AliasEntry{"IMemoizeParam", "HH\\IMemoizeParam"}, - AliasEntry{"Shapes", "HH\\Shapes"}, - AliasEntry{"TypeStructureKind", "HH\\TypeStructureKind"}, - AliasEntry{"TypeStructure", "HH\\TypeStructure"}, - - AliasEntry{"Awaitable", "HH\\Awaitable"}, - AliasEntry{"AsyncGenerator", "HH\\AsyncGenerator"}, - AliasEntry{"WaitHandle", "HH\\WaitHandle"}, +Parser::AutoAliasMap getAutoAliasedClassesHelper() { + using AutoAlias = Parser::AliasTable::AutoAlias; + using AliasFlags = Parser::AliasTable::AliasFlags; +#define ALIAS(alias, name, flags) {alias, AutoAlias{name, flags}} +#define HH_TYPE(name, flags) \ + ALIAS(#name, "HH\\" #name, AliasFlags::HH | flags) +#define HH_ONLY_TYPE(name) HH_TYPE(name, AliasFlags::None) +#define HH_ALIAS(alias, name) \ + ALIAS(#alias, "HH\\" #name, AliasFlags::HH) +#define SCALAR_TYPE(name) HH_TYPE(name, AliasFlags::PHP7_ScalarTypes) + Parser::AutoAliasMap aliases { + HH_ONLY_TYPE(AsyncIterator), + HH_ONLY_TYPE(AsyncKeyedIterator), + HH_ONLY_TYPE(Traversable), + HH_ONLY_TYPE(Container), + HH_ONLY_TYPE(KeyedTraversable), + HH_ONLY_TYPE(KeyedContainer), + HH_ONLY_TYPE(Iterator), + HH_ONLY_TYPE(KeyedIterator), + HH_ONLY_TYPE(Iterable), + HH_ONLY_TYPE(KeyedIterable), + HH_ONLY_TYPE(Collection), + HH_ONLY_TYPE(Vector), + HH_ONLY_TYPE(Map), + HH_ONLY_TYPE(Set), + HH_ONLY_TYPE(Pair), + HH_ONLY_TYPE(ImmVector), + HH_ONLY_TYPE(ImmMap), + HH_ONLY_TYPE(ImmSet), + HH_ONLY_TYPE(InvariantException), + HH_ONLY_TYPE(IMemoizeParam), + HH_ONLY_TYPE(Shapes), + HH_ONLY_TYPE(TypeStructureKind), + HH_ONLY_TYPE(TypeStructure), + + HH_ONLY_TYPE(Awaitable), + HH_ONLY_TYPE(AsyncGenerator), + HH_ONLY_TYPE(WaitHandle), // Keep in sync with order in hphp/runtime/ext/asio/wait-handle.h - AliasEntry{"StaticWaitHandle", "HH\\StaticWaitHandle"}, - AliasEntry{"WaitableWaitHandle", "HH\\WaitableWaitHandle"}, - AliasEntry{"ResumableWaitHandle", "HH\\ResumableWaitHandle"}, - AliasEntry{"AsyncFunctionWaitHandle", "HH\\AsyncFunctionWaitHandle"}, - AliasEntry{"AsyncGeneratorWaitHandle", "HH\\AsyncGeneratorWaitHandle"}, - AliasEntry{"AwaitAllWaitHandle", "HH\\AwaitAllWaitHandle"}, - AliasEntry{"GenArrayWaitHandle", "HH\\GenArrayWaitHandle"}, - AliasEntry{"GenMapWaitHandle", "HH\\GenMapWaitHandle"}, - AliasEntry{"GenVectorWaitHandle", "HH\\GenVectorWaitHandle"}, - AliasEntry{"ConditionWaitHandle", "HH\\ConditionWaitHandle"}, - AliasEntry{"RescheduleWaitHandle", "HH\\RescheduleWaitHandle"}, - AliasEntry{"SleepWaitHandle", "HH\\SleepWaitHandle"}, - AliasEntry{ - "ExternalThreadEventWaitHandle", - "HH\\ExternalThreadEventWaitHandle" - }, - - AliasEntry{"bool", "HH\\bool"}, - AliasEntry{"int", "HH\\int"}, - AliasEntry{"float", "HH\\float"}, - AliasEntry{"num", "HH\\num"}, - AliasEntry{"arraykey", "HH\\arraykey"}, - AliasEntry{"string", "HH\\string"}, - AliasEntry{"resource", "HH\\resource"}, - AliasEntry{"mixed", "HH\\mixed"}, - AliasEntry{"noreturn", "HH\\noreturn"}, - AliasEntry{"void", "HH\\void"}, - AliasEntry{"this", "HH\\this"}, - AliasEntry{"classname", "HH\\string"}, // for ::class - AliasEntry{"typename", "HH\\string"}, // for ::class + HH_ONLY_TYPE(StaticWaitHandle), + HH_ONLY_TYPE(WaitableWaitHandle), + HH_ONLY_TYPE(ResumableWaitHandle), + HH_ONLY_TYPE(AsyncFunctionWaitHandle), + HH_ONLY_TYPE(AsyncGeneratorWaitHandle), + HH_ONLY_TYPE(AwaitAllWaitHandle), + HH_ONLY_TYPE(GenArrayWaitHandle), + HH_ONLY_TYPE(GenMapWaitHandle), + HH_ONLY_TYPE(GenVectorWaitHandle), + HH_ONLY_TYPE(ConditionWaitHandle), + HH_ONLY_TYPE(RescheduleWaitHandle), + HH_ONLY_TYPE(SleepWaitHandle), + HH_ONLY_TYPE(ExternalThreadEventWaitHandle), + + // Types supported by PHP 7 scalar type RFC + SCALAR_TYPE(bool), + SCALAR_TYPE(int), + SCALAR_TYPE(float), + SCALAR_TYPE(string), + + // Hack-only primatives + HH_ONLY_TYPE(num), + HH_ONLY_TYPE(arraykey), + HH_ONLY_TYPE(resource), + HH_ONLY_TYPE(mixed), + HH_ONLY_TYPE(noreturn), + HH_ONLY_TYPE(void), + HH_ONLY_TYPE(this), + HH_ALIAS(classname, string), + HH_ALIAS(typename, string), // Support a handful of synonyms for backwards compat with code written // against older versions of HipHop, and to be consistent with PHP5 casting // syntax (for example, PHP5 supports both "(bool)$x" and "(boolean)$x") - AliasEntry{"boolean", "HH\\bool"}, - AliasEntry{"integer", "HH\\int"}, - AliasEntry{"double", "HH\\float"}, - AliasEntry{"real", "HH\\float"}, + HH_ALIAS(boolean, bool), + HH_ALIAS(integer, int), + HH_ALIAS(double, float), + HH_ALIAS(real, float), }; - for (auto entry : aliases) { - autoAliases[entry.alias] = entry.name; - } - return autoAliases; +#undef HH_ALIAS +#undef SCALAR_TYPE +#undef HH_ONLY_TYPE +#undef HH_TYPE +#undef ALIAS + return aliases; +} } -const hphp_string_imap& Parser::getAutoAliasedClasses() { +const Parser::AutoAliasMap& Parser::getAutoAliasedClasses() { static auto autoAliases = getAutoAliasedClassesHelper(); return autoAliases; } @@ -2474,8 +2536,9 @@ void Parser::nns(int token, const std::string& text) { return; } - if (m_nsState == SeenNothing && !text.empty() && token != T_DECLARE && - token != ';' && token != T_HASHBANG) { + if (m_nsState == SeenNothing && (SystemLib::s_inited || !text.empty()) && + token != T_DECLARE && token != T_USE && token != ';' && + token != T_HASHBANG) { m_nsState = SeenNonNamespaceStatement; } } @@ -2612,6 +2675,17 @@ void Parser::useClass(const std::string &ns, const std::string &as) { } } + if (RuntimeOption::PHP7_ScalarTypes) { + auto& table = getAutoAliasedClasses(); + auto it = table.find(key); + if (it != table.end() && it->second.flags & AliasFlags::PHP7_ScalarTypes) { + error("Cannot use %s as %s because '%s' is a special class name: %s", + key.c_str(), key.c_str(), as.c_str(), + getMessage(false,true).c_str()); + return; + } + } + m_nsAliasTable.set(key, ns, AliasType::USE, line1()); } @@ -2639,6 +2713,42 @@ void Parser::useConst(const std::string &cnst, const std::string &as) { m_cnstAliasTable[key] = cnst; } +void Parser::onDeclare(Token& out, Token& block) { + if (!out->stmt) { + out->stmt = NEW_STMT0(DeclareStatement); + } + + auto st = static_pointer_cast(out->stmt); + st->setBlock(static_pointer_cast(block->stmt)); +} + +void Parser::onDeclareList(Token& out, Token& ident, Token& exp) { + if (ident->text() == "strict_types") { + if (m_nsState != SeenNothing) { + error("strict_types declaration must be the very first statement in the " + "script: %s", getMessage(false,true).c_str()); + return; + } + Variant val; + if (!exp->exp->getScalarValue(val) || !val.isInteger() || + (val.toInt64Val() != 0 && val.toInt64Val() != 1)) { + error("strict_types declaration must have 0 or 1 as its value: %s", + getMessage(false,true).c_str()); + return; + } + if (val.toInt64Val() == 1) { + m_file->setUseStrictTypes(); + } + } + + if (!out->stmt) { + out->stmt = NEW_STMT0(DeclareStatement); + } + + auto st = static_pointer_cast(out->stmt); + st->addDeclare(ident->text(), exp->exp); +} + std::string Parser::nsClassDecl(const std::string &name) { if (m_namespace.empty() || !strcasecmp("self", name.c_str()) || @@ -2721,6 +2831,15 @@ TStatementPtr Parser::extractStatement(ScannerToken *stmt) { void Parser::registerAlias(std::string name) { auto const pos = name.rfind(NAMESPACE_SEP); auto const key = (pos != std::string::npos) ? name.substr(pos + 1) : name; + if (RuntimeOption::PHP7_ScalarTypes) { + auto& table = getAutoAliasedClasses(); + auto it = table.find(key); + if (it != table.end() && it->second.flags & AliasFlags::PHP7_ScalarTypes) { + error("Cannot use '%s' as class name as it is reserved: %s", + key.c_str(), getMessage(false,true).c_str()); + return; + } + } if (m_nsAliasTable.getType(key) != AliasType::USE && m_nsAliasTable.getType(key) != AliasType::AUTO_USE) { m_nsAliasTable.set(key, name, AliasType::DEF, line1()); diff --git a/hphp/compiler/parser/parser.h b/hphp/compiler/parser/parser.h index fc0278323b56e..1cb0f303cc00b 100644 --- a/hphp/compiler/parser/parser.h +++ b/hphp/compiler/parser/parser.h @@ -353,6 +353,9 @@ class Parser : public ParserBase { void useFunction(const std::string &fn, const std::string &as); void useConst(const std::string &cnst, const std::string &as); + void onDeclare(Token& out, Token& block); + void onDeclareList(Token& out, Token& ident, Token& value); + /* * Get the current label scope. A new label scope is demarcated by * one of the following: a loop, a switch statement, a finally block, @@ -504,16 +507,22 @@ class Parser : public ParserBase { InsideNamespace, }; +public: /* * An AliasTable maps aliases to names. * We use it instead a regular map because it lazily imports a bunch of * names into the current namespace when appropriate. */ - class AliasTable { - public: - struct AliasEntry { - std::string alias; + struct AliasTable { + enum class AliasFlags { + None = 0, + HH = 0x1, + PHP7_ScalarTypes = 0x2, + }; + + struct AutoAlias { std::string name; + AliasFlags flags; }; enum class AliasType { @@ -523,8 +532,14 @@ class Parser : public ParserBase { DEF }; - AliasTable(const hphp_string_imap& autoAliases, - std::function autoOracle); + using AutoAliasMap = std::unordered_map< + std::string, + AutoAlias, + string_hashi, + string_eqstri>; + + AliasTable(const AutoAliasMap& aliases, + std::function autoOracle); std::string getName(const std::string& alias, int line_no); std::string getNameRaw(const std::string& alias); @@ -545,14 +560,19 @@ class Parser : public ParserBase { }; hphp_string_imap m_aliases; - const hphp_string_imap& m_autoAliases; + const AutoAliasMap& m_autoAliases; // Returns true if stuff should be auto-imported. - std::function m_autoOracle; + std::function m_autoOracle; void setFalseOracle(); + const AutoAliasMap& getAutoAliases(); }; + using AutoAlias = AliasTable::AutoAlias; using AliasType = AliasTable::AliasType; + using AliasFlags = AliasTable::AliasFlags; + using AutoAliasMap = AliasTable::AutoAliasMap; +private: NamespaceState m_nsState; bool m_nsFileScope; std::string m_namespace; // current namespace @@ -568,11 +588,20 @@ class Parser : public ParserBase { hphp_string_map m_cnstAliasTable; void registerAlias(std::string name); - bool isAutoAliasOn(); - const hphp_string_imap& getAutoAliasedClasses(); - hphp_string_imap getAutoAliasedClassesHelper(); + AliasFlags getAliasFlags(); + const AutoAliasMap& getAutoAliasedClasses(); }; +inline Parser::AliasFlags operator|(const Parser::AliasFlags& lhs, + const Parser::AliasFlags& rhs) { + return (Parser::AliasFlags)((unsigned)lhs | (unsigned)rhs); +} + +inline unsigned operator&(const Parser::AliasFlags& lhs, + const Parser::AliasFlags& rhs) { + return (unsigned)lhs & (unsigned)rhs; +} + template inline void HPHP_PARSER_ERROR(const char* fmt, Parser* p, diff --git a/hphp/compiler/statement/declare_statement.cpp b/hphp/compiler/statement/declare_statement.cpp new file mode 100644 index 0000000000000..d1867d7f605cb --- /dev/null +++ b/hphp/compiler/statement/declare_statement.cpp @@ -0,0 +1,45 @@ +/* + +----------------------------------------------------------------------+ + | HipHop for PHP | + +----------------------------------------------------------------------+ + | Copyright (c) 2010-2015 Facebook, Inc. (http://www.facebook.com) | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ +*/ +#include "hphp/compiler/statement/declare_statement.h" + +namespace HPHP { + +////////////////////////////////////////////////////////////////////// + +DeclareStatement::DeclareStatement(STATEMENT_CONSTRUCTOR_PARAMETERS) + : Statement(STATEMENT_CONSTRUCTOR_PARAMETER_VALUES(DeclareStatement)) +{} + +StatementPtr DeclareStatement::clone() { + return StatementPtr(new DeclareStatement(*this)); +} + +////////////////////////////////////////////////////////////////////// + +ConstructPtr DeclareStatement::getNthKid(int n) const { always_assert(0); } +int DeclareStatement::getKidCount() const { return 0; } +void DeclareStatement::setNthKid(int n, ConstructPtr cp) { always_assert(0); } + +////////////////////////////////////////////////////////////////////// + +void DeclareStatement::analyzeProgram(AnalysisResultPtr) {} +void DeclareStatement::outputPHP(CodeGenerator& cg, AnalysisResultPtr ar) { + if (m_block) m_block->outputPHP(cg, ar); +} + +////////////////////////////////////////////////////////////////////// + +} diff --git a/hphp/compiler/statement/declare_statement.h b/hphp/compiler/statement/declare_statement.h new file mode 100644 index 0000000000000..617ca5edaff7d --- /dev/null +++ b/hphp/compiler/statement/declare_statement.h @@ -0,0 +1,49 @@ +/* + +----------------------------------------------------------------------+ + | HipHop for PHP | + +----------------------------------------------------------------------+ + | Copyright (c) 2010-2015 Facebook, Inc. (http://www.facebook.com) | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ +*/ + +#ifndef incl_HPHP_DECLARE_STATEMENT_H_ +#define incl_HPHP_DECLARE_STATEMENT_H_ + +#include "hphp/compiler/statement/statement.h" +#include "hphp/compiler/statement/block_statement.h" + +namespace HPHP { +/////////////////////////////////////////////////////////////////////////////// + +DECLARE_BOOST_TYPES(DeclareStatement); + +struct DeclareStatement : Statement { + DeclareStatement(STATEMENT_CONSTRUCTOR_PARAMETERS); + + DECLARE_STATEMENT_VIRTUAL_FUNCTIONS; + + using DeclareMap = std::unordered_map; + const DeclareMap& getDeclareMap() const { return m_declareMap; } + BlockStatementPtr getBlock() const { return m_block; } + + void addDeclare(std::string str, ExpressionPtr expr) { + m_declareMap.emplace(str, std::move(expr)); + } + void setBlock(BlockStatementPtr block) { m_block = std::move(block); } + +private: + BlockStatementPtr m_block {nullptr}; + DeclareMap m_declareMap; +}; + +/////////////////////////////////////////////////////////////////////////////// +} +#endif // incl_HPHP_DO_STATEMENT_H_ diff --git a/hphp/hhbbc/emit.cpp b/hphp/hhbbc/emit.cpp index 9dd71a6071738..e0de81abe3947 100644 --- a/hphp/hhbbc/emit.cpp +++ b/hphp/hhbbc/emit.cpp @@ -983,6 +983,8 @@ std::unique_ptr emit_unit(const Index& index, FTRACE(1, " unit {}\n", unit.filename->data()); ue->m_filepath = unit.filename; ue->m_preloadPriority = unit.preloadPriority; + ue->m_isHHFile = unit.isHHFile; + ue->m_useStrictTypes = unit.useStrictTypes; EmitUnitState state { index }; state.defClsMap.resize(unit.classes.size(), kInvalidOffset); diff --git a/hphp/hhbbc/parse.cpp b/hphp/hhbbc/parse.cpp index 8e2849f1b2cc4..36aef0bf9f863 100644 --- a/hphp/hhbbc/parse.cpp +++ b/hphp/hhbbc/parse.cpp @@ -945,6 +945,8 @@ std::unique_ptr parse_unit(const UnitEmitter& ue) { ret->md5 = ue.md5(); ret->filename = ue.m_filepath; ret->preloadPriority = ue.m_preloadPriority; + ret->isHHFile = ue.m_isHHFile; + ret->useStrictTypes = ue.m_useStrictTypes; ParseUnitState puState; if (ue.hasSourceLocInfo()) { diff --git a/hphp/hhbbc/representation.h b/hphp/hhbbc/representation.h index e8324a44af5dc..3e26fdcd24d8c 100644 --- a/hphp/hhbbc/representation.h +++ b/hphp/hhbbc/representation.h @@ -531,6 +531,8 @@ using TypeAlias = ::HPHP::TypeAlias; struct Unit { MD5 md5; SString filename; + bool isHHFile{false}; + bool useStrictTypes{false}; int preloadPriority{0}; std::unique_ptr pseudomain; std::vector> funcs; diff --git a/hphp/parser/hphp.5.tab.cpp b/hphp/parser/hphp.5.tab.cpp index 9f84c3f6cf803..54ea03f6466ef 100644 --- a/hphp/parser/hphp.5.tab.cpp +++ b/hphp/parser/hphp.5.tab.cpp @@ -1608,90 +1608,90 @@ static const yytype_uint16 yyrline[] = 948, 950, 953, 954, 955, 956, 959, 960, 964, 969, 969, 975, 975, 982, 981, 987, 987, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1005, 1006, 1010, 1008, 1017, 1015, 1022, 1030, 1024, 1034, - 1032, 1036, 1037, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1049, 1057, 1057, 1062, 1068, 1072, 1072, 1080, 1081, - 1085, 1086, 1090, 1096, 1094, 1109, 1106, 1122, 1119, 1136, - 1135, 1144, 1142, 1154, 1153, 1172, 1170, 1189, 1188, 1197, - 1195, 1206, 1206, 1213, 1212, 1224, 1222, 1235, 1236, 1240, - 1243, 1246, 1247, 1248, 1251, 1252, 1255, 1257, 1260, 1261, - 1264, 1265, 1268, 1269, 1273, 1274, 1279, 1280, 1283, 1284, - 1285, 1289, 1290, 1294, 1295, 1299, 1300, 1304, 1305, 1310, - 1311, 1316, 1317, 1318, 1319, 1322, 1325, 1327, 1330, 1331, - 1335, 1337, 1340, 1343, 1346, 1347, 1350, 1351, 1355, 1361, - 1367, 1374, 1376, 1381, 1386, 1392, 1396, 1400, 1404, 1409, - 1414, 1419, 1424, 1430, 1439, 1444, 1449, 1455, 1457, 1461, - 1465, 1470, 1474, 1477, 1480, 1484, 1488, 1492, 1496, 1501, - 1509, 1511, 1514, 1515, 1516, 1517, 1519, 1521, 1526, 1527, - 1530, 1531, 1532, 1536, 1537, 1539, 1540, 1544, 1546, 1549, - 1553, 1559, 1561, 1564, 1564, 1568, 1567, 1571, 1573, 1576, - 1579, 1577, 1593, 1589, 1603, 1605, 1607, 1609, 1611, 1613, - 1615, 1619, 1620, 1621, 1624, 1630, 1634, 1640, 1643, 1648, - 1650, 1655, 1660, 1664, 1665, 1669, 1670, 1672, 1674, 1680, - 1681, 1683, 1687, 1688, 1693, 1697, 1698, 1702, 1703, 1707, - 1709, 1715, 1720, 1721, 1723, 1727, 1728, 1729, 1730, 1734, - 1735, 1736, 1737, 1738, 1739, 1741, 1746, 1749, 1750, 1754, - 1755, 1759, 1760, 1763, 1764, 1767, 1768, 1771, 1772, 1776, - 1777, 1778, 1779, 1780, 1781, 1782, 1786, 1787, 1790, 1791, - 1792, 1795, 1797, 1799, 1800, 1803, 1805, 1809, 1811, 1815, - 1819, 1823, 1828, 1829, 1831, 1832, 1833, 1834, 1837, 1841, - 1842, 1846, 1847, 1851, 1852, 1853, 1854, 1858, 1862, 1867, - 1871, 1875, 1880, 1881, 1882, 1883, 1884, 1888, 1890, 1891, - 1892, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, - 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, - 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, - 1934, 1935, 1936, 1937, 1939, 1940, 1942, 1943, 1945, 1946, - 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1968, 1972, - 1977, 1976, 1991, 1989, 2007, 2006, 2025, 2024, 2043, 2042, - 2060, 2060, 2075, 2075, 2093, 2094, 2095, 2100, 2102, 2106, - 2110, 2116, 2120, 2126, 2128, 2132, 2134, 2138, 2142, 2143, - 2147, 2154, 2161, 2163, 2168, 2169, 2170, 2171, 2173, 2177, - 2178, 2179, 2180, 2184, 2190, 2199, 2212, 2213, 2216, 2219, - 2222, 2223, 2226, 2230, 2233, 2236, 2243, 2244, 2248, 2249, - 2251, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, - 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, - 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, - 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, - 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, - 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, - 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, - 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, - 2334, 2338, 2343, 2344, 2348, 2349, 2350, 2351, 2353, 2357, - 2358, 2369, 2370, 2372, 2384, 2385, 2386, 2390, 2391, 2392, - 2396, 2397, 2398, 2401, 2403, 2407, 2408, 2409, 2410, 2412, - 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2424, - 2429, 2430, 2431, 2433, 2434, 2436, 2437, 2438, 2439, 2441, - 2443, 2445, 2447, 2449, 2450, 2451, 2452, 2453, 2454, 2455, - 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, - 2467, 2469, 2471, 2473, 2474, 2477, 2478, 2482, 2486, 2488, - 2492, 2495, 2498, 2504, 2505, 2506, 2507, 2508, 2509, 2510, - 2515, 2517, 2521, 2522, 2525, 2526, 2530, 2533, 2535, 2537, - 2541, 2542, 2543, 2544, 2547, 2551, 2552, 2553, 2554, 2558, - 2560, 2567, 2568, 2569, 2570, 2571, 2572, 2574, 2575, 2580, - 2582, 2585, 2588, 2590, 2592, 2595, 2597, 2601, 2603, 2606, - 2609, 2615, 2617, 2620, 2621, 2626, 2629, 2633, 2633, 2638, - 2641, 2642, 2646, 2647, 2651, 2652, 2653, 2657, 2659, 2667, - 2668, 2672, 2674, 2682, 2683, 2687, 2688, 2693, 2695, 2700, - 2711, 2725, 2737, 2752, 2753, 2754, 2755, 2756, 2757, 2758, - 2768, 2777, 2779, 2781, 2785, 2786, 2787, 2788, 2789, 2805, - 2806, 2808, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, - 2826, 2831, 2835, 2836, 2840, 2843, 2850, 2854, 2863, 2870, - 2872, 2878, 2880, 2881, 2885, 2886, 2893, 2894, 2899, 2900, - 2905, 2906, 2907, 2908, 2919, 2922, 2925, 2926, 2927, 2928, - 2939, 2943, 2944, 2945, 2947, 2948, 2949, 2953, 2955, 2958, - 2960, 2961, 2962, 2963, 2966, 2968, 2969, 2973, 2975, 2978, - 2980, 2981, 2982, 2986, 2988, 2991, 2994, 2996, 2998, 3002, - 3003, 3005, 3006, 3012, 3013, 3015, 3025, 3027, 3029, 3032, - 3033, 3034, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, - 3046, 3047, 3048, 3052, 3053, 3057, 3059, 3067, 3069, 3073, - 3077, 3082, 3086, 3094, 3095, 3099, 3100, 3106, 3107, 3116, - 3117, 3125, 3128, 3132, 3135, 3140, 3145, 3147, 3148, 3149, - 3153, 3154, 3158, 3159, 3162, 3165, 3167, 3171, 3177, 3178, - 3179, 3183, 3187, 3197, 3205, 3207, 3211, 3213, 3218, 3224, - 3227, 3232, 3240, 3243, 3246, 3247, 3250, 3253, 3254, 3259, - 3262, 3266, 3270, 3276, 3286, 3287 + 1005, 1006, 1010, 1008, 1017, 1015, 1022, 1032, 1026, 1036, + 1034, 1038, 1039, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1059, 1059, 1064, 1070, 1074, 1074, 1082, 1083, + 1087, 1088, 1092, 1098, 1096, 1111, 1108, 1124, 1121, 1138, + 1137, 1146, 1144, 1156, 1155, 1174, 1172, 1191, 1190, 1199, + 1197, 1208, 1208, 1215, 1214, 1226, 1224, 1237, 1238, 1242, + 1245, 1248, 1249, 1250, 1253, 1254, 1257, 1259, 1262, 1263, + 1266, 1267, 1270, 1271, 1275, 1276, 1281, 1282, 1285, 1286, + 1287, 1291, 1292, 1296, 1297, 1301, 1302, 1306, 1307, 1312, + 1313, 1319, 1320, 1321, 1322, 1325, 1328, 1330, 1333, 1334, + 1338, 1340, 1343, 1346, 1349, 1350, 1353, 1354, 1358, 1364, + 1370, 1377, 1379, 1384, 1389, 1395, 1399, 1403, 1407, 1412, + 1417, 1422, 1427, 1433, 1442, 1447, 1452, 1458, 1460, 1464, + 1468, 1473, 1477, 1480, 1483, 1487, 1491, 1495, 1499, 1504, + 1512, 1514, 1517, 1518, 1519, 1520, 1522, 1524, 1529, 1530, + 1533, 1534, 1535, 1539, 1540, 1542, 1543, 1547, 1549, 1552, + 1556, 1562, 1564, 1567, 1567, 1571, 1570, 1574, 1576, 1579, + 1582, 1580, 1596, 1592, 1606, 1608, 1610, 1612, 1614, 1616, + 1618, 1622, 1623, 1624, 1627, 1633, 1637, 1643, 1646, 1651, + 1653, 1658, 1663, 1667, 1668, 1672, 1673, 1675, 1677, 1683, + 1684, 1686, 1690, 1691, 1696, 1700, 1701, 1705, 1706, 1710, + 1712, 1718, 1723, 1724, 1726, 1730, 1731, 1732, 1733, 1737, + 1738, 1739, 1740, 1741, 1742, 1744, 1749, 1752, 1753, 1757, + 1758, 1762, 1763, 1766, 1767, 1770, 1771, 1774, 1775, 1779, + 1780, 1781, 1782, 1783, 1784, 1785, 1789, 1790, 1793, 1794, + 1795, 1798, 1800, 1802, 1803, 1806, 1808, 1812, 1814, 1818, + 1822, 1826, 1831, 1832, 1834, 1835, 1836, 1837, 1840, 1844, + 1845, 1849, 1850, 1854, 1855, 1856, 1857, 1861, 1865, 1870, + 1874, 1878, 1883, 1884, 1885, 1886, 1887, 1891, 1893, 1894, + 1895, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, + 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, + 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, + 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, + 1937, 1938, 1939, 1940, 1942, 1943, 1945, 1946, 1948, 1949, + 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, + 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1971, 1975, + 1980, 1979, 1994, 1992, 2010, 2009, 2028, 2027, 2046, 2045, + 2063, 2063, 2078, 2078, 2096, 2097, 2098, 2103, 2105, 2109, + 2113, 2119, 2123, 2129, 2131, 2135, 2137, 2141, 2145, 2146, + 2150, 2157, 2164, 2166, 2171, 2172, 2173, 2174, 2176, 2180, + 2181, 2182, 2183, 2187, 2193, 2202, 2215, 2216, 2219, 2222, + 2225, 2226, 2229, 2233, 2236, 2239, 2246, 2247, 2251, 2252, + 2254, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, + 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, + 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, + 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, + 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, + 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, + 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, + 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, + 2337, 2341, 2346, 2347, 2351, 2352, 2353, 2354, 2356, 2360, + 2361, 2372, 2373, 2375, 2387, 2388, 2389, 2393, 2394, 2395, + 2399, 2400, 2401, 2404, 2406, 2410, 2411, 2412, 2413, 2415, + 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2427, + 2432, 2433, 2434, 2436, 2437, 2439, 2440, 2441, 2442, 2444, + 2446, 2448, 2450, 2452, 2453, 2454, 2455, 2456, 2457, 2458, + 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, + 2470, 2472, 2474, 2476, 2477, 2480, 2481, 2485, 2489, 2491, + 2495, 2498, 2501, 2507, 2508, 2509, 2510, 2511, 2512, 2513, + 2518, 2520, 2524, 2525, 2528, 2529, 2533, 2536, 2538, 2540, + 2544, 2545, 2546, 2547, 2550, 2554, 2555, 2556, 2557, 2561, + 2563, 2570, 2571, 2572, 2573, 2574, 2575, 2577, 2578, 2583, + 2585, 2588, 2591, 2593, 2595, 2598, 2600, 2604, 2606, 2609, + 2612, 2618, 2620, 2623, 2624, 2629, 2632, 2636, 2636, 2641, + 2644, 2645, 2649, 2650, 2654, 2655, 2656, 2660, 2662, 2670, + 2671, 2675, 2677, 2685, 2686, 2690, 2691, 2696, 2698, 2703, + 2714, 2728, 2740, 2755, 2756, 2757, 2758, 2759, 2760, 2761, + 2771, 2780, 2782, 2784, 2788, 2789, 2790, 2791, 2792, 2808, + 2809, 2811, 2820, 2821, 2822, 2823, 2824, 2825, 2826, 2827, + 2829, 2834, 2838, 2839, 2843, 2846, 2853, 2857, 2866, 2873, + 2875, 2881, 2883, 2884, 2888, 2889, 2896, 2897, 2902, 2903, + 2908, 2909, 2910, 2911, 2922, 2925, 2928, 2929, 2930, 2931, + 2942, 2946, 2947, 2948, 2950, 2951, 2952, 2956, 2958, 2961, + 2963, 2964, 2965, 2966, 2969, 2971, 2972, 2976, 2978, 2981, + 2983, 2984, 2985, 2989, 2991, 2994, 2997, 2999, 3001, 3005, + 3006, 3008, 3009, 3015, 3016, 3018, 3028, 3030, 3032, 3035, + 3036, 3037, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, + 3049, 3050, 3051, 3055, 3056, 3060, 3062, 3070, 3072, 3076, + 3080, 3085, 3089, 3097, 3098, 3102, 3103, 3109, 3110, 3119, + 3120, 3128, 3131, 3135, 3138, 3143, 3148, 3150, 3151, 3152, + 3156, 3157, 3161, 3162, 3165, 3168, 3170, 3174, 3180, 3181, + 3182, 3186, 3190, 3200, 3208, 3210, 3214, 3216, 3221, 3227, + 3230, 3235, 3243, 3246, 3249, 3250, 3253, 3256, 3257, 3262, + 3265, 3269, 3273, 3279, 3289, 3290 }; #endif @@ -1824,7 +1824,7 @@ static const char *const yytname[] = "hh_name_with_type", "hh_constname_with_type", "hh_name_with_typevar", "hh_name_no_semireserved_with_typevar", "hh_typeargs_opt", "hh_non_empty_type_list", "hh_type_list", "hh_func_type_list", - "hh_opt_return_type", "hh_constraint", "hh_typevar_list", + "opt_return_type", "hh_constraint", "hh_typevar_list", "hh_typevar_variance", "hh_shape_member_type", "hh_non_empty_shape_member_list", "hh_shape_member_list", "hh_shape_type", "hh_access_type_start", "hh_access_type", "hh_type", @@ -7004,7 +7004,7 @@ YYLTYPE yylloc; /* Line 1455 of yacc.c */ #line 756 "hphp.y" { _p->onUse((yyvsp[(2) - (3)]), &Parser::useClass); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 19: @@ -7012,7 +7012,7 @@ YYLTYPE yylloc; /* Line 1455 of yacc.c */ #line 759 "hphp.y" { _p->onUse((yyvsp[(3) - (4)]), &Parser::useFunction); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 20: @@ -7020,7 +7020,7 @@ YYLTYPE yylloc; /* Line 1455 of yacc.c */ #line 762 "hphp.y" { _p->onUse((yyvsp[(3) - (4)]), &Parser::useConst); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 21: @@ -7029,7 +7029,7 @@ YYLTYPE yylloc; #line 765 "hphp.y" { _p->onGroupUse((yyvsp[(2) - (6)]).text(), (yyvsp[(4) - (6)]), nullptr); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 22: @@ -7038,7 +7038,7 @@ YYLTYPE yylloc; #line 769 "hphp.y" { _p->onGroupUse((yyvsp[(3) - (7)]).text(), (yyvsp[(5) - (7)]), &Parser::useFunction); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 23: @@ -7047,7 +7047,7 @@ YYLTYPE yylloc; #line 773 "hphp.y" { _p->onGroupUse((yyvsp[(3) - (7)]).text(), (yyvsp[(5) - (7)]), &Parser::useConst); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 24: @@ -7563,48 +7563,50 @@ YYLTYPE yylloc; /* Line 1455 of yacc.c */ #line 1023 "hphp.y" - { _p->onBlock((yyval), (yyvsp[(5) - (5)])); (yyval) = T_DECLARE;;} + { _p->onDeclare((yyvsp[(3) - (5)]), (yyvsp[(5) - (5)])); + (yyval) = (yyvsp[(3) - (5)]); + (yyval) = T_DECLARE;;} break; case 157: /* Line 1455 of yacc.c */ -#line 1030 "hphp.y" +#line 1032 "hphp.y" { _p->onCompleteLabelScope(false);;} break; case 158: /* Line 1455 of yacc.c */ -#line 1031 "hphp.y" +#line 1033 "hphp.y" { _p->onTry((yyval),(yyvsp[(2) - (13)]),(yyvsp[(5) - (13)]),(yyvsp[(6) - (13)]),(yyvsp[(9) - (13)]),(yyvsp[(11) - (13)]),(yyvsp[(13) - (13)]));;} break; case 159: /* Line 1455 of yacc.c */ -#line 1034 "hphp.y" +#line 1036 "hphp.y" { _p->onCompleteLabelScope(false);;} break; case 160: /* Line 1455 of yacc.c */ -#line 1035 "hphp.y" +#line 1037 "hphp.y" { _p->onTry((yyval), (yyvsp[(2) - (5)]), (yyvsp[(5) - (5)]));;} break; case 161: /* Line 1455 of yacc.c */ -#line 1036 "hphp.y" +#line 1038 "hphp.y" { _p->onThrow((yyval), (yyvsp[(2) - (3)]));;} break; case 162: /* Line 1455 of yacc.c */ -#line 1037 "hphp.y" +#line 1039 "hphp.y" { _p->onGoto((yyval), (yyvsp[(2) - (3)]), true); _p->addGoto((yyvsp[(2) - (3)]).text(), _p->getRange(), @@ -7614,63 +7616,63 @@ YYLTYPE yylloc; case 163: /* Line 1455 of yacc.c */ -#line 1041 "hphp.y" +#line 1043 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 164: /* Line 1455 of yacc.c */ -#line 1042 "hphp.y" +#line 1044 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 165: /* Line 1455 of yacc.c */ -#line 1043 "hphp.y" +#line 1045 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 166: /* Line 1455 of yacc.c */ -#line 1044 "hphp.y" +#line 1046 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 167: /* Line 1455 of yacc.c */ -#line 1045 "hphp.y" +#line 1047 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 168: /* Line 1455 of yacc.c */ -#line 1046 "hphp.y" +#line 1048 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 169: /* Line 1455 of yacc.c */ -#line 1047 "hphp.y" +#line 1049 "hphp.y" { _p->onReturn((yyval), &(yyvsp[(2) - (3)])); ;} break; case 170: /* Line 1455 of yacc.c */ -#line 1048 "hphp.y" +#line 1050 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 171: /* Line 1455 of yacc.c */ -#line 1049 "hphp.y" +#line 1051 "hphp.y" { _p->onLabel((yyval), (yyvsp[(1) - (2)])); _p->addLabel((yyvsp[(1) - (2)]).text(), _p->getRange(), @@ -7681,35 +7683,35 @@ YYLTYPE yylloc; case 172: /* Line 1455 of yacc.c */ -#line 1057 "hphp.y" +#line 1059 "hphp.y" { _p->onNewLabelScope(false);;} break; case 173: /* Line 1455 of yacc.c */ -#line 1058 "hphp.y" +#line 1060 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]);;} break; case 174: /* Line 1455 of yacc.c */ -#line 1067 "hphp.y" +#line 1069 "hphp.y" { _p->onCatch((yyval), (yyvsp[(1) - (9)]), (yyvsp[(4) - (9)]), (yyvsp[(5) - (9)]), (yyvsp[(8) - (9)]));;} break; case 175: /* Line 1455 of yacc.c */ -#line 1068 "hphp.y" +#line 1070 "hphp.y" { (yyval).reset();;} break; case 176: /* Line 1455 of yacc.c */ -#line 1072 "hphp.y" +#line 1074 "hphp.y" { _p->onNewLabelScope(false); _p->pushLabelScope();;} break; @@ -7717,7 +7719,7 @@ YYLTYPE yylloc; case 177: /* Line 1455 of yacc.c */ -#line 1074 "hphp.y" +#line 1076 "hphp.y" { _p->popLabelScope(); _p->onFinally((yyval), (yyvsp[(3) - (4)])); _p->onCompleteLabelScope(false);;} @@ -7726,42 +7728,42 @@ YYLTYPE yylloc; case 178: /* Line 1455 of yacc.c */ -#line 1080 "hphp.y" +#line 1082 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 179: /* Line 1455 of yacc.c */ -#line 1081 "hphp.y" +#line 1083 "hphp.y" { (yyval).reset();;} break; case 180: /* Line 1455 of yacc.c */ -#line 1085 "hphp.y" +#line 1087 "hphp.y" { (yyval) = 1;;} break; case 181: /* Line 1455 of yacc.c */ -#line 1086 "hphp.y" +#line 1088 "hphp.y" { (yyval).reset();;} break; case 182: /* Line 1455 of yacc.c */ -#line 1090 "hphp.y" +#line 1092 "hphp.y" { _p->pushFuncLocation(); ;} break; case 183: /* Line 1455 of yacc.c */ -#line 1096 "hphp.y" +#line 1098 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onNewLabelScope(true); _p->onFunctionStart((yyvsp[(3) - (3)])); @@ -7771,7 +7773,7 @@ YYLTYPE yylloc; case 184: /* Line 1455 of yacc.c */ -#line 1102 "hphp.y" +#line 1104 "hphp.y" { _p->onFunction((yyval),nullptr,(yyvsp[(8) - (9)]),(yyvsp[(2) - (9)]),(yyvsp[(3) - (9)]),(yyvsp[(6) - (9)]),(yyvsp[(9) - (9)]),nullptr); _p->popLabelInfo(); _p->popTypeScope(); @@ -7781,7 +7783,7 @@ YYLTYPE yylloc; case 185: /* Line 1455 of yacc.c */ -#line 1109 "hphp.y" +#line 1111 "hphp.y" { (yyvsp[(4) - (4)]).setText(_p->nsDecl((yyvsp[(4) - (4)]).text())); _p->onNewLabelScope(true); _p->onFunctionStart((yyvsp[(4) - (4)])); @@ -7791,7 +7793,7 @@ YYLTYPE yylloc; case 186: /* Line 1455 of yacc.c */ -#line 1115 "hphp.y" +#line 1117 "hphp.y" { _p->onFunction((yyval),&(yyvsp[(1) - (10)]),(yyvsp[(9) - (10)]),(yyvsp[(3) - (10)]),(yyvsp[(4) - (10)]),(yyvsp[(7) - (10)]),(yyvsp[(10) - (10)]),nullptr); _p->popLabelInfo(); _p->popTypeScope(); @@ -7801,7 +7803,7 @@ YYLTYPE yylloc; case 187: /* Line 1455 of yacc.c */ -#line 1122 "hphp.y" +#line 1124 "hphp.y" { (yyvsp[(5) - (5)]).setText(_p->nsDecl((yyvsp[(5) - (5)]).text())); _p->onNewLabelScope(true); _p->onFunctionStart((yyvsp[(5) - (5)])); @@ -7811,7 +7813,7 @@ YYLTYPE yylloc; case 188: /* Line 1455 of yacc.c */ -#line 1128 "hphp.y" +#line 1130 "hphp.y" { _p->onFunction((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(); @@ -7821,7 +7823,7 @@ YYLTYPE yylloc; case 189: /* Line 1455 of yacc.c */ -#line 1136 "hphp.y" +#line 1138 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsClassDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_ENUM,(yyvsp[(2) - (2)]));;} break; @@ -7829,14 +7831,14 @@ YYLTYPE yylloc; case 190: /* Line 1455 of yacc.c */ -#line 1140 "hphp.y" +#line 1142 "hphp.y" { _p->onEnum((yyval),(yyvsp[(2) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(8) - (9)]),0); ;} break; case 191: /* Line 1455 of yacc.c */ -#line 1144 "hphp.y" +#line 1146 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsClassDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_ENUM,(yyvsp[(3) - (3)]));;} break; @@ -7844,14 +7846,14 @@ YYLTYPE yylloc; case 192: /* Line 1455 of yacc.c */ -#line 1148 "hphp.y" +#line 1150 "hphp.y" { _p->onEnum((yyval),(yyvsp[(3) - (10)]),(yyvsp[(6) - (10)]),(yyvsp[(9) - (10)]),&(yyvsp[(1) - (10)])); ;} break; case 193: /* Line 1455 of yacc.c */ -#line 1154 "hphp.y" +#line 1156 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsClassDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart((yyvsp[(1) - (2)]).num(),(yyvsp[(2) - (2)]));;} break; @@ -7859,7 +7861,7 @@ YYLTYPE yylloc; case 194: /* Line 1455 of yacc.c */ -#line 1157 "hphp.y" +#line 1159 "hphp.y" { Token stmts; if (_p->peekClass()) { xhp_collect_attributes(_p,stmts,(yyvsp[(7) - (8)])); @@ -7878,7 +7880,7 @@ YYLTYPE yylloc; case 195: /* Line 1455 of yacc.c */ -#line 1172 "hphp.y" +#line 1174 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsClassDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart((yyvsp[(2) - (3)]).num(),(yyvsp[(3) - (3)]));;} break; @@ -7886,7 +7888,7 @@ YYLTYPE yylloc; case 196: /* Line 1455 of yacc.c */ -#line 1175 "hphp.y" +#line 1177 "hphp.y" { Token stmts; if (_p->peekClass()) { xhp_collect_attributes(_p,stmts,(yyvsp[(8) - (9)])); @@ -7905,7 +7907,7 @@ YYLTYPE yylloc; case 197: /* Line 1455 of yacc.c */ -#line 1189 "hphp.y" +#line 1191 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsClassDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_INTERFACE,(yyvsp[(2) - (2)]));;} break; @@ -7913,7 +7915,7 @@ YYLTYPE yylloc; case 198: /* Line 1455 of yacc.c */ -#line 1192 "hphp.y" +#line 1194 "hphp.y" { _p->onInterface((yyval),(yyvsp[(2) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(6) - (7)]),0); _p->popClass(); _p->popTypeScope();;} @@ -7922,7 +7924,7 @@ YYLTYPE yylloc; case 199: /* Line 1455 of yacc.c */ -#line 1197 "hphp.y" +#line 1199 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsClassDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_INTERFACE,(yyvsp[(3) - (3)]));;} break; @@ -7930,7 +7932,7 @@ YYLTYPE yylloc; case 200: /* Line 1455 of yacc.c */ -#line 1200 "hphp.y" +#line 1202 "hphp.y" { _p->onInterface((yyval),(yyvsp[(3) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(7) - (8)]),&(yyvsp[(1) - (8)])); _p->popClass(); _p->popTypeScope();;} @@ -7939,21 +7941,21 @@ YYLTYPE yylloc; case 201: /* Line 1455 of yacc.c */ -#line 1206 "hphp.y" +#line 1208 "hphp.y" { _p->onClassExpressionStart(); ;} break; case 202: /* Line 1455 of yacc.c */ -#line 1209 "hphp.y" +#line 1211 "hphp.y" { _p->onClassExpression((yyval), (yyvsp[(3) - (8)]), (yyvsp[(4) - (8)]), (yyvsp[(5) - (8)]), (yyvsp[(7) - (8)])); ;} break; case 203: /* Line 1455 of yacc.c */ -#line 1213 "hphp.y" +#line 1215 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsClassDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_TRAIT, (yyvsp[(2) - (2)]));;} break; @@ -7961,7 +7963,7 @@ YYLTYPE yylloc; case 204: /* Line 1455 of yacc.c */ -#line 1216 "hphp.y" +#line 1218 "hphp.y" { Token t_ext; t_ext.reset(); _p->onClass((yyval),T_TRAIT,(yyvsp[(2) - (7)]),t_ext,(yyvsp[(4) - (7)]), @@ -7973,7 +7975,7 @@ YYLTYPE yylloc; case 205: /* Line 1455 of yacc.c */ -#line 1224 "hphp.y" +#line 1226 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsClassDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_TRAIT, (yyvsp[(3) - (3)]));;} break; @@ -7981,7 +7983,7 @@ YYLTYPE yylloc; case 206: /* Line 1455 of yacc.c */ -#line 1227 "hphp.y" +#line 1229 "hphp.y" { Token t_ext; t_ext.reset(); _p->onClass((yyval),T_TRAIT,(yyvsp[(3) - (8)]),t_ext,(yyvsp[(5) - (8)]), @@ -7993,14 +7995,14 @@ YYLTYPE yylloc; case 207: /* Line 1455 of yacc.c */ -#line 1235 "hphp.y" +#line 1237 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 208: /* Line 1455 of yacc.c */ -#line 1236 "hphp.y" +#line 1238 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); _p->pushTypeScope(); _p->pushClass(true); (yyval) = (yyvsp[(1) - (1)]);;} break; @@ -8008,35 +8010,35 @@ YYLTYPE yylloc; case 209: /* Line 1455 of yacc.c */ -#line 1240 "hphp.y" +#line 1242 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 210: /* Line 1455 of yacc.c */ -#line 1243 "hphp.y" +#line 1245 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 211: /* Line 1455 of yacc.c */ -#line 1246 "hphp.y" +#line 1248 "hphp.y" { (yyval) = T_CLASS;;} break; case 212: /* Line 1455 of yacc.c */ -#line 1247 "hphp.y" +#line 1249 "hphp.y" { (yyval) = T_ABSTRACT; ;} break; case 213: /* Line 1455 of yacc.c */ -#line 1248 "hphp.y" +#line 1250 "hphp.y" { only_in_hh_syntax(_p); /* hacky, but transforming to a single token is quite convenient */ (yyval) = T_STATIC; ;} @@ -8045,301 +8047,316 @@ YYLTYPE yylloc; case 214: /* Line 1455 of yacc.c */ -#line 1251 "hphp.y" +#line 1253 "hphp.y" { only_in_hh_syntax(_p); (yyval) = T_STATIC; ;} break; case 215: /* Line 1455 of yacc.c */ -#line 1252 "hphp.y" +#line 1254 "hphp.y" { (yyval) = T_FINAL;;} break; case 216: /* Line 1455 of yacc.c */ -#line 1256 "hphp.y" +#line 1258 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 217: /* Line 1455 of yacc.c */ -#line 1257 "hphp.y" +#line 1259 "hphp.y" { (yyval).reset();;} break; case 218: /* Line 1455 of yacc.c */ -#line 1260 "hphp.y" +#line 1262 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 219: /* Line 1455 of yacc.c */ -#line 1261 "hphp.y" +#line 1263 "hphp.y" { (yyval).reset();;} break; case 220: /* Line 1455 of yacc.c */ -#line 1264 "hphp.y" +#line 1266 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 221: /* Line 1455 of yacc.c */ -#line 1265 "hphp.y" +#line 1267 "hphp.y" { (yyval).reset();;} break; case 222: /* Line 1455 of yacc.c */ -#line 1268 "hphp.y" +#line 1270 "hphp.y" { _p->onInterfaceName((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 223: /* Line 1455 of yacc.c */ -#line 1270 "hphp.y" +#line 1272 "hphp.y" { _p->onInterfaceName((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 224: /* Line 1455 of yacc.c */ -#line 1273 "hphp.y" +#line 1275 "hphp.y" { _p->onTraitName((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 225: /* Line 1455 of yacc.c */ -#line 1275 "hphp.y" +#line 1277 "hphp.y" { _p->onTraitName((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 226: /* Line 1455 of yacc.c */ -#line 1279 "hphp.y" +#line 1281 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 227: /* Line 1455 of yacc.c */ -#line 1280 "hphp.y" +#line 1282 "hphp.y" { (yyval).reset();;} break; case 228: /* Line 1455 of yacc.c */ -#line 1283 "hphp.y" +#line 1285 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 0;;} break; case 229: /* Line 1455 of yacc.c */ -#line 1284 "hphp.y" +#line 1286 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = 1;;} break; case 230: /* Line 1455 of yacc.c */ -#line 1285 "hphp.y" +#line 1287 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (4)]), NULL);;} break; case 231: /* Line 1455 of yacc.c */ -#line 1289 "hphp.y" +#line 1291 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 232: /* Line 1455 of yacc.c */ -#line 1291 "hphp.y" +#line 1293 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 233: /* Line 1455 of yacc.c */ -#line 1294 "hphp.y" +#line 1296 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 234: /* Line 1455 of yacc.c */ -#line 1296 "hphp.y" +#line 1298 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 235: /* Line 1455 of yacc.c */ -#line 1299 "hphp.y" +#line 1301 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 236: /* Line 1455 of yacc.c */ -#line 1301 "hphp.y" +#line 1303 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 237: /* Line 1455 of yacc.c */ -#line 1304 "hphp.y" - { (yyval) = (yyvsp[(1) - (1)]);;} +#line 1306 "hphp.y" + { _p->onBlock((yyval), (yyvsp[(1) - (1)]));;} break; case 238: /* Line 1455 of yacc.c */ -#line 1306 "hphp.y" - { (yyval) = (yyvsp[(2) - (4)]);;} +#line 1308 "hphp.y" + { _p->onBlock((yyval), (yyvsp[(2) - (4)]));;} + break; + + case 239: + +/* Line 1455 of yacc.c */ +#line 1312 "hphp.y" + {_p->onDeclareList((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} + break; + + case 240: + +/* Line 1455 of yacc.c */ +#line 1314 "hphp.y" + {_p->onDeclareList((yyvsp[(1) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(5) - (5)])); + (yyval) = (yyvsp[(1) - (5)]);;} break; case 241: /* Line 1455 of yacc.c */ -#line 1316 "hphp.y" +#line 1319 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 242: /* Line 1455 of yacc.c */ -#line 1317 "hphp.y" +#line 1320 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]);;} break; case 243: /* Line 1455 of yacc.c */ -#line 1318 "hphp.y" +#line 1321 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 244: /* Line 1455 of yacc.c */ -#line 1319 "hphp.y" +#line 1322 "hphp.y" { (yyval) = (yyvsp[(3) - (5)]);;} break; case 245: /* Line 1455 of yacc.c */ -#line 1324 "hphp.y" +#line 1327 "hphp.y" { _p->onCase((yyval),(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 246: /* Line 1455 of yacc.c */ -#line 1326 "hphp.y" +#line 1329 "hphp.y" { _p->onCase((yyval),(yyvsp[(1) - (4)]),NULL,(yyvsp[(4) - (4)]));;} break; case 247: /* Line 1455 of yacc.c */ -#line 1327 "hphp.y" +#line 1330 "hphp.y" { (yyval).reset();;} break; case 248: /* Line 1455 of yacc.c */ -#line 1330 "hphp.y" +#line 1333 "hphp.y" { (yyval).reset();;} break; case 249: /* Line 1455 of yacc.c */ -#line 1331 "hphp.y" +#line 1334 "hphp.y" { (yyval).reset();;} break; case 250: /* Line 1455 of yacc.c */ -#line 1336 "hphp.y" +#line 1339 "hphp.y" { _p->onElseIf((yyval),(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]));;} break; case 251: /* Line 1455 of yacc.c */ -#line 1337 "hphp.y" +#line 1340 "hphp.y" { (yyval).reset();;} break; case 252: /* Line 1455 of yacc.c */ -#line 1342 "hphp.y" +#line 1345 "hphp.y" { _p->onElseIf((yyval),(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 253: /* Line 1455 of yacc.c */ -#line 1343 "hphp.y" +#line 1346 "hphp.y" { (yyval).reset();;} break; case 254: /* Line 1455 of yacc.c */ -#line 1346 "hphp.y" +#line 1349 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 255: /* Line 1455 of yacc.c */ -#line 1347 "hphp.y" +#line 1350 "hphp.y" { (yyval).reset();;} break; case 256: /* Line 1455 of yacc.c */ -#line 1350 "hphp.y" +#line 1353 "hphp.y" { (yyval) = (yyvsp[(3) - (3)]);;} break; case 257: /* Line 1455 of yacc.c */ -#line 1351 "hphp.y" +#line 1354 "hphp.y" { (yyval).reset();;} break; case 258: /* Line 1455 of yacc.c */ -#line 1359 "hphp.y" +#line 1362 "hphp.y" { _p->onVariadicParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(5) - (7)]),(yyvsp[(7) - (7)]),false, &(yyvsp[(3) - (7)]),&(yyvsp[(4) - (7)])); ;} break; @@ -8347,7 +8364,7 @@ YYLTYPE yylloc; case 259: /* Line 1455 of yacc.c */ -#line 1365 "hphp.y" +#line 1368 "hphp.y" { _p->onVariadicParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(8) - (8)]),true, &(yyvsp[(3) - (8)]),&(yyvsp[(4) - (8)])); ;} break; @@ -8355,7 +8372,7 @@ YYLTYPE yylloc; case 260: /* Line 1455 of yacc.c */ -#line 1371 "hphp.y" +#line 1374 "hphp.y" { validate_hh_variadic_variant( _p, (yyvsp[(3) - (6)]), (yyvsp[(5) - (6)]), &(yyvsp[(4) - (6)])); (yyval) = (yyvsp[(1) - (6)]); ;} @@ -8364,14 +8381,14 @@ YYLTYPE yylloc; case 261: /* Line 1455 of yacc.c */ -#line 1375 "hphp.y" +#line 1378 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 262: /* Line 1455 of yacc.c */ -#line 1379 "hphp.y" +#line 1382 "hphp.y" { _p->onVariadicParam((yyval),NULL,(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),false, &(yyvsp[(1) - (5)]),&(yyvsp[(2) - (5)])); ;} break; @@ -8379,7 +8396,7 @@ YYLTYPE yylloc; case 263: /* Line 1455 of yacc.c */ -#line 1384 "hphp.y" +#line 1387 "hphp.y" { _p->onVariadicParam((yyval),NULL,(yyvsp[(3) - (6)]),(yyvsp[(6) - (6)]),true, &(yyvsp[(1) - (6)]),&(yyvsp[(2) - (6)])); ;} break; @@ -8387,7 +8404,7 @@ YYLTYPE yylloc; case 264: /* Line 1455 of yacc.c */ -#line 1389 "hphp.y" +#line 1392 "hphp.y" { validate_hh_variadic_variant( _p, (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]), &(yyvsp[(2) - (4)])); (yyval).reset(); ;} @@ -8396,14 +8413,14 @@ YYLTYPE yylloc; case 265: /* Line 1455 of yacc.c */ -#line 1392 "hphp.y" +#line 1395 "hphp.y" { (yyval).reset(); ;} break; case 266: /* Line 1455 of yacc.c */ -#line 1398 "hphp.y" +#line 1401 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]),0, NULL,&(yyvsp[(1) - (4)]),&(yyvsp[(2) - (4)]));;} break; @@ -8411,7 +8428,7 @@ YYLTYPE yylloc; case 267: /* Line 1455 of yacc.c */ -#line 1402 "hphp.y" +#line 1405 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),1, NULL,&(yyvsp[(1) - (5)]),&(yyvsp[(2) - (5)]));;} break; @@ -8419,7 +8436,7 @@ YYLTYPE yylloc; case 268: /* Line 1455 of yacc.c */ -#line 1407 "hphp.y" +#line 1410 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (7)]),(yyvsp[(5) - (7)]),1, &(yyvsp[(7) - (7)]),&(yyvsp[(1) - (7)]),&(yyvsp[(2) - (7)]));;} break; @@ -8427,7 +8444,7 @@ YYLTYPE yylloc; case 269: /* Line 1455 of yacc.c */ -#line 1412 "hphp.y" +#line 1415 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (6)]),(yyvsp[(4) - (6)]),0, &(yyvsp[(6) - (6)]),&(yyvsp[(1) - (6)]),&(yyvsp[(2) - (6)]));;} break; @@ -8435,7 +8452,7 @@ YYLTYPE yylloc; case 270: /* Line 1455 of yacc.c */ -#line 1417 "hphp.y" +#line 1420 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)]),0, NULL,&(yyvsp[(3) - (6)]),&(yyvsp[(4) - (6)]));;} break; @@ -8443,7 +8460,7 @@ YYLTYPE yylloc; case 271: /* Line 1455 of yacc.c */ -#line 1422 "hphp.y" +#line 1425 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(5) - (7)]),(yyvsp[(7) - (7)]),1, NULL,&(yyvsp[(3) - (7)]),&(yyvsp[(4) - (7)]));;} break; @@ -8451,7 +8468,7 @@ YYLTYPE yylloc; case 272: /* Line 1455 of yacc.c */ -#line 1428 "hphp.y" +#line 1431 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(7) - (9)]),1, &(yyvsp[(9) - (9)]),&(yyvsp[(3) - (9)]),&(yyvsp[(4) - (9)]));;} break; @@ -8459,7 +8476,7 @@ YYLTYPE yylloc; case 273: /* Line 1455 of yacc.c */ -#line 1434 "hphp.y" +#line 1437 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(6) - (8)]),0, &(yyvsp[(8) - (8)]),&(yyvsp[(3) - (8)]),&(yyvsp[(4) - (8)]));;} break; @@ -8467,7 +8484,7 @@ YYLTYPE yylloc; case 274: /* Line 1455 of yacc.c */ -#line 1442 "hphp.y" +#line 1445 "hphp.y" { _p->onVariadicParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(4) - (6)]),(yyvsp[(6) - (6)]), false,&(yyvsp[(3) - (6)]),NULL); ;} break; @@ -8475,7 +8492,7 @@ YYLTYPE yylloc; case 275: /* Line 1455 of yacc.c */ -#line 1447 "hphp.y" +#line 1450 "hphp.y" { _p->onVariadicParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(7) - (7)]), true,&(yyvsp[(3) - (7)]),NULL); ;} break; @@ -8483,7 +8500,7 @@ YYLTYPE yylloc; case 276: /* Line 1455 of yacc.c */ -#line 1452 "hphp.y" +#line 1455 "hphp.y" { validate_hh_variadic_variant( _p, (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), NULL); (yyval) = (yyvsp[(1) - (5)]); ;} @@ -8492,14 +8509,14 @@ YYLTYPE yylloc; case 277: /* Line 1455 of yacc.c */ -#line 1456 "hphp.y" +#line 1459 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 278: /* Line 1455 of yacc.c */ -#line 1459 "hphp.y" +#line 1462 "hphp.y" { _p->onVariadicParam((yyval),NULL,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]), false,&(yyvsp[(1) - (4)]),NULL); ;} break; @@ -8507,7 +8524,7 @@ YYLTYPE yylloc; case 279: /* Line 1455 of yacc.c */ -#line 1463 "hphp.y" +#line 1466 "hphp.y" { _p->onVariadicParam((yyval),NULL,(yyvsp[(2) - (5)]),(yyvsp[(5) - (5)]), true,&(yyvsp[(1) - (5)]),NULL); ;} break; @@ -8515,7 +8532,7 @@ YYLTYPE yylloc; case 280: /* Line 1455 of yacc.c */ -#line 1467 "hphp.y" +#line 1470 "hphp.y" { validate_hh_variadic_variant( _p, (yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), NULL); (yyval).reset(); ;} @@ -8524,14 +8541,14 @@ YYLTYPE yylloc; case 281: /* Line 1455 of yacc.c */ -#line 1470 "hphp.y" +#line 1473 "hphp.y" { (yyval).reset();;} break; case 282: /* Line 1455 of yacc.c */ -#line 1475 "hphp.y" +#line 1478 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)]),false, NULL,&(yyvsp[(1) - (3)]),NULL); ;} break; @@ -8539,7 +8556,7 @@ YYLTYPE yylloc; case 283: /* Line 1455 of yacc.c */ -#line 1478 "hphp.y" +#line 1481 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]),true, NULL,&(yyvsp[(1) - (4)]),NULL); ;} break; @@ -8547,7 +8564,7 @@ YYLTYPE yylloc; case 284: /* Line 1455 of yacc.c */ -#line 1482 "hphp.y" +#line 1485 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (6)]),(yyvsp[(4) - (6)]),true, &(yyvsp[(6) - (6)]),&(yyvsp[(1) - (6)]),NULL); ;} break; @@ -8555,7 +8572,7 @@ YYLTYPE yylloc; case 285: /* Line 1455 of yacc.c */ -#line 1486 "hphp.y" +#line 1489 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (5)]),(yyvsp[(3) - (5)]),false, &(yyvsp[(5) - (5)]),&(yyvsp[(1) - (5)]),NULL); ;} break; @@ -8563,7 +8580,7 @@ YYLTYPE yylloc; case 286: /* Line 1455 of yacc.c */ -#line 1490 "hphp.y" +#line 1493 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)]),false, NULL,&(yyvsp[(3) - (5)]),NULL); ;} break; @@ -8571,7 +8588,7 @@ YYLTYPE yylloc; case 287: /* Line 1455 of yacc.c */ -#line 1494 "hphp.y" +#line 1497 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(4) - (6)]),(yyvsp[(6) - (6)]),true, NULL,&(yyvsp[(3) - (6)]),NULL); ;} break; @@ -8579,7 +8596,7 @@ YYLTYPE yylloc; case 288: /* Line 1455 of yacc.c */ -#line 1499 "hphp.y" +#line 1502 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(4) - (8)]),(yyvsp[(6) - (8)]),true, &(yyvsp[(8) - (8)]),&(yyvsp[(3) - (8)]),NULL); ;} break; @@ -8587,7 +8604,7 @@ YYLTYPE yylloc; case 289: /* Line 1455 of yacc.c */ -#line 1504 "hphp.y" +#line 1507 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(5) - (7)]),false, &(yyvsp[(7) - (7)]),&(yyvsp[(3) - (7)]),NULL); ;} break; @@ -8595,140 +8612,140 @@ YYLTYPE yylloc; case 290: /* Line 1455 of yacc.c */ -#line 1510 "hphp.y" +#line 1513 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 291: /* Line 1455 of yacc.c */ -#line 1511 "hphp.y" +#line 1514 "hphp.y" { (yyval).reset();;} break; case 292: /* Line 1455 of yacc.c */ -#line 1514 "hphp.y" +#line 1517 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(1) - (1)]),false,false);;} break; case 293: /* Line 1455 of yacc.c */ -#line 1515 "hphp.y" +#line 1518 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(2) - (2)]),true,false);;} break; case 294: /* Line 1455 of yacc.c */ -#line 1516 "hphp.y" +#line 1519 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(2) - (2)]),false,true);;} break; case 295: /* Line 1455 of yacc.c */ -#line 1518 "hphp.y" +#line 1521 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),false, false);;} break; case 296: /* Line 1455 of yacc.c */ -#line 1520 "hphp.y" +#line 1523 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),false,true);;} break; case 297: /* Line 1455 of yacc.c */ -#line 1522 "hphp.y" +#line 1525 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),true, false);;} break; case 298: /* Line 1455 of yacc.c */ -#line 1526 "hphp.y" +#line 1529 "hphp.y" { _p->onGlobalVar((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 299: /* Line 1455 of yacc.c */ -#line 1527 "hphp.y" +#line 1530 "hphp.y" { _p->onGlobalVar((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 300: /* Line 1455 of yacc.c */ -#line 1530 "hphp.y" +#line 1533 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 301: /* Line 1455 of yacc.c */ -#line 1531 "hphp.y" +#line 1534 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = 1;;} break; case 302: /* Line 1455 of yacc.c */ -#line 1532 "hphp.y" +#line 1535 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval) = 1;;} break; case 303: /* Line 1455 of yacc.c */ -#line 1536 "hphp.y" +#line 1539 "hphp.y" { _p->onStaticVariable((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 304: /* Line 1455 of yacc.c */ -#line 1538 "hphp.y" +#line 1541 "hphp.y" { _p->onStaticVariable((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),&(yyvsp[(5) - (5)]));;} break; case 305: /* Line 1455 of yacc.c */ -#line 1539 "hphp.y" +#line 1542 "hphp.y" { _p->onStaticVariable((yyval),0,(yyvsp[(1) - (1)]),0);;} break; case 306: /* Line 1455 of yacc.c */ -#line 1540 "hphp.y" +#line 1543 "hphp.y" { _p->onStaticVariable((yyval),0,(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 307: /* Line 1455 of yacc.c */ -#line 1545 "hphp.y" +#line 1548 "hphp.y" { _p->onClassStatement((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 308: /* Line 1455 of yacc.c */ -#line 1546 "hphp.y" +#line 1549 "hphp.y" { (yyval).reset();;} break; case 309: /* Line 1455 of yacc.c */ -#line 1549 "hphp.y" +#line 1552 "hphp.y" { _p->onClassVariableStart ((yyval),NULL,(yyvsp[(1) - (2)]),NULL);;} break; @@ -8736,35 +8753,35 @@ YYLTYPE yylloc; case 310: /* Line 1455 of yacc.c */ -#line 1554 "hphp.y" +#line 1557 "hphp.y" { _p->onClassConstant((yyval),0,(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 311: /* Line 1455 of yacc.c */ -#line 1560 "hphp.y" +#line 1563 "hphp.y" { _p->onClassStatement((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 312: /* Line 1455 of yacc.c */ -#line 1561 "hphp.y" +#line 1564 "hphp.y" { (yyval).reset();;} break; case 313: /* Line 1455 of yacc.c */ -#line 1564 "hphp.y" +#line 1567 "hphp.y" { _p->onClassVariableModifer((yyvsp[(1) - (1)]));;} break; case 314: /* Line 1455 of yacc.c */ -#line 1565 "hphp.y" +#line 1568 "hphp.y" { _p->onClassVariableStart ((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; @@ -8772,14 +8789,14 @@ YYLTYPE yylloc; case 315: /* Line 1455 of yacc.c */ -#line 1568 "hphp.y" +#line 1571 "hphp.y" { _p->onClassVariableModifer((yyvsp[(1) - (2)]));;} break; case 316: /* Line 1455 of yacc.c */ -#line 1569 "hphp.y" +#line 1572 "hphp.y" { _p->onClassVariableStart ((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(4) - (5)]),&(yyvsp[(2) - (5)]));;} break; @@ -8787,7 +8804,7 @@ YYLTYPE yylloc; case 317: /* Line 1455 of yacc.c */ -#line 1571 "hphp.y" +#line 1574 "hphp.y" { _p->onClassVariableStart ((yyval),NULL,(yyvsp[(1) - (2)]),NULL);;} break; @@ -8795,7 +8812,7 @@ YYLTYPE yylloc; case 318: /* Line 1455 of yacc.c */ -#line 1574 "hphp.y" +#line 1577 "hphp.y" { _p->onClassVariableStart ((yyval),NULL,(yyvsp[(1) - (2)]),NULL, true);;} break; @@ -8803,14 +8820,14 @@ YYLTYPE yylloc; case 319: /* Line 1455 of yacc.c */ -#line 1576 "hphp.y" +#line 1579 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 320: /* Line 1455 of yacc.c */ -#line 1579 "hphp.y" +#line 1582 "hphp.y" { _p->onNewLabelScope(true); _p->onMethodStart((yyvsp[(4) - (5)]), (yyvsp[(1) - (5)])); _p->pushLabelInfo();;} @@ -8819,7 +8836,7 @@ YYLTYPE yylloc; case 321: /* Line 1455 of yacc.c */ -#line 1585 "hphp.y" +#line 1588 "hphp.y" { _p->onMethod((yyval),(yyvsp[(1) - (10)]),(yyvsp[(9) - (10)]),(yyvsp[(3) - (10)]),(yyvsp[(4) - (10)]),(yyvsp[(7) - (10)]),(yyvsp[(10) - (10)]),nullptr); _p->popLabelInfo(); _p->popTypeScope(); @@ -8829,7 +8846,7 @@ YYLTYPE yylloc; case 322: /* Line 1455 of yacc.c */ -#line 1593 "hphp.y" +#line 1596 "hphp.y" { _p->onNewLabelScope(true); _p->onMethodStart((yyvsp[(5) - (6)]), (yyvsp[(2) - (6)])); _p->pushLabelInfo();;} @@ -8838,7 +8855,7 @@ YYLTYPE yylloc; case 323: /* Line 1455 of yacc.c */ -#line 1599 "hphp.y" +#line 1602 "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(); @@ -8848,42 +8865,42 @@ YYLTYPE yylloc; case 324: /* Line 1455 of yacc.c */ -#line 1604 "hphp.y" +#line 1607 "hphp.y" { _p->xhpSetAttributes((yyvsp[(2) - (3)]));;} break; case 325: /* Line 1455 of yacc.c */ -#line 1606 "hphp.y" +#line 1609 "hphp.y" { xhp_category_stmt(_p,(yyval),(yyvsp[(2) - (3)]));;} break; case 326: /* Line 1455 of yacc.c */ -#line 1608 "hphp.y" +#line 1611 "hphp.y" { xhp_children_stmt(_p,(yyval),(yyvsp[(2) - (3)]));;} break; case 327: /* Line 1455 of yacc.c */ -#line 1610 "hphp.y" +#line 1613 "hphp.y" { _p->onClassRequire((yyval), (yyvsp[(3) - (4)]), true); ;} break; case 328: /* Line 1455 of yacc.c */ -#line 1612 "hphp.y" +#line 1615 "hphp.y" { _p->onClassRequire((yyval), (yyvsp[(3) - (4)]), false); ;} break; case 329: /* Line 1455 of yacc.c */ -#line 1613 "hphp.y" +#line 1616 "hphp.y" { Token t; t.reset(); _p->onTraitUse((yyval),(yyvsp[(2) - (3)]),t); ;} break; @@ -8891,42 +8908,42 @@ YYLTYPE yylloc; case 330: /* Line 1455 of yacc.c */ -#line 1616 "hphp.y" +#line 1619 "hphp.y" { _p->onTraitUse((yyval),(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)])); ;} break; case 331: /* Line 1455 of yacc.c */ -#line 1619 "hphp.y" +#line 1622 "hphp.y" { _p->onTraitRule((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} break; case 332: /* Line 1455 of yacc.c */ -#line 1620 "hphp.y" +#line 1623 "hphp.y" { _p->onTraitRule((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} break; case 333: /* Line 1455 of yacc.c */ -#line 1621 "hphp.y" +#line 1624 "hphp.y" { (yyval).reset(); ;} break; case 334: /* Line 1455 of yacc.c */ -#line 1627 "hphp.y" +#line 1630 "hphp.y" { _p->onTraitPrecRule((yyval),(yyvsp[(1) - (6)]),(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;} break; case 335: /* Line 1455 of yacc.c */ -#line 1632 "hphp.y" +#line 1635 "hphp.y" { _p->onTraitAliasRuleModify((yyval),(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]));;} break; @@ -8934,7 +8951,7 @@ YYLTYPE yylloc; case 336: /* Line 1455 of yacc.c */ -#line 1635 "hphp.y" +#line 1638 "hphp.y" { Token t; t.reset(); _p->onTraitAliasRuleModify((yyval),(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]), t);;} @@ -8943,14 +8960,14 @@ YYLTYPE yylloc; case 337: /* Line 1455 of yacc.c */ -#line 1642 "hphp.y" +#line 1645 "hphp.y" { _p->onTraitAliasRuleStart((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 338: /* Line 1455 of yacc.c */ -#line 1643 "hphp.y" +#line 1646 "hphp.y" { Token t; t.reset(); _p->onTraitAliasRuleStart((yyval),t,(yyvsp[(1) - (1)]));;} break; @@ -8958,7 +8975,7 @@ YYLTYPE yylloc; case 339: /* Line 1455 of yacc.c */ -#line 1648 "hphp.y" +#line 1651 "hphp.y" { xhp_attribute_list(_p,(yyval), _p->xhpGetAttributes(),(yyvsp[(1) - (1)]));;} break; @@ -8966,14 +8983,14 @@ YYLTYPE yylloc; case 340: /* Line 1455 of yacc.c */ -#line 1651 "hphp.y" +#line 1654 "hphp.y" { xhp_attribute_list(_p,(yyval), &(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 341: /* Line 1455 of yacc.c */ -#line 1658 "hphp.y" +#line 1661 "hphp.y" { xhp_attribute(_p,(yyval),(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); (yyval) = 1;;} break; @@ -8981,42 +8998,42 @@ YYLTYPE yylloc; case 342: /* Line 1455 of yacc.c */ -#line 1660 "hphp.y" +#line 1663 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 0;;} break; case 343: /* Line 1455 of yacc.c */ -#line 1664 "hphp.y" +#line 1667 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 345: /* Line 1455 of yacc.c */ -#line 1669 "hphp.y" +#line 1672 "hphp.y" { (yyval) = 4;;} break; case 346: /* Line 1455 of yacc.c */ -#line 1671 "hphp.y" +#line 1674 "hphp.y" { (yyval) = 4;;} break; case 347: /* Line 1455 of yacc.c */ -#line 1673 "hphp.y" +#line 1676 "hphp.y" { (yyval) = 4;;} break; case 348: /* Line 1455 of yacc.c */ -#line 1674 "hphp.y" +#line 1677 "hphp.y" { /* This case handles all types other than "array", "var" and "enum". For now we just use type code 5; @@ -9028,77 +9045,77 @@ YYLTYPE yylloc; case 349: /* Line 1455 of yacc.c */ -#line 1680 "hphp.y" +#line 1683 "hphp.y" { (yyval) = 6;;} break; case 350: /* Line 1455 of yacc.c */ -#line 1682 "hphp.y" +#line 1685 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval) = 7;;} break; case 351: /* Line 1455 of yacc.c */ -#line 1683 "hphp.y" +#line 1686 "hphp.y" { (yyval) = 9; ;} break; case 352: /* Line 1455 of yacc.c */ -#line 1687 "hphp.y" +#line 1690 "hphp.y" { _p->onArrayPair((yyval), 0,0,(yyvsp[(1) - (1)]),0);;} break; case 353: /* Line 1455 of yacc.c */ -#line 1689 "hphp.y" +#line 1692 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]),0,(yyvsp[(3) - (3)]),0);;} break; case 354: /* Line 1455 of yacc.c */ -#line 1694 "hphp.y" +#line 1697 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 355: /* Line 1455 of yacc.c */ -#line 1697 "hphp.y" +#line 1700 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 356: /* Line 1455 of yacc.c */ -#line 1698 "hphp.y" +#line 1701 "hphp.y" { scalar_null(_p, (yyval));;} break; case 357: /* Line 1455 of yacc.c */ -#line 1702 "hphp.y" +#line 1705 "hphp.y" { scalar_num(_p, (yyval), "1");;} break; case 358: /* Line 1455 of yacc.c */ -#line 1703 "hphp.y" +#line 1706 "hphp.y" { scalar_num(_p, (yyval), "0");;} break; case 359: /* Line 1455 of yacc.c */ -#line 1707 "hphp.y" +#line 1710 "hphp.y" { Token t; scalar_num(_p, t, "1"); _p->onArrayPair((yyval),0,&(yyvsp[(1) - (1)]),t,0);;} break; @@ -9106,7 +9123,7 @@ YYLTYPE yylloc; case 360: /* Line 1455 of yacc.c */ -#line 1710 "hphp.y" +#line 1713 "hphp.y" { Token t; scalar_num(_p, t, "1"); _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]),t,0);;} break; @@ -9114,7 +9131,7 @@ YYLTYPE yylloc; case 361: /* Line 1455 of yacc.c */ -#line 1715 "hphp.y" +#line 1718 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -9122,14 +9139,14 @@ YYLTYPE yylloc; case 362: /* Line 1455 of yacc.c */ -#line 1720 "hphp.y" +#line 1723 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 2;;} break; case 363: /* Line 1455 of yacc.c */ -#line 1721 "hphp.y" +#line 1724 "hphp.y" { (yyval) = -1; if ((yyvsp[(1) - (1)]).same("any")) (yyval) = 1;;} break; @@ -9137,91 +9154,91 @@ YYLTYPE yylloc; case 364: /* Line 1455 of yacc.c */ -#line 1723 "hphp.y" +#line 1726 "hphp.y" { (yyval) = 0;;} break; case 365: /* Line 1455 of yacc.c */ -#line 1727 "hphp.y" +#line 1730 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (3)]), 0);;} break; case 366: /* Line 1455 of yacc.c */ -#line 1728 "hphp.y" +#line 1731 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 1);;} break; case 367: /* Line 1455 of yacc.c */ -#line 1729 "hphp.y" +#line 1732 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 2);;} break; case 368: /* Line 1455 of yacc.c */ -#line 1730 "hphp.y" +#line 1733 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 3);;} break; case 369: /* Line 1455 of yacc.c */ -#line 1734 "hphp.y" +#line 1737 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 370: /* Line 1455 of yacc.c */ -#line 1735 "hphp.y" +#line 1738 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (1)]),0, 0);;} break; case 371: /* Line 1455 of yacc.c */ -#line 1736 "hphp.y" +#line 1739 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),1, 0);;} break; case 372: /* Line 1455 of yacc.c */ -#line 1737 "hphp.y" +#line 1740 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),2, 0);;} break; case 373: /* Line 1455 of yacc.c */ -#line 1738 "hphp.y" +#line 1741 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),3, 0);;} break; case 374: /* Line 1455 of yacc.c */ -#line 1740 "hphp.y" +#line 1743 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (3)]),4,&(yyvsp[(3) - (3)]));;} break; case 375: /* Line 1455 of yacc.c */ -#line 1742 "hphp.y" +#line 1745 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (3)]),5,&(yyvsp[(3) - (3)]));;} break; case 376: /* Line 1455 of yacc.c */ -#line 1746 "hphp.y" +#line 1749 "hphp.y" { (yyval) = -1; if ((yyvsp[(1) - (1)]).same("any")) (yyval) = 1; else if ((yyvsp[(1) - (1)]).same("pcdata")) (yyval) = 2;;} @@ -9230,231 +9247,231 @@ YYLTYPE yylloc; case 377: /* Line 1455 of yacc.c */ -#line 1749 "hphp.y" +#line 1752 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); (yyval) = (yyvsp[(1) - (1)]); (yyval) = 3;;} break; case 378: /* Line 1455 of yacc.c */ -#line 1750 "hphp.y" +#line 1753 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(0); (yyval) = (yyvsp[(1) - (1)]); (yyval) = 4;;} break; case 379: /* Line 1455 of yacc.c */ -#line 1754 "hphp.y" +#line 1757 "hphp.y" { (yyval).reset();;} break; case 380: /* Line 1455 of yacc.c */ -#line 1755 "hphp.y" +#line 1758 "hphp.y" { _p->finishStatement((yyval), (yyvsp[(2) - (3)])); (yyval) = 1;;} break; case 381: /* Line 1455 of yacc.c */ -#line 1759 "hphp.y" +#line 1762 "hphp.y" { (yyval).reset();;} break; case 382: /* Line 1455 of yacc.c */ -#line 1760 "hphp.y" +#line 1763 "hphp.y" { _p->finishStatement((yyval), (yyvsp[(2) - (3)])); (yyval) = 1;;} break; case 383: /* Line 1455 of yacc.c */ -#line 1763 "hphp.y" +#line 1766 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 384: /* Line 1455 of yacc.c */ -#line 1764 "hphp.y" +#line 1767 "hphp.y" { (yyval).reset();;} break; case 385: /* Line 1455 of yacc.c */ -#line 1767 "hphp.y" +#line 1770 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 386: /* Line 1455 of yacc.c */ -#line 1768 "hphp.y" +#line 1771 "hphp.y" { (yyval).reset();;} break; case 387: /* Line 1455 of yacc.c */ -#line 1771 "hphp.y" +#line 1774 "hphp.y" { _p->onMemberModifier((yyval),NULL,(yyvsp[(1) - (1)]));;} break; case 388: /* Line 1455 of yacc.c */ -#line 1773 "hphp.y" +#line 1776 "hphp.y" { _p->onMemberModifier((yyval),&(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 389: /* Line 1455 of yacc.c */ -#line 1776 "hphp.y" +#line 1779 "hphp.y" { (yyval) = T_PUBLIC;;} break; case 390: /* Line 1455 of yacc.c */ -#line 1777 "hphp.y" +#line 1780 "hphp.y" { (yyval) = T_PROTECTED;;} break; case 391: /* Line 1455 of yacc.c */ -#line 1778 "hphp.y" +#line 1781 "hphp.y" { (yyval) = T_PRIVATE;;} break; case 392: /* Line 1455 of yacc.c */ -#line 1779 "hphp.y" +#line 1782 "hphp.y" { (yyval) = T_STATIC;;} break; case 393: /* Line 1455 of yacc.c */ -#line 1780 "hphp.y" +#line 1783 "hphp.y" { (yyval) = T_ABSTRACT;;} break; case 394: /* Line 1455 of yacc.c */ -#line 1781 "hphp.y" +#line 1784 "hphp.y" { (yyval) = T_FINAL;;} break; case 395: /* Line 1455 of yacc.c */ -#line 1782 "hphp.y" +#line 1785 "hphp.y" { (yyval) = T_ASYNC;;} break; case 396: /* Line 1455 of yacc.c */ -#line 1786 "hphp.y" +#line 1789 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 397: /* Line 1455 of yacc.c */ -#line 1787 "hphp.y" +#line 1790 "hphp.y" { (yyval).reset();;} break; case 398: /* Line 1455 of yacc.c */ -#line 1790 "hphp.y" +#line 1793 "hphp.y" { (yyval) = T_PUBLIC;;} break; case 399: /* Line 1455 of yacc.c */ -#line 1791 "hphp.y" +#line 1794 "hphp.y" { (yyval) = T_PROTECTED;;} break; case 400: /* Line 1455 of yacc.c */ -#line 1792 "hphp.y" +#line 1795 "hphp.y" { (yyval) = T_PRIVATE;;} break; case 401: /* Line 1455 of yacc.c */ -#line 1796 "hphp.y" +#line 1799 "hphp.y" { _p->onClassVariable((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 402: /* Line 1455 of yacc.c */ -#line 1798 "hphp.y" +#line 1801 "hphp.y" { _p->onClassVariable((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),&(yyvsp[(5) - (5)]));;} break; case 403: /* Line 1455 of yacc.c */ -#line 1799 "hphp.y" +#line 1802 "hphp.y" { _p->onClassVariable((yyval),0,(yyvsp[(1) - (1)]),0);;} break; case 404: /* Line 1455 of yacc.c */ -#line 1800 "hphp.y" +#line 1803 "hphp.y" { _p->onClassVariable((yyval),0,(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 405: /* Line 1455 of yacc.c */ -#line 1804 "hphp.y" +#line 1807 "hphp.y" { _p->onClassConstant((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 406: /* Line 1455 of yacc.c */ -#line 1806 "hphp.y" +#line 1809 "hphp.y" { _p->onClassConstant((yyval),0,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 407: /* Line 1455 of yacc.c */ -#line 1810 "hphp.y" +#line 1813 "hphp.y" { _p->onClassAbstractConstant((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 408: /* Line 1455 of yacc.c */ -#line 1812 "hphp.y" +#line 1815 "hphp.y" { _p->onClassAbstractConstant((yyval),NULL,(yyvsp[(3) - (3)]));;} break; case 409: /* Line 1455 of yacc.c */ -#line 1816 "hphp.y" +#line 1819 "hphp.y" { Token t; _p->onClassTypeConstant((yyval), (yyvsp[(2) - (3)]), t); _p->popTypeScope(); ;} @@ -9463,7 +9480,7 @@ YYLTYPE yylloc; case 410: /* Line 1455 of yacc.c */ -#line 1820 "hphp.y" +#line 1823 "hphp.y" { _p->onClassTypeConstant((yyval), (yyvsp[(1) - (4)]), (yyvsp[(4) - (4)])); _p->popTypeScope(); ;} break; @@ -9471,511 +9488,511 @@ YYLTYPE yylloc; case 411: /* Line 1455 of yacc.c */ -#line 1824 "hphp.y" +#line 1827 "hphp.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 412: /* Line 1455 of yacc.c */ -#line 1828 "hphp.y" +#line 1831 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 413: /* Line 1455 of yacc.c */ -#line 1830 "hphp.y" +#line 1833 "hphp.y" { _p->onNewObject((yyval), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));;} break; case 414: /* Line 1455 of yacc.c */ -#line 1831 "hphp.y" +#line 1834 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 415: /* Line 1455 of yacc.c */ -#line 1832 "hphp.y" +#line 1835 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_CLONE,1);;} break; case 416: /* Line 1455 of yacc.c */ -#line 1833 "hphp.y" +#line 1836 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 417: /* Line 1455 of yacc.c */ -#line 1834 "hphp.y" +#line 1837 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 418: /* Line 1455 of yacc.c */ -#line 1837 "hphp.y" +#line 1840 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 419: /* Line 1455 of yacc.c */ -#line 1841 "hphp.y" +#line 1844 "hphp.y" { _p->onExprListElem((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 420: /* Line 1455 of yacc.c */ -#line 1842 "hphp.y" +#line 1845 "hphp.y" { _p->onExprListElem((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 421: /* Line 1455 of yacc.c */ -#line 1846 "hphp.y" +#line 1849 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 422: /* Line 1455 of yacc.c */ -#line 1847 "hphp.y" +#line 1850 "hphp.y" { (yyval).reset();;} break; case 423: /* Line 1455 of yacc.c */ -#line 1851 "hphp.y" +#line 1854 "hphp.y" { _p->onYield((yyval), NULL);;} break; case 424: /* Line 1455 of yacc.c */ -#line 1852 "hphp.y" +#line 1855 "hphp.y" { _p->onYield((yyval), &(yyvsp[(2) - (2)]));;} break; case 425: /* Line 1455 of yacc.c */ -#line 1853 "hphp.y" +#line 1856 "hphp.y" { _p->onYieldPair((yyval), &(yyvsp[(2) - (4)]), &(yyvsp[(4) - (4)]));;} break; case 426: /* Line 1455 of yacc.c */ -#line 1854 "hphp.y" +#line 1857 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); ;} break; case 427: /* Line 1455 of yacc.c */ -#line 1858 "hphp.y" +#line 1861 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0, true);;} break; case 428: /* Line 1455 of yacc.c */ -#line 1863 "hphp.y" +#line 1866 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]), true);;} break; case 429: /* Line 1455 of yacc.c */ -#line 1867 "hphp.y" +#line 1870 "hphp.y" { _p->onAwait((yyval), (yyvsp[(2) - (2)])); ;} break; case 430: /* Line 1455 of yacc.c */ -#line 1871 "hphp.y" +#line 1874 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0, true);;} break; case 431: /* Line 1455 of yacc.c */ -#line 1876 "hphp.y" +#line 1879 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]), true);;} break; case 432: /* Line 1455 of yacc.c */ -#line 1880 "hphp.y" +#line 1883 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 433: /* Line 1455 of yacc.c */ -#line 1881 "hphp.y" +#line 1884 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 434: /* Line 1455 of yacc.c */ -#line 1882 "hphp.y" +#line 1885 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 435: /* Line 1455 of yacc.c */ -#line 1883 "hphp.y" +#line 1886 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 436: /* Line 1455 of yacc.c */ -#line 1884 "hphp.y" +#line 1887 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 437: /* Line 1455 of yacc.c */ -#line 1889 "hphp.y" +#line 1892 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]));;} break; case 438: /* Line 1455 of yacc.c */ -#line 1890 "hphp.y" +#line 1893 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 439: /* Line 1455 of yacc.c */ -#line 1891 "hphp.y" +#line 1894 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (4)]), (yyvsp[(4) - (4)]), 1);;} break; case 440: /* Line 1455 of yacc.c */ -#line 1894 "hphp.y" +#line 1897 "hphp.y" { _p->onAssignNew((yyval),(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)]));;} break; case 441: /* Line 1455 of yacc.c */ -#line 1895 "hphp.y" +#line 1898 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_PLUS_EQUAL);;} break; case 442: /* Line 1455 of yacc.c */ -#line 1896 "hphp.y" +#line 1899 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MINUS_EQUAL);;} break; case 443: /* Line 1455 of yacc.c */ -#line 1897 "hphp.y" +#line 1900 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MUL_EQUAL);;} break; case 444: /* Line 1455 of yacc.c */ -#line 1898 "hphp.y" +#line 1901 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_DIV_EQUAL);;} break; case 445: /* Line 1455 of yacc.c */ -#line 1899 "hphp.y" +#line 1902 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_CONCAT_EQUAL);;} break; case 446: /* Line 1455 of yacc.c */ -#line 1900 "hphp.y" +#line 1903 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MOD_EQUAL);;} break; case 447: /* Line 1455 of yacc.c */ -#line 1901 "hphp.y" +#line 1904 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_AND_EQUAL);;} break; case 448: /* Line 1455 of yacc.c */ -#line 1902 "hphp.y" +#line 1905 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_OR_EQUAL);;} break; case 449: /* Line 1455 of yacc.c */ -#line 1903 "hphp.y" +#line 1906 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_XOR_EQUAL);;} break; case 450: /* Line 1455 of yacc.c */ -#line 1904 "hphp.y" +#line 1907 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL_EQUAL);;} break; case 451: /* Line 1455 of yacc.c */ -#line 1905 "hphp.y" +#line 1908 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR_EQUAL);;} break; case 452: /* Line 1455 of yacc.c */ -#line 1906 "hphp.y" +#line 1909 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_POW_EQUAL);;} break; case 453: /* Line 1455 of yacc.c */ -#line 1907 "hphp.y" +#line 1910 "hphp.y" { UEXP((yyval),(yyvsp[(1) - (2)]),T_INC,0);;} break; case 454: /* Line 1455 of yacc.c */ -#line 1908 "hphp.y" +#line 1911 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INC,1);;} break; case 455: /* Line 1455 of yacc.c */ -#line 1909 "hphp.y" +#line 1912 "hphp.y" { UEXP((yyval),(yyvsp[(1) - (2)]),T_DEC,0);;} break; case 456: /* Line 1455 of yacc.c */ -#line 1910 "hphp.y" +#line 1913 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_DEC,1);;} break; case 457: /* Line 1455 of yacc.c */ -#line 1911 "hphp.y" +#line 1914 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_OR);;} break; case 458: /* Line 1455 of yacc.c */ -#line 1912 "hphp.y" +#line 1915 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_AND);;} break; case 459: /* Line 1455 of yacc.c */ -#line 1913 "hphp.y" +#line 1916 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_OR);;} break; case 460: /* Line 1455 of yacc.c */ -#line 1914 "hphp.y" +#line 1917 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_AND);;} break; case 461: /* Line 1455 of yacc.c */ -#line 1915 "hphp.y" +#line 1918 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_XOR);;} break; case 462: /* Line 1455 of yacc.c */ -#line 1916 "hphp.y" +#line 1919 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'|');;} break; case 463: /* Line 1455 of yacc.c */ -#line 1917 "hphp.y" +#line 1920 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'&');;} break; case 464: /* Line 1455 of yacc.c */ -#line 1918 "hphp.y" +#line 1921 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'^');;} break; case 465: /* Line 1455 of yacc.c */ -#line 1919 "hphp.y" +#line 1922 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'.');;} break; case 466: /* Line 1455 of yacc.c */ -#line 1920 "hphp.y" +#line 1923 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'+');;} break; case 467: /* Line 1455 of yacc.c */ -#line 1921 "hphp.y" +#line 1924 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'-');;} break; case 468: /* Line 1455 of yacc.c */ -#line 1922 "hphp.y" +#line 1925 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'*');;} break; case 469: /* Line 1455 of yacc.c */ -#line 1923 "hphp.y" +#line 1926 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'/');;} break; case 470: /* Line 1455 of yacc.c */ -#line 1924 "hphp.y" +#line 1927 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_POW);;} break; case 471: /* Line 1455 of yacc.c */ -#line 1925 "hphp.y" +#line 1928 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'%');;} break; case 472: /* Line 1455 of yacc.c */ -#line 1926 "hphp.y" +#line 1929 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL);;} break; case 473: /* Line 1455 of yacc.c */ -#line 1927 "hphp.y" +#line 1930 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR);;} break; case 474: /* Line 1455 of yacc.c */ -#line 1928 "hphp.y" +#line 1931 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 475: /* Line 1455 of yacc.c */ -#line 1929 "hphp.y" +#line 1932 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 476: /* Line 1455 of yacc.c */ -#line 1930 "hphp.y" +#line 1933 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'!',1);;} break; case 477: /* Line 1455 of yacc.c */ -#line 1931 "hphp.y" +#line 1934 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'~',1);;} break; case 478: /* Line 1455 of yacc.c */ -#line 1932 "hphp.y" +#line 1935 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_IDENTICAL);;} break; case 479: /* Line 1455 of yacc.c */ -#line 1933 "hphp.y" +#line 1936 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_IDENTICAL);;} break; case 480: /* Line 1455 of yacc.c */ -#line 1934 "hphp.y" +#line 1937 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_EQUAL);;} break; case 481: /* Line 1455 of yacc.c */ -#line 1935 "hphp.y" +#line 1938 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_EQUAL);;} break; case 482: /* Line 1455 of yacc.c */ -#line 1936 "hphp.y" +#line 1939 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'<');;} break; case 483: /* Line 1455 of yacc.c */ -#line 1937 "hphp.y" +#line 1940 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_SMALLER_OR_EQUAL);;} break; @@ -9983,14 +10000,14 @@ YYLTYPE yylloc; case 484: /* Line 1455 of yacc.c */ -#line 1939 "hphp.y" +#line 1942 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'>');;} break; case 485: /* Line 1455 of yacc.c */ -#line 1940 "hphp.y" +#line 1943 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_GREATER_OR_EQUAL);;} break; @@ -9998,175 +10015,175 @@ YYLTYPE yylloc; case 486: /* Line 1455 of yacc.c */ -#line 1942 "hphp.y" +#line 1945 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SPACESHIP);;} break; case 487: /* Line 1455 of yacc.c */ -#line 1944 "hphp.y" +#line 1947 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_INSTANCEOF);;} break; case 488: /* Line 1455 of yacc.c */ -#line 1945 "hphp.y" +#line 1948 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 489: /* Line 1455 of yacc.c */ -#line 1946 "hphp.y" +#line 1949 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (5)]), &(yyvsp[(3) - (5)]), (yyvsp[(5) - (5)]));;} break; case 490: /* Line 1455 of yacc.c */ -#line 1947 "hphp.y" +#line 1950 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (4)]), 0, (yyvsp[(4) - (4)]));;} break; case 491: /* Line 1455 of yacc.c */ -#line 1948 "hphp.y" +#line 1951 "hphp.y" { _p->onNullCoalesce((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 492: /* Line 1455 of yacc.c */ -#line 1949 "hphp.y" +#line 1952 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 493: /* Line 1455 of yacc.c */ -#line 1950 "hphp.y" +#line 1953 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INT_CAST,1);;} break; case 494: /* Line 1455 of yacc.c */ -#line 1951 "hphp.y" +#line 1954 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_DOUBLE_CAST,1);;} break; case 495: /* Line 1455 of yacc.c */ -#line 1952 "hphp.y" +#line 1955 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_STRING_CAST,1);;} break; case 496: /* Line 1455 of yacc.c */ -#line 1953 "hphp.y" +#line 1956 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_ARRAY_CAST,1);;} break; case 497: /* Line 1455 of yacc.c */ -#line 1954 "hphp.y" +#line 1957 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_OBJECT_CAST,1);;} break; case 498: /* Line 1455 of yacc.c */ -#line 1955 "hphp.y" +#line 1958 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_BOOL_CAST,1);;} break; case 499: /* Line 1455 of yacc.c */ -#line 1956 "hphp.y" +#line 1959 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_UNSET_CAST,1);;} break; case 500: /* Line 1455 of yacc.c */ -#line 1957 "hphp.y" +#line 1960 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_EXIT,1);;} break; case 501: /* Line 1455 of yacc.c */ -#line 1958 "hphp.y" +#line 1961 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'@',1);;} break; case 502: /* Line 1455 of yacc.c */ -#line 1959 "hphp.y" +#line 1962 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 503: /* Line 1455 of yacc.c */ -#line 1960 "hphp.y" +#line 1963 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 504: /* Line 1455 of yacc.c */ -#line 1961 "hphp.y" +#line 1964 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 505: /* Line 1455 of yacc.c */ -#line 1962 "hphp.y" +#line 1965 "hphp.y" { _p->onEncapsList((yyval),'`',(yyvsp[(2) - (3)]));;} break; case 506: /* Line 1455 of yacc.c */ -#line 1963 "hphp.y" +#line 1966 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_PRINT,1);;} break; case 507: /* Line 1455 of yacc.c */ -#line 1964 "hphp.y" +#line 1967 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 508: /* Line 1455 of yacc.c */ -#line 1971 "hphp.y" +#line 1974 "hphp.y" { (yyval) = (yyvsp[(3) - (5)]);;} break; case 509: /* Line 1455 of yacc.c */ -#line 1972 "hphp.y" +#line 1975 "hphp.y" { (yyval).reset();;} break; case 510: /* Line 1455 of yacc.c */ -#line 1977 "hphp.y" +#line 1980 "hphp.y" { Token t; _p->onNewLabelScope(true); _p->onClosureStart(t); @@ -10176,7 +10193,7 @@ YYLTYPE yylloc; case 511: /* Line 1455 of yacc.c */ -#line 1983 "hphp.y" +#line 1986 "hphp.y" { _p->finishStatement((yyvsp[(10) - (11)]), (yyvsp[(10) - (11)])); (yyvsp[(10) - (11)]) = 1; (yyval) = _p->onClosure(ClosureType::Long, nullptr, @@ -10188,7 +10205,7 @@ YYLTYPE yylloc; case 512: /* Line 1455 of yacc.c */ -#line 1991 "hphp.y" +#line 1994 "hphp.y" { Token t; _p->onNewLabelScope(true); _p->onClosureStart(t); @@ -10198,7 +10215,7 @@ YYLTYPE yylloc; case 513: /* Line 1455 of yacc.c */ -#line 1997 "hphp.y" +#line 2000 "hphp.y" { _p->finishStatement((yyvsp[(11) - (12)]), (yyvsp[(11) - (12)])); (yyvsp[(11) - (12)]) = 1; (yyval) = _p->onClosure(ClosureType::Long, &(yyvsp[(1) - (12)]), @@ -10210,7 +10227,7 @@ YYLTYPE yylloc; case 514: /* Line 1455 of yacc.c */ -#line 2007 "hphp.y" +#line 2010 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10224,7 +10241,7 @@ YYLTYPE yylloc; case 515: /* Line 1455 of yacc.c */ -#line 2015 "hphp.y" +#line 2018 "hphp.y" { Token v; Token w; Token x; (yyvsp[(1) - (4)]) = T_ASYNC; _p->onMemberModifier((yyvsp[(1) - (4)]), nullptr, (yyvsp[(1) - (4)])); @@ -10239,7 +10256,7 @@ YYLTYPE yylloc; case 516: /* Line 1455 of yacc.c */ -#line 2025 "hphp.y" +#line 2028 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10250,7 +10267,7 @@ YYLTYPE yylloc; case 517: /* Line 1455 of yacc.c */ -#line 2033 "hphp.y" +#line 2036 "hphp.y" { Token u; Token v; (yyvsp[(1) - (7)]) = T_ASYNC; _p->onMemberModifier((yyvsp[(1) - (7)]), nullptr, (yyvsp[(1) - (7)])); @@ -10265,7 +10282,7 @@ YYLTYPE yylloc; case 518: /* Line 1455 of yacc.c */ -#line 2043 "hphp.y" +#line 2046 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10276,7 +10293,7 @@ YYLTYPE yylloc; case 519: /* Line 1455 of yacc.c */ -#line 2049 "hphp.y" +#line 2052 "hphp.y" { Token u; Token v; Token w; Token x; Token y; (yyvsp[(1) - (5)]) = T_ASYNC; @@ -10293,7 +10310,7 @@ YYLTYPE yylloc; case 520: /* Line 1455 of yacc.c */ -#line 2060 "hphp.y" +#line 2063 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10307,7 +10324,7 @@ YYLTYPE yylloc; case 521: /* Line 1455 of yacc.c */ -#line 2068 "hphp.y" +#line 2071 "hphp.y" { Token v; Token w; Token x; _p->finishStatement((yyvsp[(3) - (3)]), (yyvsp[(3) - (3)])); (yyvsp[(3) - (3)]) = 1; (yyval) = _p->onClosure(ClosureType::Short, @@ -10320,7 +10337,7 @@ YYLTYPE yylloc; case 522: /* Line 1455 of yacc.c */ -#line 2075 "hphp.y" +#line 2078 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10331,7 +10348,7 @@ YYLTYPE yylloc; case 523: /* Line 1455 of yacc.c */ -#line 2083 "hphp.y" +#line 2086 "hphp.y" { Token u; Token v; _p->finishStatement((yyvsp[(6) - (6)]), (yyvsp[(6) - (6)])); (yyvsp[(6) - (6)]) = 1; (yyval) = _p->onClosure(ClosureType::Short, @@ -10344,28 +10361,28 @@ YYLTYPE yylloc; case 524: /* Line 1455 of yacc.c */ -#line 2093 "hphp.y" +#line 2096 "hphp.y" { (yyval) = _p->onExprForLambda((yyvsp[(2) - (2)]));;} break; case 525: /* Line 1455 of yacc.c */ -#line 2094 "hphp.y" +#line 2097 "hphp.y" { (yyval) = _p->onExprForLambda((yyvsp[(2) - (2)]));;} break; case 526: /* Line 1455 of yacc.c */ -#line 2096 "hphp.y" +#line 2099 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); ;} break; case 527: /* Line 1455 of yacc.c */ -#line 2100 "hphp.y" +#line 2103 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (1)]), _p); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)])); ;} break; @@ -10373,91 +10390,91 @@ YYLTYPE yylloc; case 528: /* Line 1455 of yacc.c */ -#line 2102 "hphp.y" +#line 2105 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 529: /* Line 1455 of yacc.c */ -#line 2109 "hphp.y" +#line 2112 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 530: /* Line 1455 of yacc.c */ -#line 2112 "hphp.y" +#line 2115 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 531: /* Line 1455 of yacc.c */ -#line 2119 "hphp.y" +#line 2122 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 532: /* Line 1455 of yacc.c */ -#line 2122 "hphp.y" +#line 2125 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 533: /* Line 1455 of yacc.c */ -#line 2127 "hphp.y" +#line 2130 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 534: /* Line 1455 of yacc.c */ -#line 2128 "hphp.y" +#line 2131 "hphp.y" { (yyval).reset(); ;} break; case 535: /* Line 1455 of yacc.c */ -#line 2133 "hphp.y" +#line 2136 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 536: /* Line 1455 of yacc.c */ -#line 2134 "hphp.y" +#line 2137 "hphp.y" { (yyval).reset(); ;} break; case 537: /* Line 1455 of yacc.c */ -#line 2138 "hphp.y" +#line 2141 "hphp.y" { _p->onArray((yyval), (yyvsp[(3) - (4)]), T_ARRAY);;} break; case 538: /* Line 1455 of yacc.c */ -#line 2142 "hphp.y" +#line 2145 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY);;} break; case 539: /* Line 1455 of yacc.c */ -#line 2143 "hphp.y" +#line 2146 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 540: /* Line 1455 of yacc.c */ -#line 2148 "hphp.y" +#line 2151 "hphp.y" { Token t; _p->onName(t,(yyvsp[(1) - (4)]),Parser::StringName); BEXP((yyval),t,(yyvsp[(3) - (4)]),T_COLLECTION);;} @@ -10466,7 +10483,7 @@ YYLTYPE yylloc; case 541: /* Line 1455 of yacc.c */ -#line 2155 "hphp.y" +#line 2158 "hphp.y" { Token t; _p->onName(t,(yyvsp[(1) - (4)]),Parser::StringName); BEXP((yyval),t,(yyvsp[(3) - (4)]),T_COLLECTION);;} @@ -10475,42 +10492,42 @@ YYLTYPE yylloc; case 542: /* Line 1455 of yacc.c */ -#line 2162 "hphp.y" +#line 2165 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 543: /* Line 1455 of yacc.c */ -#line 2164 "hphp.y" +#line 2167 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 544: /* Line 1455 of yacc.c */ -#line 2168 "hphp.y" +#line 2171 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 545: /* Line 1455 of yacc.c */ -#line 2169 "hphp.y" +#line 2172 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 546: /* Line 1455 of yacc.c */ -#line 2170 "hphp.y" +#line 2173 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 547: /* Line 1455 of yacc.c */ -#line 2171 "hphp.y" +#line 2174 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)])); ;} break; @@ -10518,49 +10535,49 @@ YYLTYPE yylloc; case 548: /* Line 1455 of yacc.c */ -#line 2173 "hphp.y" +#line 2176 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 549: /* Line 1455 of yacc.c */ -#line 2177 "hphp.y" +#line 2180 "hphp.y" { _p->onClosureParam((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 550: /* Line 1455 of yacc.c */ -#line 2178 "hphp.y" +#line 2181 "hphp.y" { _p->onClosureParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 551: /* Line 1455 of yacc.c */ -#line 2179 "hphp.y" +#line 2182 "hphp.y" { _p->onClosureParam((yyval), 0,(yyvsp[(1) - (1)]),0);;} break; case 552: /* Line 1455 of yacc.c */ -#line 2180 "hphp.y" +#line 2183 "hphp.y" { _p->onClosureParam((yyval), 0,(yyvsp[(2) - (2)]),1);;} break; case 553: /* Line 1455 of yacc.c */ -#line 2187 "hphp.y" +#line 2190 "hphp.y" { xhp_tag(_p,(yyval),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]));;} break; case 554: /* Line 1455 of yacc.c */ -#line 2190 "hphp.y" +#line 2193 "hphp.y" { Token t1; _p->onArray(t1,(yyvsp[(1) - (2)])); Token t2; _p->onArray(t2,(yyvsp[(2) - (2)])); Token file; scalar_file(_p, file); @@ -10575,7 +10592,7 @@ YYLTYPE yylloc; case 555: /* Line 1455 of yacc.c */ -#line 2201 "hphp.y" +#line 2204 "hphp.y" { Token file; scalar_file(_p, file); Token line; scalar_line(_p, line); _p->onArray((yyvsp[(4) - (6)]),(yyvsp[(1) - (6)])); @@ -10590,49 +10607,49 @@ YYLTYPE yylloc; case 556: /* Line 1455 of yacc.c */ -#line 2212 "hphp.y" +#line 2215 "hphp.y" { (yyval).reset(); (yyval).setText("");;} break; case 557: /* Line 1455 of yacc.c */ -#line 2213 "hphp.y" +#line 2216 "hphp.y" { (yyval).reset(); (yyval).setText((yyvsp[(1) - (1)]));;} break; case 558: /* Line 1455 of yacc.c */ -#line 2218 "hphp.y" +#line 2221 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (4)]),&(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]),0);;} break; case 559: /* Line 1455 of yacc.c */ -#line 2219 "hphp.y" +#line 2222 "hphp.y" { (yyval).reset();;} break; case 560: /* Line 1455 of yacc.c */ -#line 2222 "hphp.y" +#line 2225 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (2)]),0,(yyvsp[(2) - (2)]),0);;} break; case 561: /* Line 1455 of yacc.c */ -#line 2223 "hphp.y" +#line 2226 "hphp.y" { (yyval).reset();;} break; case 562: /* Line 1455 of yacc.c */ -#line 2226 "hphp.y" +#line 2229 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -10640,7 +10657,7 @@ YYLTYPE yylloc; case 563: /* Line 1455 of yacc.c */ -#line 2230 "hphp.y" +#line 2233 "hphp.y" { (yyvsp[(1) - (1)]).xhpDecode(); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} @@ -10649,14 +10666,14 @@ YYLTYPE yylloc; case 564: /* Line 1455 of yacc.c */ -#line 2233 "hphp.y" +#line 2236 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 565: /* Line 1455 of yacc.c */ -#line 2236 "hphp.y" +#line 2239 "hphp.y" { (yyval).reset(); if ((yyvsp[(1) - (1)]).htmlTrim()) { (yyvsp[(1) - (1)]).xhpDecode(); @@ -10669,644 +10686,644 @@ YYLTYPE yylloc; case 566: /* Line 1455 of yacc.c */ -#line 2243 "hphp.y" +#line 2246 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); ;} break; case 567: /* Line 1455 of yacc.c */ -#line 2244 "hphp.y" +#line 2247 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 568: /* Line 1455 of yacc.c */ -#line 2248 "hphp.y" +#line 2251 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 569: /* Line 1455 of yacc.c */ -#line 2250 "hphp.y" +#line 2253 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + ":" + (yyvsp[(3) - (3)]);;} break; case 570: /* Line 1455 of yacc.c */ -#line 2252 "hphp.y" +#line 2255 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + "-" + (yyvsp[(3) - (3)]);;} break; case 571: /* Line 1455 of yacc.c */ -#line 2255 "hphp.y" +#line 2258 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 572: /* Line 1455 of yacc.c */ -#line 2256 "hphp.y" +#line 2259 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 573: /* Line 1455 of yacc.c */ -#line 2257 "hphp.y" +#line 2260 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 574: /* Line 1455 of yacc.c */ -#line 2258 "hphp.y" +#line 2261 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 575: /* Line 1455 of yacc.c */ -#line 2259 "hphp.y" +#line 2262 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 576: /* Line 1455 of yacc.c */ -#line 2260 "hphp.y" +#line 2263 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 577: /* Line 1455 of yacc.c */ -#line 2261 "hphp.y" +#line 2264 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 578: /* Line 1455 of yacc.c */ -#line 2262 "hphp.y" +#line 2265 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 579: /* Line 1455 of yacc.c */ -#line 2263 "hphp.y" +#line 2266 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 580: /* Line 1455 of yacc.c */ -#line 2264 "hphp.y" +#line 2267 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 581: /* Line 1455 of yacc.c */ -#line 2265 "hphp.y" +#line 2268 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 582: /* Line 1455 of yacc.c */ -#line 2266 "hphp.y" +#line 2269 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 583: /* Line 1455 of yacc.c */ -#line 2267 "hphp.y" +#line 2270 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 584: /* Line 1455 of yacc.c */ -#line 2268 "hphp.y" +#line 2271 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 585: /* Line 1455 of yacc.c */ -#line 2269 "hphp.y" +#line 2272 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 586: /* Line 1455 of yacc.c */ -#line 2270 "hphp.y" +#line 2273 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 587: /* Line 1455 of yacc.c */ -#line 2271 "hphp.y" +#line 2274 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 588: /* Line 1455 of yacc.c */ -#line 2272 "hphp.y" +#line 2275 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 589: /* Line 1455 of yacc.c */ -#line 2273 "hphp.y" +#line 2276 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 590: /* Line 1455 of yacc.c */ -#line 2274 "hphp.y" +#line 2277 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 591: /* Line 1455 of yacc.c */ -#line 2275 "hphp.y" +#line 2278 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 592: /* Line 1455 of yacc.c */ -#line 2276 "hphp.y" +#line 2279 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 593: /* Line 1455 of yacc.c */ -#line 2277 "hphp.y" +#line 2280 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 594: /* Line 1455 of yacc.c */ -#line 2278 "hphp.y" +#line 2281 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 595: /* Line 1455 of yacc.c */ -#line 2279 "hphp.y" +#line 2282 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 596: /* Line 1455 of yacc.c */ -#line 2280 "hphp.y" +#line 2283 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 597: /* Line 1455 of yacc.c */ -#line 2281 "hphp.y" +#line 2284 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 598: /* Line 1455 of yacc.c */ -#line 2282 "hphp.y" +#line 2285 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 599: /* Line 1455 of yacc.c */ -#line 2283 "hphp.y" +#line 2286 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 600: /* Line 1455 of yacc.c */ -#line 2284 "hphp.y" +#line 2287 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 601: /* Line 1455 of yacc.c */ -#line 2285 "hphp.y" +#line 2288 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 602: /* Line 1455 of yacc.c */ -#line 2286 "hphp.y" +#line 2289 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 603: /* Line 1455 of yacc.c */ -#line 2287 "hphp.y" +#line 2290 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 604: /* Line 1455 of yacc.c */ -#line 2288 "hphp.y" +#line 2291 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 605: /* Line 1455 of yacc.c */ -#line 2289 "hphp.y" +#line 2292 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 606: /* Line 1455 of yacc.c */ -#line 2290 "hphp.y" +#line 2293 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 607: /* Line 1455 of yacc.c */ -#line 2291 "hphp.y" +#line 2294 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 608: /* Line 1455 of yacc.c */ -#line 2292 "hphp.y" +#line 2295 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 609: /* Line 1455 of yacc.c */ -#line 2293 "hphp.y" +#line 2296 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 610: /* Line 1455 of yacc.c */ -#line 2294 "hphp.y" +#line 2297 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 611: /* Line 1455 of yacc.c */ -#line 2295 "hphp.y" +#line 2298 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 612: /* Line 1455 of yacc.c */ -#line 2296 "hphp.y" +#line 2299 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 613: /* Line 1455 of yacc.c */ -#line 2297 "hphp.y" +#line 2300 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 614: /* Line 1455 of yacc.c */ -#line 2298 "hphp.y" +#line 2301 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 615: /* Line 1455 of yacc.c */ -#line 2299 "hphp.y" +#line 2302 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 616: /* Line 1455 of yacc.c */ -#line 2300 "hphp.y" +#line 2303 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 617: /* Line 1455 of yacc.c */ -#line 2301 "hphp.y" +#line 2304 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 618: /* Line 1455 of yacc.c */ -#line 2302 "hphp.y" +#line 2305 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 619: /* Line 1455 of yacc.c */ -#line 2303 "hphp.y" +#line 2306 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 620: /* Line 1455 of yacc.c */ -#line 2304 "hphp.y" +#line 2307 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 621: /* Line 1455 of yacc.c */ -#line 2305 "hphp.y" +#line 2308 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 622: /* Line 1455 of yacc.c */ -#line 2306 "hphp.y" +#line 2309 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 623: /* Line 1455 of yacc.c */ -#line 2307 "hphp.y" +#line 2310 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 624: /* Line 1455 of yacc.c */ -#line 2308 "hphp.y" +#line 2311 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 625: /* Line 1455 of yacc.c */ -#line 2309 "hphp.y" +#line 2312 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 626: /* Line 1455 of yacc.c */ -#line 2310 "hphp.y" +#line 2313 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 627: /* Line 1455 of yacc.c */ -#line 2311 "hphp.y" +#line 2314 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 628: /* Line 1455 of yacc.c */ -#line 2312 "hphp.y" +#line 2315 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 629: /* Line 1455 of yacc.c */ -#line 2313 "hphp.y" +#line 2316 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 630: /* Line 1455 of yacc.c */ -#line 2314 "hphp.y" +#line 2317 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 631: /* Line 1455 of yacc.c */ -#line 2315 "hphp.y" +#line 2318 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 632: /* Line 1455 of yacc.c */ -#line 2316 "hphp.y" +#line 2319 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 633: /* Line 1455 of yacc.c */ -#line 2317 "hphp.y" +#line 2320 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 634: /* Line 1455 of yacc.c */ -#line 2318 "hphp.y" +#line 2321 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 635: /* Line 1455 of yacc.c */ -#line 2319 "hphp.y" +#line 2322 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 636: /* Line 1455 of yacc.c */ -#line 2320 "hphp.y" +#line 2323 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 637: /* Line 1455 of yacc.c */ -#line 2321 "hphp.y" +#line 2324 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 638: /* Line 1455 of yacc.c */ -#line 2322 "hphp.y" +#line 2325 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 639: /* Line 1455 of yacc.c */ -#line 2323 "hphp.y" +#line 2326 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 640: /* Line 1455 of yacc.c */ -#line 2324 "hphp.y" +#line 2327 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 641: /* Line 1455 of yacc.c */ -#line 2325 "hphp.y" +#line 2328 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 642: /* Line 1455 of yacc.c */ -#line 2326 "hphp.y" +#line 2329 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 643: /* Line 1455 of yacc.c */ -#line 2327 "hphp.y" +#line 2330 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 644: /* Line 1455 of yacc.c */ -#line 2328 "hphp.y" +#line 2331 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 645: /* Line 1455 of yacc.c */ -#line 2329 "hphp.y" +#line 2332 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 646: /* Line 1455 of yacc.c */ -#line 2330 "hphp.y" +#line 2333 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 647: /* Line 1455 of yacc.c */ -#line 2331 "hphp.y" +#line 2334 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 648: /* Line 1455 of yacc.c */ -#line 2332 "hphp.y" +#line 2335 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 649: /* Line 1455 of yacc.c */ -#line 2333 "hphp.y" +#line 2336 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 650: /* Line 1455 of yacc.c */ -#line 2334 "hphp.y" +#line 2337 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 651: /* Line 1455 of yacc.c */ -#line 2339 "hphp.y" +#line 2342 "hphp.y" { _p->onCall((yyval),0,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 652: /* Line 1455 of yacc.c */ -#line 2343 "hphp.y" +#line 2346 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 653: /* Line 1455 of yacc.c */ -#line 2344 "hphp.y" +#line 2347 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 654: /* Line 1455 of yacc.c */ -#line 2348 "hphp.y" +#line 2351 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 655: /* Line 1455 of yacc.c */ -#line 2349 "hphp.y" +#line 2352 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 656: /* Line 1455 of yacc.c */ -#line 2350 "hphp.y" +#line 2353 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StaticName);;} break; case 657: /* Line 1455 of yacc.c */ -#line 2351 "hphp.y" +#line 2354 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]), Parser::StaticClassExprName);;} break; @@ -11314,7 +11331,7 @@ YYLTYPE yylloc; case 658: /* Line 1455 of yacc.c */ -#line 2353 "hphp.y" +#line 2356 "hphp.y" { _p->onName((yyval),(yyvsp[(2) - (3)]), Parser::StaticClassExprName);;} break; @@ -11322,28 +11339,28 @@ YYLTYPE yylloc; case 659: /* Line 1455 of yacc.c */ -#line 2357 "hphp.y" +#line 2360 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 660: /* Line 1455 of yacc.c */ -#line 2366 "hphp.y" +#line 2369 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 661: /* Line 1455 of yacc.c */ -#line 2369 "hphp.y" +#line 2372 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 662: /* Line 1455 of yacc.c */ -#line 2370 "hphp.y" +#line 2373 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]), Parser::StaticClassExprName);;} break; @@ -11351,112 +11368,112 @@ YYLTYPE yylloc; case 663: /* Line 1455 of yacc.c */ -#line 2380 "hphp.y" +#line 2383 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 664: /* Line 1455 of yacc.c */ -#line 2384 "hphp.y" +#line 2387 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 665: /* Line 1455 of yacc.c */ -#line 2385 "hphp.y" +#line 2388 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StaticName);;} break; case 666: /* Line 1455 of yacc.c */ -#line 2386 "hphp.y" +#line 2389 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::ExprName);;} break; case 667: /* Line 1455 of yacc.c */ -#line 2390 "hphp.y" +#line 2393 "hphp.y" { (yyval).reset();;} break; case 668: /* Line 1455 of yacc.c */ -#line 2391 "hphp.y" +#line 2394 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 669: /* Line 1455 of yacc.c */ -#line 2392 "hphp.y" +#line 2395 "hphp.y" { (yyval).reset();;} break; case 670: /* Line 1455 of yacc.c */ -#line 2396 "hphp.y" +#line 2399 "hphp.y" { (yyval).reset();;} break; case 671: /* Line 1455 of yacc.c */ -#line 2397 "hphp.y" +#line 2400 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (1)]), 0);;} break; case 672: /* Line 1455 of yacc.c */ -#line 2398 "hphp.y" +#line 2401 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 673: /* Line 1455 of yacc.c */ -#line 2402 "hphp.y" +#line 2405 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 674: /* Line 1455 of yacc.c */ -#line 2403 "hphp.y" +#line 2406 "hphp.y" { (yyval).reset();;} break; case 675: /* Line 1455 of yacc.c */ -#line 2407 "hphp.y" +#line 2410 "hphp.y" { _p->onScalar((yyval), T_LNUMBER, (yyvsp[(1) - (1)]));;} break; case 676: /* Line 1455 of yacc.c */ -#line 2408 "hphp.y" +#line 2411 "hphp.y" { _p->onScalar((yyval), T_DNUMBER, (yyvsp[(1) - (1)]));;} break; case 677: /* Line 1455 of yacc.c */ -#line 2409 "hphp.y" +#line 2412 "hphp.y" { _p->onScalar((yyval), T_ONUMBER, (yyvsp[(1) - (1)]));;} break; case 678: /* Line 1455 of yacc.c */ -#line 2410 "hphp.y" +#line 2413 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -11464,322 +11481,322 @@ YYLTYPE yylloc; case 679: /* Line 1455 of yacc.c */ -#line 2412 "hphp.y" +#line 2415 "hphp.y" { _p->onScalar((yyval), T_LINE, (yyvsp[(1) - (1)]));;} break; case 680: /* Line 1455 of yacc.c */ -#line 2413 "hphp.y" +#line 2416 "hphp.y" { _p->onScalar((yyval), T_FILE, (yyvsp[(1) - (1)]));;} break; case 681: /* Line 1455 of yacc.c */ -#line 2414 "hphp.y" +#line 2417 "hphp.y" { _p->onScalar((yyval), T_DIR, (yyvsp[(1) - (1)]));;} break; case 682: /* Line 1455 of yacc.c */ -#line 2415 "hphp.y" +#line 2418 "hphp.y" { _p->onScalar((yyval), T_CLASS_C, (yyvsp[(1) - (1)]));;} break; case 683: /* Line 1455 of yacc.c */ -#line 2416 "hphp.y" +#line 2419 "hphp.y" { _p->onScalar((yyval), T_TRAIT_C, (yyvsp[(1) - (1)]));;} break; case 684: /* Line 1455 of yacc.c */ -#line 2417 "hphp.y" +#line 2420 "hphp.y" { _p->onScalar((yyval), T_METHOD_C, (yyvsp[(1) - (1)]));;} break; case 685: /* Line 1455 of yacc.c */ -#line 2418 "hphp.y" +#line 2421 "hphp.y" { _p->onScalar((yyval), T_FUNC_C, (yyvsp[(1) - (1)]));;} break; case 686: /* Line 1455 of yacc.c */ -#line 2419 "hphp.y" +#line 2422 "hphp.y" { _p->onScalar((yyval), T_NS_C, (yyvsp[(1) - (1)]));;} break; case 687: /* Line 1455 of yacc.c */ -#line 2420 "hphp.y" +#line 2423 "hphp.y" { _p->onScalar((yyval), T_COMPILER_HALT_OFFSET, (yyvsp[(1) - (1)]));;} break; case 688: /* Line 1455 of yacc.c */ -#line 2423 "hphp.y" +#line 2426 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(2) - (3)]));;} break; case 689: /* Line 1455 of yacc.c */ -#line 2425 "hphp.y" +#line 2428 "hphp.y" { (yyval).setText(""); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyval));;} break; case 690: /* Line 1455 of yacc.c */ -#line 2429 "hphp.y" +#line 2432 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 691: /* Line 1455 of yacc.c */ -#line 2430 "hphp.y" +#line 2433 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 692: /* Line 1455 of yacc.c */ -#line 2432 "hphp.y" +#line 2435 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 693: /* Line 1455 of yacc.c */ -#line 2433 "hphp.y" +#line 2436 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY); ;} break; case 694: /* Line 1455 of yacc.c */ -#line 2435 "hphp.y" +#line 2438 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 695: /* Line 1455 of yacc.c */ -#line 2436 "hphp.y" +#line 2439 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 696: /* Line 1455 of yacc.c */ -#line 2437 "hphp.y" +#line 2440 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 697: /* Line 1455 of yacc.c */ -#line 2438 "hphp.y" +#line 2441 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 698: /* Line 1455 of yacc.c */ -#line 2440 "hphp.y" +#line 2443 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_OR);;} break; case 699: /* Line 1455 of yacc.c */ -#line 2442 "hphp.y" +#line 2445 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_AND);;} break; case 700: /* Line 1455 of yacc.c */ -#line 2444 "hphp.y" +#line 2447 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_OR);;} break; case 701: /* Line 1455 of yacc.c */ -#line 2446 "hphp.y" +#line 2449 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_AND);;} break; case 702: /* Line 1455 of yacc.c */ -#line 2448 "hphp.y" +#line 2451 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_XOR);;} break; case 703: /* Line 1455 of yacc.c */ -#line 2449 "hphp.y" +#line 2452 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'|');;} break; case 704: /* Line 1455 of yacc.c */ -#line 2450 "hphp.y" +#line 2453 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'&');;} break; case 705: /* Line 1455 of yacc.c */ -#line 2451 "hphp.y" +#line 2454 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'^');;} break; case 706: /* Line 1455 of yacc.c */ -#line 2452 "hphp.y" +#line 2455 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'.');;} break; case 707: /* Line 1455 of yacc.c */ -#line 2453 "hphp.y" +#line 2456 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'+');;} break; case 708: /* Line 1455 of yacc.c */ -#line 2454 "hphp.y" +#line 2457 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'-');;} break; case 709: /* Line 1455 of yacc.c */ -#line 2455 "hphp.y" +#line 2458 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'*');;} break; case 710: /* Line 1455 of yacc.c */ -#line 2456 "hphp.y" +#line 2459 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'/');;} break; case 711: /* Line 1455 of yacc.c */ -#line 2457 "hphp.y" +#line 2460 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'%');;} break; case 712: /* Line 1455 of yacc.c */ -#line 2458 "hphp.y" +#line 2461 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL);;} break; case 713: /* Line 1455 of yacc.c */ -#line 2459 "hphp.y" +#line 2462 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR);;} break; case 714: /* Line 1455 of yacc.c */ -#line 2460 "hphp.y" +#line 2463 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_POW);;} break; case 715: /* Line 1455 of yacc.c */ -#line 2461 "hphp.y" +#line 2464 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'!',1);;} break; case 716: /* Line 1455 of yacc.c */ -#line 2462 "hphp.y" +#line 2465 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'~',1);;} break; case 717: /* Line 1455 of yacc.c */ -#line 2463 "hphp.y" +#line 2466 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 718: /* Line 1455 of yacc.c */ -#line 2464 "hphp.y" +#line 2467 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 719: /* Line 1455 of yacc.c */ -#line 2466 "hphp.y" +#line 2469 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_IDENTICAL);;} break; case 720: /* Line 1455 of yacc.c */ -#line 2468 "hphp.y" +#line 2471 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_IDENTICAL);;} break; case 721: /* Line 1455 of yacc.c */ -#line 2470 "hphp.y" +#line 2473 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_EQUAL);;} break; case 722: /* Line 1455 of yacc.c */ -#line 2472 "hphp.y" +#line 2475 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_EQUAL);;} break; case 723: /* Line 1455 of yacc.c */ -#line 2473 "hphp.y" +#line 2476 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'<');;} break; case 724: /* Line 1455 of yacc.c */ -#line 2475 "hphp.y" +#line 2478 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_SMALLER_OR_EQUAL);;} break; @@ -11787,14 +11804,14 @@ YYLTYPE yylloc; case 725: /* Line 1455 of yacc.c */ -#line 2477 "hphp.y" +#line 2480 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'>');;} break; case 726: /* Line 1455 of yacc.c */ -#line 2480 "hphp.y" +#line 2483 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_GREATER_OR_EQUAL);;} break; @@ -11802,35 +11819,35 @@ YYLTYPE yylloc; case 727: /* Line 1455 of yacc.c */ -#line 2484 "hphp.y" +#line 2487 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SPACESHIP);;} break; case 728: /* Line 1455 of yacc.c */ -#line 2487 "hphp.y" +#line 2490 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (5)]), &(yyvsp[(3) - (5)]), (yyvsp[(5) - (5)]));;} break; case 729: /* Line 1455 of yacc.c */ -#line 2488 "hphp.y" +#line 2491 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (4)]), 0, (yyvsp[(4) - (4)]));;} break; case 730: /* Line 1455 of yacc.c */ -#line 2494 "hphp.y" +#line 2497 "hphp.y" { _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; case 731: /* Line 1455 of yacc.c */ -#line 2496 "hphp.y" +#line 2499 "hphp.y" { (yyvsp[(1) - (3)]).xhpLabel(); _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; @@ -11838,56 +11855,56 @@ YYLTYPE yylloc; case 732: /* Line 1455 of yacc.c */ -#line 2500 "hphp.y" +#line 2503 "hphp.y" { _p->onClassClass((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; case 733: /* Line 1455 of yacc.c */ -#line 2504 "hphp.y" +#line 2507 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 734: /* Line 1455 of yacc.c */ -#line 2505 "hphp.y" +#line 2508 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 735: /* Line 1455 of yacc.c */ -#line 2506 "hphp.y" +#line 2509 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 736: /* Line 1455 of yacc.c */ -#line 2507 "hphp.y" +#line 2510 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 737: /* Line 1455 of yacc.c */ -#line 2508 "hphp.y" +#line 2511 "hphp.y" { _p->onEncapsList((yyval),'"',(yyvsp[(2) - (3)]));;} break; case 738: /* Line 1455 of yacc.c */ -#line 2509 "hphp.y" +#line 2512 "hphp.y" { _p->onEncapsList((yyval),'\'',(yyvsp[(2) - (3)]));;} break; case 739: /* Line 1455 of yacc.c */ -#line 2511 "hphp.y" +#line 2514 "hphp.y" { _p->onEncapsList((yyval),T_START_HEREDOC, (yyvsp[(2) - (3)]));;} break; @@ -11895,140 +11912,140 @@ YYLTYPE yylloc; case 740: /* Line 1455 of yacc.c */ -#line 2516 "hphp.y" +#line 2519 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 741: /* Line 1455 of yacc.c */ -#line 2517 "hphp.y" +#line 2520 "hphp.y" { (yyval).reset();;} break; case 742: /* Line 1455 of yacc.c */ -#line 2521 "hphp.y" +#line 2524 "hphp.y" { (yyval).reset();;} break; case 743: /* Line 1455 of yacc.c */ -#line 2522 "hphp.y" +#line 2525 "hphp.y" { (yyval).reset();;} break; case 744: /* Line 1455 of yacc.c */ -#line 2525 "hphp.y" +#line 2528 "hphp.y" { only_in_hh_syntax(_p); (yyval).reset();;} break; case 745: /* Line 1455 of yacc.c */ -#line 2526 "hphp.y" +#line 2529 "hphp.y" { (yyval).reset();;} break; case 746: /* Line 1455 of yacc.c */ -#line 2532 "hphp.y" +#line 2535 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 747: /* Line 1455 of yacc.c */ -#line 2534 "hphp.y" +#line 2537 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 748: /* Line 1455 of yacc.c */ -#line 2536 "hphp.y" +#line 2539 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 749: /* Line 1455 of yacc.c */ -#line 2537 "hphp.y" +#line 2540 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 750: /* Line 1455 of yacc.c */ -#line 2541 "hphp.y" +#line 2544 "hphp.y" { _p->onScalar((yyval), T_LNUMBER, (yyvsp[(1) - (1)]));;} break; case 751: /* Line 1455 of yacc.c */ -#line 2542 "hphp.y" +#line 2545 "hphp.y" { _p->onScalar((yyval), T_DNUMBER, (yyvsp[(1) - (1)]));;} break; case 752: /* Line 1455 of yacc.c */ -#line 2543 "hphp.y" +#line 2546 "hphp.y" { _p->onScalar((yyval), T_ONUMBER, (yyvsp[(1) - (1)]));;} break; case 753: /* Line 1455 of yacc.c */ -#line 2546 "hphp.y" +#line 2549 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(2) - (3)]));;} break; case 754: /* Line 1455 of yacc.c */ -#line 2548 "hphp.y" +#line 2551 "hphp.y" { (yyval).setText(""); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyval));;} break; case 755: /* Line 1455 of yacc.c */ -#line 2551 "hphp.y" +#line 2554 "hphp.y" { _p->onScalar((yyval),T_LNUMBER,(yyvsp[(1) - (1)]));;} break; case 756: /* Line 1455 of yacc.c */ -#line 2552 "hphp.y" +#line 2555 "hphp.y" { _p->onScalar((yyval),T_DNUMBER,(yyvsp[(1) - (1)]));;} break; case 757: /* Line 1455 of yacc.c */ -#line 2553 "hphp.y" +#line 2556 "hphp.y" { _p->onScalar((yyval),T_ONUMBER,(yyvsp[(1) - (1)]));;} break; case 758: /* Line 1455 of yacc.c */ -#line 2554 "hphp.y" +#line 2557 "hphp.y" { constant_ae(_p,(yyval),(yyvsp[(1) - (1)]));;} break; case 759: /* Line 1455 of yacc.c */ -#line 2558 "hphp.y" +#line 2561 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING,(yyvsp[(1) - (1)]));;} break; @@ -12036,7 +12053,7 @@ YYLTYPE yylloc; case 760: /* Line 1455 of yacc.c */ -#line 2561 "hphp.y" +#line 2564 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (3)]) + (yyvsp[(3) - (3)]));;} @@ -12045,161 +12062,161 @@ YYLTYPE yylloc; case 762: /* Line 1455 of yacc.c */ -#line 2568 "hphp.y" +#line 2571 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 763: /* Line 1455 of yacc.c */ -#line 2569 "hphp.y" +#line 2572 "hphp.y" { constant_ae(_p,(yyval),(yyvsp[(1) - (1)]));;} break; case 764: /* Line 1455 of yacc.c */ -#line 2570 "hphp.y" +#line 2573 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 765: /* Line 1455 of yacc.c */ -#line 2571 "hphp.y" +#line 2574 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 766: /* Line 1455 of yacc.c */ -#line 2573 "hphp.y" +#line 2576 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY);;} break; case 767: /* Line 1455 of yacc.c */ -#line 2574 "hphp.y" +#line 2577 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 768: /* Line 1455 of yacc.c */ -#line 2576 "hphp.y" +#line 2579 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 769: /* Line 1455 of yacc.c */ -#line 2581 "hphp.y" +#line 2584 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 770: /* Line 1455 of yacc.c */ -#line 2582 "hphp.y" +#line 2585 "hphp.y" { (yyval).reset();;} break; case 771: /* Line 1455 of yacc.c */ -#line 2587 "hphp.y" +#line 2590 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 772: /* Line 1455 of yacc.c */ -#line 2589 "hphp.y" +#line 2592 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 773: /* Line 1455 of yacc.c */ -#line 2591 "hphp.y" +#line 2594 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 774: /* Line 1455 of yacc.c */ -#line 2592 "hphp.y" +#line 2595 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 775: /* Line 1455 of yacc.c */ -#line 2596 "hphp.y" +#line 2599 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 776: /* Line 1455 of yacc.c */ -#line 2597 "hphp.y" +#line 2600 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 777: /* Line 1455 of yacc.c */ -#line 2602 "hphp.y" +#line 2605 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 778: /* Line 1455 of yacc.c */ -#line 2603 "hphp.y" +#line 2606 "hphp.y" { (yyval).reset(); ;} break; case 779: /* Line 1455 of yacc.c */ -#line 2608 "hphp.y" +#line 2611 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 780: /* Line 1455 of yacc.c */ -#line 2611 "hphp.y" +#line 2614 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 781: /* Line 1455 of yacc.c */ -#line 2616 "hphp.y" +#line 2619 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 782: /* Line 1455 of yacc.c */ -#line 2617 "hphp.y" +#line 2620 "hphp.y" { (yyval).reset();;} break; case 783: /* Line 1455 of yacc.c */ -#line 2620 "hphp.y" +#line 2623 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 784: /* Line 1455 of yacc.c */ -#line 2621 "hphp.y" +#line 2624 "hphp.y" { Token t; t.reset(); _p->onArray((yyval),t,T_ARRAY);;} break; @@ -12207,175 +12224,175 @@ YYLTYPE yylloc; case 785: /* Line 1455 of yacc.c */ -#line 2628 "hphp.y" +#line 2631 "hphp.y" { _p->onUserAttribute((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]));;} break; case 786: /* Line 1455 of yacc.c */ -#line 2630 "hphp.y" +#line 2633 "hphp.y" { _p->onUserAttribute((yyval), 0,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 787: /* Line 1455 of yacc.c */ -#line 2633 "hphp.y" +#line 2636 "hphp.y" { only_in_hh_syntax(_p);;} break; case 788: /* Line 1455 of yacc.c */ -#line 2635 "hphp.y" +#line 2638 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 789: /* Line 1455 of yacc.c */ -#line 2638 "hphp.y" +#line 2641 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 790: /* Line 1455 of yacc.c */ -#line 2641 "hphp.y" +#line 2644 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 791: /* Line 1455 of yacc.c */ -#line 2642 "hphp.y" +#line 2645 "hphp.y" { (yyval).reset();;} break; case 792: /* Line 1455 of yacc.c */ -#line 2646 "hphp.y" +#line 2649 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 0;;} break; case 793: /* Line 1455 of yacc.c */ -#line 2647 "hphp.y" +#line 2650 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 1;;} break; case 794: /* Line 1455 of yacc.c */ -#line 2651 "hphp.y" +#line 2654 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = HPHP::ObjPropNormal;;} break; case 795: /* Line 1455 of yacc.c */ -#line 2652 "hphp.y" +#line 2655 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = HPHP::ObjPropXhpAttr;;} break; case 796: /* Line 1455 of yacc.c */ -#line 2653 "hphp.y" +#line 2656 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); (yyval) = HPHP::ObjPropNormal;;} break; case 797: /* Line 1455 of yacc.c */ -#line 2657 "hphp.y" +#line 2660 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 798: /* Line 1455 of yacc.c */ -#line 2659 "hphp.y" +#line 2662 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = HPHP::ObjPropNormal;;} break; case 799: /* Line 1455 of yacc.c */ -#line 2667 "hphp.y" +#line 2670 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 800: /* Line 1455 of yacc.c */ -#line 2668 "hphp.y" +#line 2671 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 801: /* Line 1455 of yacc.c */ -#line 2672 "hphp.y" +#line 2675 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 802: /* Line 1455 of yacc.c */ -#line 2674 "hphp.y" +#line 2677 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 803: /* Line 1455 of yacc.c */ -#line 2682 "hphp.y" +#line 2685 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 804: /* Line 1455 of yacc.c */ -#line 2683 "hphp.y" +#line 2686 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 805: /* Line 1455 of yacc.c */ -#line 2687 "hphp.y" +#line 2690 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 806: /* Line 1455 of yacc.c */ -#line 2689 "hphp.y" +#line 2692 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 807: /* Line 1455 of yacc.c */ -#line 2694 "hphp.y" +#line 2697 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 808: /* Line 1455 of yacc.c */ -#line 2696 "hphp.y" +#line 2699 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 809: /* Line 1455 of yacc.c */ -#line 2702 "hphp.y" +#line 2705 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(2) - (5)]), @@ -12390,7 +12407,7 @@ YYLTYPE yylloc; case 810: /* Line 1455 of yacc.c */ -#line 2713 "hphp.y" +#line 2716 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(2) - (5)]), @@ -12405,7 +12422,7 @@ YYLTYPE yylloc; case 811: /* Line 1455 of yacc.c */ -#line 2728 "hphp.y" +#line 2731 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(2) - (5)]), @@ -12420,7 +12437,7 @@ YYLTYPE yylloc; case 812: /* Line 1455 of yacc.c */ -#line 2740 "hphp.y" +#line 2743 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(2) - (5)]), @@ -12435,49 +12452,49 @@ YYLTYPE yylloc; case 813: /* Line 1455 of yacc.c */ -#line 2752 "hphp.y" +#line 2755 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 814: /* Line 1455 of yacc.c */ -#line 2753 "hphp.y" +#line 2756 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 815: /* Line 1455 of yacc.c */ -#line 2754 "hphp.y" +#line 2757 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 816: /* Line 1455 of yacc.c */ -#line 2755 "hphp.y" +#line 2758 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 817: /* Line 1455 of yacc.c */ -#line 2756 "hphp.y" +#line 2759 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 818: /* Line 1455 of yacc.c */ -#line 2757 "hphp.y" +#line 2760 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 819: /* Line 1455 of yacc.c */ -#line 2759 "hphp.y" +#line 2762 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(1) - (3)]), @@ -12492,63 +12509,63 @@ YYLTYPE yylloc; case 820: /* Line 1455 of yacc.c */ -#line 2776 "hphp.y" +#line 2779 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 821: /* Line 1455 of yacc.c */ -#line 2778 "hphp.y" +#line 2781 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 822: /* Line 1455 of yacc.c */ -#line 2780 "hphp.y" +#line 2783 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 823: /* Line 1455 of yacc.c */ -#line 2781 "hphp.y" +#line 2784 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 824: /* Line 1455 of yacc.c */ -#line 2785 "hphp.y" +#line 2788 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 825: /* Line 1455 of yacc.c */ -#line 2786 "hphp.y" +#line 2789 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 826: /* Line 1455 of yacc.c */ -#line 2787 "hphp.y" +#line 2790 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 827: /* Line 1455 of yacc.c */ -#line 2788 "hphp.y" +#line 2791 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 828: /* Line 1455 of yacc.c */ -#line 2796 "hphp.y" +#line 2799 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(1) - (3)]), @@ -12563,245 +12580,245 @@ YYLTYPE yylloc; case 829: /* Line 1455 of yacc.c */ -#line 2805 "hphp.y" +#line 2808 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 830: /* Line 1455 of yacc.c */ -#line 2807 "hphp.y" +#line 2810 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 831: /* Line 1455 of yacc.c */ -#line 2808 "hphp.y" +#line 2811 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 832: /* Line 1455 of yacc.c */ -#line 2817 "hphp.y" +#line 2820 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 833: /* Line 1455 of yacc.c */ -#line 2818 "hphp.y" +#line 2821 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 834: /* Line 1455 of yacc.c */ -#line 2819 "hphp.y" +#line 2822 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 835: /* Line 1455 of yacc.c */ -#line 2820 "hphp.y" +#line 2823 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 836: /* Line 1455 of yacc.c */ -#line 2821 "hphp.y" +#line 2824 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 837: /* Line 1455 of yacc.c */ -#line 2822 "hphp.y" +#line 2825 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 838: /* Line 1455 of yacc.c */ -#line 2823 "hphp.y" +#line 2826 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 839: /* Line 1455 of yacc.c */ -#line 2825 "hphp.y" +#line 2828 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 840: /* Line 1455 of yacc.c */ -#line 2827 "hphp.y" +#line 2830 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 841: /* Line 1455 of yacc.c */ -#line 2831 "hphp.y" +#line 2834 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 842: /* Line 1455 of yacc.c */ -#line 2835 "hphp.y" +#line 2838 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 843: /* Line 1455 of yacc.c */ -#line 2836 "hphp.y" +#line 2839 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 844: /* Line 1455 of yacc.c */ -#line 2842 "hphp.y" +#line 2845 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(1) - (7)]),(yyvsp[(2) - (7)]).num(),(yyvsp[(3) - (7)]),(yyvsp[(6) - (7)]));;} break; case 845: /* Line 1455 of yacc.c */ -#line 2846 "hphp.y" +#line 2849 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(2) - (9)]),(yyvsp[(4) - (9)]).num(),(yyvsp[(5) - (9)]),(yyvsp[(8) - (9)]));;} break; case 846: /* Line 1455 of yacc.c */ -#line 2853 "hphp.y" +#line 2856 "hphp.y" { _p->onCall((yyval),0,(yyvsp[(3) - (7)]),(yyvsp[(6) - (7)]),&(yyvsp[(1) - (7)]));;} break; case 847: /* Line 1455 of yacc.c */ -#line 2862 "hphp.y" +#line 2865 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]),&(yyvsp[(1) - (6)]));;} break; case 848: /* Line 1455 of yacc.c */ -#line 2866 "hphp.y" +#line 2869 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(4) - (8)]),(yyvsp[(7) - (8)]),&(yyvsp[(1) - (8)]));;} break; case 849: /* Line 1455 of yacc.c */ -#line 2870 "hphp.y" +#line 2873 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 850: /* Line 1455 of yacc.c */ -#line 2873 "hphp.y" +#line 2876 "hphp.y" { _p->onIndirectRef((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 851: /* Line 1455 of yacc.c */ -#line 2879 "hphp.y" +#line 2882 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 852: /* Line 1455 of yacc.c */ -#line 2880 "hphp.y" +#line 2883 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 853: /* Line 1455 of yacc.c */ -#line 2881 "hphp.y" +#line 2884 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 854: /* Line 1455 of yacc.c */ -#line 2885 "hphp.y" +#line 2888 "hphp.y" { _p->onSimpleVariable((yyval), (yyvsp[(1) - (1)]));;} break; case 855: /* Line 1455 of yacc.c */ -#line 2886 "hphp.y" +#line 2889 "hphp.y" { _p->onDynamicVariable((yyval), (yyvsp[(3) - (4)]), 0);;} break; case 856: /* Line 1455 of yacc.c */ -#line 2893 "hphp.y" +#line 2896 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 857: /* Line 1455 of yacc.c */ -#line 2894 "hphp.y" +#line 2897 "hphp.y" { (yyval).reset();;} break; case 858: /* Line 1455 of yacc.c */ -#line 2899 "hphp.y" +#line 2902 "hphp.y" { (yyval) = 1;;} break; case 859: /* Line 1455 of yacc.c */ -#line 2900 "hphp.y" +#line 2903 "hphp.y" { (yyval)++;;} break; case 860: /* Line 1455 of yacc.c */ -#line 2905 "hphp.y" +#line 2908 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 861: /* Line 1455 of yacc.c */ -#line 2906 "hphp.y" +#line 2909 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 862: /* Line 1455 of yacc.c */ -#line 2907 "hphp.y" +#line 2910 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 863: /* Line 1455 of yacc.c */ -#line 2910 "hphp.y" +#line 2913 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(1) - (3)]), @@ -12816,35 +12833,35 @@ YYLTYPE yylloc; case 864: /* Line 1455 of yacc.c */ -#line 2921 "hphp.y" +#line 2924 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 865: /* Line 1455 of yacc.c */ -#line 2922 "hphp.y" +#line 2925 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 867: /* Line 1455 of yacc.c */ -#line 2926 "hphp.y" +#line 2929 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 868: /* Line 1455 of yacc.c */ -#line 2927 "hphp.y" +#line 2930 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 869: /* Line 1455 of yacc.c */ -#line 2930 "hphp.y" +#line 2933 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(1) - (3)]), @@ -12859,231 +12876,231 @@ YYLTYPE yylloc; case 870: /* Line 1455 of yacc.c */ -#line 2939 "hphp.y" +#line 2942 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 871: /* Line 1455 of yacc.c */ -#line 2943 "hphp.y" +#line 2946 "hphp.y" { _p->onAListVar((yyval),&(yyvsp[(1) - (2)]),NULL);;} break; case 872: /* Line 1455 of yacc.c */ -#line 2944 "hphp.y" +#line 2947 "hphp.y" { _p->onAListVar((yyval),&(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 873: /* Line 1455 of yacc.c */ -#line 2946 "hphp.y" +#line 2949 "hphp.y" { _p->onAListSub((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]));;} break; case 874: /* Line 1455 of yacc.c */ -#line 2947 "hphp.y" +#line 2950 "hphp.y" { _p->onAListVar((yyval),NULL,NULL);;} break; case 875: /* Line 1455 of yacc.c */ -#line 2948 "hphp.y" +#line 2951 "hphp.y" { _p->onAListVar((yyval),NULL,&(yyvsp[(1) - (1)]));;} break; case 876: /* Line 1455 of yacc.c */ -#line 2949 "hphp.y" +#line 2952 "hphp.y" { _p->onAListSub((yyval),NULL,(yyvsp[(3) - (4)]));;} break; case 877: /* Line 1455 of yacc.c */ -#line 2954 "hphp.y" +#line 2957 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 878: /* Line 1455 of yacc.c */ -#line 2955 "hphp.y" +#line 2958 "hphp.y" { (yyval).reset();;} break; case 879: /* Line 1455 of yacc.c */ -#line 2959 "hphp.y" +#line 2962 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 880: /* Line 1455 of yacc.c */ -#line 2960 "hphp.y" +#line 2963 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 881: /* Line 1455 of yacc.c */ -#line 2961 "hphp.y" +#line 2964 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 882: /* Line 1455 of yacc.c */ -#line 2962 "hphp.y" +#line 2965 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 883: /* Line 1455 of yacc.c */ -#line 2965 "hphp.y" +#line 2968 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (6)]),&(yyvsp[(3) - (6)]),(yyvsp[(6) - (6)]),1);;} break; case 884: /* Line 1455 of yacc.c */ -#line 2967 "hphp.y" +#line 2970 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (4)]), 0,(yyvsp[(4) - (4)]),1);;} break; case 885: /* Line 1455 of yacc.c */ -#line 2968 "hphp.y" +#line 2971 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 886: /* Line 1455 of yacc.c */ -#line 2969 "hphp.y" +#line 2972 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(2) - (2)]),1);;} break; case 887: /* Line 1455 of yacc.c */ -#line 2974 "hphp.y" +#line 2977 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 888: /* Line 1455 of yacc.c */ -#line 2975 "hphp.y" +#line 2978 "hphp.y" { _p->onEmptyCollection((yyval));;} break; case 889: /* Line 1455 of yacc.c */ -#line 2979 "hphp.y" +#line 2982 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 890: /* Line 1455 of yacc.c */ -#line 2980 "hphp.y" +#line 2983 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]));;} break; case 891: /* Line 1455 of yacc.c */ -#line 2981 "hphp.y" +#line 2984 "hphp.y" { _p->onCollectionPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 892: /* Line 1455 of yacc.c */ -#line 2982 "hphp.y" +#line 2985 "hphp.y" { _p->onCollectionPair((yyval), 0, 0,(yyvsp[(1) - (1)]));;} break; case 893: /* Line 1455 of yacc.c */ -#line 2987 "hphp.y" +#line 2990 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 894: /* Line 1455 of yacc.c */ -#line 2988 "hphp.y" +#line 2991 "hphp.y" { _p->onEmptyCollection((yyval));;} break; case 895: /* Line 1455 of yacc.c */ -#line 2993 "hphp.y" +#line 2996 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 896: /* Line 1455 of yacc.c */ -#line 2995 "hphp.y" +#line 2998 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]));;} break; case 897: /* Line 1455 of yacc.c */ -#line 2997 "hphp.y" +#line 3000 "hphp.y" { _p->onCollectionPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 898: /* Line 1455 of yacc.c */ -#line 2998 "hphp.y" +#line 3001 "hphp.y" { _p->onCollectionPair((yyval), 0, 0,(yyvsp[(1) - (1)]));;} break; case 899: /* Line 1455 of yacc.c */ -#line 3002 "hphp.y" +#line 3005 "hphp.y" { _p->addEncap((yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]), -1);;} break; case 900: /* Line 1455 of yacc.c */ -#line 3004 "hphp.y" +#line 3007 "hphp.y" { _p->addEncap((yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]), 0);;} break; case 901: /* Line 1455 of yacc.c */ -#line 3005 "hphp.y" +#line 3008 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (1)]), -1);;} break; case 902: /* Line 1455 of yacc.c */ -#line 3007 "hphp.y" +#line 3010 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (2)]), 0); _p->addEncap((yyval), &(yyval), (yyvsp[(2) - (2)]), -1); ;} break; @@ -13091,21 +13108,21 @@ YYLTYPE yylloc; case 903: /* Line 1455 of yacc.c */ -#line 3012 "hphp.y" +#line 3015 "hphp.y" { _p->onSimpleVariable((yyval), (yyvsp[(1) - (1)]));;} break; case 904: /* Line 1455 of yacc.c */ -#line 3014 "hphp.y" +#line 3017 "hphp.y" { _p->encapRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 905: /* Line 1455 of yacc.c */ -#line 3016 "hphp.y" +#line 3019 "hphp.y" { _p->encapObjProp( (yyval), (yyvsp[(1) - (3)]), @@ -13120,154 +13137,154 @@ YYLTYPE yylloc; case 906: /* Line 1455 of yacc.c */ -#line 3026 "hphp.y" +#line 3029 "hphp.y" { _p->onDynamicVariable((yyval), (yyvsp[(2) - (3)]), 1);;} break; case 907: /* Line 1455 of yacc.c */ -#line 3028 "hphp.y" +#line 3031 "hphp.y" { _p->encapArray((yyval), (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]));;} break; case 908: /* Line 1455 of yacc.c */ -#line 3029 "hphp.y" +#line 3032 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 909: /* Line 1455 of yacc.c */ -#line 3032 "hphp.y" +#line 3035 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_STRING;;} break; case 910: /* Line 1455 of yacc.c */ -#line 3033 "hphp.y" +#line 3036 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_NUM_STRING;;} break; case 911: /* Line 1455 of yacc.c */ -#line 3034 "hphp.y" +#line 3037 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_VARIABLE;;} break; case 912: /* Line 1455 of yacc.c */ -#line 3038 "hphp.y" +#line 3041 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_ISSET,1);;} break; case 913: /* Line 1455 of yacc.c */ -#line 3039 "hphp.y" +#line 3042 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_EMPTY,1);;} break; case 914: /* Line 1455 of yacc.c */ -#line 3040 "hphp.y" +#line 3043 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),'!',1);;} break; case 915: /* Line 1455 of yacc.c */ -#line 3041 "hphp.y" +#line 3044 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),'!',1);;} break; case 916: /* Line 1455 of yacc.c */ -#line 3042 "hphp.y" +#line 3045 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),'!',1);;} break; case 917: /* Line 1455 of yacc.c */ -#line 3043 "hphp.y" +#line 3046 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),'!',1);;} break; case 918: /* Line 1455 of yacc.c */ -#line 3044 "hphp.y" +#line 3047 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INCLUDE,1);;} break; case 919: /* Line 1455 of yacc.c */ -#line 3045 "hphp.y" +#line 3048 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INCLUDE_ONCE,1);;} break; case 920: /* Line 1455 of yacc.c */ -#line 3046 "hphp.y" +#line 3049 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_EVAL,1);;} break; case 921: /* Line 1455 of yacc.c */ -#line 3047 "hphp.y" +#line 3050 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_REQUIRE,1);;} break; case 922: /* Line 1455 of yacc.c */ -#line 3048 "hphp.y" +#line 3051 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_REQUIRE_ONCE,1);;} break; case 923: /* Line 1455 of yacc.c */ -#line 3052 "hphp.y" +#line 3055 "hphp.y" { _p->onExprListElem((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 924: /* Line 1455 of yacc.c */ -#line 3053 "hphp.y" +#line 3056 "hphp.y" { _p->onExprListElem((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 925: /* Line 1455 of yacc.c */ -#line 3058 "hphp.y" +#line 3061 "hphp.y" { _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 926: /* Line 1455 of yacc.c */ -#line 3060 "hphp.y" +#line 3063 "hphp.y" { _p->onClassClass((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 929: /* Line 1455 of yacc.c */ -#line 3074 "hphp.y" +#line 3077 "hphp.y" { (yyvsp[(2) - (5)]).setText(_p->nsClassDecl((yyvsp[(2) - (5)]).text())); _p->onTypedef((yyval), (yyvsp[(2) - (5)]), (yyvsp[(4) - (5)])); _p->popTypeScope(); ;} @@ -13276,7 +13293,7 @@ YYLTYPE yylloc; case 930: /* Line 1455 of yacc.c */ -#line 3079 "hphp.y" +#line 3082 "hphp.y" { (yyvsp[(3) - (6)]).setText(_p->nsClassDecl((yyvsp[(3) - (6)]).text())); _p->onTypedef((yyval), (yyvsp[(3) - (6)]), (yyvsp[(5) - (6)]), &(yyvsp[(1) - (6)])); _p->popTypeScope(); ;} @@ -13285,7 +13302,7 @@ YYLTYPE yylloc; case 931: /* Line 1455 of yacc.c */ -#line 3083 "hphp.y" +#line 3086 "hphp.y" { (yyvsp[(2) - (6)]).setText(_p->nsClassDecl((yyvsp[(2) - (6)]).text())); _p->onTypedef((yyval), (yyvsp[(2) - (6)]), (yyvsp[(5) - (6)])); _p->popTypeScope(); ;} @@ -13294,7 +13311,7 @@ YYLTYPE yylloc; case 932: /* Line 1455 of yacc.c */ -#line 3088 "hphp.y" +#line 3091 "hphp.y" { (yyvsp[(3) - (7)]).setText(_p->nsClassDecl((yyvsp[(3) - (7)]).text())); _p->onTypedef((yyval), (yyvsp[(3) - (7)]), (yyvsp[(6) - (7)]), &(yyvsp[(1) - (7)])); _p->popTypeScope(); ;} @@ -13303,56 +13320,56 @@ YYLTYPE yylloc; case 933: /* Line 1455 of yacc.c */ -#line 3094 "hphp.y" +#line 3097 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 934: /* Line 1455 of yacc.c */ -#line 3095 "hphp.y" +#line 3098 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} break; case 935: /* Line 1455 of yacc.c */ -#line 3099 "hphp.y" +#line 3102 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 936: /* Line 1455 of yacc.c */ -#line 3100 "hphp.y" +#line 3103 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} break; case 937: /* Line 1455 of yacc.c */ -#line 3106 "hphp.y" +#line 3109 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 938: /* Line 1455 of yacc.c */ -#line 3110 "hphp.y" +#line 3113 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (4)]); ;} break; case 939: /* Line 1455 of yacc.c */ -#line 3116 "hphp.y" +#line 3119 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 940: /* Line 1455 of yacc.c */ -#line 3120 "hphp.y" +#line 3123 "hphp.y" { Token t; _p->setTypeVars(t, (yyvsp[(1) - (4)])); _p->pushTypeScope(); (yyval) = t; ;} break; @@ -13360,21 +13377,21 @@ YYLTYPE yylloc; case 941: /* Line 1455 of yacc.c */ -#line 3127 "hphp.y" +#line 3130 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); ;} break; case 942: /* Line 1455 of yacc.c */ -#line 3128 "hphp.y" +#line 3131 "hphp.y" { (yyval).reset(); ;} break; case 943: /* Line 1455 of yacc.c */ -#line 3132 "hphp.y" +#line 3135 "hphp.y" { Token t; t.reset(); _p->onTypeList((yyvsp[(1) - (1)]), t); (yyval) = (yyvsp[(1) - (1)]); ;} @@ -13383,7 +13400,7 @@ YYLTYPE yylloc; case 944: /* Line 1455 of yacc.c */ -#line 3135 "hphp.y" +#line 3138 "hphp.y" { _p->onTypeList((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); (yyval) = (yyvsp[(1) - (3)]); ;} break; @@ -13391,105 +13408,105 @@ YYLTYPE yylloc; case 945: /* Line 1455 of yacc.c */ -#line 3141 "hphp.y" +#line 3144 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 946: /* Line 1455 of yacc.c */ -#line 3146 "hphp.y" +#line 3149 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]); ;} break; case 947: /* Line 1455 of yacc.c */ -#line 3147 "hphp.y" +#line 3150 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 948: /* Line 1455 of yacc.c */ -#line 3148 "hphp.y" +#line 3151 "hphp.y" { (yyval).reset(); ;} break; case 949: /* Line 1455 of yacc.c */ -#line 3149 "hphp.y" +#line 3152 "hphp.y" { (yyval).reset(); ;} break; case 950: /* Line 1455 of yacc.c */ -#line 3153 "hphp.y" +#line 3156 "hphp.y" { (yyval).reset(); ;} break; case 951: /* Line 1455 of yacc.c */ -#line 3154 "hphp.y" - { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} +#line 3157 "hphp.y" + { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 954: /* Line 1455 of yacc.c */ -#line 3164 "hphp.y" +#line 3167 "hphp.y" { _p->addTypeVar((yyvsp[(4) - (4)]).text()); ;} break; case 955: /* Line 1455 of yacc.c */ -#line 3166 "hphp.y" +#line 3169 "hphp.y" { _p->addTypeVar((yyvsp[(2) - (2)]).text()); ;} break; case 956: /* Line 1455 of yacc.c */ -#line 3170 "hphp.y" +#line 3173 "hphp.y" { _p->addTypeVar((yyvsp[(4) - (5)]).text()); ;} break; case 957: /* Line 1455 of yacc.c */ -#line 3173 "hphp.y" +#line 3176 "hphp.y" { _p->addTypeVar((yyvsp[(2) - (3)]).text()); ;} break; case 958: /* Line 1455 of yacc.c */ -#line 3177 "hphp.y" +#line 3180 "hphp.y" {;} break; case 959: /* Line 1455 of yacc.c */ -#line 3178 "hphp.y" +#line 3181 "hphp.y" {;} break; case 960: /* Line 1455 of yacc.c */ -#line 3179 "hphp.y" +#line 3182 "hphp.y" {;} break; case 961: /* Line 1455 of yacc.c */ -#line 3185 "hphp.y" +#line 3188 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (3)]), _p); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); ;} break; @@ -13497,7 +13514,7 @@ YYLTYPE yylloc; case 962: /* Line 1455 of yacc.c */ -#line 3190 "hphp.y" +#line 3193 "hphp.y" { /* should not reach here as * optional shape fields are not @@ -13510,35 +13527,35 @@ YYLTYPE yylloc; case 963: /* Line 1455 of yacc.c */ -#line 3201 "hphp.y" +#line 3204 "hphp.y" { _p->onClsCnsShapeField((yyval), (yyvsp[(1) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(5) - (5)])); ;} break; case 964: /* Line 1455 of yacc.c */ -#line 3206 "hphp.y" +#line 3209 "hphp.y" { _p->onTypeList((yyval), (yyvsp[(3) - (3)])); ;} break; case 965: /* Line 1455 of yacc.c */ -#line 3207 "hphp.y" +#line 3210 "hphp.y" { ;} break; case 966: /* Line 1455 of yacc.c */ -#line 3212 "hphp.y" +#line 3215 "hphp.y" { _p->onShape((yyval), (yyvsp[(1) - (2)])); ;} break; case 967: /* Line 1455 of yacc.c */ -#line 3213 "hphp.y" +#line 3216 "hphp.y" { Token t; t.reset(); _p->onShape((yyval), t); ;} break; @@ -13546,7 +13563,7 @@ YYLTYPE yylloc; case 968: /* Line 1455 of yacc.c */ -#line 3219 "hphp.y" +#line 3222 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval).setText("array"); ;} break; @@ -13554,14 +13571,14 @@ YYLTYPE yylloc; case 969: /* Line 1455 of yacc.c */ -#line 3224 "hphp.y" +#line 3227 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 970: /* Line 1455 of yacc.c */ -#line 3229 "hphp.y" +#line 3232 "hphp.y" { Token t; t.reset(); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (3)]), t); _p->onTypeList((yyval), (yyvsp[(3) - (3)])); ;} @@ -13570,14 +13587,14 @@ YYLTYPE yylloc; case 971: /* Line 1455 of yacc.c */ -#line 3233 "hphp.y" +#line 3236 "hphp.y" { _p->onTypeAnnotation((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); ;} break; case 972: /* Line 1455 of yacc.c */ -#line 3240 "hphp.y" +#line 3243 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeSpecialization((yyvsp[(2) - (2)]), '?'); (yyval) = (yyvsp[(2) - (2)]); ;} @@ -13586,7 +13603,7 @@ YYLTYPE yylloc; case 973: /* Line 1455 of yacc.c */ -#line 3243 "hphp.y" +#line 3246 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeSpecialization((yyvsp[(2) - (2)]), '@'); (yyval) = (yyvsp[(2) - (2)]); ;} @@ -13595,14 +13612,14 @@ YYLTYPE yylloc; case 974: /* Line 1455 of yacc.c */ -#line 3246 "hphp.y" +#line 3249 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 975: /* Line 1455 of yacc.c */ -#line 3247 "hphp.y" +#line 3250 "hphp.y" { Token t; t.reset(); (yyvsp[(1) - (1)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); ;} @@ -13611,7 +13628,7 @@ YYLTYPE yylloc; case 976: /* Line 1455 of yacc.c */ -#line 3250 "hphp.y" +#line 3253 "hphp.y" { Token t; t.reset(); (yyvsp[(1) - (1)]).setText("callable"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); ;} @@ -13620,14 +13637,14 @@ YYLTYPE yylloc; case 977: /* Line 1455 of yacc.c */ -#line 3253 "hphp.y" +#line 3256 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 978: /* Line 1455 of yacc.c */ -#line 3256 "hphp.y" +#line 3259 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); _p->onTypeSpecialization((yyval), 'a'); ;} @@ -13636,7 +13653,7 @@ YYLTYPE yylloc; case 979: /* Line 1455 of yacc.c */ -#line 3260 "hphp.y" +#line 3263 "hphp.y" { (yyvsp[(1) - (4)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)])); ;} break; @@ -13644,7 +13661,7 @@ YYLTYPE yylloc; case 980: /* Line 1455 of yacc.c */ -#line 3263 "hphp.y" +#line 3266 "hphp.y" { _p->onTypeList((yyvsp[(3) - (6)]), (yyvsp[(5) - (6)])); (yyvsp[(1) - (6)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (6)]), (yyvsp[(3) - (6)])); ;} @@ -13653,7 +13670,7 @@ YYLTYPE yylloc; case 981: /* Line 1455 of yacc.c */ -#line 3266 "hphp.y" +#line 3269 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); Token t; t.reset(); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); @@ -13663,7 +13680,7 @@ YYLTYPE yylloc; case 982: /* Line 1455 of yacc.c */ -#line 3272 "hphp.y" +#line 3275 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(7) - (8)]), (yyvsp[(4) - (8)])); _p->onTypeAnnotation((yyval), (yyvsp[(2) - (8)]), (yyvsp[(7) - (8)])); @@ -13673,7 +13690,7 @@ YYLTYPE yylloc; case 983: /* Line 1455 of yacc.c */ -#line 3278 "hphp.y" +#line 3281 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(2) - (6)]), (yyvsp[(4) - (6)])); Token t; t.reset(); t.setText("array"); @@ -13684,21 +13701,21 @@ YYLTYPE yylloc; case 984: /* Line 1455 of yacc.c */ -#line 3286 "hphp.y" +#line 3289 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 985: /* Line 1455 of yacc.c */ -#line 3287 "hphp.y" +#line 3290 "hphp.y" { (yyval).reset(); ;} break; /* Line 1455 of yacc.c */ -#line 13700 "hphp.5.tab.cpp" +#line 13717 "hphp.5.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -13918,7 +13935,7 @@ YYLTYPE yylloc; /* Line 1675 of yacc.c */ -#line 3290 "hphp.y" +#line 3293 "hphp.y" /* !PHP5_ONLY*/ bool Parser::parseImpl5() { diff --git a/hphp/parser/hphp.7.tab.cpp b/hphp/parser/hphp.7.tab.cpp index 4512023fef670..8ded284b8d8e1 100644 --- a/hphp/parser/hphp.7.tab.cpp +++ b/hphp/parser/hphp.7.tab.cpp @@ -1608,90 +1608,90 @@ static const yytype_uint16 yyrline[] = 948, 950, 953, 954, 955, 956, 959, 960, 964, 969, 969, 975, 975, 982, 981, 987, 987, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1005, 1006, 1010, 1008, 1017, 1015, 1022, 1030, 1024, 1034, - 1032, 1036, 1037, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1049, 1057, 1057, 1062, 1068, 1072, 1072, 1080, 1081, - 1085, 1086, 1090, 1096, 1094, 1109, 1106, 1122, 1119, 1136, - 1135, 1144, 1142, 1154, 1153, 1172, 1170, 1189, 1188, 1197, - 1195, 1206, 1206, 1213, 1212, 1224, 1222, 1235, 1236, 1240, - 1243, 1246, 1247, 1248, 1251, 1252, 1255, 1257, 1260, 1261, - 1264, 1265, 1268, 1269, 1273, 1274, 1279, 1280, 1283, 1284, - 1285, 1289, 1290, 1294, 1295, 1299, 1300, 1304, 1305, 1310, - 1311, 1316, 1317, 1318, 1319, 1322, 1325, 1327, 1330, 1331, - 1335, 1337, 1340, 1343, 1346, 1347, 1350, 1351, 1355, 1361, - 1367, 1374, 1376, 1381, 1386, 1392, 1396, 1400, 1404, 1409, - 1414, 1419, 1424, 1430, 1439, 1444, 1449, 1455, 1457, 1461, - 1465, 1470, 1474, 1477, 1480, 1484, 1488, 1492, 1496, 1501, - 1509, 1511, 1514, 1515, 1516, 1517, 1519, 1521, 1526, 1527, - 1530, 1531, 1532, 1536, 1537, 1539, 1540, 1544, 1546, 1549, - 1553, 1559, 1561, 1564, 1564, 1568, 1567, 1571, 1573, 1576, - 1579, 1577, 1593, 1589, 1603, 1605, 1607, 1609, 1611, 1613, - 1615, 1619, 1620, 1621, 1624, 1630, 1634, 1640, 1643, 1648, - 1650, 1655, 1660, 1664, 1665, 1669, 1670, 1672, 1674, 1680, - 1681, 1683, 1687, 1688, 1693, 1697, 1698, 1702, 1703, 1707, - 1709, 1715, 1720, 1721, 1723, 1727, 1728, 1729, 1730, 1734, - 1735, 1736, 1737, 1738, 1739, 1741, 1746, 1749, 1750, 1754, - 1755, 1759, 1760, 1763, 1764, 1767, 1768, 1771, 1772, 1776, - 1777, 1778, 1779, 1780, 1781, 1782, 1786, 1787, 1790, 1791, - 1792, 1795, 1797, 1799, 1800, 1803, 1805, 1809, 1811, 1815, - 1819, 1823, 1828, 1829, 1831, 1832, 1833, 1834, 1837, 1841, - 1842, 1846, 1847, 1851, 1852, 1853, 1854, 1858, 1862, 1867, - 1871, 1875, 1880, 1881, 1882, 1883, 1884, 1888, 1890, 1891, - 1892, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, - 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, - 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, - 1934, 1935, 1936, 1937, 1939, 1940, 1942, 1943, 1945, 1946, - 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1968, 1972, - 1977, 1976, 1991, 1989, 2007, 2006, 2025, 2024, 2043, 2042, - 2060, 2060, 2075, 2075, 2093, 2094, 2095, 2100, 2102, 2106, - 2110, 2116, 2120, 2126, 2128, 2132, 2134, 2138, 2142, 2143, - 2147, 2154, 2161, 2163, 2168, 2169, 2170, 2171, 2173, 2177, - 2178, 2179, 2180, 2184, 2190, 2199, 2212, 2213, 2216, 2219, - 2222, 2223, 2226, 2230, 2233, 2236, 2243, 2244, 2248, 2249, - 2251, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, - 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, - 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, - 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, - 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, - 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, - 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, - 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, - 2334, 2338, 2343, 2344, 2348, 2349, 2350, 2351, 2353, 2357, - 2358, 2369, 2370, 2372, 2384, 2385, 2386, 2390, 2391, 2392, - 2396, 2397, 2398, 2401, 2403, 2407, 2408, 2409, 2410, 2412, - 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2424, - 2429, 2430, 2431, 2433, 2434, 2436, 2437, 2438, 2439, 2441, - 2443, 2445, 2447, 2449, 2450, 2451, 2452, 2453, 2454, 2455, - 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, - 2467, 2469, 2471, 2473, 2474, 2477, 2478, 2482, 2486, 2488, - 2492, 2495, 2498, 2504, 2505, 2506, 2507, 2508, 2509, 2510, - 2515, 2517, 2521, 2522, 2525, 2526, 2530, 2533, 2535, 2537, - 2541, 2542, 2543, 2544, 2547, 2551, 2552, 2553, 2554, 2558, - 2560, 2567, 2568, 2569, 2570, 2571, 2572, 2574, 2575, 2580, - 2582, 2585, 2588, 2590, 2592, 2595, 2597, 2601, 2603, 2606, - 2609, 2615, 2617, 2620, 2621, 2626, 2629, 2633, 2633, 2638, - 2641, 2642, 2646, 2647, 2651, 2652, 2653, 2657, 2662, 2667, - 2668, 2672, 2677, 2682, 2683, 2687, 2688, 2693, 2695, 2700, - 2711, 2725, 2737, 2752, 2753, 2754, 2755, 2756, 2757, 2758, - 2768, 2777, 2779, 2781, 2785, 2786, 2787, 2788, 2789, 2805, - 2806, 2808, 2810, 2817, 2818, 2819, 2820, 2821, 2822, 2823, - 2824, 2826, 2831, 2835, 2836, 2840, 2843, 2850, 2854, 2863, - 2870, 2878, 2880, 2881, 2885, 2886, 2888, 2893, 2894, 2905, - 2906, 2907, 2908, 2919, 2922, 2925, 2926, 2927, 2928, 2939, - 2943, 2944, 2945, 2947, 2948, 2949, 2953, 2955, 2958, 2960, - 2961, 2962, 2963, 2966, 2968, 2969, 2973, 2975, 2978, 2980, - 2981, 2982, 2986, 2988, 2991, 2994, 2996, 2998, 3002, 3003, - 3005, 3006, 3012, 3013, 3015, 3025, 3027, 3029, 3032, 3033, - 3034, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046, - 3047, 3048, 3052, 3053, 3057, 3059, 3067, 3069, 3073, 3077, - 3082, 3086, 3094, 3095, 3099, 3100, 3106, 3107, 3116, 3117, - 3125, 3128, 3132, 3135, 3140, 3145, 3147, 3148, 3149, 3153, - 3154, 3158, 3159, 3162, 3165, 3167, 3171, 3177, 3178, 3179, - 3183, 3187, 3197, 3205, 3207, 3211, 3213, 3218, 3224, 3227, - 3232, 3240, 3243, 3246, 3247, 3250, 3253, 3254, 3259, 3262, - 3266, 3270, 3276, 3286, 3287 + 1005, 1006, 1010, 1008, 1017, 1015, 1022, 1032, 1026, 1036, + 1034, 1038, 1039, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1059, 1059, 1064, 1070, 1074, 1074, 1082, 1083, + 1087, 1088, 1092, 1098, 1096, 1111, 1108, 1124, 1121, 1138, + 1137, 1146, 1144, 1156, 1155, 1174, 1172, 1191, 1190, 1199, + 1197, 1208, 1208, 1215, 1214, 1226, 1224, 1237, 1238, 1242, + 1245, 1248, 1249, 1250, 1253, 1254, 1257, 1259, 1262, 1263, + 1266, 1267, 1270, 1271, 1275, 1276, 1281, 1282, 1285, 1286, + 1287, 1291, 1292, 1296, 1297, 1301, 1302, 1306, 1307, 1312, + 1313, 1319, 1320, 1321, 1322, 1325, 1328, 1330, 1333, 1334, + 1338, 1340, 1343, 1346, 1349, 1350, 1353, 1354, 1358, 1364, + 1370, 1377, 1379, 1384, 1389, 1395, 1399, 1403, 1407, 1412, + 1417, 1422, 1427, 1433, 1442, 1447, 1452, 1458, 1460, 1464, + 1468, 1473, 1477, 1480, 1483, 1487, 1491, 1495, 1499, 1504, + 1512, 1514, 1517, 1518, 1519, 1520, 1522, 1524, 1529, 1530, + 1533, 1534, 1535, 1539, 1540, 1542, 1543, 1547, 1549, 1552, + 1556, 1562, 1564, 1567, 1567, 1571, 1570, 1574, 1576, 1579, + 1582, 1580, 1596, 1592, 1606, 1608, 1610, 1612, 1614, 1616, + 1618, 1622, 1623, 1624, 1627, 1633, 1637, 1643, 1646, 1651, + 1653, 1658, 1663, 1667, 1668, 1672, 1673, 1675, 1677, 1683, + 1684, 1686, 1690, 1691, 1696, 1700, 1701, 1705, 1706, 1710, + 1712, 1718, 1723, 1724, 1726, 1730, 1731, 1732, 1733, 1737, + 1738, 1739, 1740, 1741, 1742, 1744, 1749, 1752, 1753, 1757, + 1758, 1762, 1763, 1766, 1767, 1770, 1771, 1774, 1775, 1779, + 1780, 1781, 1782, 1783, 1784, 1785, 1789, 1790, 1793, 1794, + 1795, 1798, 1800, 1802, 1803, 1806, 1808, 1812, 1814, 1818, + 1822, 1826, 1831, 1832, 1834, 1835, 1836, 1837, 1840, 1844, + 1845, 1849, 1850, 1854, 1855, 1856, 1857, 1861, 1865, 1870, + 1874, 1878, 1883, 1884, 1885, 1886, 1887, 1891, 1893, 1894, + 1895, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, + 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, + 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, + 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, + 1937, 1938, 1939, 1940, 1942, 1943, 1945, 1946, 1948, 1949, + 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, + 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1971, 1975, + 1980, 1979, 1994, 1992, 2010, 2009, 2028, 2027, 2046, 2045, + 2063, 2063, 2078, 2078, 2096, 2097, 2098, 2103, 2105, 2109, + 2113, 2119, 2123, 2129, 2131, 2135, 2137, 2141, 2145, 2146, + 2150, 2157, 2164, 2166, 2171, 2172, 2173, 2174, 2176, 2180, + 2181, 2182, 2183, 2187, 2193, 2202, 2215, 2216, 2219, 2222, + 2225, 2226, 2229, 2233, 2236, 2239, 2246, 2247, 2251, 2252, + 2254, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, + 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, + 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, + 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, + 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, + 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, + 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, + 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, + 2337, 2341, 2346, 2347, 2351, 2352, 2353, 2354, 2356, 2360, + 2361, 2372, 2373, 2375, 2387, 2388, 2389, 2393, 2394, 2395, + 2399, 2400, 2401, 2404, 2406, 2410, 2411, 2412, 2413, 2415, + 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2427, + 2432, 2433, 2434, 2436, 2437, 2439, 2440, 2441, 2442, 2444, + 2446, 2448, 2450, 2452, 2453, 2454, 2455, 2456, 2457, 2458, + 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, + 2470, 2472, 2474, 2476, 2477, 2480, 2481, 2485, 2489, 2491, + 2495, 2498, 2501, 2507, 2508, 2509, 2510, 2511, 2512, 2513, + 2518, 2520, 2524, 2525, 2528, 2529, 2533, 2536, 2538, 2540, + 2544, 2545, 2546, 2547, 2550, 2554, 2555, 2556, 2557, 2561, + 2563, 2570, 2571, 2572, 2573, 2574, 2575, 2577, 2578, 2583, + 2585, 2588, 2591, 2593, 2595, 2598, 2600, 2604, 2606, 2609, + 2612, 2618, 2620, 2623, 2624, 2629, 2632, 2636, 2636, 2641, + 2644, 2645, 2649, 2650, 2654, 2655, 2656, 2660, 2665, 2670, + 2671, 2675, 2680, 2685, 2686, 2690, 2691, 2696, 2698, 2703, + 2714, 2728, 2740, 2755, 2756, 2757, 2758, 2759, 2760, 2761, + 2771, 2780, 2782, 2784, 2788, 2789, 2790, 2791, 2792, 2808, + 2809, 2811, 2813, 2820, 2821, 2822, 2823, 2824, 2825, 2826, + 2827, 2829, 2834, 2838, 2839, 2843, 2846, 2853, 2857, 2866, + 2873, 2881, 2883, 2884, 2888, 2889, 2891, 2896, 2897, 2908, + 2909, 2910, 2911, 2922, 2925, 2928, 2929, 2930, 2931, 2942, + 2946, 2947, 2948, 2950, 2951, 2952, 2956, 2958, 2961, 2963, + 2964, 2965, 2966, 2969, 2971, 2972, 2976, 2978, 2981, 2983, + 2984, 2985, 2989, 2991, 2994, 2997, 2999, 3001, 3005, 3006, + 3008, 3009, 3015, 3016, 3018, 3028, 3030, 3032, 3035, 3036, + 3037, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, + 3050, 3051, 3055, 3056, 3060, 3062, 3070, 3072, 3076, 3080, + 3085, 3089, 3097, 3098, 3102, 3103, 3109, 3110, 3119, 3120, + 3128, 3131, 3135, 3138, 3143, 3148, 3150, 3151, 3152, 3156, + 3157, 3161, 3162, 3165, 3168, 3170, 3174, 3180, 3181, 3182, + 3186, 3190, 3200, 3208, 3210, 3214, 3216, 3221, 3227, 3230, + 3235, 3243, 3246, 3249, 3250, 3253, 3256, 3257, 3262, 3265, + 3269, 3273, 3279, 3289, 3290 }; #endif @@ -1823,7 +1823,7 @@ static const char *const yytname[] = "hh_name_with_type", "hh_constname_with_type", "hh_name_with_typevar", "hh_name_no_semireserved_with_typevar", "hh_typeargs_opt", "hh_non_empty_type_list", "hh_type_list", "hh_func_type_list", - "hh_opt_return_type", "hh_constraint", "hh_typevar_list", + "opt_return_type", "hh_constraint", "hh_typevar_list", "hh_typevar_variance", "hh_shape_member_type", "hh_non_empty_shape_member_list", "hh_shape_member_list", "hh_shape_type", "hh_access_type_start", "hh_access_type", "hh_type", @@ -7041,7 +7041,7 @@ YYLTYPE yylloc; /* Line 1455 of yacc.c */ #line 756 "hphp.y" { _p->onUse((yyvsp[(2) - (3)]), &Parser::useClass); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 19: @@ -7049,7 +7049,7 @@ YYLTYPE yylloc; /* Line 1455 of yacc.c */ #line 759 "hphp.y" { _p->onUse((yyvsp[(3) - (4)]), &Parser::useFunction); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 20: @@ -7057,7 +7057,7 @@ YYLTYPE yylloc; /* Line 1455 of yacc.c */ #line 762 "hphp.y" { _p->onUse((yyvsp[(3) - (4)]), &Parser::useConst); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 21: @@ -7066,7 +7066,7 @@ YYLTYPE yylloc; #line 765 "hphp.y" { _p->onGroupUse((yyvsp[(2) - (6)]).text(), (yyvsp[(4) - (6)]), nullptr); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 22: @@ -7075,7 +7075,7 @@ YYLTYPE yylloc; #line 769 "hphp.y" { _p->onGroupUse((yyvsp[(3) - (7)]).text(), (yyvsp[(5) - (7)]), &Parser::useFunction); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 23: @@ -7084,7 +7084,7 @@ YYLTYPE yylloc; #line 773 "hphp.y" { _p->onGroupUse((yyvsp[(3) - (7)]).text(), (yyvsp[(5) - (7)]), &Parser::useConst); - _p->nns(); (yyval).reset();;} + _p->nns(T_USE); (yyval).reset();;} break; case 24: @@ -7600,48 +7600,50 @@ YYLTYPE yylloc; /* Line 1455 of yacc.c */ #line 1023 "hphp.y" - { _p->onBlock((yyval), (yyvsp[(5) - (5)])); (yyval) = T_DECLARE;;} + { _p->onDeclare((yyvsp[(3) - (5)]), (yyvsp[(5) - (5)])); + (yyval) = (yyvsp[(3) - (5)]); + (yyval) = T_DECLARE;;} break; case 157: /* Line 1455 of yacc.c */ -#line 1030 "hphp.y" +#line 1032 "hphp.y" { _p->onCompleteLabelScope(false);;} break; case 158: /* Line 1455 of yacc.c */ -#line 1031 "hphp.y" +#line 1033 "hphp.y" { _p->onTry((yyval),(yyvsp[(2) - (13)]),(yyvsp[(5) - (13)]),(yyvsp[(6) - (13)]),(yyvsp[(9) - (13)]),(yyvsp[(11) - (13)]),(yyvsp[(13) - (13)]));;} break; case 159: /* Line 1455 of yacc.c */ -#line 1034 "hphp.y" +#line 1036 "hphp.y" { _p->onCompleteLabelScope(false);;} break; case 160: /* Line 1455 of yacc.c */ -#line 1035 "hphp.y" +#line 1037 "hphp.y" { _p->onTry((yyval), (yyvsp[(2) - (5)]), (yyvsp[(5) - (5)]));;} break; case 161: /* Line 1455 of yacc.c */ -#line 1036 "hphp.y" +#line 1038 "hphp.y" { _p->onThrow((yyval), (yyvsp[(2) - (3)]));;} break; case 162: /* Line 1455 of yacc.c */ -#line 1037 "hphp.y" +#line 1039 "hphp.y" { _p->onGoto((yyval), (yyvsp[(2) - (3)]), true); _p->addGoto((yyvsp[(2) - (3)]).text(), _p->getRange(), @@ -7651,63 +7653,63 @@ YYLTYPE yylloc; case 163: /* Line 1455 of yacc.c */ -#line 1041 "hphp.y" +#line 1043 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 164: /* Line 1455 of yacc.c */ -#line 1042 "hphp.y" +#line 1044 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 165: /* Line 1455 of yacc.c */ -#line 1043 "hphp.y" +#line 1045 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 166: /* Line 1455 of yacc.c */ -#line 1044 "hphp.y" +#line 1046 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 167: /* Line 1455 of yacc.c */ -#line 1045 "hphp.y" +#line 1047 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 168: /* Line 1455 of yacc.c */ -#line 1046 "hphp.y" +#line 1048 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 169: /* Line 1455 of yacc.c */ -#line 1047 "hphp.y" +#line 1049 "hphp.y" { _p->onReturn((yyval), &(yyvsp[(2) - (3)])); ;} break; case 170: /* Line 1455 of yacc.c */ -#line 1048 "hphp.y" +#line 1050 "hphp.y" { _p->onExpStatement((yyval), (yyvsp[(1) - (2)]));;} break; case 171: /* Line 1455 of yacc.c */ -#line 1049 "hphp.y" +#line 1051 "hphp.y" { _p->onLabel((yyval), (yyvsp[(1) - (2)])); _p->addLabel((yyvsp[(1) - (2)]).text(), _p->getRange(), @@ -7718,35 +7720,35 @@ YYLTYPE yylloc; case 172: /* Line 1455 of yacc.c */ -#line 1057 "hphp.y" +#line 1059 "hphp.y" { _p->onNewLabelScope(false);;} break; case 173: /* Line 1455 of yacc.c */ -#line 1058 "hphp.y" +#line 1060 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]);;} break; case 174: /* Line 1455 of yacc.c */ -#line 1067 "hphp.y" +#line 1069 "hphp.y" { _p->onCatch((yyval), (yyvsp[(1) - (9)]), (yyvsp[(4) - (9)]), (yyvsp[(5) - (9)]), (yyvsp[(8) - (9)]));;} break; case 175: /* Line 1455 of yacc.c */ -#line 1068 "hphp.y" +#line 1070 "hphp.y" { (yyval).reset();;} break; case 176: /* Line 1455 of yacc.c */ -#line 1072 "hphp.y" +#line 1074 "hphp.y" { _p->onNewLabelScope(false); _p->pushLabelScope();;} break; @@ -7754,7 +7756,7 @@ YYLTYPE yylloc; case 177: /* Line 1455 of yacc.c */ -#line 1074 "hphp.y" +#line 1076 "hphp.y" { _p->popLabelScope(); _p->onFinally((yyval), (yyvsp[(3) - (4)])); _p->onCompleteLabelScope(false);;} @@ -7763,42 +7765,42 @@ YYLTYPE yylloc; case 178: /* Line 1455 of yacc.c */ -#line 1080 "hphp.y" +#line 1082 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 179: /* Line 1455 of yacc.c */ -#line 1081 "hphp.y" +#line 1083 "hphp.y" { (yyval).reset();;} break; case 180: /* Line 1455 of yacc.c */ -#line 1085 "hphp.y" +#line 1087 "hphp.y" { (yyval) = 1;;} break; case 181: /* Line 1455 of yacc.c */ -#line 1086 "hphp.y" +#line 1088 "hphp.y" { (yyval).reset();;} break; case 182: /* Line 1455 of yacc.c */ -#line 1090 "hphp.y" +#line 1092 "hphp.y" { _p->pushFuncLocation(); ;} break; case 183: /* Line 1455 of yacc.c */ -#line 1096 "hphp.y" +#line 1098 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsDecl((yyvsp[(3) - (3)]).text())); _p->onNewLabelScope(true); _p->onFunctionStart((yyvsp[(3) - (3)])); @@ -7808,7 +7810,7 @@ YYLTYPE yylloc; case 184: /* Line 1455 of yacc.c */ -#line 1102 "hphp.y" +#line 1104 "hphp.y" { _p->onFunction((yyval),nullptr,(yyvsp[(8) - (9)]),(yyvsp[(2) - (9)]),(yyvsp[(3) - (9)]),(yyvsp[(6) - (9)]),(yyvsp[(9) - (9)]),nullptr); _p->popLabelInfo(); _p->popTypeScope(); @@ -7818,7 +7820,7 @@ YYLTYPE yylloc; case 185: /* Line 1455 of yacc.c */ -#line 1109 "hphp.y" +#line 1111 "hphp.y" { (yyvsp[(4) - (4)]).setText(_p->nsDecl((yyvsp[(4) - (4)]).text())); _p->onNewLabelScope(true); _p->onFunctionStart((yyvsp[(4) - (4)])); @@ -7828,7 +7830,7 @@ YYLTYPE yylloc; case 186: /* Line 1455 of yacc.c */ -#line 1115 "hphp.y" +#line 1117 "hphp.y" { _p->onFunction((yyval),&(yyvsp[(1) - (10)]),(yyvsp[(9) - (10)]),(yyvsp[(3) - (10)]),(yyvsp[(4) - (10)]),(yyvsp[(7) - (10)]),(yyvsp[(10) - (10)]),nullptr); _p->popLabelInfo(); _p->popTypeScope(); @@ -7838,7 +7840,7 @@ YYLTYPE yylloc; case 187: /* Line 1455 of yacc.c */ -#line 1122 "hphp.y" +#line 1124 "hphp.y" { (yyvsp[(5) - (5)]).setText(_p->nsDecl((yyvsp[(5) - (5)]).text())); _p->onNewLabelScope(true); _p->onFunctionStart((yyvsp[(5) - (5)])); @@ -7848,7 +7850,7 @@ YYLTYPE yylloc; case 188: /* Line 1455 of yacc.c */ -#line 1128 "hphp.y" +#line 1130 "hphp.y" { _p->onFunction((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(); @@ -7858,7 +7860,7 @@ YYLTYPE yylloc; case 189: /* Line 1455 of yacc.c */ -#line 1136 "hphp.y" +#line 1138 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsClassDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_ENUM,(yyvsp[(2) - (2)]));;} break; @@ -7866,14 +7868,14 @@ YYLTYPE yylloc; case 190: /* Line 1455 of yacc.c */ -#line 1140 "hphp.y" +#line 1142 "hphp.y" { _p->onEnum((yyval),(yyvsp[(2) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(8) - (9)]),0); ;} break; case 191: /* Line 1455 of yacc.c */ -#line 1144 "hphp.y" +#line 1146 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsClassDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_ENUM,(yyvsp[(3) - (3)]));;} break; @@ -7881,14 +7883,14 @@ YYLTYPE yylloc; case 192: /* Line 1455 of yacc.c */ -#line 1148 "hphp.y" +#line 1150 "hphp.y" { _p->onEnum((yyval),(yyvsp[(3) - (10)]),(yyvsp[(6) - (10)]),(yyvsp[(9) - (10)]),&(yyvsp[(1) - (10)])); ;} break; case 193: /* Line 1455 of yacc.c */ -#line 1154 "hphp.y" +#line 1156 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsClassDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart((yyvsp[(1) - (2)]).num(),(yyvsp[(2) - (2)]));;} break; @@ -7896,7 +7898,7 @@ YYLTYPE yylloc; case 194: /* Line 1455 of yacc.c */ -#line 1157 "hphp.y" +#line 1159 "hphp.y" { Token stmts; if (_p->peekClass()) { xhp_collect_attributes(_p,stmts,(yyvsp[(7) - (8)])); @@ -7915,7 +7917,7 @@ YYLTYPE yylloc; case 195: /* Line 1455 of yacc.c */ -#line 1172 "hphp.y" +#line 1174 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsClassDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart((yyvsp[(2) - (3)]).num(),(yyvsp[(3) - (3)]));;} break; @@ -7923,7 +7925,7 @@ YYLTYPE yylloc; case 196: /* Line 1455 of yacc.c */ -#line 1175 "hphp.y" +#line 1177 "hphp.y" { Token stmts; if (_p->peekClass()) { xhp_collect_attributes(_p,stmts,(yyvsp[(8) - (9)])); @@ -7942,7 +7944,7 @@ YYLTYPE yylloc; case 197: /* Line 1455 of yacc.c */ -#line 1189 "hphp.y" +#line 1191 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsClassDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_INTERFACE,(yyvsp[(2) - (2)]));;} break; @@ -7950,7 +7952,7 @@ YYLTYPE yylloc; case 198: /* Line 1455 of yacc.c */ -#line 1192 "hphp.y" +#line 1194 "hphp.y" { _p->onInterface((yyval),(yyvsp[(2) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(6) - (7)]),0); _p->popClass(); _p->popTypeScope();;} @@ -7959,7 +7961,7 @@ YYLTYPE yylloc; case 199: /* Line 1455 of yacc.c */ -#line 1197 "hphp.y" +#line 1199 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsClassDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_INTERFACE,(yyvsp[(3) - (3)]));;} break; @@ -7967,7 +7969,7 @@ YYLTYPE yylloc; case 200: /* Line 1455 of yacc.c */ -#line 1200 "hphp.y" +#line 1202 "hphp.y" { _p->onInterface((yyval),(yyvsp[(3) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(7) - (8)]),&(yyvsp[(1) - (8)])); _p->popClass(); _p->popTypeScope();;} @@ -7976,21 +7978,21 @@ YYLTYPE yylloc; case 201: /* Line 1455 of yacc.c */ -#line 1206 "hphp.y" +#line 1208 "hphp.y" { _p->onClassExpressionStart(); ;} break; case 202: /* Line 1455 of yacc.c */ -#line 1209 "hphp.y" +#line 1211 "hphp.y" { _p->onClassExpression((yyval), (yyvsp[(3) - (8)]), (yyvsp[(4) - (8)]), (yyvsp[(5) - (8)]), (yyvsp[(7) - (8)])); ;} break; case 203: /* Line 1455 of yacc.c */ -#line 1213 "hphp.y" +#line 1215 "hphp.y" { (yyvsp[(2) - (2)]).setText(_p->nsClassDecl((yyvsp[(2) - (2)]).text())); _p->onClassStart(T_TRAIT, (yyvsp[(2) - (2)]));;} break; @@ -7998,7 +8000,7 @@ YYLTYPE yylloc; case 204: /* Line 1455 of yacc.c */ -#line 1216 "hphp.y" +#line 1218 "hphp.y" { Token t_ext; t_ext.reset(); _p->onClass((yyval),T_TRAIT,(yyvsp[(2) - (7)]),t_ext,(yyvsp[(4) - (7)]), @@ -8010,7 +8012,7 @@ YYLTYPE yylloc; case 205: /* Line 1455 of yacc.c */ -#line 1224 "hphp.y" +#line 1226 "hphp.y" { (yyvsp[(3) - (3)]).setText(_p->nsClassDecl((yyvsp[(3) - (3)]).text())); _p->onClassStart(T_TRAIT, (yyvsp[(3) - (3)]));;} break; @@ -8018,7 +8020,7 @@ YYLTYPE yylloc; case 206: /* Line 1455 of yacc.c */ -#line 1227 "hphp.y" +#line 1229 "hphp.y" { Token t_ext; t_ext.reset(); _p->onClass((yyval),T_TRAIT,(yyvsp[(3) - (8)]),t_ext,(yyvsp[(5) - (8)]), @@ -8030,14 +8032,14 @@ YYLTYPE yylloc; case 207: /* Line 1455 of yacc.c */ -#line 1235 "hphp.y" +#line 1237 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 208: /* Line 1455 of yacc.c */ -#line 1236 "hphp.y" +#line 1238 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); _p->pushTypeScope(); _p->pushClass(true); (yyval) = (yyvsp[(1) - (1)]);;} break; @@ -8045,35 +8047,35 @@ YYLTYPE yylloc; case 209: /* Line 1455 of yacc.c */ -#line 1240 "hphp.y" +#line 1242 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 210: /* Line 1455 of yacc.c */ -#line 1243 "hphp.y" +#line 1245 "hphp.y" { _p->pushClass(false); (yyval) = (yyvsp[(1) - (1)]);;} break; case 211: /* Line 1455 of yacc.c */ -#line 1246 "hphp.y" +#line 1248 "hphp.y" { (yyval) = T_CLASS;;} break; case 212: /* Line 1455 of yacc.c */ -#line 1247 "hphp.y" +#line 1249 "hphp.y" { (yyval) = T_ABSTRACT; ;} break; case 213: /* Line 1455 of yacc.c */ -#line 1248 "hphp.y" +#line 1250 "hphp.y" { only_in_hh_syntax(_p); /* hacky, but transforming to a single token is quite convenient */ (yyval) = T_STATIC; ;} @@ -8082,301 +8084,316 @@ YYLTYPE yylloc; case 214: /* Line 1455 of yacc.c */ -#line 1251 "hphp.y" +#line 1253 "hphp.y" { only_in_hh_syntax(_p); (yyval) = T_STATIC; ;} break; case 215: /* Line 1455 of yacc.c */ -#line 1252 "hphp.y" +#line 1254 "hphp.y" { (yyval) = T_FINAL;;} break; case 216: /* Line 1455 of yacc.c */ -#line 1256 "hphp.y" +#line 1258 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 217: /* Line 1455 of yacc.c */ -#line 1257 "hphp.y" +#line 1259 "hphp.y" { (yyval).reset();;} break; case 218: /* Line 1455 of yacc.c */ -#line 1260 "hphp.y" +#line 1262 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 219: /* Line 1455 of yacc.c */ -#line 1261 "hphp.y" +#line 1263 "hphp.y" { (yyval).reset();;} break; case 220: /* Line 1455 of yacc.c */ -#line 1264 "hphp.y" +#line 1266 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 221: /* Line 1455 of yacc.c */ -#line 1265 "hphp.y" +#line 1267 "hphp.y" { (yyval).reset();;} break; case 222: /* Line 1455 of yacc.c */ -#line 1268 "hphp.y" +#line 1270 "hphp.y" { _p->onInterfaceName((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 223: /* Line 1455 of yacc.c */ -#line 1270 "hphp.y" +#line 1272 "hphp.y" { _p->onInterfaceName((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 224: /* Line 1455 of yacc.c */ -#line 1273 "hphp.y" +#line 1275 "hphp.y" { _p->onTraitName((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 225: /* Line 1455 of yacc.c */ -#line 1275 "hphp.y" +#line 1277 "hphp.y" { _p->onTraitName((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 226: /* Line 1455 of yacc.c */ -#line 1279 "hphp.y" +#line 1281 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 227: /* Line 1455 of yacc.c */ -#line 1280 "hphp.y" +#line 1282 "hphp.y" { (yyval).reset();;} break; case 228: /* Line 1455 of yacc.c */ -#line 1283 "hphp.y" +#line 1285 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 0;;} break; case 229: /* Line 1455 of yacc.c */ -#line 1284 "hphp.y" +#line 1286 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = 1;;} break; case 230: /* Line 1455 of yacc.c */ -#line 1285 "hphp.y" +#line 1287 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (4)]), NULL);;} break; case 231: /* Line 1455 of yacc.c */ -#line 1289 "hphp.y" +#line 1291 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 232: /* Line 1455 of yacc.c */ -#line 1291 "hphp.y" +#line 1293 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 233: /* Line 1455 of yacc.c */ -#line 1294 "hphp.y" +#line 1296 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 234: /* Line 1455 of yacc.c */ -#line 1296 "hphp.y" +#line 1298 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 235: /* Line 1455 of yacc.c */ -#line 1299 "hphp.y" +#line 1301 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 236: /* Line 1455 of yacc.c */ -#line 1301 "hphp.y" +#line 1303 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 237: /* Line 1455 of yacc.c */ -#line 1304 "hphp.y" - { (yyval) = (yyvsp[(1) - (1)]);;} +#line 1306 "hphp.y" + { _p->onBlock((yyval), (yyvsp[(1) - (1)]));;} break; case 238: /* Line 1455 of yacc.c */ -#line 1306 "hphp.y" - { (yyval) = (yyvsp[(2) - (4)]);;} +#line 1308 "hphp.y" + { _p->onBlock((yyval), (yyvsp[(2) - (4)]));;} + break; + + case 239: + +/* Line 1455 of yacc.c */ +#line 1312 "hphp.y" + {_p->onDeclareList((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} + break; + + case 240: + +/* Line 1455 of yacc.c */ +#line 1314 "hphp.y" + {_p->onDeclareList((yyvsp[(1) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(5) - (5)])); + (yyval) = (yyvsp[(1) - (5)]);;} break; case 241: /* Line 1455 of yacc.c */ -#line 1316 "hphp.y" +#line 1319 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 242: /* Line 1455 of yacc.c */ -#line 1317 "hphp.y" +#line 1320 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]);;} break; case 243: /* Line 1455 of yacc.c */ -#line 1318 "hphp.y" +#line 1321 "hphp.y" { (yyval) = (yyvsp[(2) - (4)]);;} break; case 244: /* Line 1455 of yacc.c */ -#line 1319 "hphp.y" +#line 1322 "hphp.y" { (yyval) = (yyvsp[(3) - (5)]);;} break; case 245: /* Line 1455 of yacc.c */ -#line 1324 "hphp.y" +#line 1327 "hphp.y" { _p->onCase((yyval),(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 246: /* Line 1455 of yacc.c */ -#line 1326 "hphp.y" +#line 1329 "hphp.y" { _p->onCase((yyval),(yyvsp[(1) - (4)]),NULL,(yyvsp[(4) - (4)]));;} break; case 247: /* Line 1455 of yacc.c */ -#line 1327 "hphp.y" +#line 1330 "hphp.y" { (yyval).reset();;} break; case 248: /* Line 1455 of yacc.c */ -#line 1330 "hphp.y" +#line 1333 "hphp.y" { (yyval).reset();;} break; case 249: /* Line 1455 of yacc.c */ -#line 1331 "hphp.y" +#line 1334 "hphp.y" { (yyval).reset();;} break; case 250: /* Line 1455 of yacc.c */ -#line 1336 "hphp.y" +#line 1339 "hphp.y" { _p->onElseIf((yyval),(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]));;} break; case 251: /* Line 1455 of yacc.c */ -#line 1337 "hphp.y" +#line 1340 "hphp.y" { (yyval).reset();;} break; case 252: /* Line 1455 of yacc.c */ -#line 1342 "hphp.y" +#line 1345 "hphp.y" { _p->onElseIf((yyval),(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 253: /* Line 1455 of yacc.c */ -#line 1343 "hphp.y" +#line 1346 "hphp.y" { (yyval).reset();;} break; case 254: /* Line 1455 of yacc.c */ -#line 1346 "hphp.y" +#line 1349 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 255: /* Line 1455 of yacc.c */ -#line 1347 "hphp.y" +#line 1350 "hphp.y" { (yyval).reset();;} break; case 256: /* Line 1455 of yacc.c */ -#line 1350 "hphp.y" +#line 1353 "hphp.y" { (yyval) = (yyvsp[(3) - (3)]);;} break; case 257: /* Line 1455 of yacc.c */ -#line 1351 "hphp.y" +#line 1354 "hphp.y" { (yyval).reset();;} break; case 258: /* Line 1455 of yacc.c */ -#line 1359 "hphp.y" +#line 1362 "hphp.y" { _p->onVariadicParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(5) - (7)]),(yyvsp[(7) - (7)]),false, &(yyvsp[(3) - (7)]),&(yyvsp[(4) - (7)])); ;} break; @@ -8384,7 +8401,7 @@ YYLTYPE yylloc; case 259: /* Line 1455 of yacc.c */ -#line 1365 "hphp.y" +#line 1368 "hphp.y" { _p->onVariadicParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(8) - (8)]),true, &(yyvsp[(3) - (8)]),&(yyvsp[(4) - (8)])); ;} break; @@ -8392,7 +8409,7 @@ YYLTYPE yylloc; case 260: /* Line 1455 of yacc.c */ -#line 1371 "hphp.y" +#line 1374 "hphp.y" { validate_hh_variadic_variant( _p, (yyvsp[(3) - (6)]), (yyvsp[(5) - (6)]), &(yyvsp[(4) - (6)])); (yyval) = (yyvsp[(1) - (6)]); ;} @@ -8401,14 +8418,14 @@ YYLTYPE yylloc; case 261: /* Line 1455 of yacc.c */ -#line 1375 "hphp.y" +#line 1378 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 262: /* Line 1455 of yacc.c */ -#line 1379 "hphp.y" +#line 1382 "hphp.y" { _p->onVariadicParam((yyval),NULL,(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),false, &(yyvsp[(1) - (5)]),&(yyvsp[(2) - (5)])); ;} break; @@ -8416,7 +8433,7 @@ YYLTYPE yylloc; case 263: /* Line 1455 of yacc.c */ -#line 1384 "hphp.y" +#line 1387 "hphp.y" { _p->onVariadicParam((yyval),NULL,(yyvsp[(3) - (6)]),(yyvsp[(6) - (6)]),true, &(yyvsp[(1) - (6)]),&(yyvsp[(2) - (6)])); ;} break; @@ -8424,7 +8441,7 @@ YYLTYPE yylloc; case 264: /* Line 1455 of yacc.c */ -#line 1389 "hphp.y" +#line 1392 "hphp.y" { validate_hh_variadic_variant( _p, (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]), &(yyvsp[(2) - (4)])); (yyval).reset(); ;} @@ -8433,14 +8450,14 @@ YYLTYPE yylloc; case 265: /* Line 1455 of yacc.c */ -#line 1392 "hphp.y" +#line 1395 "hphp.y" { (yyval).reset(); ;} break; case 266: /* Line 1455 of yacc.c */ -#line 1398 "hphp.y" +#line 1401 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]),0, NULL,&(yyvsp[(1) - (4)]),&(yyvsp[(2) - (4)]));;} break; @@ -8448,7 +8465,7 @@ YYLTYPE yylloc; case 267: /* Line 1455 of yacc.c */ -#line 1402 "hphp.y" +#line 1405 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),1, NULL,&(yyvsp[(1) - (5)]),&(yyvsp[(2) - (5)]));;} break; @@ -8456,7 +8473,7 @@ YYLTYPE yylloc; case 268: /* Line 1455 of yacc.c */ -#line 1407 "hphp.y" +#line 1410 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (7)]),(yyvsp[(5) - (7)]),1, &(yyvsp[(7) - (7)]),&(yyvsp[(1) - (7)]),&(yyvsp[(2) - (7)]));;} break; @@ -8464,7 +8481,7 @@ YYLTYPE yylloc; case 269: /* Line 1455 of yacc.c */ -#line 1412 "hphp.y" +#line 1415 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(3) - (6)]),(yyvsp[(4) - (6)]),0, &(yyvsp[(6) - (6)]),&(yyvsp[(1) - (6)]),&(yyvsp[(2) - (6)]));;} break; @@ -8472,7 +8489,7 @@ YYLTYPE yylloc; case 270: /* Line 1455 of yacc.c */ -#line 1417 "hphp.y" +#line 1420 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)]),0, NULL,&(yyvsp[(3) - (6)]),&(yyvsp[(4) - (6)]));;} break; @@ -8480,7 +8497,7 @@ YYLTYPE yylloc; case 271: /* Line 1455 of yacc.c */ -#line 1422 "hphp.y" +#line 1425 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(5) - (7)]),(yyvsp[(7) - (7)]),1, NULL,&(yyvsp[(3) - (7)]),&(yyvsp[(4) - (7)]));;} break; @@ -8488,7 +8505,7 @@ YYLTYPE yylloc; case 272: /* Line 1455 of yacc.c */ -#line 1428 "hphp.y" +#line 1431 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (9)]),(yyvsp[(5) - (9)]),(yyvsp[(7) - (9)]),1, &(yyvsp[(9) - (9)]),&(yyvsp[(3) - (9)]),&(yyvsp[(4) - (9)]));;} break; @@ -8496,7 +8513,7 @@ YYLTYPE yylloc; case 273: /* Line 1455 of yacc.c */ -#line 1434 "hphp.y" +#line 1437 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(5) - (8)]),(yyvsp[(6) - (8)]),0, &(yyvsp[(8) - (8)]),&(yyvsp[(3) - (8)]),&(yyvsp[(4) - (8)]));;} break; @@ -8504,7 +8521,7 @@ YYLTYPE yylloc; case 274: /* Line 1455 of yacc.c */ -#line 1442 "hphp.y" +#line 1445 "hphp.y" { _p->onVariadicParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(4) - (6)]),(yyvsp[(6) - (6)]), false,&(yyvsp[(3) - (6)]),NULL); ;} break; @@ -8512,7 +8529,7 @@ YYLTYPE yylloc; case 275: /* Line 1455 of yacc.c */ -#line 1447 "hphp.y" +#line 1450 "hphp.y" { _p->onVariadicParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(7) - (7)]), true,&(yyvsp[(3) - (7)]),NULL); ;} break; @@ -8520,7 +8537,7 @@ YYLTYPE yylloc; case 276: /* Line 1455 of yacc.c */ -#line 1452 "hphp.y" +#line 1455 "hphp.y" { validate_hh_variadic_variant( _p, (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), NULL); (yyval) = (yyvsp[(1) - (5)]); ;} @@ -8529,14 +8546,14 @@ YYLTYPE yylloc; case 277: /* Line 1455 of yacc.c */ -#line 1456 "hphp.y" +#line 1459 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 278: /* Line 1455 of yacc.c */ -#line 1459 "hphp.y" +#line 1462 "hphp.y" { _p->onVariadicParam((yyval),NULL,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]), false,&(yyvsp[(1) - (4)]),NULL); ;} break; @@ -8544,7 +8561,7 @@ YYLTYPE yylloc; case 279: /* Line 1455 of yacc.c */ -#line 1463 "hphp.y" +#line 1466 "hphp.y" { _p->onVariadicParam((yyval),NULL,(yyvsp[(2) - (5)]),(yyvsp[(5) - (5)]), true,&(yyvsp[(1) - (5)]),NULL); ;} break; @@ -8552,7 +8569,7 @@ YYLTYPE yylloc; case 280: /* Line 1455 of yacc.c */ -#line 1467 "hphp.y" +#line 1470 "hphp.y" { validate_hh_variadic_variant( _p, (yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), NULL); (yyval).reset(); ;} @@ -8561,14 +8578,14 @@ YYLTYPE yylloc; case 281: /* Line 1455 of yacc.c */ -#line 1470 "hphp.y" +#line 1473 "hphp.y" { (yyval).reset();;} break; case 282: /* Line 1455 of yacc.c */ -#line 1475 "hphp.y" +#line 1478 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)]),false, NULL,&(yyvsp[(1) - (3)]),NULL); ;} break; @@ -8576,7 +8593,7 @@ YYLTYPE yylloc; case 283: /* Line 1455 of yacc.c */ -#line 1478 "hphp.y" +#line 1481 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]),true, NULL,&(yyvsp[(1) - (4)]),NULL); ;} break; @@ -8584,7 +8601,7 @@ YYLTYPE yylloc; case 284: /* Line 1455 of yacc.c */ -#line 1482 "hphp.y" +#line 1485 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (6)]),(yyvsp[(4) - (6)]),true, &(yyvsp[(6) - (6)]),&(yyvsp[(1) - (6)]),NULL); ;} break; @@ -8592,7 +8609,7 @@ YYLTYPE yylloc; case 285: /* Line 1455 of yacc.c */ -#line 1486 "hphp.y" +#line 1489 "hphp.y" { _p->onParam((yyval),NULL,(yyvsp[(2) - (5)]),(yyvsp[(3) - (5)]),false, &(yyvsp[(5) - (5)]),&(yyvsp[(1) - (5)]),NULL); ;} break; @@ -8600,7 +8617,7 @@ YYLTYPE yylloc; case 286: /* Line 1455 of yacc.c */ -#line 1490 "hphp.y" +#line 1493 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)]),false, NULL,&(yyvsp[(3) - (5)]),NULL); ;} break; @@ -8608,7 +8625,7 @@ YYLTYPE yylloc; case 287: /* Line 1455 of yacc.c */ -#line 1494 "hphp.y" +#line 1497 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(4) - (6)]),(yyvsp[(6) - (6)]),true, NULL,&(yyvsp[(3) - (6)]),NULL); ;} break; @@ -8616,7 +8633,7 @@ YYLTYPE yylloc; case 288: /* Line 1455 of yacc.c */ -#line 1499 "hphp.y" +#line 1502 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (8)]),(yyvsp[(4) - (8)]),(yyvsp[(6) - (8)]),true, &(yyvsp[(8) - (8)]),&(yyvsp[(3) - (8)]),NULL); ;} break; @@ -8624,7 +8641,7 @@ YYLTYPE yylloc; case 289: /* Line 1455 of yacc.c */ -#line 1504 "hphp.y" +#line 1507 "hphp.y" { _p->onParam((yyval),&(yyvsp[(1) - (7)]),(yyvsp[(4) - (7)]),(yyvsp[(5) - (7)]),false, &(yyvsp[(7) - (7)]),&(yyvsp[(3) - (7)]),NULL); ;} break; @@ -8632,140 +8649,140 @@ YYLTYPE yylloc; case 290: /* Line 1455 of yacc.c */ -#line 1510 "hphp.y" +#line 1513 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 291: /* Line 1455 of yacc.c */ -#line 1511 "hphp.y" +#line 1514 "hphp.y" { (yyval).reset();;} break; case 292: /* Line 1455 of yacc.c */ -#line 1514 "hphp.y" +#line 1517 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(1) - (1)]),false,false);;} break; case 293: /* Line 1455 of yacc.c */ -#line 1515 "hphp.y" +#line 1518 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(2) - (2)]),true,false);;} break; case 294: /* Line 1455 of yacc.c */ -#line 1516 "hphp.y" +#line 1519 "hphp.y" { _p->onCallParam((yyval),NULL,(yyvsp[(2) - (2)]),false,true);;} break; case 295: /* Line 1455 of yacc.c */ -#line 1518 "hphp.y" +#line 1521 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),false, false);;} break; case 296: /* Line 1455 of yacc.c */ -#line 1520 "hphp.y" +#line 1523 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),false,true);;} break; case 297: /* Line 1455 of yacc.c */ -#line 1522 "hphp.y" +#line 1525 "hphp.y" { _p->onCallParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),true, false);;} break; case 298: /* Line 1455 of yacc.c */ -#line 1526 "hphp.y" +#line 1529 "hphp.y" { _p->onGlobalVar((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 299: /* Line 1455 of yacc.c */ -#line 1527 "hphp.y" +#line 1530 "hphp.y" { _p->onGlobalVar((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 300: /* Line 1455 of yacc.c */ -#line 1530 "hphp.y" +#line 1533 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 301: /* Line 1455 of yacc.c */ -#line 1531 "hphp.y" +#line 1534 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]); (yyval) = 1;;} break; case 302: /* Line 1455 of yacc.c */ -#line 1532 "hphp.y" +#line 1535 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval) = 1;;} break; case 303: /* Line 1455 of yacc.c */ -#line 1536 "hphp.y" +#line 1539 "hphp.y" { _p->onStaticVariable((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 304: /* Line 1455 of yacc.c */ -#line 1538 "hphp.y" +#line 1541 "hphp.y" { _p->onStaticVariable((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),&(yyvsp[(5) - (5)]));;} break; case 305: /* Line 1455 of yacc.c */ -#line 1539 "hphp.y" +#line 1542 "hphp.y" { _p->onStaticVariable((yyval),0,(yyvsp[(1) - (1)]),0);;} break; case 306: /* Line 1455 of yacc.c */ -#line 1540 "hphp.y" +#line 1543 "hphp.y" { _p->onStaticVariable((yyval),0,(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 307: /* Line 1455 of yacc.c */ -#line 1545 "hphp.y" +#line 1548 "hphp.y" { _p->onClassStatement((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 308: /* Line 1455 of yacc.c */ -#line 1546 "hphp.y" +#line 1549 "hphp.y" { (yyval).reset();;} break; case 309: /* Line 1455 of yacc.c */ -#line 1549 "hphp.y" +#line 1552 "hphp.y" { _p->onClassVariableStart ((yyval),NULL,(yyvsp[(1) - (2)]),NULL);;} break; @@ -8773,35 +8790,35 @@ YYLTYPE yylloc; case 310: /* Line 1455 of yacc.c */ -#line 1554 "hphp.y" +#line 1557 "hphp.y" { _p->onClassConstant((yyval),0,(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 311: /* Line 1455 of yacc.c */ -#line 1560 "hphp.y" +#line 1563 "hphp.y" { _p->onClassStatement((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 312: /* Line 1455 of yacc.c */ -#line 1561 "hphp.y" +#line 1564 "hphp.y" { (yyval).reset();;} break; case 313: /* Line 1455 of yacc.c */ -#line 1564 "hphp.y" +#line 1567 "hphp.y" { _p->onClassVariableModifer((yyvsp[(1) - (1)]));;} break; case 314: /* Line 1455 of yacc.c */ -#line 1565 "hphp.y" +#line 1568 "hphp.y" { _p->onClassVariableStart ((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; @@ -8809,14 +8826,14 @@ YYLTYPE yylloc; case 315: /* Line 1455 of yacc.c */ -#line 1568 "hphp.y" +#line 1571 "hphp.y" { _p->onClassVariableModifer((yyvsp[(1) - (2)]));;} break; case 316: /* Line 1455 of yacc.c */ -#line 1569 "hphp.y" +#line 1572 "hphp.y" { _p->onClassVariableStart ((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(4) - (5)]),&(yyvsp[(2) - (5)]));;} break; @@ -8824,7 +8841,7 @@ YYLTYPE yylloc; case 317: /* Line 1455 of yacc.c */ -#line 1571 "hphp.y" +#line 1574 "hphp.y" { _p->onClassVariableStart ((yyval),NULL,(yyvsp[(1) - (2)]),NULL);;} break; @@ -8832,7 +8849,7 @@ YYLTYPE yylloc; case 318: /* Line 1455 of yacc.c */ -#line 1574 "hphp.y" +#line 1577 "hphp.y" { _p->onClassVariableStart ((yyval),NULL,(yyvsp[(1) - (2)]),NULL, true);;} break; @@ -8840,14 +8857,14 @@ YYLTYPE yylloc; case 319: /* Line 1455 of yacc.c */ -#line 1576 "hphp.y" +#line 1579 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 320: /* Line 1455 of yacc.c */ -#line 1579 "hphp.y" +#line 1582 "hphp.y" { _p->onNewLabelScope(true); _p->onMethodStart((yyvsp[(4) - (5)]), (yyvsp[(1) - (5)])); _p->pushLabelInfo();;} @@ -8856,7 +8873,7 @@ YYLTYPE yylloc; case 321: /* Line 1455 of yacc.c */ -#line 1585 "hphp.y" +#line 1588 "hphp.y" { _p->onMethod((yyval),(yyvsp[(1) - (10)]),(yyvsp[(9) - (10)]),(yyvsp[(3) - (10)]),(yyvsp[(4) - (10)]),(yyvsp[(7) - (10)]),(yyvsp[(10) - (10)]),nullptr); _p->popLabelInfo(); _p->popTypeScope(); @@ -8866,7 +8883,7 @@ YYLTYPE yylloc; case 322: /* Line 1455 of yacc.c */ -#line 1593 "hphp.y" +#line 1596 "hphp.y" { _p->onNewLabelScope(true); _p->onMethodStart((yyvsp[(5) - (6)]), (yyvsp[(2) - (6)])); _p->pushLabelInfo();;} @@ -8875,7 +8892,7 @@ YYLTYPE yylloc; case 323: /* Line 1455 of yacc.c */ -#line 1599 "hphp.y" +#line 1602 "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(); @@ -8885,42 +8902,42 @@ YYLTYPE yylloc; case 324: /* Line 1455 of yacc.c */ -#line 1604 "hphp.y" +#line 1607 "hphp.y" { _p->xhpSetAttributes((yyvsp[(2) - (3)]));;} break; case 325: /* Line 1455 of yacc.c */ -#line 1606 "hphp.y" +#line 1609 "hphp.y" { xhp_category_stmt(_p,(yyval),(yyvsp[(2) - (3)]));;} break; case 326: /* Line 1455 of yacc.c */ -#line 1608 "hphp.y" +#line 1611 "hphp.y" { xhp_children_stmt(_p,(yyval),(yyvsp[(2) - (3)]));;} break; case 327: /* Line 1455 of yacc.c */ -#line 1610 "hphp.y" +#line 1613 "hphp.y" { _p->onClassRequire((yyval), (yyvsp[(3) - (4)]), true); ;} break; case 328: /* Line 1455 of yacc.c */ -#line 1612 "hphp.y" +#line 1615 "hphp.y" { _p->onClassRequire((yyval), (yyvsp[(3) - (4)]), false); ;} break; case 329: /* Line 1455 of yacc.c */ -#line 1613 "hphp.y" +#line 1616 "hphp.y" { Token t; t.reset(); _p->onTraitUse((yyval),(yyvsp[(2) - (3)]),t); ;} break; @@ -8928,42 +8945,42 @@ YYLTYPE yylloc; case 330: /* Line 1455 of yacc.c */ -#line 1616 "hphp.y" +#line 1619 "hphp.y" { _p->onTraitUse((yyval),(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)])); ;} break; case 331: /* Line 1455 of yacc.c */ -#line 1619 "hphp.y" +#line 1622 "hphp.y" { _p->onTraitRule((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} break; case 332: /* Line 1455 of yacc.c */ -#line 1620 "hphp.y" +#line 1623 "hphp.y" { _p->onTraitRule((yyval),(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} break; case 333: /* Line 1455 of yacc.c */ -#line 1621 "hphp.y" +#line 1624 "hphp.y" { (yyval).reset(); ;} break; case 334: /* Line 1455 of yacc.c */ -#line 1627 "hphp.y" +#line 1630 "hphp.y" { _p->onTraitPrecRule((yyval),(yyvsp[(1) - (6)]),(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;} break; case 335: /* Line 1455 of yacc.c */ -#line 1632 "hphp.y" +#line 1635 "hphp.y" { _p->onTraitAliasRuleModify((yyval),(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]));;} break; @@ -8971,7 +8988,7 @@ YYLTYPE yylloc; case 336: /* Line 1455 of yacc.c */ -#line 1635 "hphp.y" +#line 1638 "hphp.y" { Token t; t.reset(); _p->onTraitAliasRuleModify((yyval),(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]), t);;} @@ -8980,14 +8997,14 @@ YYLTYPE yylloc; case 337: /* Line 1455 of yacc.c */ -#line 1642 "hphp.y" +#line 1645 "hphp.y" { _p->onTraitAliasRuleStart((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 338: /* Line 1455 of yacc.c */ -#line 1643 "hphp.y" +#line 1646 "hphp.y" { Token t; t.reset(); _p->onTraitAliasRuleStart((yyval),t,(yyvsp[(1) - (1)]));;} break; @@ -8995,7 +9012,7 @@ YYLTYPE yylloc; case 339: /* Line 1455 of yacc.c */ -#line 1648 "hphp.y" +#line 1651 "hphp.y" { xhp_attribute_list(_p,(yyval), _p->xhpGetAttributes(),(yyvsp[(1) - (1)]));;} break; @@ -9003,14 +9020,14 @@ YYLTYPE yylloc; case 340: /* Line 1455 of yacc.c */ -#line 1651 "hphp.y" +#line 1654 "hphp.y" { xhp_attribute_list(_p,(yyval), &(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 341: /* Line 1455 of yacc.c */ -#line 1658 "hphp.y" +#line 1661 "hphp.y" { xhp_attribute(_p,(yyval),(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); (yyval) = 1;;} break; @@ -9018,42 +9035,42 @@ YYLTYPE yylloc; case 342: /* Line 1455 of yacc.c */ -#line 1660 "hphp.y" +#line 1663 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 0;;} break; case 343: /* Line 1455 of yacc.c */ -#line 1664 "hphp.y" +#line 1667 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 345: /* Line 1455 of yacc.c */ -#line 1669 "hphp.y" +#line 1672 "hphp.y" { (yyval) = 4;;} break; case 346: /* Line 1455 of yacc.c */ -#line 1671 "hphp.y" +#line 1674 "hphp.y" { (yyval) = 4;;} break; case 347: /* Line 1455 of yacc.c */ -#line 1673 "hphp.y" +#line 1676 "hphp.y" { (yyval) = 4;;} break; case 348: /* Line 1455 of yacc.c */ -#line 1674 "hphp.y" +#line 1677 "hphp.y" { /* This case handles all types other than "array", "var" and "enum". For now we just use type code 5; @@ -9065,77 +9082,77 @@ YYLTYPE yylloc; case 349: /* Line 1455 of yacc.c */ -#line 1680 "hphp.y" +#line 1683 "hphp.y" { (yyval) = 6;;} break; case 350: /* Line 1455 of yacc.c */ -#line 1682 "hphp.y" +#line 1685 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval) = 7;;} break; case 351: /* Line 1455 of yacc.c */ -#line 1683 "hphp.y" +#line 1686 "hphp.y" { (yyval) = 9; ;} break; case 352: /* Line 1455 of yacc.c */ -#line 1687 "hphp.y" +#line 1690 "hphp.y" { _p->onArrayPair((yyval), 0,0,(yyvsp[(1) - (1)]),0);;} break; case 353: /* Line 1455 of yacc.c */ -#line 1689 "hphp.y" +#line 1692 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]),0,(yyvsp[(3) - (3)]),0);;} break; case 354: /* Line 1455 of yacc.c */ -#line 1694 "hphp.y" +#line 1697 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 355: /* Line 1455 of yacc.c */ -#line 1697 "hphp.y" +#line 1700 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 356: /* Line 1455 of yacc.c */ -#line 1698 "hphp.y" +#line 1701 "hphp.y" { scalar_null(_p, (yyval));;} break; case 357: /* Line 1455 of yacc.c */ -#line 1702 "hphp.y" +#line 1705 "hphp.y" { scalar_num(_p, (yyval), "1");;} break; case 358: /* Line 1455 of yacc.c */ -#line 1703 "hphp.y" +#line 1706 "hphp.y" { scalar_num(_p, (yyval), "0");;} break; case 359: /* Line 1455 of yacc.c */ -#line 1707 "hphp.y" +#line 1710 "hphp.y" { Token t; scalar_num(_p, t, "1"); _p->onArrayPair((yyval),0,&(yyvsp[(1) - (1)]),t,0);;} break; @@ -9143,7 +9160,7 @@ YYLTYPE yylloc; case 360: /* Line 1455 of yacc.c */ -#line 1710 "hphp.y" +#line 1713 "hphp.y" { Token t; scalar_num(_p, t, "1"); _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]),t,0);;} break; @@ -9151,7 +9168,7 @@ YYLTYPE yylloc; case 361: /* Line 1455 of yacc.c */ -#line 1715 "hphp.y" +#line 1718 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -9159,14 +9176,14 @@ YYLTYPE yylloc; case 362: /* Line 1455 of yacc.c */ -#line 1720 "hphp.y" +#line 1723 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 2;;} break; case 363: /* Line 1455 of yacc.c */ -#line 1721 "hphp.y" +#line 1724 "hphp.y" { (yyval) = -1; if ((yyvsp[(1) - (1)]).same("any")) (yyval) = 1;;} break; @@ -9174,91 +9191,91 @@ YYLTYPE yylloc; case 364: /* Line 1455 of yacc.c */ -#line 1723 "hphp.y" +#line 1726 "hphp.y" { (yyval) = 0;;} break; case 365: /* Line 1455 of yacc.c */ -#line 1727 "hphp.y" +#line 1730 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (3)]), 0);;} break; case 366: /* Line 1455 of yacc.c */ -#line 1728 "hphp.y" +#line 1731 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 1);;} break; case 367: /* Line 1455 of yacc.c */ -#line 1729 "hphp.y" +#line 1732 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 2);;} break; case 368: /* Line 1455 of yacc.c */ -#line 1730 "hphp.y" +#line 1733 "hphp.y" { xhp_children_paren(_p, (yyval), (yyvsp[(2) - (4)]), 3);;} break; case 369: /* Line 1455 of yacc.c */ -#line 1734 "hphp.y" +#line 1737 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 370: /* Line 1455 of yacc.c */ -#line 1735 "hphp.y" +#line 1738 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (1)]),0, 0);;} break; case 371: /* Line 1455 of yacc.c */ -#line 1736 "hphp.y" +#line 1739 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),1, 0);;} break; case 372: /* Line 1455 of yacc.c */ -#line 1737 "hphp.y" +#line 1740 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),2, 0);;} break; case 373: /* Line 1455 of yacc.c */ -#line 1738 "hphp.y" +#line 1741 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (2)]),3, 0);;} break; case 374: /* Line 1455 of yacc.c */ -#line 1740 "hphp.y" +#line 1743 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (3)]),4,&(yyvsp[(3) - (3)]));;} break; case 375: /* Line 1455 of yacc.c */ -#line 1742 "hphp.y" +#line 1745 "hphp.y" { xhp_children_decl(_p,(yyval),(yyvsp[(1) - (3)]),5,&(yyvsp[(3) - (3)]));;} break; case 376: /* Line 1455 of yacc.c */ -#line 1746 "hphp.y" +#line 1749 "hphp.y" { (yyval) = -1; if ((yyvsp[(1) - (1)]).same("any")) (yyval) = 1; else if ((yyvsp[(1) - (1)]).same("pcdata")) (yyval) = 2;;} @@ -9267,231 +9284,231 @@ YYLTYPE yylloc; case 377: /* Line 1455 of yacc.c */ -#line 1749 "hphp.y" +#line 1752 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); (yyval) = (yyvsp[(1) - (1)]); (yyval) = 3;;} break; case 378: /* Line 1455 of yacc.c */ -#line 1750 "hphp.y" +#line 1753 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(0); (yyval) = (yyvsp[(1) - (1)]); (yyval) = 4;;} break; case 379: /* Line 1455 of yacc.c */ -#line 1754 "hphp.y" +#line 1757 "hphp.y" { (yyval).reset();;} break; case 380: /* Line 1455 of yacc.c */ -#line 1755 "hphp.y" +#line 1758 "hphp.y" { _p->finishStatement((yyval), (yyvsp[(2) - (3)])); (yyval) = 1;;} break; case 381: /* Line 1455 of yacc.c */ -#line 1759 "hphp.y" +#line 1762 "hphp.y" { (yyval).reset();;} break; case 382: /* Line 1455 of yacc.c */ -#line 1760 "hphp.y" +#line 1763 "hphp.y" { _p->finishStatement((yyval), (yyvsp[(2) - (3)])); (yyval) = 1;;} break; case 383: /* Line 1455 of yacc.c */ -#line 1763 "hphp.y" +#line 1766 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 384: /* Line 1455 of yacc.c */ -#line 1764 "hphp.y" +#line 1767 "hphp.y" { (yyval).reset();;} break; case 385: /* Line 1455 of yacc.c */ -#line 1767 "hphp.y" +#line 1770 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 386: /* Line 1455 of yacc.c */ -#line 1768 "hphp.y" +#line 1771 "hphp.y" { (yyval).reset();;} break; case 387: /* Line 1455 of yacc.c */ -#line 1771 "hphp.y" +#line 1774 "hphp.y" { _p->onMemberModifier((yyval),NULL,(yyvsp[(1) - (1)]));;} break; case 388: /* Line 1455 of yacc.c */ -#line 1773 "hphp.y" +#line 1776 "hphp.y" { _p->onMemberModifier((yyval),&(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 389: /* Line 1455 of yacc.c */ -#line 1776 "hphp.y" +#line 1779 "hphp.y" { (yyval) = T_PUBLIC;;} break; case 390: /* Line 1455 of yacc.c */ -#line 1777 "hphp.y" +#line 1780 "hphp.y" { (yyval) = T_PROTECTED;;} break; case 391: /* Line 1455 of yacc.c */ -#line 1778 "hphp.y" +#line 1781 "hphp.y" { (yyval) = T_PRIVATE;;} break; case 392: /* Line 1455 of yacc.c */ -#line 1779 "hphp.y" +#line 1782 "hphp.y" { (yyval) = T_STATIC;;} break; case 393: /* Line 1455 of yacc.c */ -#line 1780 "hphp.y" +#line 1783 "hphp.y" { (yyval) = T_ABSTRACT;;} break; case 394: /* Line 1455 of yacc.c */ -#line 1781 "hphp.y" +#line 1784 "hphp.y" { (yyval) = T_FINAL;;} break; case 395: /* Line 1455 of yacc.c */ -#line 1782 "hphp.y" +#line 1785 "hphp.y" { (yyval) = T_ASYNC;;} break; case 396: /* Line 1455 of yacc.c */ -#line 1786 "hphp.y" +#line 1789 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 397: /* Line 1455 of yacc.c */ -#line 1787 "hphp.y" +#line 1790 "hphp.y" { (yyval).reset();;} break; case 398: /* Line 1455 of yacc.c */ -#line 1790 "hphp.y" +#line 1793 "hphp.y" { (yyval) = T_PUBLIC;;} break; case 399: /* Line 1455 of yacc.c */ -#line 1791 "hphp.y" +#line 1794 "hphp.y" { (yyval) = T_PROTECTED;;} break; case 400: /* Line 1455 of yacc.c */ -#line 1792 "hphp.y" +#line 1795 "hphp.y" { (yyval) = T_PRIVATE;;} break; case 401: /* Line 1455 of yacc.c */ -#line 1796 "hphp.y" +#line 1799 "hphp.y" { _p->onClassVariable((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 402: /* Line 1455 of yacc.c */ -#line 1798 "hphp.y" +#line 1801 "hphp.y" { _p->onClassVariable((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),&(yyvsp[(5) - (5)]));;} break; case 403: /* Line 1455 of yacc.c */ -#line 1799 "hphp.y" +#line 1802 "hphp.y" { _p->onClassVariable((yyval),0,(yyvsp[(1) - (1)]),0);;} break; case 404: /* Line 1455 of yacc.c */ -#line 1800 "hphp.y" +#line 1803 "hphp.y" { _p->onClassVariable((yyval),0,(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 405: /* Line 1455 of yacc.c */ -#line 1804 "hphp.y" +#line 1807 "hphp.y" { _p->onClassConstant((yyval),&(yyvsp[(1) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 406: /* Line 1455 of yacc.c */ -#line 1806 "hphp.y" +#line 1809 "hphp.y" { _p->onClassConstant((yyval),0,(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]));;} break; case 407: /* Line 1455 of yacc.c */ -#line 1810 "hphp.y" +#line 1813 "hphp.y" { _p->onClassAbstractConstant((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 408: /* Line 1455 of yacc.c */ -#line 1812 "hphp.y" +#line 1815 "hphp.y" { _p->onClassAbstractConstant((yyval),NULL,(yyvsp[(3) - (3)]));;} break; case 409: /* Line 1455 of yacc.c */ -#line 1816 "hphp.y" +#line 1819 "hphp.y" { Token t; _p->onClassTypeConstant((yyval), (yyvsp[(2) - (3)]), t); _p->popTypeScope(); ;} @@ -9500,7 +9517,7 @@ YYLTYPE yylloc; case 410: /* Line 1455 of yacc.c */ -#line 1820 "hphp.y" +#line 1823 "hphp.y" { _p->onClassTypeConstant((yyval), (yyvsp[(1) - (4)]), (yyvsp[(4) - (4)])); _p->popTypeScope(); ;} break; @@ -9508,511 +9525,511 @@ YYLTYPE yylloc; case 411: /* Line 1455 of yacc.c */ -#line 1824 "hphp.y" +#line 1827 "hphp.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 412: /* Line 1455 of yacc.c */ -#line 1828 "hphp.y" +#line 1831 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 413: /* Line 1455 of yacc.c */ -#line 1830 "hphp.y" +#line 1833 "hphp.y" { _p->onNewObject((yyval), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));;} break; case 414: /* Line 1455 of yacc.c */ -#line 1831 "hphp.y" +#line 1834 "hphp.y" { (yyval) = (yyvsp[(2) - (2)]);;} break; case 415: /* Line 1455 of yacc.c */ -#line 1832 "hphp.y" +#line 1835 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_CLONE,1);;} break; case 416: /* Line 1455 of yacc.c */ -#line 1833 "hphp.y" +#line 1836 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 417: /* Line 1455 of yacc.c */ -#line 1834 "hphp.y" +#line 1837 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 418: /* Line 1455 of yacc.c */ -#line 1837 "hphp.y" +#line 1840 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 419: /* Line 1455 of yacc.c */ -#line 1841 "hphp.y" +#line 1844 "hphp.y" { _p->onExprListElem((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 420: /* Line 1455 of yacc.c */ -#line 1842 "hphp.y" +#line 1845 "hphp.y" { _p->onExprListElem((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 421: /* Line 1455 of yacc.c */ -#line 1846 "hphp.y" +#line 1849 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 422: /* Line 1455 of yacc.c */ -#line 1847 "hphp.y" +#line 1850 "hphp.y" { (yyval).reset();;} break; case 423: /* Line 1455 of yacc.c */ -#line 1851 "hphp.y" +#line 1854 "hphp.y" { _p->onYield((yyval), NULL);;} break; case 424: /* Line 1455 of yacc.c */ -#line 1852 "hphp.y" +#line 1855 "hphp.y" { _p->onYield((yyval), &(yyvsp[(2) - (2)]));;} break; case 425: /* Line 1455 of yacc.c */ -#line 1853 "hphp.y" +#line 1856 "hphp.y" { _p->onYieldPair((yyval), &(yyvsp[(2) - (4)]), &(yyvsp[(4) - (4)]));;} break; case 426: /* Line 1455 of yacc.c */ -#line 1854 "hphp.y" +#line 1857 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); ;} break; case 427: /* Line 1455 of yacc.c */ -#line 1858 "hphp.y" +#line 1861 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0, true);;} break; case 428: /* Line 1455 of yacc.c */ -#line 1863 "hphp.y" +#line 1866 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]), true);;} break; case 429: /* Line 1455 of yacc.c */ -#line 1867 "hphp.y" +#line 1870 "hphp.y" { _p->onAwait((yyval), (yyvsp[(2) - (2)])); ;} break; case 430: /* Line 1455 of yacc.c */ -#line 1871 "hphp.y" +#line 1874 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0, true);;} break; case 431: /* Line 1455 of yacc.c */ -#line 1876 "hphp.y" +#line 1879 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]), true);;} break; case 432: /* Line 1455 of yacc.c */ -#line 1880 "hphp.y" +#line 1883 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 433: /* Line 1455 of yacc.c */ -#line 1881 "hphp.y" +#line 1884 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 434: /* Line 1455 of yacc.c */ -#line 1882 "hphp.y" +#line 1885 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 435: /* Line 1455 of yacc.c */ -#line 1883 "hphp.y" +#line 1886 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 436: /* Line 1455 of yacc.c */ -#line 1884 "hphp.y" +#line 1887 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 437: /* Line 1455 of yacc.c */ -#line 1889 "hphp.y" +#line 1892 "hphp.y" { _p->onListAssignment((yyval), (yyvsp[(3) - (6)]), &(yyvsp[(6) - (6)]));;} break; case 438: /* Line 1455 of yacc.c */ -#line 1890 "hphp.y" +#line 1893 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 439: /* Line 1455 of yacc.c */ -#line 1891 "hphp.y" +#line 1894 "hphp.y" { _p->onAssign((yyval), (yyvsp[(1) - (4)]), (yyvsp[(4) - (4)]), 1);;} break; case 440: /* Line 1455 of yacc.c */ -#line 1894 "hphp.y" +#line 1897 "hphp.y" { _p->onAssignNew((yyval),(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)]));;} break; case 441: /* Line 1455 of yacc.c */ -#line 1895 "hphp.y" +#line 1898 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_PLUS_EQUAL);;} break; case 442: /* Line 1455 of yacc.c */ -#line 1896 "hphp.y" +#line 1899 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MINUS_EQUAL);;} break; case 443: /* Line 1455 of yacc.c */ -#line 1897 "hphp.y" +#line 1900 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MUL_EQUAL);;} break; case 444: /* Line 1455 of yacc.c */ -#line 1898 "hphp.y" +#line 1901 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_DIV_EQUAL);;} break; case 445: /* Line 1455 of yacc.c */ -#line 1899 "hphp.y" +#line 1902 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_CONCAT_EQUAL);;} break; case 446: /* Line 1455 of yacc.c */ -#line 1900 "hphp.y" +#line 1903 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_MOD_EQUAL);;} break; case 447: /* Line 1455 of yacc.c */ -#line 1901 "hphp.y" +#line 1904 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_AND_EQUAL);;} break; case 448: /* Line 1455 of yacc.c */ -#line 1902 "hphp.y" +#line 1905 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_OR_EQUAL);;} break; case 449: /* Line 1455 of yacc.c */ -#line 1903 "hphp.y" +#line 1906 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_XOR_EQUAL);;} break; case 450: /* Line 1455 of yacc.c */ -#line 1904 "hphp.y" +#line 1907 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL_EQUAL);;} break; case 451: /* Line 1455 of yacc.c */ -#line 1905 "hphp.y" +#line 1908 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR_EQUAL);;} break; case 452: /* Line 1455 of yacc.c */ -#line 1906 "hphp.y" +#line 1909 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_POW_EQUAL);;} break; case 453: /* Line 1455 of yacc.c */ -#line 1907 "hphp.y" +#line 1910 "hphp.y" { UEXP((yyval),(yyvsp[(1) - (2)]),T_INC,0);;} break; case 454: /* Line 1455 of yacc.c */ -#line 1908 "hphp.y" +#line 1911 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INC,1);;} break; case 455: /* Line 1455 of yacc.c */ -#line 1909 "hphp.y" +#line 1912 "hphp.y" { UEXP((yyval),(yyvsp[(1) - (2)]),T_DEC,0);;} break; case 456: /* Line 1455 of yacc.c */ -#line 1910 "hphp.y" +#line 1913 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_DEC,1);;} break; case 457: /* Line 1455 of yacc.c */ -#line 1911 "hphp.y" +#line 1914 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_OR);;} break; case 458: /* Line 1455 of yacc.c */ -#line 1912 "hphp.y" +#line 1915 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_AND);;} break; case 459: /* Line 1455 of yacc.c */ -#line 1913 "hphp.y" +#line 1916 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_OR);;} break; case 460: /* Line 1455 of yacc.c */ -#line 1914 "hphp.y" +#line 1917 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_AND);;} break; case 461: /* Line 1455 of yacc.c */ -#line 1915 "hphp.y" +#line 1918 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_XOR);;} break; case 462: /* Line 1455 of yacc.c */ -#line 1916 "hphp.y" +#line 1919 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'|');;} break; case 463: /* Line 1455 of yacc.c */ -#line 1917 "hphp.y" +#line 1920 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'&');;} break; case 464: /* Line 1455 of yacc.c */ -#line 1918 "hphp.y" +#line 1921 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'^');;} break; case 465: /* Line 1455 of yacc.c */ -#line 1919 "hphp.y" +#line 1922 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'.');;} break; case 466: /* Line 1455 of yacc.c */ -#line 1920 "hphp.y" +#line 1923 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'+');;} break; case 467: /* Line 1455 of yacc.c */ -#line 1921 "hphp.y" +#line 1924 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'-');;} break; case 468: /* Line 1455 of yacc.c */ -#line 1922 "hphp.y" +#line 1925 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'*');;} break; case 469: /* Line 1455 of yacc.c */ -#line 1923 "hphp.y" +#line 1926 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'/');;} break; case 470: /* Line 1455 of yacc.c */ -#line 1924 "hphp.y" +#line 1927 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_POW);;} break; case 471: /* Line 1455 of yacc.c */ -#line 1925 "hphp.y" +#line 1928 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'%');;} break; case 472: /* Line 1455 of yacc.c */ -#line 1926 "hphp.y" +#line 1929 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL);;} break; case 473: /* Line 1455 of yacc.c */ -#line 1927 "hphp.y" +#line 1930 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR);;} break; case 474: /* Line 1455 of yacc.c */ -#line 1928 "hphp.y" +#line 1931 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 475: /* Line 1455 of yacc.c */ -#line 1929 "hphp.y" +#line 1932 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 476: /* Line 1455 of yacc.c */ -#line 1930 "hphp.y" +#line 1933 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'!',1);;} break; case 477: /* Line 1455 of yacc.c */ -#line 1931 "hphp.y" +#line 1934 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'~',1);;} break; case 478: /* Line 1455 of yacc.c */ -#line 1932 "hphp.y" +#line 1935 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_IDENTICAL);;} break; case 479: /* Line 1455 of yacc.c */ -#line 1933 "hphp.y" +#line 1936 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_IDENTICAL);;} break; case 480: /* Line 1455 of yacc.c */ -#line 1934 "hphp.y" +#line 1937 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_EQUAL);;} break; case 481: /* Line 1455 of yacc.c */ -#line 1935 "hphp.y" +#line 1938 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_EQUAL);;} break; case 482: /* Line 1455 of yacc.c */ -#line 1936 "hphp.y" +#line 1939 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'<');;} break; case 483: /* Line 1455 of yacc.c */ -#line 1937 "hphp.y" +#line 1940 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_SMALLER_OR_EQUAL);;} break; @@ -10020,14 +10037,14 @@ YYLTYPE yylloc; case 484: /* Line 1455 of yacc.c */ -#line 1939 "hphp.y" +#line 1942 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'>');;} break; case 485: /* Line 1455 of yacc.c */ -#line 1940 "hphp.y" +#line 1943 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_GREATER_OR_EQUAL);;} break; @@ -10035,175 +10052,175 @@ YYLTYPE yylloc; case 486: /* Line 1455 of yacc.c */ -#line 1942 "hphp.y" +#line 1945 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SPACESHIP);;} break; case 487: /* Line 1455 of yacc.c */ -#line 1944 "hphp.y" +#line 1947 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_INSTANCEOF);;} break; case 488: /* Line 1455 of yacc.c */ -#line 1945 "hphp.y" +#line 1948 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 489: /* Line 1455 of yacc.c */ -#line 1946 "hphp.y" +#line 1949 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (5)]), &(yyvsp[(3) - (5)]), (yyvsp[(5) - (5)]));;} break; case 490: /* Line 1455 of yacc.c */ -#line 1947 "hphp.y" +#line 1950 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (4)]), 0, (yyvsp[(4) - (4)]));;} break; case 491: /* Line 1455 of yacc.c */ -#line 1948 "hphp.y" +#line 1951 "hphp.y" { _p->onNullCoalesce((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 492: /* Line 1455 of yacc.c */ -#line 1949 "hphp.y" +#line 1952 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 493: /* Line 1455 of yacc.c */ -#line 1950 "hphp.y" +#line 1953 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INT_CAST,1);;} break; case 494: /* Line 1455 of yacc.c */ -#line 1951 "hphp.y" +#line 1954 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_DOUBLE_CAST,1);;} break; case 495: /* Line 1455 of yacc.c */ -#line 1952 "hphp.y" +#line 1955 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_STRING_CAST,1);;} break; case 496: /* Line 1455 of yacc.c */ -#line 1953 "hphp.y" +#line 1956 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_ARRAY_CAST,1);;} break; case 497: /* Line 1455 of yacc.c */ -#line 1954 "hphp.y" +#line 1957 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_OBJECT_CAST,1);;} break; case 498: /* Line 1455 of yacc.c */ -#line 1955 "hphp.y" +#line 1958 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_BOOL_CAST,1);;} break; case 499: /* Line 1455 of yacc.c */ -#line 1956 "hphp.y" +#line 1959 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_UNSET_CAST,1);;} break; case 500: /* Line 1455 of yacc.c */ -#line 1957 "hphp.y" +#line 1960 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_EXIT,1);;} break; case 501: /* Line 1455 of yacc.c */ -#line 1958 "hphp.y" +#line 1961 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'@',1);;} break; case 502: /* Line 1455 of yacc.c */ -#line 1959 "hphp.y" +#line 1962 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 503: /* Line 1455 of yacc.c */ -#line 1960 "hphp.y" +#line 1963 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 504: /* Line 1455 of yacc.c */ -#line 1961 "hphp.y" +#line 1964 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 505: /* Line 1455 of yacc.c */ -#line 1962 "hphp.y" +#line 1965 "hphp.y" { _p->onEncapsList((yyval),'`',(yyvsp[(2) - (3)]));;} break; case 506: /* Line 1455 of yacc.c */ -#line 1963 "hphp.y" +#line 1966 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_PRINT,1);;} break; case 507: /* Line 1455 of yacc.c */ -#line 1964 "hphp.y" +#line 1967 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 508: /* Line 1455 of yacc.c */ -#line 1971 "hphp.y" +#line 1974 "hphp.y" { (yyval) = (yyvsp[(3) - (5)]);;} break; case 509: /* Line 1455 of yacc.c */ -#line 1972 "hphp.y" +#line 1975 "hphp.y" { (yyval).reset();;} break; case 510: /* Line 1455 of yacc.c */ -#line 1977 "hphp.y" +#line 1980 "hphp.y" { Token t; _p->onNewLabelScope(true); _p->onClosureStart(t); @@ -10213,7 +10230,7 @@ YYLTYPE yylloc; case 511: /* Line 1455 of yacc.c */ -#line 1983 "hphp.y" +#line 1986 "hphp.y" { _p->finishStatement((yyvsp[(10) - (11)]), (yyvsp[(10) - (11)])); (yyvsp[(10) - (11)]) = 1; (yyval) = _p->onClosure(ClosureType::Long, nullptr, @@ -10225,7 +10242,7 @@ YYLTYPE yylloc; case 512: /* Line 1455 of yacc.c */ -#line 1991 "hphp.y" +#line 1994 "hphp.y" { Token t; _p->onNewLabelScope(true); _p->onClosureStart(t); @@ -10235,7 +10252,7 @@ YYLTYPE yylloc; case 513: /* Line 1455 of yacc.c */ -#line 1997 "hphp.y" +#line 2000 "hphp.y" { _p->finishStatement((yyvsp[(11) - (12)]), (yyvsp[(11) - (12)])); (yyvsp[(11) - (12)]) = 1; (yyval) = _p->onClosure(ClosureType::Long, &(yyvsp[(1) - (12)]), @@ -10247,7 +10264,7 @@ YYLTYPE yylloc; case 514: /* Line 1455 of yacc.c */ -#line 2007 "hphp.y" +#line 2010 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10261,7 +10278,7 @@ YYLTYPE yylloc; case 515: /* Line 1455 of yacc.c */ -#line 2015 "hphp.y" +#line 2018 "hphp.y" { Token v; Token w; Token x; (yyvsp[(1) - (4)]) = T_ASYNC; _p->onMemberModifier((yyvsp[(1) - (4)]), nullptr, (yyvsp[(1) - (4)])); @@ -10276,7 +10293,7 @@ YYLTYPE yylloc; case 516: /* Line 1455 of yacc.c */ -#line 2025 "hphp.y" +#line 2028 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10287,7 +10304,7 @@ YYLTYPE yylloc; case 517: /* Line 1455 of yacc.c */ -#line 2033 "hphp.y" +#line 2036 "hphp.y" { Token u; Token v; (yyvsp[(1) - (7)]) = T_ASYNC; _p->onMemberModifier((yyvsp[(1) - (7)]), nullptr, (yyvsp[(1) - (7)])); @@ -10302,7 +10319,7 @@ YYLTYPE yylloc; case 518: /* Line 1455 of yacc.c */ -#line 2043 "hphp.y" +#line 2046 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10313,7 +10330,7 @@ YYLTYPE yylloc; case 519: /* Line 1455 of yacc.c */ -#line 2049 "hphp.y" +#line 2052 "hphp.y" { Token u; Token v; Token w; Token x; Token y; (yyvsp[(1) - (5)]) = T_ASYNC; @@ -10330,7 +10347,7 @@ YYLTYPE yylloc; case 520: /* Line 1455 of yacc.c */ -#line 2060 "hphp.y" +#line 2063 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10344,7 +10361,7 @@ YYLTYPE yylloc; case 521: /* Line 1455 of yacc.c */ -#line 2068 "hphp.y" +#line 2071 "hphp.y" { Token v; Token w; Token x; _p->finishStatement((yyvsp[(3) - (3)]), (yyvsp[(3) - (3)])); (yyvsp[(3) - (3)]) = 1; (yyval) = _p->onClosure(ClosureType::Short, @@ -10357,7 +10374,7 @@ YYLTYPE yylloc; case 522: /* Line 1455 of yacc.c */ -#line 2075 "hphp.y" +#line 2078 "hphp.y" { _p->pushFuncLocation(); Token t; _p->onNewLabelScope(true); @@ -10368,7 +10385,7 @@ YYLTYPE yylloc; case 523: /* Line 1455 of yacc.c */ -#line 2083 "hphp.y" +#line 2086 "hphp.y" { Token u; Token v; _p->finishStatement((yyvsp[(6) - (6)]), (yyvsp[(6) - (6)])); (yyvsp[(6) - (6)]) = 1; (yyval) = _p->onClosure(ClosureType::Short, @@ -10381,28 +10398,28 @@ YYLTYPE yylloc; case 524: /* Line 1455 of yacc.c */ -#line 2093 "hphp.y" +#line 2096 "hphp.y" { (yyval) = _p->onExprForLambda((yyvsp[(2) - (2)]));;} break; case 525: /* Line 1455 of yacc.c */ -#line 2094 "hphp.y" +#line 2097 "hphp.y" { (yyval) = _p->onExprForLambda((yyvsp[(2) - (2)]));;} break; case 526: /* Line 1455 of yacc.c */ -#line 2096 "hphp.y" +#line 2099 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); ;} break; case 527: /* Line 1455 of yacc.c */ -#line 2100 "hphp.y" +#line 2103 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (1)]), _p); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)])); ;} break; @@ -10410,91 +10427,91 @@ YYLTYPE yylloc; case 528: /* Line 1455 of yacc.c */ -#line 2102 "hphp.y" +#line 2105 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 529: /* Line 1455 of yacc.c */ -#line 2109 "hphp.y" +#line 2112 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 530: /* Line 1455 of yacc.c */ -#line 2112 "hphp.y" +#line 2115 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 531: /* Line 1455 of yacc.c */ -#line 2119 "hphp.y" +#line 2122 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 532: /* Line 1455 of yacc.c */ -#line 2122 "hphp.y" +#line 2125 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 533: /* Line 1455 of yacc.c */ -#line 2127 "hphp.y" +#line 2130 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 534: /* Line 1455 of yacc.c */ -#line 2128 "hphp.y" +#line 2131 "hphp.y" { (yyval).reset(); ;} break; case 535: /* Line 1455 of yacc.c */ -#line 2133 "hphp.y" +#line 2136 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 536: /* Line 1455 of yacc.c */ -#line 2134 "hphp.y" +#line 2137 "hphp.y" { (yyval).reset(); ;} break; case 537: /* Line 1455 of yacc.c */ -#line 2138 "hphp.y" +#line 2141 "hphp.y" { _p->onArray((yyval), (yyvsp[(3) - (4)]), T_ARRAY);;} break; case 538: /* Line 1455 of yacc.c */ -#line 2142 "hphp.y" +#line 2145 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY);;} break; case 539: /* Line 1455 of yacc.c */ -#line 2143 "hphp.y" +#line 2146 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 540: /* Line 1455 of yacc.c */ -#line 2148 "hphp.y" +#line 2151 "hphp.y" { Token t; _p->onName(t,(yyvsp[(1) - (4)]),Parser::StringName); BEXP((yyval),t,(yyvsp[(3) - (4)]),T_COLLECTION);;} @@ -10503,7 +10520,7 @@ YYLTYPE yylloc; case 541: /* Line 1455 of yacc.c */ -#line 2155 "hphp.y" +#line 2158 "hphp.y" { Token t; _p->onName(t,(yyvsp[(1) - (4)]),Parser::StringName); BEXP((yyval),t,(yyvsp[(3) - (4)]),T_COLLECTION);;} @@ -10512,42 +10529,42 @@ YYLTYPE yylloc; case 542: /* Line 1455 of yacc.c */ -#line 2162 "hphp.y" +#line 2165 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 543: /* Line 1455 of yacc.c */ -#line 2164 "hphp.y" +#line 2167 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 544: /* Line 1455 of yacc.c */ -#line 2168 "hphp.y" +#line 2171 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 545: /* Line 1455 of yacc.c */ -#line 2169 "hphp.y" +#line 2172 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 546: /* Line 1455 of yacc.c */ -#line 2170 "hphp.y" +#line 2173 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 547: /* Line 1455 of yacc.c */ -#line 2171 "hphp.y" +#line 2174 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)])); ;} break; @@ -10555,49 +10572,49 @@ YYLTYPE yylloc; case 548: /* Line 1455 of yacc.c */ -#line 2173 "hphp.y" +#line 2176 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 549: /* Line 1455 of yacc.c */ -#line 2177 "hphp.y" +#line 2180 "hphp.y" { _p->onClosureParam((yyval),&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 550: /* Line 1455 of yacc.c */ -#line 2178 "hphp.y" +#line 2181 "hphp.y" { _p->onClosureParam((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 551: /* Line 1455 of yacc.c */ -#line 2179 "hphp.y" +#line 2182 "hphp.y" { _p->onClosureParam((yyval), 0,(yyvsp[(1) - (1)]),0);;} break; case 552: /* Line 1455 of yacc.c */ -#line 2180 "hphp.y" +#line 2183 "hphp.y" { _p->onClosureParam((yyval), 0,(yyvsp[(2) - (2)]),1);;} break; case 553: /* Line 1455 of yacc.c */ -#line 2187 "hphp.y" +#line 2190 "hphp.y" { xhp_tag(_p,(yyval),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]));;} break; case 554: /* Line 1455 of yacc.c */ -#line 2190 "hphp.y" +#line 2193 "hphp.y" { Token t1; _p->onArray(t1,(yyvsp[(1) - (2)])); Token t2; _p->onArray(t2,(yyvsp[(2) - (2)])); Token file; scalar_file(_p, file); @@ -10612,7 +10629,7 @@ YYLTYPE yylloc; case 555: /* Line 1455 of yacc.c */ -#line 2201 "hphp.y" +#line 2204 "hphp.y" { Token file; scalar_file(_p, file); Token line; scalar_line(_p, line); _p->onArray((yyvsp[(4) - (6)]),(yyvsp[(1) - (6)])); @@ -10627,49 +10644,49 @@ YYLTYPE yylloc; case 556: /* Line 1455 of yacc.c */ -#line 2212 "hphp.y" +#line 2215 "hphp.y" { (yyval).reset(); (yyval).setText("");;} break; case 557: /* Line 1455 of yacc.c */ -#line 2213 "hphp.y" +#line 2216 "hphp.y" { (yyval).reset(); (yyval).setText((yyvsp[(1) - (1)]));;} break; case 558: /* Line 1455 of yacc.c */ -#line 2218 "hphp.y" +#line 2221 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (4)]),&(yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]),0);;} break; case 559: /* Line 1455 of yacc.c */ -#line 2219 "hphp.y" +#line 2222 "hphp.y" { (yyval).reset();;} break; case 560: /* Line 1455 of yacc.c */ -#line 2222 "hphp.y" +#line 2225 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (2)]),0,(yyvsp[(2) - (2)]),0);;} break; case 561: /* Line 1455 of yacc.c */ -#line 2223 "hphp.y" +#line 2226 "hphp.y" { (yyval).reset();;} break; case 562: /* Line 1455 of yacc.c */ -#line 2226 "hphp.y" +#line 2229 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -10677,7 +10694,7 @@ YYLTYPE yylloc; case 563: /* Line 1455 of yacc.c */ -#line 2230 "hphp.y" +#line 2233 "hphp.y" { (yyvsp[(1) - (1)]).xhpDecode(); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} @@ -10686,14 +10703,14 @@ YYLTYPE yylloc; case 564: /* Line 1455 of yacc.c */ -#line 2233 "hphp.y" +#line 2236 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 565: /* Line 1455 of yacc.c */ -#line 2236 "hphp.y" +#line 2239 "hphp.y" { (yyval).reset(); if ((yyvsp[(1) - (1)]).htmlTrim()) { (yyvsp[(1) - (1)]).xhpDecode(); @@ -10706,644 +10723,644 @@ YYLTYPE yylloc; case 566: /* Line 1455 of yacc.c */ -#line 2243 "hphp.y" +#line 2246 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); ;} break; case 567: /* Line 1455 of yacc.c */ -#line 2244 "hphp.y" +#line 2247 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 568: /* Line 1455 of yacc.c */ -#line 2248 "hphp.y" +#line 2251 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 569: /* Line 1455 of yacc.c */ -#line 2250 "hphp.y" +#line 2253 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + ":" + (yyvsp[(3) - (3)]);;} break; case 570: /* Line 1455 of yacc.c */ -#line 2252 "hphp.y" +#line 2255 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]) + "-" + (yyvsp[(3) - (3)]);;} break; case 571: /* Line 1455 of yacc.c */ -#line 2255 "hphp.y" +#line 2258 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 572: /* Line 1455 of yacc.c */ -#line 2256 "hphp.y" +#line 2259 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 573: /* Line 1455 of yacc.c */ -#line 2257 "hphp.y" +#line 2260 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 574: /* Line 1455 of yacc.c */ -#line 2258 "hphp.y" +#line 2261 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 575: /* Line 1455 of yacc.c */ -#line 2259 "hphp.y" +#line 2262 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 576: /* Line 1455 of yacc.c */ -#line 2260 "hphp.y" +#line 2263 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 577: /* Line 1455 of yacc.c */ -#line 2261 "hphp.y" +#line 2264 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 578: /* Line 1455 of yacc.c */ -#line 2262 "hphp.y" +#line 2265 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 579: /* Line 1455 of yacc.c */ -#line 2263 "hphp.y" +#line 2266 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 580: /* Line 1455 of yacc.c */ -#line 2264 "hphp.y" +#line 2267 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 581: /* Line 1455 of yacc.c */ -#line 2265 "hphp.y" +#line 2268 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 582: /* Line 1455 of yacc.c */ -#line 2266 "hphp.y" +#line 2269 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 583: /* Line 1455 of yacc.c */ -#line 2267 "hphp.y" +#line 2270 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 584: /* Line 1455 of yacc.c */ -#line 2268 "hphp.y" +#line 2271 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 585: /* Line 1455 of yacc.c */ -#line 2269 "hphp.y" +#line 2272 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 586: /* Line 1455 of yacc.c */ -#line 2270 "hphp.y" +#line 2273 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 587: /* Line 1455 of yacc.c */ -#line 2271 "hphp.y" +#line 2274 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 588: /* Line 1455 of yacc.c */ -#line 2272 "hphp.y" +#line 2275 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 589: /* Line 1455 of yacc.c */ -#line 2273 "hphp.y" +#line 2276 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 590: /* Line 1455 of yacc.c */ -#line 2274 "hphp.y" +#line 2277 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 591: /* Line 1455 of yacc.c */ -#line 2275 "hphp.y" +#line 2278 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 592: /* Line 1455 of yacc.c */ -#line 2276 "hphp.y" +#line 2279 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 593: /* Line 1455 of yacc.c */ -#line 2277 "hphp.y" +#line 2280 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 594: /* Line 1455 of yacc.c */ -#line 2278 "hphp.y" +#line 2281 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 595: /* Line 1455 of yacc.c */ -#line 2279 "hphp.y" +#line 2282 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 596: /* Line 1455 of yacc.c */ -#line 2280 "hphp.y" +#line 2283 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 597: /* Line 1455 of yacc.c */ -#line 2281 "hphp.y" +#line 2284 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 598: /* Line 1455 of yacc.c */ -#line 2282 "hphp.y" +#line 2285 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 599: /* Line 1455 of yacc.c */ -#line 2283 "hphp.y" +#line 2286 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 600: /* Line 1455 of yacc.c */ -#line 2284 "hphp.y" +#line 2287 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 601: /* Line 1455 of yacc.c */ -#line 2285 "hphp.y" +#line 2288 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 602: /* Line 1455 of yacc.c */ -#line 2286 "hphp.y" +#line 2289 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 603: /* Line 1455 of yacc.c */ -#line 2287 "hphp.y" +#line 2290 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 604: /* Line 1455 of yacc.c */ -#line 2288 "hphp.y" +#line 2291 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 605: /* Line 1455 of yacc.c */ -#line 2289 "hphp.y" +#line 2292 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 606: /* Line 1455 of yacc.c */ -#line 2290 "hphp.y" +#line 2293 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 607: /* Line 1455 of yacc.c */ -#line 2291 "hphp.y" +#line 2294 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 608: /* Line 1455 of yacc.c */ -#line 2292 "hphp.y" +#line 2295 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 609: /* Line 1455 of yacc.c */ -#line 2293 "hphp.y" +#line 2296 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 610: /* Line 1455 of yacc.c */ -#line 2294 "hphp.y" +#line 2297 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 611: /* Line 1455 of yacc.c */ -#line 2295 "hphp.y" +#line 2298 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 612: /* Line 1455 of yacc.c */ -#line 2296 "hphp.y" +#line 2299 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 613: /* Line 1455 of yacc.c */ -#line 2297 "hphp.y" +#line 2300 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 614: /* Line 1455 of yacc.c */ -#line 2298 "hphp.y" +#line 2301 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 615: /* Line 1455 of yacc.c */ -#line 2299 "hphp.y" +#line 2302 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 616: /* Line 1455 of yacc.c */ -#line 2300 "hphp.y" +#line 2303 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 617: /* Line 1455 of yacc.c */ -#line 2301 "hphp.y" +#line 2304 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 618: /* Line 1455 of yacc.c */ -#line 2302 "hphp.y" +#line 2305 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 619: /* Line 1455 of yacc.c */ -#line 2303 "hphp.y" +#line 2306 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 620: /* Line 1455 of yacc.c */ -#line 2304 "hphp.y" +#line 2307 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 621: /* Line 1455 of yacc.c */ -#line 2305 "hphp.y" +#line 2308 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 622: /* Line 1455 of yacc.c */ -#line 2306 "hphp.y" +#line 2309 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 623: /* Line 1455 of yacc.c */ -#line 2307 "hphp.y" +#line 2310 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 624: /* Line 1455 of yacc.c */ -#line 2308 "hphp.y" +#line 2311 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 625: /* Line 1455 of yacc.c */ -#line 2309 "hphp.y" +#line 2312 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 626: /* Line 1455 of yacc.c */ -#line 2310 "hphp.y" +#line 2313 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 627: /* Line 1455 of yacc.c */ -#line 2311 "hphp.y" +#line 2314 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 628: /* Line 1455 of yacc.c */ -#line 2312 "hphp.y" +#line 2315 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 629: /* Line 1455 of yacc.c */ -#line 2313 "hphp.y" +#line 2316 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 630: /* Line 1455 of yacc.c */ -#line 2314 "hphp.y" +#line 2317 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 631: /* Line 1455 of yacc.c */ -#line 2315 "hphp.y" +#line 2318 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 632: /* Line 1455 of yacc.c */ -#line 2316 "hphp.y" +#line 2319 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 633: /* Line 1455 of yacc.c */ -#line 2317 "hphp.y" +#line 2320 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 634: /* Line 1455 of yacc.c */ -#line 2318 "hphp.y" +#line 2321 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 635: /* Line 1455 of yacc.c */ -#line 2319 "hphp.y" +#line 2322 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 636: /* Line 1455 of yacc.c */ -#line 2320 "hphp.y" +#line 2323 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 637: /* Line 1455 of yacc.c */ -#line 2321 "hphp.y" +#line 2324 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 638: /* Line 1455 of yacc.c */ -#line 2322 "hphp.y" +#line 2325 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 639: /* Line 1455 of yacc.c */ -#line 2323 "hphp.y" +#line 2326 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 640: /* Line 1455 of yacc.c */ -#line 2324 "hphp.y" +#line 2327 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 641: /* Line 1455 of yacc.c */ -#line 2325 "hphp.y" +#line 2328 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 642: /* Line 1455 of yacc.c */ -#line 2326 "hphp.y" +#line 2329 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 643: /* Line 1455 of yacc.c */ -#line 2327 "hphp.y" +#line 2330 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 644: /* Line 1455 of yacc.c */ -#line 2328 "hphp.y" +#line 2331 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 645: /* Line 1455 of yacc.c */ -#line 2329 "hphp.y" +#line 2332 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 646: /* Line 1455 of yacc.c */ -#line 2330 "hphp.y" +#line 2333 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 647: /* Line 1455 of yacc.c */ -#line 2331 "hphp.y" +#line 2334 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 648: /* Line 1455 of yacc.c */ -#line 2332 "hphp.y" +#line 2335 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 649: /* Line 1455 of yacc.c */ -#line 2333 "hphp.y" +#line 2336 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 650: /* Line 1455 of yacc.c */ -#line 2334 "hphp.y" +#line 2337 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 651: /* Line 1455 of yacc.c */ -#line 2339 "hphp.y" +#line 2342 "hphp.y" { _p->onCall((yyval),0,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 652: /* Line 1455 of yacc.c */ -#line 2343 "hphp.y" +#line 2346 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 653: /* Line 1455 of yacc.c */ -#line 2344 "hphp.y" +#line 2347 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); (yyval) = (yyvsp[(1) - (1)]);;} break; case 654: /* Line 1455 of yacc.c */ -#line 2348 "hphp.y" +#line 2351 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 655: /* Line 1455 of yacc.c */ -#line 2349 "hphp.y" +#line 2352 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 656: /* Line 1455 of yacc.c */ -#line 2350 "hphp.y" +#line 2353 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StaticName);;} break; case 657: /* Line 1455 of yacc.c */ -#line 2351 "hphp.y" +#line 2354 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]), Parser::StaticClassExprName);;} break; @@ -11351,7 +11368,7 @@ YYLTYPE yylloc; case 658: /* Line 1455 of yacc.c */ -#line 2353 "hphp.y" +#line 2356 "hphp.y" { _p->onName((yyval),(yyvsp[(2) - (3)]), Parser::StaticClassExprName);;} break; @@ -11359,28 +11376,28 @@ YYLTYPE yylloc; case 659: /* Line 1455 of yacc.c */ -#line 2357 "hphp.y" +#line 2360 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 660: /* Line 1455 of yacc.c */ -#line 2366 "hphp.y" +#line 2369 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 661: /* Line 1455 of yacc.c */ -#line 2369 "hphp.y" +#line 2372 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 662: /* Line 1455 of yacc.c */ -#line 2370 "hphp.y" +#line 2373 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]), Parser::StaticClassExprName);;} break; @@ -11388,112 +11405,112 @@ YYLTYPE yylloc; case 663: /* Line 1455 of yacc.c */ -#line 2380 "hphp.y" +#line 2383 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 664: /* Line 1455 of yacc.c */ -#line 2384 "hphp.y" +#line 2387 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StringName);;} break; case 665: /* Line 1455 of yacc.c */ -#line 2385 "hphp.y" +#line 2388 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::StaticName);;} break; case 666: /* Line 1455 of yacc.c */ -#line 2386 "hphp.y" +#line 2389 "hphp.y" { _p->onName((yyval),(yyvsp[(1) - (1)]),Parser::ExprName);;} break; case 667: /* Line 1455 of yacc.c */ -#line 2390 "hphp.y" +#line 2393 "hphp.y" { (yyval).reset();;} break; case 668: /* Line 1455 of yacc.c */ -#line 2391 "hphp.y" +#line 2394 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 669: /* Line 1455 of yacc.c */ -#line 2392 "hphp.y" +#line 2395 "hphp.y" { (yyval).reset();;} break; case 670: /* Line 1455 of yacc.c */ -#line 2396 "hphp.y" +#line 2399 "hphp.y" { (yyval).reset();;} break; case 671: /* Line 1455 of yacc.c */ -#line 2397 "hphp.y" +#line 2400 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (1)]), 0);;} break; case 672: /* Line 1455 of yacc.c */ -#line 2398 "hphp.y" +#line 2401 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 673: /* Line 1455 of yacc.c */ -#line 2402 "hphp.y" +#line 2405 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 674: /* Line 1455 of yacc.c */ -#line 2403 "hphp.y" +#line 2406 "hphp.y" { (yyval).reset();;} break; case 675: /* Line 1455 of yacc.c */ -#line 2407 "hphp.y" +#line 2410 "hphp.y" { _p->onScalar((yyval), T_LNUMBER, (yyvsp[(1) - (1)]));;} break; case 676: /* Line 1455 of yacc.c */ -#line 2408 "hphp.y" +#line 2411 "hphp.y" { _p->onScalar((yyval), T_DNUMBER, (yyvsp[(1) - (1)]));;} break; case 677: /* Line 1455 of yacc.c */ -#line 2409 "hphp.y" +#line 2412 "hphp.y" { _p->onScalar((yyval), T_ONUMBER, (yyvsp[(1) - (1)]));;} break; case 678: /* Line 1455 of yacc.c */ -#line 2410 "hphp.y" +#line 2413 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (1)]));;} break; @@ -11501,322 +11518,322 @@ YYLTYPE yylloc; case 679: /* Line 1455 of yacc.c */ -#line 2412 "hphp.y" +#line 2415 "hphp.y" { _p->onScalar((yyval), T_LINE, (yyvsp[(1) - (1)]));;} break; case 680: /* Line 1455 of yacc.c */ -#line 2413 "hphp.y" +#line 2416 "hphp.y" { _p->onScalar((yyval), T_FILE, (yyvsp[(1) - (1)]));;} break; case 681: /* Line 1455 of yacc.c */ -#line 2414 "hphp.y" +#line 2417 "hphp.y" { _p->onScalar((yyval), T_DIR, (yyvsp[(1) - (1)]));;} break; case 682: /* Line 1455 of yacc.c */ -#line 2415 "hphp.y" +#line 2418 "hphp.y" { _p->onScalar((yyval), T_CLASS_C, (yyvsp[(1) - (1)]));;} break; case 683: /* Line 1455 of yacc.c */ -#line 2416 "hphp.y" +#line 2419 "hphp.y" { _p->onScalar((yyval), T_TRAIT_C, (yyvsp[(1) - (1)]));;} break; case 684: /* Line 1455 of yacc.c */ -#line 2417 "hphp.y" +#line 2420 "hphp.y" { _p->onScalar((yyval), T_METHOD_C, (yyvsp[(1) - (1)]));;} break; case 685: /* Line 1455 of yacc.c */ -#line 2418 "hphp.y" +#line 2421 "hphp.y" { _p->onScalar((yyval), T_FUNC_C, (yyvsp[(1) - (1)]));;} break; case 686: /* Line 1455 of yacc.c */ -#line 2419 "hphp.y" +#line 2422 "hphp.y" { _p->onScalar((yyval), T_NS_C, (yyvsp[(1) - (1)]));;} break; case 687: /* Line 1455 of yacc.c */ -#line 2420 "hphp.y" +#line 2423 "hphp.y" { _p->onScalar((yyval), T_COMPILER_HALT_OFFSET, (yyvsp[(1) - (1)]));;} break; case 688: /* Line 1455 of yacc.c */ -#line 2423 "hphp.y" +#line 2426 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(2) - (3)]));;} break; case 689: /* Line 1455 of yacc.c */ -#line 2425 "hphp.y" +#line 2428 "hphp.y" { (yyval).setText(""); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyval));;} break; case 690: /* Line 1455 of yacc.c */ -#line 2429 "hphp.y" +#line 2432 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 691: /* Line 1455 of yacc.c */ -#line 2430 "hphp.y" +#line 2433 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 692: /* Line 1455 of yacc.c */ -#line 2432 "hphp.y" +#line 2435 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 693: /* Line 1455 of yacc.c */ -#line 2433 "hphp.y" +#line 2436 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY); ;} break; case 694: /* Line 1455 of yacc.c */ -#line 2435 "hphp.y" +#line 2438 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 695: /* Line 1455 of yacc.c */ -#line 2436 "hphp.y" +#line 2439 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 696: /* Line 1455 of yacc.c */ -#line 2437 "hphp.y" +#line 2440 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 697: /* Line 1455 of yacc.c */ -#line 2438 "hphp.y" +#line 2441 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 698: /* Line 1455 of yacc.c */ -#line 2440 "hphp.y" +#line 2443 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_OR);;} break; case 699: /* Line 1455 of yacc.c */ -#line 2442 "hphp.y" +#line 2445 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_BOOLEAN_AND);;} break; case 700: /* Line 1455 of yacc.c */ -#line 2444 "hphp.y" +#line 2447 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_OR);;} break; case 701: /* Line 1455 of yacc.c */ -#line 2446 "hphp.y" +#line 2449 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_AND);;} break; case 702: /* Line 1455 of yacc.c */ -#line 2448 "hphp.y" +#line 2451 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_LOGICAL_XOR);;} break; case 703: /* Line 1455 of yacc.c */ -#line 2449 "hphp.y" +#line 2452 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'|');;} break; case 704: /* Line 1455 of yacc.c */ -#line 2450 "hphp.y" +#line 2453 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'&');;} break; case 705: /* Line 1455 of yacc.c */ -#line 2451 "hphp.y" +#line 2454 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'^');;} break; case 706: /* Line 1455 of yacc.c */ -#line 2452 "hphp.y" +#line 2455 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'.');;} break; case 707: /* Line 1455 of yacc.c */ -#line 2453 "hphp.y" +#line 2456 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'+');;} break; case 708: /* Line 1455 of yacc.c */ -#line 2454 "hphp.y" +#line 2457 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'-');;} break; case 709: /* Line 1455 of yacc.c */ -#line 2455 "hphp.y" +#line 2458 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'*');;} break; case 710: /* Line 1455 of yacc.c */ -#line 2456 "hphp.y" +#line 2459 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'/');;} break; case 711: /* Line 1455 of yacc.c */ -#line 2457 "hphp.y" +#line 2460 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'%');;} break; case 712: /* Line 1455 of yacc.c */ -#line 2458 "hphp.y" +#line 2461 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SL);;} break; case 713: /* Line 1455 of yacc.c */ -#line 2459 "hphp.y" +#line 2462 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SR);;} break; case 714: /* Line 1455 of yacc.c */ -#line 2460 "hphp.y" +#line 2463 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_POW);;} break; case 715: /* Line 1455 of yacc.c */ -#line 2461 "hphp.y" +#line 2464 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'!',1);;} break; case 716: /* Line 1455 of yacc.c */ -#line 2462 "hphp.y" +#line 2465 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'~',1);;} break; case 717: /* Line 1455 of yacc.c */ -#line 2463 "hphp.y" +#line 2466 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 718: /* Line 1455 of yacc.c */ -#line 2464 "hphp.y" +#line 2467 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 719: /* Line 1455 of yacc.c */ -#line 2466 "hphp.y" +#line 2469 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_IDENTICAL);;} break; case 720: /* Line 1455 of yacc.c */ -#line 2468 "hphp.y" +#line 2471 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_IDENTICAL);;} break; case 721: /* Line 1455 of yacc.c */ -#line 2470 "hphp.y" +#line 2473 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_EQUAL);;} break; case 722: /* Line 1455 of yacc.c */ -#line 2472 "hphp.y" +#line 2475 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_IS_NOT_EQUAL);;} break; case 723: /* Line 1455 of yacc.c */ -#line 2473 "hphp.y" +#line 2476 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'<');;} break; case 724: /* Line 1455 of yacc.c */ -#line 2475 "hphp.y" +#line 2478 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_SMALLER_OR_EQUAL);;} break; @@ -11824,14 +11841,14 @@ YYLTYPE yylloc; case 725: /* Line 1455 of yacc.c */ -#line 2477 "hphp.y" +#line 2480 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),'>');;} break; case 726: /* Line 1455 of yacc.c */ -#line 2480 "hphp.y" +#line 2483 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]), T_IS_GREATER_OR_EQUAL);;} break; @@ -11839,35 +11856,35 @@ YYLTYPE yylloc; case 727: /* Line 1455 of yacc.c */ -#line 2484 "hphp.y" +#line 2487 "hphp.y" { BEXP((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),T_SPACESHIP);;} break; case 728: /* Line 1455 of yacc.c */ -#line 2487 "hphp.y" +#line 2490 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (5)]), &(yyvsp[(3) - (5)]), (yyvsp[(5) - (5)]));;} break; case 729: /* Line 1455 of yacc.c */ -#line 2488 "hphp.y" +#line 2491 "hphp.y" { _p->onQOp((yyval), (yyvsp[(1) - (4)]), 0, (yyvsp[(4) - (4)]));;} break; case 730: /* Line 1455 of yacc.c */ -#line 2494 "hphp.y" +#line 2497 "hphp.y" { _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; case 731: /* Line 1455 of yacc.c */ -#line 2496 "hphp.y" +#line 2499 "hphp.y" { (yyvsp[(1) - (3)]).xhpLabel(); _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; @@ -11875,56 +11892,56 @@ YYLTYPE yylloc; case 732: /* Line 1455 of yacc.c */ -#line 2500 "hphp.y" +#line 2503 "hphp.y" { _p->onClassClass((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 1);;} break; case 733: /* Line 1455 of yacc.c */ -#line 2504 "hphp.y" +#line 2507 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 734: /* Line 1455 of yacc.c */ -#line 2505 "hphp.y" +#line 2508 "hphp.y" { _p->onConstantValue((yyval), (yyvsp[(1) - (1)]));;} break; case 735: /* Line 1455 of yacc.c */ -#line 2506 "hphp.y" +#line 2509 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 736: /* Line 1455 of yacc.c */ -#line 2507 "hphp.y" +#line 2510 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 737: /* Line 1455 of yacc.c */ -#line 2508 "hphp.y" +#line 2511 "hphp.y" { _p->onEncapsList((yyval),'"',(yyvsp[(2) - (3)]));;} break; case 738: /* Line 1455 of yacc.c */ -#line 2509 "hphp.y" +#line 2512 "hphp.y" { _p->onEncapsList((yyval),'\'',(yyvsp[(2) - (3)]));;} break; case 739: /* Line 1455 of yacc.c */ -#line 2511 "hphp.y" +#line 2514 "hphp.y" { _p->onEncapsList((yyval),T_START_HEREDOC, (yyvsp[(2) - (3)]));;} break; @@ -11932,140 +11949,140 @@ YYLTYPE yylloc; case 740: /* Line 1455 of yacc.c */ -#line 2516 "hphp.y" +#line 2519 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 741: /* Line 1455 of yacc.c */ -#line 2517 "hphp.y" +#line 2520 "hphp.y" { (yyval).reset();;} break; case 742: /* Line 1455 of yacc.c */ -#line 2521 "hphp.y" +#line 2524 "hphp.y" { (yyval).reset();;} break; case 743: /* Line 1455 of yacc.c */ -#line 2522 "hphp.y" +#line 2525 "hphp.y" { (yyval).reset();;} break; case 744: /* Line 1455 of yacc.c */ -#line 2525 "hphp.y" +#line 2528 "hphp.y" { only_in_hh_syntax(_p); (yyval).reset();;} break; case 745: /* Line 1455 of yacc.c */ -#line 2526 "hphp.y" +#line 2529 "hphp.y" { (yyval).reset();;} break; case 746: /* Line 1455 of yacc.c */ -#line 2532 "hphp.y" +#line 2535 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 747: /* Line 1455 of yacc.c */ -#line 2534 "hphp.y" +#line 2537 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 748: /* Line 1455 of yacc.c */ -#line 2536 "hphp.y" +#line 2539 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 749: /* Line 1455 of yacc.c */ -#line 2537 "hphp.y" +#line 2540 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 750: /* Line 1455 of yacc.c */ -#line 2541 "hphp.y" +#line 2544 "hphp.y" { _p->onScalar((yyval), T_LNUMBER, (yyvsp[(1) - (1)]));;} break; case 751: /* Line 1455 of yacc.c */ -#line 2542 "hphp.y" +#line 2545 "hphp.y" { _p->onScalar((yyval), T_DNUMBER, (yyvsp[(1) - (1)]));;} break; case 752: /* Line 1455 of yacc.c */ -#line 2543 "hphp.y" +#line 2546 "hphp.y" { _p->onScalar((yyval), T_ONUMBER, (yyvsp[(1) - (1)]));;} break; case 753: /* Line 1455 of yacc.c */ -#line 2546 "hphp.y" +#line 2549 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(2) - (3)]));;} break; case 754: /* Line 1455 of yacc.c */ -#line 2548 "hphp.y" +#line 2551 "hphp.y" { (yyval).setText(""); _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyval));;} break; case 755: /* Line 1455 of yacc.c */ -#line 2551 "hphp.y" +#line 2554 "hphp.y" { _p->onScalar((yyval),T_LNUMBER,(yyvsp[(1) - (1)]));;} break; case 756: /* Line 1455 of yacc.c */ -#line 2552 "hphp.y" +#line 2555 "hphp.y" { _p->onScalar((yyval),T_DNUMBER,(yyvsp[(1) - (1)]));;} break; case 757: /* Line 1455 of yacc.c */ -#line 2553 "hphp.y" +#line 2556 "hphp.y" { _p->onScalar((yyval),T_ONUMBER,(yyvsp[(1) - (1)]));;} break; case 758: /* Line 1455 of yacc.c */ -#line 2554 "hphp.y" +#line 2557 "hphp.y" { constant_ae(_p,(yyval),(yyvsp[(1) - (1)]));;} break; case 759: /* Line 1455 of yacc.c */ -#line 2558 "hphp.y" +#line 2561 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING,(yyvsp[(1) - (1)]));;} break; @@ -12073,7 +12090,7 @@ YYLTYPE yylloc; case 760: /* Line 1455 of yacc.c */ -#line 2561 "hphp.y" +#line 2564 "hphp.y" { _p->onScalar((yyval), T_CONSTANT_ENCAPSED_STRING, (yyvsp[(1) - (3)]) + (yyvsp[(3) - (3)]));;} @@ -12082,161 +12099,161 @@ YYLTYPE yylloc; case 762: /* Line 1455 of yacc.c */ -#line 2568 "hphp.y" +#line 2571 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 763: /* Line 1455 of yacc.c */ -#line 2569 "hphp.y" +#line 2572 "hphp.y" { constant_ae(_p,(yyval),(yyvsp[(1) - (1)]));;} break; case 764: /* Line 1455 of yacc.c */ -#line 2570 "hphp.y" +#line 2573 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'+',1);;} break; case 765: /* Line 1455 of yacc.c */ -#line 2571 "hphp.y" +#line 2574 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),'-',1);;} break; case 766: /* Line 1455 of yacc.c */ -#line 2573 "hphp.y" +#line 2576 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY);;} break; case 767: /* Line 1455 of yacc.c */ -#line 2574 "hphp.y" +#line 2577 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 768: /* Line 1455 of yacc.c */ -#line 2576 "hphp.y" +#line 2579 "hphp.y" { _p->onArray((yyval),(yyvsp[(3) - (4)]),T_ARRAY); ;} break; case 769: /* Line 1455 of yacc.c */ -#line 2581 "hphp.y" +#line 2584 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 770: /* Line 1455 of yacc.c */ -#line 2582 "hphp.y" +#line 2585 "hphp.y" { (yyval).reset();;} break; case 771: /* Line 1455 of yacc.c */ -#line 2587 "hphp.y" +#line 2590 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 772: /* Line 1455 of yacc.c */ -#line 2589 "hphp.y" +#line 2592 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 773: /* Line 1455 of yacc.c */ -#line 2591 "hphp.y" +#line 2594 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 774: /* Line 1455 of yacc.c */ -#line 2592 "hphp.y" +#line 2595 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 775: /* Line 1455 of yacc.c */ -#line 2596 "hphp.y" +#line 2599 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 776: /* Line 1455 of yacc.c */ -#line 2597 "hphp.y" +#line 2600 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 777: /* Line 1455 of yacc.c */ -#line 2602 "hphp.y" +#line 2605 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 778: /* Line 1455 of yacc.c */ -#line 2603 "hphp.y" +#line 2606 "hphp.y" { (yyval).reset(); ;} break; case 779: /* Line 1455 of yacc.c */ -#line 2608 "hphp.y" +#line 2611 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0); ;} break; case 780: /* Line 1455 of yacc.c */ -#line 2611 "hphp.y" +#line 2614 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0); ;} break; case 781: /* Line 1455 of yacc.c */ -#line 2616 "hphp.y" +#line 2619 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 782: /* Line 1455 of yacc.c */ -#line 2617 "hphp.y" +#line 2620 "hphp.y" { (yyval).reset();;} break; case 783: /* Line 1455 of yacc.c */ -#line 2620 "hphp.y" +#line 2623 "hphp.y" { _p->onArray((yyval),(yyvsp[(2) - (3)]),T_ARRAY);;} break; case 784: /* Line 1455 of yacc.c */ -#line 2621 "hphp.y" +#line 2624 "hphp.y" { Token t; t.reset(); _p->onArray((yyval),t,T_ARRAY);;} break; @@ -12244,175 +12261,175 @@ YYLTYPE yylloc; case 785: /* Line 1455 of yacc.c */ -#line 2628 "hphp.y" +#line 2631 "hphp.y" { _p->onUserAttribute((yyval),&(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)]));;} break; case 786: /* Line 1455 of yacc.c */ -#line 2630 "hphp.y" +#line 2633 "hphp.y" { _p->onUserAttribute((yyval), 0,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)]));;} break; case 787: /* Line 1455 of yacc.c */ -#line 2633 "hphp.y" +#line 2636 "hphp.y" { only_in_hh_syntax(_p);;} break; case 788: /* Line 1455 of yacc.c */ -#line 2635 "hphp.y" +#line 2638 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 789: /* Line 1455 of yacc.c */ -#line 2638 "hphp.y" +#line 2641 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 790: /* Line 1455 of yacc.c */ -#line 2641 "hphp.y" +#line 2644 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 791: /* Line 1455 of yacc.c */ -#line 2642 "hphp.y" +#line 2645 "hphp.y" { (yyval).reset();;} break; case 792: /* Line 1455 of yacc.c */ -#line 2646 "hphp.y" +#line 2649 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 0;;} break; case 793: /* Line 1455 of yacc.c */ -#line 2647 "hphp.y" +#line 2650 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = 1;;} break; case 794: /* Line 1455 of yacc.c */ -#line 2651 "hphp.y" +#line 2654 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = HPHP::ObjPropNormal;;} break; case 795: /* Line 1455 of yacc.c */ -#line 2652 "hphp.y" +#line 2655 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = HPHP::ObjPropXhpAttr;;} break; case 796: /* Line 1455 of yacc.c */ -#line 2653 "hphp.y" +#line 2656 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); (yyval) = HPHP::ObjPropNormal;;} break; case 797: /* Line 1455 of yacc.c */ -#line 2657 "hphp.y" +#line 2660 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 798: /* Line 1455 of yacc.c */ -#line 2662 "hphp.y" +#line 2665 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = HPHP::ObjPropNormal;;} break; case 799: /* Line 1455 of yacc.c */ -#line 2667 "hphp.y" +#line 2670 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 800: /* Line 1455 of yacc.c */ -#line 2668 "hphp.y" +#line 2671 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 801: /* Line 1455 of yacc.c */ -#line 2672 "hphp.y" +#line 2675 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 802: /* Line 1455 of yacc.c */ -#line 2677 "hphp.y" +#line 2680 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 803: /* Line 1455 of yacc.c */ -#line 2682 "hphp.y" +#line 2685 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 804: /* Line 1455 of yacc.c */ -#line 2683 "hphp.y" +#line 2686 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 805: /* Line 1455 of yacc.c */ -#line 2687 "hphp.y" +#line 2690 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 806: /* Line 1455 of yacc.c */ -#line 2689 "hphp.y" +#line 2692 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 807: /* Line 1455 of yacc.c */ -#line 2694 "hphp.y" +#line 2697 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 808: /* Line 1455 of yacc.c */ -#line 2696 "hphp.y" +#line 2699 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]));;} break; case 809: /* Line 1455 of yacc.c */ -#line 2702 "hphp.y" +#line 2705 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(2) - (5)]), @@ -12427,7 +12444,7 @@ YYLTYPE yylloc; case 810: /* Line 1455 of yacc.c */ -#line 2713 "hphp.y" +#line 2716 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(2) - (5)]), @@ -12442,7 +12459,7 @@ YYLTYPE yylloc; case 811: /* Line 1455 of yacc.c */ -#line 2728 "hphp.y" +#line 2731 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(2) - (5)]), @@ -12457,7 +12474,7 @@ YYLTYPE yylloc; case 812: /* Line 1455 of yacc.c */ -#line 2740 "hphp.y" +#line 2743 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(2) - (5)]), @@ -12472,49 +12489,49 @@ YYLTYPE yylloc; case 813: /* Line 1455 of yacc.c */ -#line 2752 "hphp.y" +#line 2755 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 814: /* Line 1455 of yacc.c */ -#line 2753 "hphp.y" +#line 2756 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 815: /* Line 1455 of yacc.c */ -#line 2754 "hphp.y" +#line 2757 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 816: /* Line 1455 of yacc.c */ -#line 2755 "hphp.y" +#line 2758 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 817: /* Line 1455 of yacc.c */ -#line 2756 "hphp.y" +#line 2759 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 818: /* Line 1455 of yacc.c */ -#line 2757 "hphp.y" +#line 2760 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 819: /* Line 1455 of yacc.c */ -#line 2759 "hphp.y" +#line 2762 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(1) - (3)]), @@ -12529,63 +12546,63 @@ YYLTYPE yylloc; case 820: /* Line 1455 of yacc.c */ -#line 2776 "hphp.y" +#line 2779 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 821: /* Line 1455 of yacc.c */ -#line 2778 "hphp.y" +#line 2781 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 822: /* Line 1455 of yacc.c */ -#line 2780 "hphp.y" +#line 2783 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 823: /* Line 1455 of yacc.c */ -#line 2781 "hphp.y" +#line 2784 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 824: /* Line 1455 of yacc.c */ -#line 2785 "hphp.y" +#line 2788 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 825: /* Line 1455 of yacc.c */ -#line 2786 "hphp.y" +#line 2789 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 826: /* Line 1455 of yacc.c */ -#line 2787 "hphp.y" +#line 2790 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 827: /* Line 1455 of yacc.c */ -#line 2788 "hphp.y" +#line 2791 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 828: /* Line 1455 of yacc.c */ -#line 2796 "hphp.y" +#line 2799 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(1) - (3)]), @@ -12600,238 +12617,238 @@ YYLTYPE yylloc; case 829: /* Line 1455 of yacc.c */ -#line 2805 "hphp.y" +#line 2808 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 830: /* Line 1455 of yacc.c */ -#line 2807 "hphp.y" +#line 2810 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 831: /* Line 1455 of yacc.c */ -#line 2808 "hphp.y" +#line 2811 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 832: /* Line 1455 of yacc.c */ -#line 2812 "hphp.y" +#line 2815 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 833: /* Line 1455 of yacc.c */ -#line 2817 "hphp.y" +#line 2820 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 834: /* Line 1455 of yacc.c */ -#line 2818 "hphp.y" +#line 2821 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 835: /* Line 1455 of yacc.c */ -#line 2819 "hphp.y" +#line 2822 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 836: /* Line 1455 of yacc.c */ -#line 2820 "hphp.y" +#line 2823 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 837: /* Line 1455 of yacc.c */ -#line 2821 "hphp.y" +#line 2824 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 838: /* Line 1455 of yacc.c */ -#line 2822 "hphp.y" +#line 2825 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 839: /* Line 1455 of yacc.c */ -#line 2823 "hphp.y" +#line 2826 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 840: /* Line 1455 of yacc.c */ -#line 2825 "hphp.y" +#line 2828 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 841: /* Line 1455 of yacc.c */ -#line 2827 "hphp.y" +#line 2830 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),NULL);;} break; case 842: /* Line 1455 of yacc.c */ -#line 2831 "hphp.y" +#line 2834 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 843: /* Line 1455 of yacc.c */ -#line 2835 "hphp.y" +#line 2838 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 844: /* Line 1455 of yacc.c */ -#line 2836 "hphp.y" +#line 2839 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 845: /* Line 1455 of yacc.c */ -#line 2842 "hphp.y" +#line 2845 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(1) - (7)]),(yyvsp[(2) - (7)]).num(),(yyvsp[(3) - (7)]),(yyvsp[(6) - (7)]));;} break; case 846: /* Line 1455 of yacc.c */ -#line 2846 "hphp.y" +#line 2849 "hphp.y" { _p->onObjectMethodCall((yyval),(yyvsp[(2) - (9)]),(yyvsp[(4) - (9)]).num(),(yyvsp[(5) - (9)]),(yyvsp[(8) - (9)]));;} break; case 847: /* Line 1455 of yacc.c */ -#line 2853 "hphp.y" +#line 2856 "hphp.y" { _p->onCall((yyval),0,(yyvsp[(3) - (7)]),(yyvsp[(6) - (7)]),&(yyvsp[(1) - (7)]));;} break; case 848: /* Line 1455 of yacc.c */ -#line 2862 "hphp.y" +#line 2865 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]),&(yyvsp[(1) - (6)]));;} break; case 849: /* Line 1455 of yacc.c */ -#line 2866 "hphp.y" +#line 2869 "hphp.y" { _p->onCall((yyval),1,(yyvsp[(4) - (8)]),(yyvsp[(7) - (8)]),&(yyvsp[(1) - (8)]));;} break; case 850: /* Line 1455 of yacc.c */ -#line 2870 "hphp.y" +#line 2873 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 851: /* Line 1455 of yacc.c */ -#line 2879 "hphp.y" +#line 2882 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 852: /* Line 1455 of yacc.c */ -#line 2880 "hphp.y" +#line 2883 "hphp.y" { _p->onRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 853: /* Line 1455 of yacc.c */ -#line 2881 "hphp.y" +#line 2884 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 854: /* Line 1455 of yacc.c */ -#line 2885 "hphp.y" +#line 2888 "hphp.y" { _p->onSimpleVariable((yyval), (yyvsp[(1) - (1)]));;} break; case 855: /* Line 1455 of yacc.c */ -#line 2886 "hphp.y" +#line 2889 "hphp.y" { _p->onDynamicVariable((yyval), (yyvsp[(3) - (4)]), 0);;} break; case 856: /* Line 1455 of yacc.c */ -#line 2888 "hphp.y" +#line 2891 "hphp.y" { (yyvsp[(1) - (2)]) = 1; _p->onIndirectRef((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));;} break; case 857: /* Line 1455 of yacc.c */ -#line 2893 "hphp.y" +#line 2896 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 858: /* Line 1455 of yacc.c */ -#line 2894 "hphp.y" +#line 2897 "hphp.y" { (yyval).reset();;} break; case 859: /* Line 1455 of yacc.c */ -#line 2905 "hphp.y" +#line 2908 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 860: /* Line 1455 of yacc.c */ -#line 2906 "hphp.y" +#line 2909 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 861: /* Line 1455 of yacc.c */ -#line 2907 "hphp.y" +#line 2910 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 862: /* Line 1455 of yacc.c */ -#line 2910 "hphp.y" +#line 2913 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(1) - (3)]), @@ -12846,35 +12863,35 @@ YYLTYPE yylloc; case 863: /* Line 1455 of yacc.c */ -#line 2921 "hphp.y" +#line 2924 "hphp.y" { _p->onStaticMember((yyval),(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 864: /* Line 1455 of yacc.c */ -#line 2922 "hphp.y" +#line 2925 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 866: /* Line 1455 of yacc.c */ -#line 2926 "hphp.y" +#line 2929 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 867: /* Line 1455 of yacc.c */ -#line 2927 "hphp.y" +#line 2930 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]);;} break; case 868: /* Line 1455 of yacc.c */ -#line 2930 "hphp.y" +#line 2933 "hphp.y" { _p->onObjectProperty( (yyval), (yyvsp[(1) - (3)]), @@ -12889,231 +12906,231 @@ YYLTYPE yylloc; case 869: /* Line 1455 of yacc.c */ -#line 2939 "hphp.y" +#line 2942 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 870: /* Line 1455 of yacc.c */ -#line 2943 "hphp.y" +#line 2946 "hphp.y" { _p->onAListVar((yyval),&(yyvsp[(1) - (2)]),NULL);;} break; case 871: /* Line 1455 of yacc.c */ -#line 2944 "hphp.y" +#line 2947 "hphp.y" { _p->onAListVar((yyval),&(yyvsp[(1) - (3)]),&(yyvsp[(3) - (3)]));;} break; case 872: /* Line 1455 of yacc.c */ -#line 2946 "hphp.y" +#line 2949 "hphp.y" { _p->onAListSub((yyval),&(yyvsp[(1) - (6)]),(yyvsp[(5) - (6)]));;} break; case 873: /* Line 1455 of yacc.c */ -#line 2947 "hphp.y" +#line 2950 "hphp.y" { _p->onAListVar((yyval),NULL,NULL);;} break; case 874: /* Line 1455 of yacc.c */ -#line 2948 "hphp.y" +#line 2951 "hphp.y" { _p->onAListVar((yyval),NULL,&(yyvsp[(1) - (1)]));;} break; case 875: /* Line 1455 of yacc.c */ -#line 2949 "hphp.y" +#line 2952 "hphp.y" { _p->onAListSub((yyval),NULL,(yyvsp[(3) - (4)]));;} break; case 876: /* Line 1455 of yacc.c */ -#line 2954 "hphp.y" +#line 2957 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 877: /* Line 1455 of yacc.c */ -#line 2955 "hphp.y" +#line 2958 "hphp.y" { (yyval).reset();;} break; case 878: /* Line 1455 of yacc.c */ -#line 2959 "hphp.y" +#line 2962 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]),0);;} break; case 879: /* Line 1455 of yacc.c */ -#line 2960 "hphp.y" +#line 2963 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]),0);;} break; case 880: /* Line 1455 of yacc.c */ -#line 2961 "hphp.y" +#line 2964 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]),0);;} break; case 881: /* Line 1455 of yacc.c */ -#line 2962 "hphp.y" +#line 2965 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(1) - (1)]),0);;} break; case 882: /* Line 1455 of yacc.c */ -#line 2965 "hphp.y" +#line 2968 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (6)]),&(yyvsp[(3) - (6)]),(yyvsp[(6) - (6)]),1);;} break; case 883: /* Line 1455 of yacc.c */ -#line 2967 "hphp.y" +#line 2970 "hphp.y" { _p->onArrayPair((yyval),&(yyvsp[(1) - (4)]), 0,(yyvsp[(4) - (4)]),1);;} break; case 884: /* Line 1455 of yacc.c */ -#line 2968 "hphp.y" +#line 2971 "hphp.y" { _p->onArrayPair((yyval), 0,&(yyvsp[(1) - (4)]),(yyvsp[(4) - (4)]),1);;} break; case 885: /* Line 1455 of yacc.c */ -#line 2969 "hphp.y" +#line 2972 "hphp.y" { _p->onArrayPair((yyval), 0, 0,(yyvsp[(2) - (2)]),1);;} break; case 886: /* Line 1455 of yacc.c */ -#line 2974 "hphp.y" +#line 2977 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 887: /* Line 1455 of yacc.c */ -#line 2975 "hphp.y" +#line 2978 "hphp.y" { _p->onEmptyCollection((yyval));;} break; case 888: /* Line 1455 of yacc.c */ -#line 2979 "hphp.y" +#line 2982 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 889: /* Line 1455 of yacc.c */ -#line 2980 "hphp.y" +#line 2983 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]));;} break; case 890: /* Line 1455 of yacc.c */ -#line 2981 "hphp.y" +#line 2984 "hphp.y" { _p->onCollectionPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 891: /* Line 1455 of yacc.c */ -#line 2982 "hphp.y" +#line 2985 "hphp.y" { _p->onCollectionPair((yyval), 0, 0,(yyvsp[(1) - (1)]));;} break; case 892: /* Line 1455 of yacc.c */ -#line 2987 "hphp.y" +#line 2990 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]);;} break; case 893: /* Line 1455 of yacc.c */ -#line 2988 "hphp.y" +#line 2991 "hphp.y" { _p->onEmptyCollection((yyval));;} break; case 894: /* Line 1455 of yacc.c */ -#line 2993 "hphp.y" +#line 2996 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (5)]),&(yyvsp[(3) - (5)]),(yyvsp[(5) - (5)]));;} break; case 895: /* Line 1455 of yacc.c */ -#line 2995 "hphp.y" +#line 2998 "hphp.y" { _p->onCollectionPair((yyval),&(yyvsp[(1) - (3)]), 0,(yyvsp[(3) - (3)]));;} break; case 896: /* Line 1455 of yacc.c */ -#line 2997 "hphp.y" +#line 3000 "hphp.y" { _p->onCollectionPair((yyval), 0,&(yyvsp[(1) - (3)]),(yyvsp[(3) - (3)]));;} break; case 897: /* Line 1455 of yacc.c */ -#line 2998 "hphp.y" +#line 3001 "hphp.y" { _p->onCollectionPair((yyval), 0, 0,(yyvsp[(1) - (1)]));;} break; case 898: /* Line 1455 of yacc.c */ -#line 3002 "hphp.y" +#line 3005 "hphp.y" { _p->addEncap((yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]), -1);;} break; case 899: /* Line 1455 of yacc.c */ -#line 3004 "hphp.y" +#line 3007 "hphp.y" { _p->addEncap((yyval), &(yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]), 0);;} break; case 900: /* Line 1455 of yacc.c */ -#line 3005 "hphp.y" +#line 3008 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (1)]), -1);;} break; case 901: /* Line 1455 of yacc.c */ -#line 3007 "hphp.y" +#line 3010 "hphp.y" { _p->addEncap((yyval), NULL, (yyvsp[(1) - (2)]), 0); _p->addEncap((yyval), &(yyval), (yyvsp[(2) - (2)]), -1); ;} break; @@ -13121,21 +13138,21 @@ YYLTYPE yylloc; case 902: /* Line 1455 of yacc.c */ -#line 3012 "hphp.y" +#line 3015 "hphp.y" { _p->onSimpleVariable((yyval), (yyvsp[(1) - (1)]));;} break; case 903: /* Line 1455 of yacc.c */ -#line 3014 "hphp.y" +#line 3017 "hphp.y" { _p->encapRefDim((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]));;} break; case 904: /* Line 1455 of yacc.c */ -#line 3016 "hphp.y" +#line 3019 "hphp.y" { _p->encapObjProp( (yyval), (yyvsp[(1) - (3)]), @@ -13150,154 +13167,154 @@ YYLTYPE yylloc; case 905: /* Line 1455 of yacc.c */ -#line 3026 "hphp.y" +#line 3029 "hphp.y" { _p->onDynamicVariable((yyval), (yyvsp[(2) - (3)]), 1);;} break; case 906: /* Line 1455 of yacc.c */ -#line 3028 "hphp.y" +#line 3031 "hphp.y" { _p->encapArray((yyval), (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]));;} break; case 907: /* Line 1455 of yacc.c */ -#line 3029 "hphp.y" +#line 3032 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]);;} break; case 908: /* Line 1455 of yacc.c */ -#line 3032 "hphp.y" +#line 3035 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_STRING;;} break; case 909: /* Line 1455 of yacc.c */ -#line 3033 "hphp.y" +#line 3036 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_NUM_STRING;;} break; case 910: /* Line 1455 of yacc.c */ -#line 3034 "hphp.y" +#line 3037 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); (yyval) = T_VARIABLE;;} break; case 911: /* Line 1455 of yacc.c */ -#line 3038 "hphp.y" +#line 3041 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_ISSET,1);;} break; case 912: /* Line 1455 of yacc.c */ -#line 3039 "hphp.y" +#line 3042 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_EMPTY,1);;} break; case 913: /* Line 1455 of yacc.c */ -#line 3040 "hphp.y" +#line 3043 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),'!',1);;} break; case 914: /* Line 1455 of yacc.c */ -#line 3041 "hphp.y" +#line 3044 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),'!',1);;} break; case 915: /* Line 1455 of yacc.c */ -#line 3042 "hphp.y" +#line 3045 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),'!',1);;} break; case 916: /* Line 1455 of yacc.c */ -#line 3043 "hphp.y" +#line 3046 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),'!',1);;} break; case 917: /* Line 1455 of yacc.c */ -#line 3044 "hphp.y" +#line 3047 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INCLUDE,1);;} break; case 918: /* Line 1455 of yacc.c */ -#line 3045 "hphp.y" +#line 3048 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_INCLUDE_ONCE,1);;} break; case 919: /* Line 1455 of yacc.c */ -#line 3046 "hphp.y" +#line 3049 "hphp.y" { UEXP((yyval),(yyvsp[(3) - (4)]),T_EVAL,1);;} break; case 920: /* Line 1455 of yacc.c */ -#line 3047 "hphp.y" +#line 3050 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_REQUIRE,1);;} break; case 921: /* Line 1455 of yacc.c */ -#line 3048 "hphp.y" +#line 3051 "hphp.y" { UEXP((yyval),(yyvsp[(2) - (2)]),T_REQUIRE_ONCE,1);;} break; case 922: /* Line 1455 of yacc.c */ -#line 3052 "hphp.y" +#line 3055 "hphp.y" { _p->onExprListElem((yyval), NULL, (yyvsp[(1) - (1)]));;} break; case 923: /* Line 1455 of yacc.c */ -#line 3053 "hphp.y" +#line 3056 "hphp.y" { _p->onExprListElem((yyval), &(yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;} break; case 924: /* Line 1455 of yacc.c */ -#line 3058 "hphp.y" +#line 3061 "hphp.y" { _p->onClassConst((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 925: /* Line 1455 of yacc.c */ -#line 3060 "hphp.y" +#line 3063 "hphp.y" { _p->onClassClass((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 0);;} break; case 928: /* Line 1455 of yacc.c */ -#line 3074 "hphp.y" +#line 3077 "hphp.y" { (yyvsp[(2) - (5)]).setText(_p->nsClassDecl((yyvsp[(2) - (5)]).text())); _p->onTypedef((yyval), (yyvsp[(2) - (5)]), (yyvsp[(4) - (5)])); _p->popTypeScope(); ;} @@ -13306,7 +13323,7 @@ YYLTYPE yylloc; case 929: /* Line 1455 of yacc.c */ -#line 3079 "hphp.y" +#line 3082 "hphp.y" { (yyvsp[(3) - (6)]).setText(_p->nsClassDecl((yyvsp[(3) - (6)]).text())); _p->onTypedef((yyval), (yyvsp[(3) - (6)]), (yyvsp[(5) - (6)]), &(yyvsp[(1) - (6)])); _p->popTypeScope(); ;} @@ -13315,7 +13332,7 @@ YYLTYPE yylloc; case 930: /* Line 1455 of yacc.c */ -#line 3083 "hphp.y" +#line 3086 "hphp.y" { (yyvsp[(2) - (6)]).setText(_p->nsClassDecl((yyvsp[(2) - (6)]).text())); _p->onTypedef((yyval), (yyvsp[(2) - (6)]), (yyvsp[(5) - (6)])); _p->popTypeScope(); ;} @@ -13324,7 +13341,7 @@ YYLTYPE yylloc; case 931: /* Line 1455 of yacc.c */ -#line 3088 "hphp.y" +#line 3091 "hphp.y" { (yyvsp[(3) - (7)]).setText(_p->nsClassDecl((yyvsp[(3) - (7)]).text())); _p->onTypedef((yyval), (yyvsp[(3) - (7)]), (yyvsp[(6) - (7)]), &(yyvsp[(1) - (7)])); _p->popTypeScope(); ;} @@ -13333,56 +13350,56 @@ YYLTYPE yylloc; case 932: /* Line 1455 of yacc.c */ -#line 3094 "hphp.y" +#line 3097 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 933: /* Line 1455 of yacc.c */ -#line 3095 "hphp.y" +#line 3098 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} break; case 934: /* Line 1455 of yacc.c */ -#line 3099 "hphp.y" +#line 3102 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 935: /* Line 1455 of yacc.c */ -#line 3100 "hphp.y" +#line 3103 "hphp.y" { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} break; case 936: /* Line 1455 of yacc.c */ -#line 3106 "hphp.y" +#line 3109 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 937: /* Line 1455 of yacc.c */ -#line 3110 "hphp.y" +#line 3113 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (4)]); ;} break; case 938: /* Line 1455 of yacc.c */ -#line 3116 "hphp.y" +#line 3119 "hphp.y" { _p->pushTypeScope(); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 939: /* Line 1455 of yacc.c */ -#line 3120 "hphp.y" +#line 3123 "hphp.y" { Token t; _p->setTypeVars(t, (yyvsp[(1) - (4)])); _p->pushTypeScope(); (yyval) = t; ;} break; @@ -13390,21 +13407,21 @@ YYLTYPE yylloc; case 940: /* Line 1455 of yacc.c */ -#line 3127 "hphp.y" +#line 3130 "hphp.y" { (yyval) = (yyvsp[(2) - (3)]); ;} break; case 941: /* Line 1455 of yacc.c */ -#line 3128 "hphp.y" +#line 3131 "hphp.y" { (yyval).reset(); ;} break; case 942: /* Line 1455 of yacc.c */ -#line 3132 "hphp.y" +#line 3135 "hphp.y" { Token t; t.reset(); _p->onTypeList((yyvsp[(1) - (1)]), t); (yyval) = (yyvsp[(1) - (1)]); ;} @@ -13413,7 +13430,7 @@ YYLTYPE yylloc; case 943: /* Line 1455 of yacc.c */ -#line 3135 "hphp.y" +#line 3138 "hphp.y" { _p->onTypeList((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); (yyval) = (yyvsp[(1) - (3)]); ;} break; @@ -13421,105 +13438,105 @@ YYLTYPE yylloc; case 944: /* Line 1455 of yacc.c */ -#line 3141 "hphp.y" +#line 3144 "hphp.y" { (yyval) = (yyvsp[(1) - (2)]); ;} break; case 945: /* Line 1455 of yacc.c */ -#line 3146 "hphp.y" +#line 3149 "hphp.y" { (yyval) = (yyvsp[(1) - (3)]); ;} break; case 946: /* Line 1455 of yacc.c */ -#line 3147 "hphp.y" +#line 3150 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 947: /* Line 1455 of yacc.c */ -#line 3148 "hphp.y" +#line 3151 "hphp.y" { (yyval).reset(); ;} break; case 948: /* Line 1455 of yacc.c */ -#line 3149 "hphp.y" +#line 3152 "hphp.y" { (yyval).reset(); ;} break; case 949: /* Line 1455 of yacc.c */ -#line 3153 "hphp.y" +#line 3156 "hphp.y" { (yyval).reset(); ;} break; case 950: /* Line 1455 of yacc.c */ -#line 3154 "hphp.y" - { only_in_hh_syntax(_p); (yyval) = (yyvsp[(2) - (2)]); ;} +#line 3157 "hphp.y" + { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 953: /* Line 1455 of yacc.c */ -#line 3164 "hphp.y" +#line 3167 "hphp.y" { _p->addTypeVar((yyvsp[(4) - (4)]).text()); ;} break; case 954: /* Line 1455 of yacc.c */ -#line 3166 "hphp.y" +#line 3169 "hphp.y" { _p->addTypeVar((yyvsp[(2) - (2)]).text()); ;} break; case 955: /* Line 1455 of yacc.c */ -#line 3170 "hphp.y" +#line 3173 "hphp.y" { _p->addTypeVar((yyvsp[(4) - (5)]).text()); ;} break; case 956: /* Line 1455 of yacc.c */ -#line 3173 "hphp.y" +#line 3176 "hphp.y" { _p->addTypeVar((yyvsp[(2) - (3)]).text()); ;} break; case 957: /* Line 1455 of yacc.c */ -#line 3177 "hphp.y" +#line 3180 "hphp.y" {;} break; case 958: /* Line 1455 of yacc.c */ -#line 3178 "hphp.y" +#line 3181 "hphp.y" {;} break; case 959: /* Line 1455 of yacc.c */ -#line 3179 "hphp.y" +#line 3182 "hphp.y" {;} break; case 960: /* Line 1455 of yacc.c */ -#line 3185 "hphp.y" +#line 3188 "hphp.y" { validate_shape_keyname((yyvsp[(1) - (3)]), _p); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); ;} break; @@ -13527,7 +13544,7 @@ YYLTYPE yylloc; case 961: /* Line 1455 of yacc.c */ -#line 3190 "hphp.y" +#line 3193 "hphp.y" { /* should not reach here as * optional shape fields are not @@ -13540,35 +13557,35 @@ YYLTYPE yylloc; case 962: /* Line 1455 of yacc.c */ -#line 3201 "hphp.y" +#line 3204 "hphp.y" { _p->onClsCnsShapeField((yyval), (yyvsp[(1) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(5) - (5)])); ;} break; case 963: /* Line 1455 of yacc.c */ -#line 3206 "hphp.y" +#line 3209 "hphp.y" { _p->onTypeList((yyval), (yyvsp[(3) - (3)])); ;} break; case 964: /* Line 1455 of yacc.c */ -#line 3207 "hphp.y" +#line 3210 "hphp.y" { ;} break; case 965: /* Line 1455 of yacc.c */ -#line 3212 "hphp.y" +#line 3215 "hphp.y" { _p->onShape((yyval), (yyvsp[(1) - (2)])); ;} break; case 966: /* Line 1455 of yacc.c */ -#line 3213 "hphp.y" +#line 3216 "hphp.y" { Token t; t.reset(); _p->onShape((yyval), t); ;} break; @@ -13576,7 +13593,7 @@ YYLTYPE yylloc; case 967: /* Line 1455 of yacc.c */ -#line 3219 "hphp.y" +#line 3222 "hphp.y" { (yyval) = (yyvsp[(3) - (4)]); (yyval).setText("array"); ;} break; @@ -13584,14 +13601,14 @@ YYLTYPE yylloc; case 968: /* Line 1455 of yacc.c */ -#line 3224 "hphp.y" +#line 3227 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 969: /* Line 1455 of yacc.c */ -#line 3229 "hphp.y" +#line 3232 "hphp.y" { Token t; t.reset(); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (3)]), t); _p->onTypeList((yyval), (yyvsp[(3) - (3)])); ;} @@ -13600,14 +13617,14 @@ YYLTYPE yylloc; case 970: /* Line 1455 of yacc.c */ -#line 3233 "hphp.y" +#line 3236 "hphp.y" { _p->onTypeAnnotation((yyval), (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); ;} break; case 971: /* Line 1455 of yacc.c */ -#line 3240 "hphp.y" +#line 3243 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeSpecialization((yyvsp[(2) - (2)]), '?'); (yyval) = (yyvsp[(2) - (2)]); ;} @@ -13616,7 +13633,7 @@ YYLTYPE yylloc; case 972: /* Line 1455 of yacc.c */ -#line 3243 "hphp.y" +#line 3246 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeSpecialization((yyvsp[(2) - (2)]), '@'); (yyval) = (yyvsp[(2) - (2)]); ;} @@ -13625,14 +13642,14 @@ YYLTYPE yylloc; case 973: /* Line 1455 of yacc.c */ -#line 3246 "hphp.y" +#line 3249 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 974: /* Line 1455 of yacc.c */ -#line 3247 "hphp.y" +#line 3250 "hphp.y" { Token t; t.reset(); (yyvsp[(1) - (1)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); ;} @@ -13641,7 +13658,7 @@ YYLTYPE yylloc; case 975: /* Line 1455 of yacc.c */ -#line 3250 "hphp.y" +#line 3253 "hphp.y" { Token t; t.reset(); (yyvsp[(1) - (1)]).setText("callable"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); ;} @@ -13650,14 +13667,14 @@ YYLTYPE yylloc; case 976: /* Line 1455 of yacc.c */ -#line 3253 "hphp.y" +#line 3256 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 977: /* Line 1455 of yacc.c */ -#line 3256 "hphp.y" +#line 3259 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); _p->onTypeSpecialization((yyval), 'a'); ;} @@ -13666,7 +13683,7 @@ YYLTYPE yylloc; case 978: /* Line 1455 of yacc.c */ -#line 3260 "hphp.y" +#line 3263 "hphp.y" { (yyvsp[(1) - (4)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)])); ;} break; @@ -13674,7 +13691,7 @@ YYLTYPE yylloc; case 979: /* Line 1455 of yacc.c */ -#line 3263 "hphp.y" +#line 3266 "hphp.y" { _p->onTypeList((yyvsp[(3) - (6)]), (yyvsp[(5) - (6)])); (yyvsp[(1) - (6)]).setText("array"); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (6)]), (yyvsp[(3) - (6)])); ;} @@ -13683,7 +13700,7 @@ YYLTYPE yylloc; case 980: /* Line 1455 of yacc.c */ -#line 3266 "hphp.y" +#line 3269 "hphp.y" { (yyvsp[(1) - (1)]).xhpLabel(); Token t; t.reset(); _p->onTypeAnnotation((yyval), (yyvsp[(1) - (1)]), t); @@ -13693,7 +13710,7 @@ YYLTYPE yylloc; case 981: /* Line 1455 of yacc.c */ -#line 3272 "hphp.y" +#line 3275 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(7) - (8)]), (yyvsp[(4) - (8)])); _p->onTypeAnnotation((yyval), (yyvsp[(2) - (8)]), (yyvsp[(7) - (8)])); @@ -13703,7 +13720,7 @@ YYLTYPE yylloc; case 982: /* Line 1455 of yacc.c */ -#line 3278 "hphp.y" +#line 3281 "hphp.y" { only_in_hh_syntax(_p); _p->onTypeList((yyvsp[(2) - (6)]), (yyvsp[(4) - (6)])); Token t; t.reset(); t.setText("array"); @@ -13714,21 +13731,21 @@ YYLTYPE yylloc; case 983: /* Line 1455 of yacc.c */ -#line 3286 "hphp.y" +#line 3289 "hphp.y" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 984: /* Line 1455 of yacc.c */ -#line 3287 "hphp.y" +#line 3290 "hphp.y" { (yyval).reset(); ;} break; /* Line 1455 of yacc.c */ -#line 13730 "hphp.7.tab.cpp" +#line 13747 "hphp.7.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -13948,7 +13965,7 @@ YYLTYPE yylloc; /* Line 1675 of yacc.c */ -#line 3290 "hphp.y" +#line 3293 "hphp.y" /* !PHP5_ONLY*/ /* REMOVED */ diff --git a/hphp/parser/hphp.y b/hphp/parser/hphp.y index 546efcbc90e2c..20c4dd7f7b6c6 100644 --- a/hphp/parser/hphp.y +++ b/hphp/parser/hphp.y @@ -754,25 +754,25 @@ top_statement: | T_NAMESPACE '{' { _p->onNamespaceStart("");} top_statement_list '}' { _p->onNamespaceEnd(); $$ = $4;} | T_USE use_declarations ';' { _p->onUse($2, &Parser::useClass); - _p->nns(); $$.reset();} + _p->nns(T_USE); $$.reset();} | T_USE T_FUNCTION use_declarations ';' { _p->onUse($3, &Parser::useFunction); - _p->nns(); $$.reset();} + _p->nns(T_USE); $$.reset();} | T_USE T_CONST use_declarations ';' { _p->onUse($3, &Parser::useConst); - _p->nns(); $$.reset();} + _p->nns(T_USE); $$.reset();} | T_USE group_use_prefix '{' mixed_use_declarations '}' ';' { _p->onGroupUse($2.text(), $4, nullptr); - _p->nns(); $$.reset();} + _p->nns(T_USE); $$.reset();} | T_USE T_FUNCTION group_use_prefix '{' use_declarations '}' ';' { _p->onGroupUse($3.text(), $5, &Parser::useFunction); - _p->nns(); $$.reset();} + _p->nns(T_USE); $$.reset();} | T_USE T_CONST group_use_prefix '{' use_declarations '}' ';' { _p->onGroupUse($3.text(), $5, &Parser::useConst); - _p->nns(); $$.reset();} + _p->nns(T_USE); $$.reset();} | constant_declaration ';' { _p->nns(); _p->finishStatement($$, $1); $$ = 1;} ; @@ -1020,7 +1020,9 @@ statement: _p->onForEach($$,$3,$6,$7,$10, true); _p->onCompleteLabelScope(false);} | T_DECLARE '(' declare_list ')' - declare_statement { _p->onBlock($$, $5); $$ = T_DECLARE;} + declare_statement { _p->onDeclare($3, $5); + $$ = $3; + $$ = T_DECLARE;} | T_TRY try_statement_list T_CATCH '(' @@ -1098,7 +1100,7 @@ function_declaration_statement: _p->onFunctionStart($3); _p->pushLabelInfo();} '(' parameter_list ')' - hh_opt_return_type + opt_return_type function_body { _p->onFunction($$,nullptr,$8,$2,$3,$6,$9,nullptr); _p->popLabelInfo(); _p->popTypeScope(); @@ -1111,7 +1113,7 @@ function_declaration_statement: _p->onFunctionStart($4); _p->pushLabelInfo();} '(' parameter_list ')' - hh_opt_return_type + opt_return_type function_body { _p->onFunction($$,&$1,$9,$3,$4,$7,$10,nullptr); _p->popLabelInfo(); _p->popTypeScope(); @@ -1124,7 +1126,7 @@ function_declaration_statement: _p->onFunctionStart($5); _p->pushLabelInfo();} '(' parameter_list ')' - hh_opt_return_type + opt_return_type function_body { _p->onFunction($$,&$2,$10,$4,$5,$8,$11,&$1); _p->popLabelInfo(); _p->popTypeScope(); @@ -1301,15 +1303,16 @@ while_statement: T_ENDWHILE ';' { $$ = $2;} ; declare_statement: - statement { $$ = $1;} + statement { _p->onBlock($$, $1);} | ':' inner_statement_list - T_ENDDECLARE ';' { $$ = $2;} + T_ENDDECLARE ';' { _p->onBlock($$, $2);} ; declare_list: - ident_no_semireserved '=' static_expr + ident_no_semireserved '=' static_expr {_p->onDeclareList($$, $1, $3);} | declare_list ',' - ident_no_semireserved '=' static_expr + ident_no_semireserved '=' static_expr {_p->onDeclareList($1, $3, $5); + $$ = $1;} ; switch_case_list: @@ -1580,7 +1583,7 @@ class_statement: _p->onMethodStart($4, $1); _p->pushLabelInfo();} method_parameter_list ')' - hh_opt_return_type + opt_return_type method_body { _p->onMethod($$,$1,$9,$3,$4,$7,$10,nullptr); _p->popLabelInfo(); @@ -1594,7 +1597,7 @@ class_statement: _p->onMethodStart($5, $2); _p->pushLabelInfo();} method_parameter_list ')' - hh_opt_return_type + opt_return_type method_body { _p->onMethod($$,$2,$10,$4,$5,$8,$11,&$1); _p->popLabelInfo(); @@ -1979,7 +1982,7 @@ closure_expression: _p->onClosureStart(t); _p->pushLabelInfo(); } parameter_list ')' - hh_opt_return_type lambda_use_vars + opt_return_type lambda_use_vars '{' inner_statement_list '}' { _p->finishStatement($10, $10); $10 = 1; $$ = _p->onClosure(ClosureType::Long, nullptr, @@ -1993,7 +1996,7 @@ closure_expression: _p->onClosureStart(t); _p->pushLabelInfo(); } parameter_list ')' - hh_opt_return_type lambda_use_vars + opt_return_type lambda_use_vars '{' inner_statement_list '}' { _p->finishStatement($11, $11); $11 = 1; $$ = _p->onClosure(ClosureType::Long, &$1, @@ -2029,7 +2032,7 @@ lambda_expression: _p->pushLabelInfo();} parameter_list T_LAMBDA_CP - hh_opt_return_type + opt_return_type lambda_body { Token u; Token v; $1 = T_ASYNC; _p->onMemberModifier($1, nullptr, $1); @@ -2079,7 +2082,7 @@ lambda_expression: _p->pushLabelInfo();} parameter_list T_LAMBDA_CP - hh_opt_return_type + opt_return_type lambda_body { Token u; Token v; _p->finishStatement($6, $6); $6 = 1; $$ = _p->onClosure(ClosureType::Short, @@ -3149,9 +3152,9 @@ hh_func_type_list: | { $$.reset(); } ; -hh_opt_return_type: +opt_return_type: { $$.reset(); } - | ':' hh_type { only_in_hh_syntax(_p); $$ = $2; } + | ':' hh_type { $$ = $2; } ; hh_constraint: diff --git a/hphp/runtime/base/runtime-option.cpp b/hphp/runtime/base/runtime-option.cpp index 5f427b0858de9..ba879061b099d 100644 --- a/hphp/runtime/base/runtime-option.cpp +++ b/hphp/runtime/base/runtime-option.cpp @@ -381,6 +381,7 @@ bool RuntimeOption::PHP7_DeprecateOldStyleCtors = false; bool RuntimeOption::PHP7_IntSemantics = false; bool RuntimeOption::PHP7_LTR_assign = false; bool RuntimeOption::PHP7_NoHexNumerics = false; +bool RuntimeOption::PHP7_ScalarTypes = false; bool RuntimeOption::PHP7_UVS = false; int RuntimeOption::GetScannerType() { @@ -1194,6 +1195,8 @@ void RuntimeOption::Load( s_PHP7_master); Config::Bind(PHP7_NoHexNumerics, ini, config, "PHP7.NoHexNumerics", s_PHP7_master); + Config::Bind(PHP7_ScalarTypes, ini, config, "PHP7.ScalarTypes", + s_PHP7_master); Config::Bind(PHP7_UVS, ini, config, "PHP7.UVS", s_PHP7_master); } { diff --git a/hphp/runtime/base/runtime-option.h b/hphp/runtime/base/runtime-option.h index c0ec28037de06..14b209dc7e33d 100644 --- a/hphp/runtime/base/runtime-option.h +++ b/hphp/runtime/base/runtime-option.h @@ -374,6 +374,7 @@ class RuntimeOption { static bool PHP7_IntSemantics; static bool PHP7_LTR_assign; static bool PHP7_NoHexNumerics; + static bool PHP7_ScalarTypes; static bool PHP7_UVS; static int64_t HeapSizeMB; diff --git a/hphp/runtime/base/unit-cache.cpp b/hphp/runtime/base/unit-cache.cpp index a30018948fa54..40d52c4b389f7 100644 --- a/hphp/runtime/base/unit-cache.cpp +++ b/hphp/runtime/base/unit-cache.cpp @@ -416,6 +416,7 @@ const std::string mangleUnitPHP7Options() { (RuntimeOption::PHP7_IntSemantics ? '1' : '0') + (RuntimeOption::PHP7_LTR_assign ? '1' : '0') + (RuntimeOption::PHP7_NoHexNumerics ? '1' : '0') + + (RuntimeOption::PHP7_ScalarTypes ? '1' : '0') + (RuntimeOption::PHP7_UVS ? '1' : '0'); return s; } diff --git a/hphp/runtime/vm/as.cpp b/hphp/runtime/vm/as.cpp index 453bed5eaf2cd..bf4339b698679 100644 --- a/hphp/runtime/vm/as.cpp +++ b/hphp/runtime/vm/as.cpp @@ -2417,6 +2417,7 @@ UnitEmitter* assemble_string(const char* code, int codeLen, auto ue = folly::make_unique(md5); StringData* sd = makeStaticString(filename); ue->m_filepath = sd; + ue->m_useStrictTypes = true; try { std::istringstream instr(std::string(code, codeLen)); diff --git a/hphp/runtime/vm/unit-emitter.cpp b/hphp/runtime/vm/unit-emitter.cpp index 63d1c7ca5ce11..8397470ca76b6 100644 --- a/hphp/runtime/vm/unit-emitter.cpp +++ b/hphp/runtime/vm/unit-emitter.cpp @@ -526,6 +526,7 @@ std::unique_ptr UnitEmitter::create() { u->m_mainReturn = m_mainReturn; u->m_mergeOnly = m_mergeOnly; u->m_isHHFile = m_isHHFile; + u->m_useStrictTypes = m_useStrictTypes; { const std::string& dirname = FileUtil::safe_dirname(m_filepath->data(), m_filepath->size()); @@ -710,6 +711,7 @@ void UnitEmitter::serdeMetaData(SerDe& sd) { (m_mergeOnly) (m_isHHFile) (m_typeAliases) + (m_useStrictTypes) ; } diff --git a/hphp/runtime/vm/unit-emitter.h b/hphp/runtime/vm/unit-emitter.h index 9bae2fc7a0365..aaade18e2c638 100644 --- a/hphp/runtime/vm/unit-emitter.h +++ b/hphp/runtime/vm/unit-emitter.h @@ -360,6 +360,7 @@ struct UnitEmitter { bool m_mergeOnly{false}; bool m_isHHFile{false}; + bool m_useStrictTypes{false}; bool m_returnSeen{false}; int m_preloadPriority{0}; TypedValue m_mainReturn; diff --git a/hphp/runtime/vm/unit-inl.h b/hphp/runtime/vm/unit-inl.h index d86fa3361e567..999f73188542c 100644 --- a/hphp/runtime/vm/unit-inl.h +++ b/hphp/runtime/vm/unit-inl.h @@ -331,5 +331,9 @@ inline bool Unit::isHHFile() const { return m_isHHFile; } +inline bool Unit::useStrictTypes() const { + return m_useStrictTypes; +} + /////////////////////////////////////////////////////////////////////////////// } diff --git a/hphp/runtime/vm/unit.cpp b/hphp/runtime/vm/unit.cpp index 4a84b30bade48..6bbfa6ff9a256 100644 --- a/hphp/runtime/vm/unit.cpp +++ b/hphp/runtime/vm/unit.cpp @@ -701,7 +701,21 @@ Class* Unit::defClass(const PreClass* preClass, } } +namespace { +bool isPHP7ReservedType(const StringData* alias) { + return + !strcmp("int", alias->data()) || + !strcmp("bool", alias->data()) || + !strcmp("float", alias->data()) || + !strcmp("string", alias->data()); +} +} + bool Unit::aliasClass(Class* original, const StringData* alias) { + if (RuntimeOption::PHP7_ScalarTypes && isPHP7ReservedType(alias)) { + raise_error("Fatal error: Cannot use '%s' as class name as it is reserved", + alias->data()); + } auto const aliasNe = NamedEntity::get(alias); aliasNe->m_cachedClass.bind(); diff --git a/hphp/runtime/vm/unit.h b/hphp/runtime/vm/unit.h index 390aa0a560f58..f94a516ee8de4 100644 --- a/hphp/runtime/vm/unit.h +++ b/hphp/runtime/vm/unit.h @@ -770,6 +770,14 @@ struct Unit { */ bool isHHFile() const; + /* + * Should calls from this unit use strict types? (This is always true for HH + * units). + * + * With strict types enabled only lossless int->float conversions are allowed + */ + bool useStrictTypes() const; + ///////////////////////////////////////////////////////////////////////////// // Offset accessors. [static] @@ -808,6 +816,7 @@ struct Unit { bool m_mergeOnly: 1; bool m_interpretOnly : 1; bool m_isHHFile : 1; + bool m_useStrictTypes : 1; LowStringPtr m_dirpath{nullptr}; TypedValue m_mainReturn; diff --git a/hphp/test/quick/no_hh/no_hh.php b/hphp/test/quick/no_hh/no_hh.php deleted file mode 100644 index f436e82dc2b22..0000000000000 --- a/hphp/test/quick/no_hh/no_hh.php +++ /dev/null @@ -1,5 +0,0 @@ -