- added version checks for function calls and virtual overrides.

- restricted the UI functions in inventory.
This commit is contained in:
Christoph Oelckers 2017-03-05 21:44:10 +01:00
commit 2b5fea4ea8
5 changed files with 53 additions and 15 deletions

View file

@ -324,7 +324,7 @@ public:
virtual bool isConstant() const;
virtual bool RequestAddress(FCompileContext &ctx, bool *writable);
virtual PPrototype *ReturnProto();
virtual VMFunction *GetDirectFunction();
virtual VMFunction *GetDirectFunction(const VersionInfo &ver);
virtual bool CheckReturn() { return false; }
virtual int GetBitValue() { return -1; }
bool IsNumeric() const { return ValueType->isNumeric(); }
@ -1714,12 +1714,14 @@ class FxVMFunctionCall : public FxExpression
TArray<ExpEmit> ReturnRegs;
PFunction *CallingFunction;
bool CheckAccessibility(const VersionInfo &ver);
public:
FxVMFunctionCall(FxExpression *self, PFunction *func, FArgumentList &args, const FScriptPosition &pos, bool novirtual);
~FxVMFunctionCall();
FxExpression *Resolve(FCompileContext&);
PPrototype *ReturnProto();
VMFunction *GetDirectFunction();
VMFunction *GetDirectFunction(const VersionInfo &ver);
ExpEmit Emit(VMFunctionBuilder *build);
bool CheckEmitCast(VMFunctionBuilder *build, bool returnit, ExpEmit &reg);
TArray<PType*> &GetReturnTypes() const
@ -1744,7 +1746,7 @@ public:
FxExpression *Resolve(FCompileContext&);
ExpEmit Emit(VMFunctionBuilder *build);
void Add(FxExpression *expr) { if (expr != NULL) Expressions.Push(expr); expr->NeedResult = false; }
VMFunction *GetDirectFunction();
VMFunction *GetDirectFunction(const VersionInfo &ver);
bool CheckReturn();
};
@ -1951,7 +1953,7 @@ public:
~FxReturnStatement();
FxExpression *Resolve(FCompileContext&);
ExpEmit Emit(VMFunctionBuilder *build);
VMFunction *GetDirectFunction();
VMFunction *GetDirectFunction(const VersionInfo &ver);
bool CheckReturn() { return true; }
};