### Godot version

v4.0.3.stable.official [5222a99f5]
Master [6101240231600c871f5c5473872532c68ea3268c] (confirmed by https://github.com/godotengine/godot/issues/77666#issuecomment-1568952502)

### System information

Window 10

### Issue description

References are not unreferenced at the end of `if` scopes.

### Steps to reproduce

Copy, paste and run the snippet below, check the results:

```gdscript
extends Node


func _ready() -> void:
  var ref := RefCounted.new()
  var ref_count : int

  # OK
  ref_count = ref.get_reference_count()
  print('Expected: 1, Result: %d' % ref_count)

  # OK
  if true:
    var temp := ref
    temp = null

  ref_count = ref.get_reference_count()
  print('Expected: 1, Result: %d' % ref_count)

  # FAIL
  if true:
    var temp := ref

  ref_count = ref.get_reference_count()
  print('Expected: 1, Result: %d' % ref_count)
```

Output example:

```
Expected: 1, Result: 1
Expected: 1, Result: 1
Expected: 1, Result: 2
```

### Minimal reproduction project

N/A
String doc;
	int line = p_line;
	DocLineState state = DOC_LINE_NORMAL;
	while (comments.has(line - 1)) {
		if (!comments[line - 1].new_line || !comments[line - 1].comment.begins_with("##")) {
			break;
		}
		line--;
	}
	String space_prefix;
	if (comments.has(line) && comments[line].comment.begins_with("##")) {
		int i = 2;
		for (; i < comments[line].comment.length(); i++) {
			if (comments[line].comment[i] != ' ') {
				break;
			}
		}
		space_prefix = String(" ").repeat(i - 2);
	}
	while (comments.has(line)) {
		if (!comments[line].new_line || !comments[line].comment.begins_with("##")) {
			break;
		}
		String doc_line = comments[line].comment.trim_prefix("##");
		doc += _process_doc_line(doc_line, doc, space_prefix, state);
		line++;
	}
	return doc;
}
void GDScriptParser::get_class_doc_comment(int p_line, String &p_brief, String &p_desc, Vector<Pair<String, String>> &p_tutorials, bool p_inner_class) {