summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/tests/scripts/lsp/class.gd
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gdscript/tests/scripts/lsp/class.gd')
-rw-r--r--modules/gdscript/tests/scripts/lsp/class.gd132
1 files changed, 132 insertions, 0 deletions
diff --git a/modules/gdscript/tests/scripts/lsp/class.gd b/modules/gdscript/tests/scripts/lsp/class.gd
new file mode 100644
index 0000000000..53d0b14d72
--- /dev/null
+++ b/modules/gdscript/tests/scripts/lsp/class.gd
@@ -0,0 +1,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