MCPcopy Create free account
hub / github.com/WheretIB/nullc / NodeFuncCall

Method NodeFuncCall

NULLC/SyntaxTree.cpp:491–532  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

489// Node that calls function
490
491NodeFuncCall::NodeFuncCall(FunctionInfo *info, FunctionType *type)
492{
493 // Function description
494 funcInfo = info;
495
496 // Function type description
497 funcType = type;
498
499 // Result type is fetched from function type
500 typeInfo = funcType->retType;
501
502 if(funcInfo && (funcInfo->type == FunctionInfo::LOCAL || funcInfo->type == FunctionInfo::COROUTINE))
503 first = TakeLastNode();
504
505 if(!funcInfo)
506 first = TakeLastNode();
507
508 if(funcType->paramCount > 0)
509 {
510 paramHead = paramTail = TakeLastNode();
511 if(paramHead->nodeType == typeNodeNumber && funcType->paramType[funcType->paramCount-1] != paramHead->typeInfo)
512 ((NodeNumber*)paramHead)->ConvertTo(funcType->paramType[funcType->paramCount-1]);
513 }else{
514 paramHead = paramTail = NULL;
515 }
516
517 // Take nodes for all parameters
518 for(unsigned int i = 1; i < funcType->paramCount; i++)
519 {
520 paramTail->next = TakeLastNode();
521 TypeInfo *paramType = funcType->paramType[funcType->paramCount-i-1];
522 if(paramTail->next->nodeType == typeNodeNumber && paramType != paramTail->next->typeInfo)
523 ((NodeNumber*)paramTail->next)->ConvertTo(paramType);
524 paramTail->next->prev = paramTail;
525 paramTail = paramTail->next;
526 }
527
528 if(funcInfo && funcInfo->type == FunctionInfo::THISCALL)
529 first = TakeLastNode();
530
531 nodeType = typeNodeFuncCall;
532}
533NodeFuncCall::~NodeFuncCall()
534{
535}

Callers

nothing calls this directly

Calls 2

TakeLastNodeFunction · 0.85
ConvertToMethod · 0.80

Tested by

no test coverage detected