static_access_via_instance.gd 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # GH-77098 p.4
  2. @static_unload
  3. class A:
  4. class InnerClass:
  5. pass
  6. enum NamedEnum { VALUE = 111 }
  7. enum { UNNAMED_ENUM_VALUE = 222 }
  8. const CONSTANT = 333
  9. static var static_var := 1
  10. static func static_func() -> int:
  11. return 444
  12. class B extends A:
  13. func test_self():
  14. print(self.InnerClass is GDScript)
  15. print(self.NamedEnum)
  16. print(self.NamedEnum.VALUE)
  17. print(self.UNNAMED_ENUM_VALUE)
  18. print(self.CONSTANT)
  19. @warning_ignore("static_called_on_instance")
  20. print(self.static_func())
  21. prints("test_self before:", self.static_var)
  22. self.static_var = 2
  23. prints("test_self after:", self.static_var)
  24. func test():
  25. var hard := B.new()
  26. hard.test_self()
  27. print(hard.InnerClass is GDScript)
  28. print(hard.NamedEnum)
  29. print(hard.NamedEnum.VALUE)
  30. print(hard.UNNAMED_ENUM_VALUE)
  31. print(hard.CONSTANT)
  32. @warning_ignore("static_called_on_instance")
  33. print(hard.static_func())
  34. prints("hard before:", hard.static_var)
  35. hard.static_var = 3
  36. prints("hard after:", hard.static_var)
  37. var weak: Variant = B.new()
  38. print(weak.InnerClass is GDScript)
  39. print(weak.NamedEnum)
  40. print(weak.NamedEnum.VALUE)
  41. print(weak.UNNAMED_ENUM_VALUE)
  42. print(weak.CONSTANT)
  43. @warning_ignore("unsafe_method_access")
  44. print(weak.static_func())
  45. prints("weak before:", weak.static_var)
  46. weak.static_var = 4
  47. prints("weak after:", weak.static_var)