### 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)

}
		return;
	}
	p_class->resolved_body = true;
	GDScriptParser::ClassNode *previous_class = parser->current_class;
	parser->current_class = p_class;
	resolve_class_interface(p_class, p_source);
	GDScriptParser::DataType base_type = p_class->base_type;
	if (base_type.kind == GDScriptParser::DataType::CLASS) {
		GDScriptParser::ClassNode *base_class = base_type.class_type;
		resolve_class_body(base_class, p_class);
	}
	
	for (int i = 0; i < p_class->members.size(); i++) {
		GDScriptParser::ClassNode::Member member = p_class->members[i];
		if (member.type == GDScriptParser::ClassNode::Member::FUNCTION) {
			
			for (GDScriptParser::AnnotationNode *&E : member.function->annotations) {
				resolve_annotation(E);
				E->apply(parser, member.function);
			}
			resolve_function_body(member.function);
		} else if (member.type == GDScriptParser::ClassNode::Member::VARIABLE && member.variable->property != GDScriptParser::VariableNode::PROP_NONE) {
			if (member.variable->property == GDScriptParser::VariableNode::PROP_INLINE) {
				if (member.variable->getter != nullptr) {
					member.variable->getter->set_datatype(member.variable->datatype);
					resolve_function_body(member.variable->getter);
				}
				if (member.variable->setter != nullptr) {
					resolve_function_signature(member.variable->setter);