### Godot version

4.0.3

### System information

Windows10

### Issue description

sky shader accepts uniform vec3, vec4, vec3 array, but not vec4 array

### Steps to reproduce

simply pass Vector4 to uniform vec4[] from gdscript

### Minimal reproduction project

gdscript

sky_material.set_shader_parameter("v3",Vector3(1,0.8,0.5)) - v
sky_material.set_shader_parameter("v4",Vector4(1,0.8,0.5,0.2)) - v
sky_material.set_shader_parameter("v3a",[Vector3(1,0.8,0.5)]) - v
sky_material.set_shader_parameter("v4a",[Vector4(1,0.8,0.5,0.2)]) - x

sky gdshader

uniform vec3 v3;
uniform vec4 v4;
uniform vec3 v3a[1];
uniform vec4 v4a[1];

void sky(){
    COLOR.r = v4a[0].w
}
} else if (GETCHAR(0) == '-') {
					char_idx++;
					return _make_token(TK_OP_DECREMENT);
				}
				return _make_token(TK_OP_SUB);
			} break;
			case '%': {
				if (GETCHAR(0) == '=') {
					char_idx++;
					return _make_token(TK_OP_ASSIGN_MOD);
				}
				return _make_token(TK_OP_MOD);
			} break;
			case '@': {
				if (GETCHAR(0) == '@' && GETCHAR(1) == '>') {
					char_idx += 2;
					LocalVector<char32_t> incp;
					while (GETCHAR(0) != '\n') {
						incp.push_back(GETCHAR(0));
						char_idx++;
					}
					incp.push_back(0); 
					String include_path(incp.ptr());
					include_positions.write[include_positions.size() - 1].line = tk_line;
					FilePosition fp;
					fp.file = include_path;
					fp.line = 0;
					tk_line = 0;
					include_positions.push_back(fp);
				} else if (GETCHAR(0) == '@' && GETCHAR(1) == '<') {