summaryrefslogtreecommitdiff
path: root/deps/v8/src/torque/declaration-visitor.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2018-09-21 09:14:51 +0200
committerMichaël Zasso <targos@protonmail.com>2018-09-22 18:29:25 +0200
commit0e7ddbd3d7e9439c67573b854c49cf82c398ae82 (patch)
tree2afe372acde921cb57ddb3444ff00c5adef8848c /deps/v8/src/torque/declaration-visitor.cc
parent13245dc50da4cb7443c39ef6c68d419d5e6336d4 (diff)
downloadandroid-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.cc35
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(),