### Godot version

v4.1.dev.custom_build.a7276f1ce

### System information

Win10, AMD 2600, GeForce GTX 1060, Vulkan API 1.3.205

### Issue description

I can't get correct color data from an array of source_color type.
The color data is saved as **Color** in the file:
`shader_parameter/palette = [Color (1, 0, 0, 1), Color (0, 1, 0, 1), Color (0, 0, 1, 1)]`
Shouldn't it be saved as PackedColorArray?


### Steps to reproduce

1.Declare an array of source_color type.
2.Set colors.

### Minimal reproduction project

[shadertest.zip](https://github.com/godotengine/godot/files/11246504/shadertest.zip)

continue;
				}
				
				ConstantNode *constant = static_cast<ConstantNode *>(p_func->arguments[k + 1]);
				ConstantNode *conversion = alloc_node<ConstantNode>();
				conversion->datatype = pfunc->arguments[k].type;
				conversion->values.resize(1);
				convert_constant(constant, pfunc->arguments[k].type, conversion->values.ptrw());
				p_func->arguments.write[k + 1] = conversion;
			}
			if (r_ret_type) {
				*r_ret_type = pfunc->return_type;
				if (pfunc->return_type == TYPE_STRUCT) {
					*r_ret_type_str = pfunc->return_struct_name;
				}
			}
			if (r_is_custom_function) {
				*r_is_custom_function = true;
			}
			return true;
		}
	}
	if (last_arg_count > args.size()) {
		_set_error(vformat(RTR("Too few arguments for \"%s(%s)\" call. Expected at least %d but received %d."), String(name), arg_list, last_arg_count, args.size()));
	} else if (last_arg_count < args.size()) {
		_set_error(vformat(RTR("Too many arguments for \"%s(%s)\" call. Expected at most %d but received %d."), String(name), arg_list, last_arg_count, args.size()));
	}
	return false;
}
bool ShaderLanguage::_compare_datatypes(DataType p_datatype_a, String p_datatype_name_a, int p_array_size_a, DataType p_datatype_b, String p_datatype_name_b, int p_array_size_b) {