Merge pull request #69471 from rune-scape/rune-out-of-order

GDScript: Out of order member resolution
This commit is contained in:
Rémi Verschelde 2022-12-15 07:56:23 +01:00 committed by GitHub
commit 6debf86d51
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 797 additions and 233 deletions

View file

@ -0,0 +1,50 @@
func test():
print("v1: ", v1)
print("v1 is String: ", v1 is String)
print("v2: ", v2)
print("v2 is bool: ", v2 is bool)
print("c1: ", c1)
print("c1 is int: ", c1 is int)
print("c2: ", c2)
print("c2 is int: ", c2 is int)
print("E1.V1: ", E1.V1)
print("E1.V2: ", E1.V2)
print("E2.V: ", E2.V)
print("EV1: ", EV1)
print("EV2: ", EV2)
print("EV3: ", EV3)
var v1 := InnerA.new().fn()
class InnerA extends InnerAB:
func fn(p2 := E1.V2) -> String:
return "%s, p2=%s" % [super.fn(), p2]
class InnerAB:
func fn(p1 := c1) -> String:
return "p1=%s" % p1
var v2 := f()
func f() -> bool:
return true
const c1 := E1.V1
enum E1 {
V1 = E2.V + 2,
V2 = V1 - 1
}
enum E2 {V = 2}
const c2 := EV2
enum {
EV1 = 42,
EV2 = EV3 + 1
}
enum {
EV3 = EV1 + 1
}

View file

@ -0,0 +1,15 @@
GDTEST_OK
v1: p1=4, p2=3
v1 is String: true
v2: true
v2 is bool: true
c1: 4
c1 is int: true
c2: 44
c2 is int: true
E1.V1: 4
E1.V2: 3
E2.V: 2
EV1: 42
EV2: 44
EV3: 43

View file

@ -0,0 +1,39 @@
const B = preload("out_of_order_external_a.notest.gd")
func test():
print("v1: ", v1)
print("v1 is String: ", v1 is String)
print("v2: ", v2)
print("v2 is bool: ", v2 is bool)
print("c1: ", c1)
print("c1 is int: ", c1 is int)
print("c2: ", c2)
print("c2 is int: ", c2 is int)
print("E1.V1: ", E1.V1)
print("E1.V2: ", E1.V2)
print("B.E2.V: ", B.E2.V)
print("EV1: ", EV1)
print("EV2: ", EV2)
print("B.EV3: ", B.EV3)
var v1 := Inner.new().fn()
class Inner extends B.Inner:
func fn(p2 := E1.V2) -> String:
return "%s, p2=%s" % [super.fn(), p2]
var v2 := B.new().f()
const c1 := E1.V1
enum E1 {
V1 = B.E2.V + 2,
V2 = V1 - 1
}
const c2 := EV2
enum {
EV1 = 42,
EV2 = B.EV3 + 1
}

View file

@ -0,0 +1,15 @@
GDTEST_OK
v1: p1=4, p2=3
v1 is String: true
v2: true
v2 is bool: true
c1: 4
c1 is int: true
c2: 44
c2 is int: true
E1.V1: 4
E1.V2: 3
B.E2.V: 2
EV1: 42
EV2: 44
B.EV3: 43

View file

@ -0,0 +1,12 @@
const A = preload("out_of_order_external.gd")
class Inner:
func fn(p1 := A.c1) -> String:
return "p1=%s" % p1
func f(p := A.c1) -> bool:
return p is int
enum E2 {V = 2}
enum {EV3 = A.EV1 + 1}