### 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
if (index < size) {
		return code[index];
	}
	return 0;
}
int ShaderPreprocessor::Tokenizer::consume_line_continuations(int p_offset) {
	int skips = 0;
	for (int i = index + p_offset; i < size; i++) {
		char32_t c = code[i];
		if (c == '\\') {
			if (i + 1 < size && code[i + 1] == '\n') {
				
				add_generated(Token('\n', line));
				line++;
				skips++;
				i = i + 2;
				index = i;
			} else {
				break;
			}
		} else if (!is_whitespace(c)) {
			break;
		}
	}
	return skips;
}
LocalVector<ShaderPreprocessor::Token> ShaderPreprocessor::Tokenizer::advance(char32_t p_what) {