コード例 #1
0
        public override bool Visit(FunctionCall node)
        {
            if (FunctionCallHelper.IsLowLevelCall(node) || FunctionCallHelper.isDelegateCall(node))
            {
                worklist.Clear();
                foreach (FunctionDefinition def in context.FunctionToContractMap.Keys)
                {
                    fnDeps.Add(def);
                }
            }
            else if (isBuiltinFn(node))
            {
                return(true);
            }
            else
            {
                string fnName = TransUtils.GetFuncNameFromFuncCall(node);
                if (nameToFn.ContainsKey(fnName))
                {
                    foreach (FunctionDefinition fnDef in nameToFn[fnName])
                    {
                        if (!seenFns.Contains(fnDef))
                        {
                            worklist.AddLast(fnDef);
                            seenFns.Add(fnDef);
                        }
                    }
                }
            }

            return(true);
        }
コード例 #2
0
 private bool isBuiltinFn(FunctionCall call)
 {
     return(FunctionCallHelper.IsLowLevelCall(call) || FunctionCallHelper.isSend(call) ||
            FunctionCallHelper.IsAssert(call) || FunctionCallHelper.isDelegateCall(call) ||
            FunctionCallHelper.IsRequire(call) || FunctionCallHelper.IsRevert(call) ||
            FunctionCallHelper.IsKeccakFunc(call) || FunctionCallHelper.IsAbiEncodePackedFunc(call) ||
            FunctionCallHelper.IsTypeCast(call) || FunctionCallHelper.IsBuiltInTransferFunc(TransUtils.GetFuncNameFromFuncCall(call), call));
 }