mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 20:42:21 +02:00
Support for operators with ref
parameters, sized array->span
This commit is contained in:
parent
5c05b15b37
commit
1e52dce7c4
9 changed files with 183 additions and 31 deletions
|
@ -41,6 +41,14 @@ enum BfResolveArgFlags
|
|||
BfResolveArgFlag_FromGenericParam = 2
|
||||
};
|
||||
|
||||
enum BfCreateFallFlags
|
||||
{
|
||||
BfCreateFallFlags_None,
|
||||
BfCreateFallFlags_BypassVirtual = 1,
|
||||
BfCreateFallFlags_SkipThis = 2,
|
||||
BfCreateFallFlags_AllowImplicitRef = 4
|
||||
};
|
||||
|
||||
class BfResolvedArg
|
||||
{
|
||||
public:
|
||||
|
@ -186,10 +194,11 @@ public:
|
|||
bool mHadVarConflictingReturnType;
|
||||
bool mBypassVirtual;
|
||||
bool mAllowImplicitThis;
|
||||
bool mAllowImplicitRef;
|
||||
bool mAllowStatic;
|
||||
bool mAllowNonStatic;
|
||||
bool mSkipImplicitParams;
|
||||
bool mAutoFlushAmbiguityErrors;
|
||||
bool mAutoFlushAmbiguityErrors;
|
||||
BfEvalExprFlags mBfEvalExprFlags;
|
||||
int mMethodCheckCount;
|
||||
BfType* mExplicitInterfaceCheck;
|
||||
|
@ -435,7 +444,7 @@ public:
|
|||
void AddCallDependencies(BfMethodInstance* methodInstance);
|
||||
void PerformCallChecks(BfMethodInstance* methodInstance, BfAstNode* targetSrc);
|
||||
BfTypedValue CreateCall(BfAstNode* targetSrc, BfMethodInstance* methodInstance, BfIRValue func, bool bypassVirtual, SizedArrayImpl<BfIRValue>& irArgs, BfTypedValue* sret = NULL, bool isTailCall = false);
|
||||
BfTypedValue CreateCall(BfAstNode* targetSrc, const BfTypedValue& target, const BfTypedValue& origTarget, BfMethodDef* methodDef, BfModuleMethodInstance methodInstance, bool bypassVirtual, SizedArrayImpl<BfResolvedArg>& argValues, BfTypedValue* argCascade = NULL, bool skipThis = false);
|
||||
BfTypedValue CreateCall(BfAstNode* targetSrc, const BfTypedValue& target, const BfTypedValue& origTarget, BfMethodDef* methodDef, BfModuleMethodInstance methodInstance, BfCreateFallFlags callFlags, SizedArrayImpl<BfResolvedArg>& argValues, BfTypedValue* argCascade = NULL);
|
||||
BfTypedValue CreateCall(BfMethodMatcher* methodMatcher, BfTypedValue target);
|
||||
void MakeBaseConcrete(BfTypedValue& typedValue);
|
||||
void SplatArgs(BfTypedValue value, SizedArrayImpl<BfIRValue>& irArgs);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue