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

varname = vn->name;
										} else { 
											ArrayNode *an = static_cast<ArrayNode *>(n);
											varname = an->name;
										}
										if (shader->varyings.has(varname)) {
											switch (shader->varyings[varname].stage) {
												case ShaderNode::Varying::STAGE_UNKNOWN: {
													_set_error(vformat(RTR("Varying '%s' must be assigned in the 'vertex' or 'fragment' function first."), varname));
													return nullptr;
												}
												case ShaderNode::Varying::STAGE_VERTEX_TO_FRAGMENT_LIGHT:
													[[fallthrough]];
												case ShaderNode::Varying::STAGE_VERTEX:
													if (is_out_arg && current_function != varying_function_names.vertex) { 
														error = true;
													}
													break;
												case ShaderNode::Varying::STAGE_FRAGMENT_TO_LIGHT:
													[[fallthrough]];
												case ShaderNode::Varying::STAGE_FRAGMENT:
													if (!is_out_arg) {
														if (current_function != varying_function_names.fragment && current_function != varying_function_names.light) {
															error = true;
														}
													} else if (current_function != varying_function_names.fragment) { 
														error = true;
													}
													break;
												default: