Summary
Unitialized properties on interfaces and/or classes crashes the cooking job even when it should not when using it correctly and initializating it later on the code.
This always worked fine on the past, and inheritance is a normal feature that is used on many projects by many devs.
Due to that, projects are softlocked unless doing workarounds such as always providing default values, even when not making sense to have one.
Please select what you are reporting on:
Verse
What Type of Bug are you experiencing?
Verse
Steps to Reproduce
Try to instantiate from a interface or class that has a unitialized property. Even if you initialize it correctly on the child class, compiling will work, but will cause a cook error when trying to push changes or loading a session
my_interface := interface {
SomeProperty : int
}
my_class := class(my_interface) {
SomeProperty<override> : int = 10 # This will compile fine, but will give a cook error saying that it is unitialized when trying to load into a session.
}
The same happens with classes inheritance, regardless of the relationship with parents:
my_class1 := class<abstract> {
MyProperty : int
}
my_class2 := class<abstract>(my_class1) {
AnotherProperty : float = 10.0
}
my_class3 := class<concrete>(my_class1) {
MyProperty<override> : int = 10 # Same cook error
}
my_class4 := class<concrete>(my_class2) {
MyProperty<override> : int = 10 # Same cook error
}
Expected Result
Cooking should complete normally and work as expected, since the value is being initialized on child classes afterwards and not being left blank during runtime.
Observed Result
Cooking job fails with “Unitialized Property” errors on the code
Platform(s)
Epic Servers (Cooking Jobs)
Upload an image
Additional Notes
On the examples above I used <abstract>
and <concrete>
attributes on the classes, but note that even without using these attributes the same problem still occurs, not being related to it.