diff options
author | Michaël Zasso <targos@protonmail.com> | 2018-09-21 09:14:51 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-09-22 18:29:25 +0200 |
commit | 0e7ddbd3d7e9439c67573b854c49cf82c398ae82 (patch) | |
tree | 2afe372acde921cb57ddb3444ff00c5adef8848c /deps/v8/src/torque/declaration-visitor.cc | |
parent | 13245dc50da4cb7443c39ef6c68d419d5e6336d4 (diff) | |
download | android-node-v8-0e7ddbd3d7e9439c67573b854c49cf82c398ae82.tar.gz android-node-v8-0e7ddbd3d7e9439c67573b854c49cf82c398ae82.tar.bz2 android-node-v8-0e7ddbd3d7e9439c67573b854c49cf82c398ae82.zip |
deps: update V8 to 7.0.276.20
PR-URL: https://github.com/nodejs/node/pull/22754
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps/v8/src/torque/declaration-visitor.cc')
-rw-r--r-- | deps/v8/src/torque/declaration-visitor.cc | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/deps/v8/src/torque/declaration-visitor.cc b/deps/v8/src/torque/declaration-visitor.cc index b83dbb3bc3..2f3a1fa869 100644 --- a/deps/v8/src/torque/declaration-visitor.cc +++ b/deps/v8/src/torque/declaration-visitor.cc @@ -299,15 +299,22 @@ Parameter* DeclarationVisitor::DeclareParameter(const std::string& name, void DeclarationVisitor::Visit(VarDeclarationStatement* stmt) { std::string variable_name = stmt->name; - const Type* type = declarations()->GetType(stmt->type); - if (type->IsConstexpr() && !stmt->const_qualified) { - ReportError( - "cannot declare variable with constexpr type. Use 'const' instead."); - } - DeclareVariable(variable_name, type, stmt->const_qualified); - if (global_context_.verbose()) { - std::cout << "declared variable " << variable_name << " with type " << *type - << "\n"; + if (!stmt->const_qualified) { + if (!stmt->type) { + ReportError( + "variable declaration is missing type. Only 'const' bindings can " + "infer the type."); + } + const Type* type = declarations()->GetType(*stmt->type); + if (type->IsConstexpr()) { + ReportError( + "cannot declare variable with constexpr type. Use 'const' instead."); + } + DeclareVariable(variable_name, type, stmt->const_qualified); + if (global_context_.verbose()) { + std::cout << "declared variable " << variable_name << " with type " + << *type << "\n"; + } } // const qualified variables are required to be initialized properly. @@ -434,9 +441,15 @@ void DeclarationVisitor::Visit(ForLoopStatement* stmt) { Declarations::NodeScopeActivator scope(declarations(), stmt); if (stmt->var_declaration) Visit(*stmt->var_declaration); PushControlSplit(); - DeclareExpressionForBranch(stmt->test); + + // Same as DeclareExpressionForBranch, but without the extra scope. + // If no test expression is present we can not use it for the scope. + declarations()->DeclareLabel(kTrueLabelName); + declarations()->DeclareLabel(kFalseLabelName); + if (stmt->test) Visit(*stmt->test); + Visit(stmt->body); - Visit(stmt->action); + if (stmt->action) Visit(*stmt->action); auto changed_vars = PopControlSplit(); global_context_.AddControlSplitChangedVariables( stmt, declarations()->GetCurrentSpecializationTypeNamesVector(), |