GDScript: Fix access non-static members in static context

This commit is contained in:
Danil Alexeev
2024-05-01 16:49:12 +03:00
parent 26738ea20d
commit 8122a27eac
18 changed files with 182 additions and 13 deletions

View File

@@ -0,0 +1,10 @@
# GH-91403
static func static_func():
print(non_static_func)
func non_static_func():
pass
func test():
pass

View File

@@ -0,0 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot access non-static function "non_static_func" from the static function "static_func()".

View File

@@ -0,0 +1,15 @@
# GH-91403
func non_static_func():
pass
static func static_func(
f := func ():
var g := func ():
print(non_static_func)
g.call()
):
f.call()
func test():
pass

View File

@@ -0,0 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot access non-static function "non_static_func" from the static function "static_func()".

View File

@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot call non-static function "non_static_func()" from static function "static_func()".
Cannot call non-static function "non_static_func()" from the static function "static_func()".

View File

@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot call non-static function "non_static_func()" from static function "static_func()".
Cannot call non-static function "non_static_func()" from the static function "static_func()".

View File

@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot call non-static function "non_static_func()" from static function "static_func()".
Cannot call non-static function "non_static_func()" from the static function "static_func()".

View File

@@ -0,0 +1,14 @@
# GH-91403
func non_static_func():
pass
static var static_var = func ():
var f := func ():
var g := func ():
print(non_static_func)
g.call()
f.call()
func test():
pass

View File

@@ -0,0 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot access non-static function "non_static_func" from a static variable initializer.

View File

@@ -0,0 +1,15 @@
# GH-91403
func non_static_func():
pass
static var static_var:
set(_value):
var f := func ():
var g := func ():
print(non_static_func)
g.call()
f.call()
func test():
pass

View File

@@ -0,0 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot access non-static function "non_static_func" from the static function "@static_var_setter()".

View File

@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot call non-static function "non_static_func()" from static function "@static_var_setter()".
Cannot call non-static function "non_static_func()" from the static function "@static_var_setter()".

View File

@@ -0,0 +1,11 @@
# GH-91403
@static_unload
func non_static():
return "non static"
static var static_var = Callable(non_static)
func test():
print("does not run")

View File

@@ -0,0 +1,2 @@
GDTEST_ANALYZER_ERROR
Cannot access non-static function "non_static" from a static variable initializer.

View File

@@ -0,0 +1,75 @@
@static_unload
static var static_var
var non_static_var
signal my_signal()
static func static_func():
pass
func non_static_func():
pass
static var test_static_var_lambda = func ():
static_func()
print(static_func)
static_var = 1
print(static_var)
var test_non_static_var_lambda = func ():
static_func()
print(static_func)
static_var = 1
print(static_var)
non_static_func()
print(non_static_func)
non_static_var = 1
print(non_static_var)
my_signal.emit()
print(my_signal)
static var test_static_var_setter:
set(_value):
static_func()
print(static_func)
static_var = 1
print(static_var)
var test_non_static_var_setter:
set(_value):
static_func()
print(static_func)
static_var = 1
print(static_var)
non_static_func()
print(non_static_func)
non_static_var = 1
print(non_static_var)
my_signal.emit()
print(my_signal)
static func test_static_func():
static_func()
print(static_func)
static_var = 1
print(static_var)
func test_non_static_func():
static_func()
print(static_func)
static_var = 1
print(static_var)
non_static_func()
print(non_static_func)
non_static_var = 1
print(non_static_var)
my_signal.emit()
print(my_signal)
func test():
test_static_var_lambda = null
test_non_static_var_lambda = null