============================================
Variable right after lambda
============================================

func _on_pressed_button() -> void:
	var root = func() -> Node:
		var node: Node
		var node_type: String = lib.editor.root.get_class()

		match node_type:
			"Node3D":
				node = Node3D.new()
			"Node2D":
				node = Node2D.new()

		return node

---

(source
  (function_definition
    (name)
    (parameters)
    (type)
    (body
      (variable_statement
        (name)
        (lambda
          (parameters)
          (type)
          (body
            (variable_statement
              (name)
              (type))
            (variable_statement
              (name)
              (type)
              (attribute
                (identifier)
                (identifier)
                (identifier)
                (attribute_call
                  (identifier)
                  (arguments))))
            (match_statement
              (identifier)
              (match_body
                (pattern_section
                  (string)
                  (body
                    (expression_statement
                      (assignment
                        (identifier)
                        (attribute
                          (identifier)
                          (attribute_call
                            (identifier)
                            (arguments)))))))
                (pattern_section
                  (string)
                  (body
                    (expression_statement
                      (assignment
                        (identifier)
                        (attribute
                          (identifier)
                          (attribute_call
                            (identifier)
                            (arguments)))))))))
            (return_statement
              (identifier))))))))

============================================
Highlight incorrect when just setting get
============================================

var selection:
  get:
    return interface.get_selection()

var children:
  get:
    return selected[0].get_children()

---

(source
  (variable_statement
    (name)
    (setget
      (get_body
        (return_statement
          (attribute
            (identifier)
            (attribute_call
              (identifier)
              (arguments)))))))
  (variable_statement
    (name)
    (setget
      (get_body
        (return_statement
          (attribute
            (subscript
              (identifier)
              (integer))
            (attribute_call
              (identifier)
              (arguments))))))))

============================================
Export Var Stmt can be onready
============================================

export(NodePath) onready var path = get_node(path)

---

(source
  (export_variable_statement
    (arguments
      (identifier))
    (name)
    (call
      (identifier)
      (arguments
        (identifier)))))

============================================
Literals bugs with [get_node]
============================================

$"../inspectorHeader/inspectorHeaderHBoxContainer/CurrentBlock"
$"../../CommandsSettings"
$'../../Node'

---

(source
  (expression_statement
    (get_node))
  (expression_statement
    (get_node))
  (expression_statement
    (get_node)))

============================================
Fails to parse basic blocks
============================================

extends Node

func _ready():
	var x := 2
	for i in range(x):
		prints(i)

	while x > 0:
		print(x)

	if x > 0:
		print("if test")
	elif x < 0:
		print("if test")
	else:
		print("if test")

---

(source
  (extends_statement
    (dotted_type
      (type)))
  (function_definition
    (name)
    (parameters)
    (body
      (variable_statement
        (name)
        (inferred_type)
        (integer))
      (for_statement
        (identifier)
        (call
          (identifier)
          (arguments
            (identifier)))
        (body
          (expression_statement
            (call
              (identifier)
              (arguments
                (identifier))))))
      (while_statement
        (comparison_operator
          (identifier)
          (integer))
        (body
          (expression_statement
            (call
              (identifier)
              (arguments
                (identifier))))))
      (if_statement
        (comparison_operator
          (identifier)
          (integer))
        (body
          (expression_statement
            (call
              (identifier)
              (arguments
                (string)))))
        (elif_clause
          (comparison_operator
            (identifier)
            (integer))
          (body
            (expression_statement
              (call
                (identifier)
                (arguments
                  (string))))))
        (else_clause
          (body
            (expression_statement
              (call
                (identifier)
                (arguments
                  (string))))))))))
