From 4c9c43735a0695222d03d30a4fce743f53cd5644 Mon Sep 17 00:00:00 2001 From: Bojidar Marinov Date: Thu, 29 Dec 2016 12:31:19 +0200 Subject: Disallow assignment to expressions Fixes #6824 (cherry picked from commits 0b077162a32d37b81c302ab26523efda05de3913 and dcc4ee21c14c1d3fc40c2058e41f853e8ce989c6) --- modules/gdscript/gd_parser.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'modules/gdscript/gd_parser.cpp') diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index 342c17293..5309824c4 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -1457,6 +1457,15 @@ GDParser::Node* GDParser::_reduce_expression(Node *p_node,bool p_to_const) { return op; } + if (op->arguments[0]->type==Node::TYPE_OPERATOR) { + OperatorNode *on = static_cast(op->arguments[0]); + if (on->op != OperatorNode::OP_INDEX && on->op != OperatorNode::OP_INDEX_NAMED) { + _set_error("Can't assign to an expression",tokenizer->get_token_line()-1); + error_line=op->line; + return op; + } + } + } break; default: { break; } } -- cgit v1.2.3-70-g09d2