### Godot version

4.0.1(flatpak)

### System information

Linux openSUSE

### Issue description

Cyclic Dependencies in shader result in infinite loop

### Steps to reproduce

Create 'main' shader that includes other shader, let's say `inc_me1` and `inc_me2` if 'inc_me1' that includes 'main' shader and 'inc_me2' includes 'inc_me1'. It results in a freeze.

### Minimal reproduction project

[Shader dependency.zip](https://github.com/godotengine/godot/files/11547654/Shader.dependency.zip)
uncomment include, and the editor will freeze and crash
state->include_depth++;
	if (state->include_depth > 25) {
		set_error(RTR("Shader max include depth exceeded."), line);
		return;
	}
	String old_filename = state->current_filename;
	state->current_filename = real_path;
	ShaderPreprocessor processor;
	int prev_condition_depth = state->condition_depth;
	state->condition_depth = 0;
	FilePosition fp;
	fp.file = state->current_filename;
	fp.line = line;
	state->include_positions.push_back(fp);
	String result;
	processor.preprocess(state, included, result);
	add_to_output("@@>" + real_path + "\n"); 
	add_to_output(result);
	add_to_output("\n@@<\n"); 
	
	if (state->error.is_empty()) {
		state->current_filename = old_filename;
		state->include_positions.pop_back();
	} else {
		return;
	}
	state->include_depth--;
	state->condition_depth = prev_condition_depth;
}
void ShaderPreprocessor::process_pragma(Tokenizer *p_tokenizer) {