Browse Source

Disallow assignment to expressions

Fixes #6824

(cherry picked from commits 0b077162a32d37b81c302ab26523efda05de3913
and dcc4ee21c14c1d3fc40c2058e41f853e8ce989c6)
Bojidar Marinov 8 years ago
parent
commit
4c9c43735a
1 changed files with 9 additions and 0 deletions
  1. 9 0
      modules/gdscript/gd_parser.cpp

+ 9 - 0
modules/gdscript/gd_parser.cpp

@@ -1457,6 +1457,15 @@ GDParser::Node* GDParser::_reduce_expression(Node *p_node,bool p_to_const) {
 						return op;
 						return op;
 					}
 					}
 
 
+					if (op->arguments[0]->type==Node::TYPE_OPERATOR) {
+						OperatorNode *on = static_cast<OperatorNode*>(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;
 				} break;
 				default: { break; }
 				default: { break; }
 			}
 			}