MCPcopy Create free account
hub / github.com/beefytech/Beef / CreateTypeRef

Method CreateTypeRef

IDEHelper/Compiler/BfReducer.cpp:5782–5813  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5780}
5781
5782BfTypeReference* BfReducer::CreateTypeRef(BfAstNode* firstNode, CreateTypeRefFlags createTypeRefFlags)
5783{
5784 int endNode = -1;
5785 if ((createTypeRefFlags & CreateTypeRefFlags_SafeGenericParse) != 0)
5786 {
5787 createTypeRefFlags = (CreateTypeRefFlags)(createTypeRefFlags & ~CreateTypeRefFlags_SafeGenericParse);
5788 int outEndNode = -1;
5789 int retryNode = -1;
5790 bool isTypeRef = IsTypeReference(firstNode, BfToken_None, -1, &retryNode, &outEndNode, NULL, NULL, NULL);
5791 if ((!isTypeRef) && (retryNode != -1))
5792 endNode = retryNode;
5793 }
5794
5795 if (auto tokenNode = BfNodeDynCast<BfTokenNode>(firstNode))
5796 {
5797 BfToken token = tokenNode->GetToken();
5798 if ((token == BfToken_Ref) || (token == BfToken_Mut))
5799 {
5800 auto nextNode = mVisitorPos.GetNext();
5801 mVisitorPos.MoveNext();
5802 auto typeRef = DoCreateTypeRef(nextNode, createTypeRefFlags);
5803 if (typeRef == NULL)
5804 {
5805 mVisitorPos.mReadPos--;
5806 AddErrorNode(tokenNode);
5807 return NULL;
5808 }
5809 return CreateRefTypeRef(typeRef, tokenNode);
5810 }
5811 }
5812 return DoCreateTypeRef(firstNode, createTypeRefFlags, endNode);
5813}
5814
5815BfTypeReference* BfReducer::CreateTypeRefAfter(BfAstNode* astNode, CreateTypeRefFlags createTypeRefFlags)
5816{

Callers 6

GetTypeMethod · 0.80
GetReflectTypeMethod · 0.80
EvaluateMethod · 0.80
FindTypeMethod · 0.80

Calls 3

GetTokenMethod · 0.80
GetNextMethod · 0.45
MoveNextMethod · 0.45

Tested by

no test coverage detected