1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
extends Node
class Inner1 extends Node:
# ^^^^^^ class1 -> class1
var member1 := 42
# ^^^^^^^ class1:member1 -> class1:member1
var member2 : int = 13
# ^^^^^^^ class1:member2 -> class1:member2
var member3 = 1337
# ^^^^^^^ class1:member3 -> class1:member3
signal changed(old, new)
# ^^^^^^^ class1:signal -> class1:signal
func my_func(arg1: int, arg2: String, arg3):
# | | | | | | ^^^^ class1:func:arg3 -> class1:func:arg3
# | | | | ^^^^ class1:func:arg2 -> class1:func:arg2
# | | ^^^^ class1:func:arg1 -> class1:func:arg1
# ^^^^^^^ class1:func -> class1:func
print(arg1, arg2, arg3)
# | | | | ^^^^ -> class1:func:arg3
# | | ^^^^ -> class1:func:arg2
# ^^^^ -> class1:func:arg1
changed.emit(arg1, arg3)
# | | | ^^^^ -> class1:func:arg3
# | ^^^^ -> class1:func:arg1
#<^^^^^ -> class1:signal
return arg1 + arg2.length() + arg3
# | | | | ^^^^ -> class1:func:arg3
# | | ^^^^ -> class1:func:arg2
# ^^^^ -> class1:func:arg1
class Inner2:
# ^^^^^^ class2 -> class2
var member1 := 42
# ^^^^^^^ class2:member1 -> class2:member1
var member2 : int = 13
# ^^^^^^^ class2:member2 -> class2:member2
var member3 = 1337
# ^^^^^^^ class2:member3 -> class2:member3
signal changed(old, new)
# ^^^^^^^ class2:signal -> class2:signal
func my_func(arg1: int, arg2: String, arg3):
# | | | | | | ^^^^ class2:func:arg3 -> class2:func:arg3
# | | | | ^^^^ class2:func:arg2 -> class2:func:arg2
# | | ^^^^ class2:func:arg1 -> class2:func:arg1
# ^^^^^^^ class2:func -> class2:func
print(arg1, arg2, arg3)
# | | | | ^^^^ -> class2:func:arg3
# | | ^^^^ -> class2:func:arg2
# ^^^^ -> class2:func:arg1
changed.emit(arg1, arg3)
# | | | ^^^^ -> class2:func:arg3
# | ^^^^ -> class2:func:arg1
#<^^^^^ -> class2:signal
return arg1 + arg2.length() + arg3
# | | | | ^^^^ -> class2:func:arg3
# | | ^^^^ -> class2:func:arg2
# ^^^^ -> class2:func:arg1
class Inner3 extends Inner2:
# | | ^^^^^^ -> class2
# ^^^^^^ class3 -> class3
var whatever = "foo"
# ^^^^^^^^ class3:whatever -> class3:whatever
func _init():
# ^^^^^ class3:init
# Note: no self-ref check here: resolves to `Object._init`.
# usages of `Inner3.new()` DO resolve to this `_init`
pass
class NestedInInner3:
# ^^^^^^^^^^^^^^ class3:nested1 -> class3:nested1
var some_value := 42
# ^^^^^^^^^^ class3:nested1:some_value -> class3:nested1:some_value
class AnotherNestedInInner3 extends NestedInInner3:
#! | | ^^^^^^^^^^^^^^ -> class3:nested1
# ^^^^^^^^^^^^^^^^^^^^^ class3:nested2 -> class3:nested2
var another_value := 13
# ^^^^^^^^^^^^^ class3:nested2:another_value -> class3:nested2:another_value
func _ready():
var inner1 = Inner1.new()
# | | ^^^^^^ -> class1
# ^^^^^^ func:class1 -> func:class1
var value1 = inner1.my_func(1,"",3)
# | | | | ^^^^^^^ -> class1:func
# | | ^^^^^^ -> func:class1
# ^^^^^^ func:class1:value1 -> func:class1:value1
var value2 = inner1.member3
# | | | | ^^^^^^^ -> class1:member3
# | | ^^^^^^ -> func:class1
# ^^^^^^ func:class1:value2 -> func:class1:value2
print(value1, value2)
# | | ^^^^^^ -> func:class1:value2
# ^^^^^^ -> func:class1:value1
var inner3 = Inner3.new()
# | | | | ^^^ -> class3:init
# | | ^^^^^^ -> class3
# ^^^^^^ func:class3 -> func:class3
print(inner3)
# ^^^^^^ -> func:class3
var nested1 = Inner3.NestedInInner3.new()
# | | | | ^^^^^^^^^^^^^^ -> class3:nested1
# | | ^^^^^^ -> class3
# ^^^^^^^ func:class3:nested1 -> func:class3:nested1
var value_nested1 = nested1.some_value
# | | | | ^^^^^^^^^^ -> class3:nested1:some_value
# | | ^^^^^^^ -> func:class3:nested1
# ^^^^^^^^^^^^^ func:class3:nested1:value
print(value_nested1)
# ^^^^^^^^^^^^^ -> func:class3:nested1:value
var nested2 = Inner3.AnotherNestedInInner3.new()
# | | | | ^^^^^^^^^^^^^^^^^^^^^ -> class3:nested2
# | | ^^^^^^ -> class3
# ^^^^^^^ func:class3:nested2 -> func:class3:nested2
var value_nested2 = nested2.some_value
# | | | | ^^^^^^^^^^ -> class3:nested1:some_value
# | | ^^^^^^^ -> func:class3:nested2
# ^^^^^^^^^^^^^ func:class3:nested2:value
var another_value_nested2 = nested2.another_value
# | | | | ^^^^^^^^^^^^^ -> class3:nested2:another_value
# | | ^^^^^^^ -> func:class3:nested2
# ^^^^^^^^^^^^^^^^^^^^^ func:class3:nested2:another_value_nested
print(value_nested2, another_value_nested2)
# | | ^^^^^^^^^^^^^^^^^^^^^ -> func:class3:nested2:another_value_nested
# ^^^^^^^^^^^^^ -> func:class3:nested2:value
|