### Godot version

4.0.beta.16

### System information

N/A

### Issue description

```gdscript
func _run() -> void:
	click_this_function_doesnt_jump_to_its_line() # this works
	self.click_this_function_doesnt_jump_to_its_line() # add self breaks click-jump























































func click_this_function_doesnt_jump_to_its_line():
	pass
```

Ctrl + Click on self.click_this_function_doesnt_jump_to_its_line(), it won't jump to its definition.

### Steps to reproduce

N/A

### Minimal reproduction project

[godot.4.0.beta15.bugs.0.zip](https://github.com/godotengine/godot/files/10532051/godot.4.0.beta15.bugs.0.zip)

Vector<ScriptLanguage::ScriptTemplate> templates;
#ifdef TOOLS_ENABLED
	for (int i = 0; i < TEMPLATES_ARRAY_SIZE; i++) {
		if (TEMPLATES[i].inherit == p_object) {
			templates.append(TEMPLATES[i]);
		}
	}
#endif
	return templates;
}
static void get_function_names_recursively(const GDScriptParser::ClassNode *p_class, const String &p_prefix, HashMap<int, String> &r_funcs) {
	for (int i = 0; i < p_class->members.size(); i++) {
		if (p_class->members[i].type == GDScriptParser::ClassNode::Member::FUNCTION) {
			const GDScriptParser::FunctionNode *function = p_class->members[i].function;
			r_funcs[function->start_line] = p_prefix.is_empty() ? String(function->identifier->name) : p_prefix + "." + String(function->identifier->name);
		} else if (p_class->members[i].type == GDScriptParser::ClassNode::Member::CLASS) {
			String new_prefix = p_class->members[i].m_class->identifier->name;
			get_function_names_recursively(p_class->members[i].m_class, p_prefix.is_empty() ? new_prefix : p_prefix + "." + new_prefix, r_funcs);
		}
	}
}
bool GDScriptLanguage::validate(const String &p_script, const String &p_path, List<String> *r_functions, List<ScriptLanguage::ScriptError> *r_errors, List<ScriptLanguage::Warning> *r_warnings, HashSet<int> *r_safe_lines) const {