1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

Fixed an issue of zombie failed specialized methods in resolve-only

This commit is contained in:
Brian Fiete 2020-07-21 13:14:09 -07:00
parent af9320ada6
commit fed75dfa85
6 changed files with 43 additions and 24 deletions

View file

@ -75,8 +75,9 @@ enum BfGetMethodInstanceFlags : uint16
class BfDependencyMap
{
public:
enum DependencyDependencyFlag
enum DependencyFlags
{
DependencyFlag_None = 0,
DependencyFlag_Calls = 1,
DependencyFlag_InlinedCall = 2,
DependencyFlag_ReadFields = 4,
@ -102,14 +103,16 @@ public:
DependencyFlag_NameReference = 0x400000,
DependencyFlag_VirtualCall = 0x800000,
DependencyFlag_WeakReference = 0x1000000, // Keeps alive but won't rebuild
DependencyFlag_DependentUsageMask = ~(DependencyFlag_UnspecializedType | DependencyFlag_MethodGenericArg | DependencyFlag_GenericArgRef)
};
struct DependencyEntry
{
int mRevision;
DependencyDependencyFlag mFlags;
DependencyFlags mFlags;
DependencyEntry(int revision, DependencyDependencyFlag flags)
DependencyEntry(int revision, DependencyFlags flags)
{
mRevision = revision;
mFlags = flags;
@ -117,11 +120,11 @@ public:
};
public:
typedef Dictionary<BfType*, DependencyEntry> TypeMap;
typedef Dictionary<BfType*, DependencyEntry> TypeMap;
TypeMap mTypeSet;
public:
bool AddUsedBy(BfType* dependentType, DependencyDependencyFlag flags);
bool AddUsedBy(BfType* dependentType, DependencyFlags flags);
bool IsEmpty();
TypeMap::iterator begin();
TypeMap::iterator end();
@ -791,6 +794,7 @@ public:
bool mHadGenericDelegateParams:1;
bool mIgnoreBody:1;
bool mIsAutocompleteMethod:1;
bool mRequestedByAutocomplete : 1;
bool mIsClosure:1;
bool mMayBeConst:1; // Only used for calcAppend currently
bool mIsForeignMethodDef:1;
@ -825,13 +829,14 @@ public:
mHadGenericDelegateParams = false;
mIgnoreBody = false;
mIsAutocompleteMethod = false;
mRequestedByAutocomplete = false;
mIsClosure = false;
mMayBeConst = true;
mIsForeignMethodDef = false;
mAlwaysInline = false;
mIsIntrinsic = false;
mHasMethodRefType = false;
mDisallowCalling = false;
mDisallowCalling = false;
mChainType = BfMethodChainType_None;
mCallingConvention = BfCallingConvention_Unspecified;
mMethodInstanceGroup = NULL;