modded class MissionServer {
Param1<ref RefTestClass> GetError() {
Param1<ref RefTestClass> found = new Param1<ref RefTestClass>(new RefTestClass());
return found;
}
array<RefTestClass> GetError2() {
array<RefTestClass> found = new array<RefTestClass>();
found.Insert(new RefTestClass());
return found;
}
Param1Ref<RefTestClass> GetWorking() {
Param1Ref<RefTestClass> found = new Param1Ref<RefTestClass>(new RefTestClass());
return found;
}
array<ref RefTestClass> GetWorking2() {
array<ref RefTestClass> found = new array<ref RefTestClass>();
found.Insert(new RefTestClass());
return found;
}
void MissionServer() {
Param1<ref RefTestClass> found1 = GetError();
Print("Finished loading entry 1");
Print(found1.param1); // Null even though ref was used
array<RefTestClass> found2 = GetError2();
Print("Finished loading entry 2");
Print(found2.Get(0)); // Null as expected
Param1Ref<RefTestClass> found3 = GetWorking();
Print("Finished loading entry 3");
Print(found3.param1); // Working fine when ref is on the variable declaration of the generic ("ref T1 param1;" instead of "T1 param1;")
array<ref RefTestClass> found4 = GetWorking2();
Print("Finished loading entry 4");
Print(found4.Get(0)); // Working as expected with ref in array generic
}
}
class RefTestClass {
}
class Param1Ref<Class T1> {
ref T1 param1;
void Param1Ref(T1 param1_) {
this.param1 = param1_;
}
}