### Godot version

3b086aa06

### System information

ArchLinux x11

### Issue description

```gdscript
extends Node

@export_group("My Properties")
@export var number = 3
@export var string = ""

@export_group("Prefixed Properties", "prefix_")
@export var prefix_number = 3
@export var prefix_string = ""

@export_group("", "")
@export var ungrouped_number = 3
```

![image](https://user-images.githubusercontent.com/70787919/214983963-528c415b-745b-47fc-9777-36ebe31a3060.png)


### Steps to reproduce

- create script
- @export_group
- go inspector

### Minimal reproduction project

‮
GDScriptParser::IdentifierNode *base_id = nullptr;
		if (subscript->base->type == GDScriptParser::Node::IDENTIFIER) {
			base_id = static_cast<GDScriptParser::IdentifierNode *>(subscript->base);
		}
		if (base_id && GDScriptParser::get_builtin_type(base_id->name) < Variant::VARIANT_MAX) {
			base_type = make_builtin_meta_type(GDScriptParser::get_builtin_type(base_id->name));
		} else {
			reduce_expression(subscript->base);
			base_type = subscript->base->get_datatype();
			is_self = subscript->base->type == GDScriptParser::Node::SELF;
		}
	} else {
		
		
		p_call->set_datatype(call_type);
		mark_node_unsafe(p_call);
		return;
	}
	bool is_static = false;
	bool is_vararg = false;
	int default_arg_count = 0;
	GDScriptParser::DataType return_type;
	List<GDScriptParser::DataType> par_types;
	bool is_constructor = (base_type.is_meta_type || (p_call->callee && p_call->callee->type == GDScriptParser::Node::IDENTIFIER)) && p_call->function_name == SNAME("new");
	if (get_function_signature(p_call, is_constructor, base_type, p_call->function_name, return_type, par_types, default_arg_count, is_static, is_vararg)) {
		
		for (const KeyValue<int, GDScriptParser::ArrayNode *> &E : arrays) {
			int index = E.key;
			if (index < par_types.size() && par_types[index].has_container_element_type()) {
				update_array_literal_element_type(par_types[index], E.value);