### Godot version

v4.0.rc1.official [8843d9ad3]

### System information

Lubuntu

### Issue description

You can't use + or += to mutate typed arrays.

It seems to be not correctly getting the type information from the second operand.

An erudite poster on the discord puts it differently:
> it's more like operator + doesn't retain Array typing
> the syntax for Array Concatenation via operators, but the idea gets across i think


The error you see is:
```Trying to assign an array of type "Array" to a variable of type "Array[int]".```


### Steps to reproduce

```
	var Alice: Array[int] = [1,2,3]
	var Bob: Array[int] = [4,5,6]
	Alice += Bob
```
This will crash with the above error message.

### Minimal reproduction project

[plus_syntax_broken_demo_project.zip](https://github.com/godotengine/godot/files/10694514/plus_syntax_broken_demo_project.zip)

if (base_class->has_member(name)) {
			parser->push_warning(p_local, GDScriptWarning::SHADOWED_VARIABLE, p_context, p_local->name, base_class->get_member(name).get_type_name(), itos(base_class->get_member(name).get_line()));
			return;
		}
		base_class = base_class->base_type.class_type;
	}
	StringName parent = base.native_type;
	while (parent != StringName()) {
		ERR_FAIL_COND_MSG(!class_exists(parent), "Non-existent native base class.");
		if (ClassDB::has_method(parent, name, true)) {
			parser->push_warning(p_local, GDScriptWarning::SHADOWED_VARIABLE_BASE_CLASS, p_context, p_local->name, "method", parent);
			return;
		} else if (ClassDB::has_signal(parent, name, true)) {
			parser->push_warning(p_local, GDScriptWarning::SHADOWED_VARIABLE_BASE_CLASS, p_context, p_local->name, "signal", parent);
			return;
		} else if (ClassDB::has_property(parent, name, true)) {
			parser->push_warning(p_local, GDScriptWarning::SHADOWED_VARIABLE_BASE_CLASS, p_context, p_local->name, "property", parent);
			return;
		} else if (ClassDB::has_integer_constant(parent, name, true)) {
			parser->push_warning(p_local, GDScriptWarning::SHADOWED_VARIABLE_BASE_CLASS, p_context, p_local->name, "constant", parent);
			return;
		} else if (ClassDB::has_enum(parent, name, true)) {
			parser->push_warning(p_local, GDScriptWarning::SHADOWED_VARIABLE_BASE_CLASS, p_context, p_local->name, "enum", parent);
			return;
		}
		parent = ClassDB::get_parent_class(parent);
	}
}
#endif
GDScriptParser::DataType GDScriptAnalyzer::get_operation_type(Variant::Operator p_operation, const GDScriptParser::DataType &p_a, bool &r_valid, const GDScriptParser::Node *p_source) {