Пример #1
0
        private void SpecializeOneFunction(string name, CallDelegate callable, bool mergeOriginalAnalysis)
        {
            int         lastIndex;
            VariableDef def;

            if (Scope.TryGetVariable(name, out def))
            {
                SpecializeVariableDef(def, callable, mergeOriginalAnalysis);
            }
            else if ((lastIndex = name.LastIndexOf('.')) != -1 &&
                     Scope.TryGetVariable(name.Substring(0, lastIndex), out def))
            {
                var methodName = name.Substring(lastIndex + 1, name.Length - (lastIndex + 1));
                foreach (var v in def.TypesNoCopy)
                {
                    ClassInfo ci = v as ClassInfo;
                    if (ci != null)
                    {
                        VariableDef methodDef;
                        if (ci.Scope.TryGetVariable(methodName, out methodDef))
                        {
                            SpecializeVariableDef(methodDef, callable, mergeOriginalAnalysis);
                        }
                    }
                }
            }
        }
Пример #2
0
        private void ExcecuteMethod <T>(CallDelegate <RequestParams, OutputModel <T>, bool> method, RequestParams @params, out OutputModel <T> outputModel)
        {
            outputModel = null;

            for (int i = 0; i < 2; i++)
            {
                if (method(@params, out outputModel))
                {
                    break;
                }
                else
                {
                    if (outputModel.Response.Status == Status.InvalidSession)
                    {
                        // Login and retrieve session token
                        if (!Login(out var response))
                        {
                            throw new Exception($"Invalid session and couldn't refresh. {response.Message}");
                        }
                    }
                    else
                    {
                        throw new Exception("Unknown error.");
                    }
                }
            }
        }
Пример #3
0
 void IModule.SpecializeFunction(string name, CallDelegate callable, bool mergeOriginalAnalysis)
 {
     foreach (var member in _members.OfType <IModule>())
     {
         member.SpecializeFunction(name, callable, mergeOriginalAnalysis);
     }
 }
        /// <summary>
        /// Replaces a built-in function (specified by module name and function
        /// name) with a customized delegate which provides specific behavior
        /// for handling when that function is called.
        /// 
        /// Currently this just provides a hook when the function is called - it
        /// could be expanded to providing the interpretation of when the
        /// function is called as well.
        /// </summary>
        private void SpecializeFunction(string moduleName, string name, CallDelegate callable, bool mergeOriginalAnalysis, bool save) {
            ModuleReference module;

            int lastDot;
            string realModName = null;
            if (Modules.TryGetImportedModule(moduleName, out module)) {
                IModule mod = module.Module as IModule;
                if (mod != null) {
                    mod.SpecializeFunction(name, callable, mergeOriginalAnalysis);
                    return;
                }
            } else if ((lastDot = moduleName.LastIndexOf('.')) != -1 &&
                Modules.TryGetImportedModule(realModName = moduleName.Substring(0, lastDot), out module)) {

                IModule mod = module.Module as IModule;
                if (mod != null) {
                    mod.SpecializeFunction(moduleName.Substring(lastDot + 1, moduleName.Length - (lastDot + 1)) + "." + name, callable, mergeOriginalAnalysis);
                    return;
                }
            }

            if (save) {
                SaveDelayedSpecialization(moduleName, name, callable, realModName, mergeOriginalAnalysis);
            }
        }
Пример #5
0
 public SpecializationInfo(string moduleName, string name, CallDelegate callable, bool mergeOriginalAnalysis)
 {
     ModuleName = moduleName;
     Name       = name;
     Callable   = callable;
     SuppressOriginalAnalysis = mergeOriginalAnalysis;
 }
Пример #6
0
        public void SpecializeFunction(string name, CallDelegate callable, bool mergeOriginalAnalysis)
        {
            int          lastIndex;
            IAnalysisSet def;

            if (TryGetMember(name, out def))
            {
                foreach (var v in def)
                {
                    if (!(v is SpecializedNamespace))
                    {
                        this[name] = new SpecializedCallable(v, callable, mergeOriginalAnalysis).SelfSet;
                        break;
                    }
                }
            }
            else if ((lastIndex = name.LastIndexOf('.')) != -1 &&
                     TryGetMember(name.Substring(0, lastIndex), out def))
            {
                var methodName = name.Substring(lastIndex + 1, name.Length - (lastIndex + 1));
                foreach (var v in def)
                {
                    BuiltinClassInfo ci = v as BuiltinClassInfo;
                    if (ci != null)
                    {
                        IAnalysisSet classValue;
                        if (ci.TryGetMember(methodName, out classValue))
                        {
                            ci[methodName] = new SpecializedCallable(classValue.FirstOrDefault(), callable, mergeOriginalAnalysis).SelfSet;
                        }
                        else
                        {
                            ci[methodName] = new SpecializedCallable(null, callable, mergeOriginalAnalysis).SelfSet;
                        }

                        IAnalysisSet instValue;
                        if (ci.Instance.TryGetMember(methodName, out instValue))
                        {
                            ci.Instance[methodName] = new SpecializedCallable(
                                instValue.FirstOrDefault(),
                                ci.Instance,
                                callable,
                                mergeOriginalAnalysis).SelfSet;
                        }
                        else
                        {
                            ci.Instance[methodName] = new SpecializedCallable(
                                null,
                                ci.Instance,
                                callable,
                                mergeOriginalAnalysis).SelfSet;
                        }
                    }
                }
            }
            else
            {
                this[name] = new SpecializedCallable(null, callable, false);
            }
        }
Пример #7
0
        /// <summary>
        /// Replaces a built-in function (specified by module name and function
        /// name) with a customized delegate which provides specific behavior
        /// for handling when that function is called.
        ///
        /// Currently this just provides a hook when the function is called - it
        /// could be expanded to providing the interpretation of when the
        /// function is called as well.
        /// </summary>
        private void SpecializeFunction(string moduleName, string name, CallDelegate callable, bool mergeOriginalAnalysis, bool save)
        {
            ModuleReference module;

            int    lastDot;
            string realModName = null;

            if (Modules.TryGetImportedModule(moduleName, out module))
            {
                IModule mod = module.Module as IModule;
                if (mod != null)
                {
                    mod.SpecializeFunction(name, callable, mergeOriginalAnalysis);
                    return;
                }
            }
            else if ((lastDot = moduleName.LastIndexOf('.')) != -1 &&
                     Modules.TryGetImportedModule(realModName = moduleName.Substring(0, lastDot), out module))
            {
                IModule mod = module.Module as IModule;
                if (mod != null)
                {
                    mod.SpecializeFunction(moduleName.Substring(lastDot + 1, moduleName.Length - (lastDot + 1)) + "." + name, callable, mergeOriginalAnalysis);
                    return;
                }
            }

            if (save)
            {
                SaveDelayedSpecialization(moduleName, name, callable, realModName, mergeOriginalAnalysis);
            }
        }
Пример #8
0
 public void SpecializeFunction(string name, CallDelegate callable, bool mergeOriginalAnalysis) {
     lock (this) {
         if (_specialized == null) {
             _specialized = new Dictionary<string, Tuple<CallDelegate, bool>>();
         }
         _specialized[name] = Tuple.Create(callable, mergeOriginalAnalysis);
     }
 }
Пример #9
0
        private static CallResult Call <T>(CallDelegate <T> callDelegate, T parameter)
        {
            var errCode = 0;
            var message = new byte[CONST_MessageSize];
            var res     = callDelegate(parameter, ref errCode, message, CONST_MessageSize);

            return(new CallResult(new ReturnValue(res), errCode, TypeConverter.ByteToString(message)));
        }
Пример #10
0
    protected CallDelegate varCallBackBarcode;     // это тот самый член-делегат :))

    public bool StartScan(CallDelegate parCallBackBarcode)
    {
        if (parCallBackBarcode == null)
        {
            return(false);
        }

        varCallBackBarcode = parCallBackBarcode;
        return(init());
    }
Пример #11
0
        public CallDelegate Build()
        {
            CallDelegate callDelegate = _last;

            foreach (var m in middlewareList.Reverse())
            {
                callDelegate = m(callDelegate);
            }
            return(CallProxy = callDelegate);
        }
Пример #12
0
        private void SaveDelayedSpecialization(string moduleName, string name, CallDelegate callable, string realModName, bool mergeOriginalAnalysis)
        {
            lock (_specializationInfo) {
                if (!_specializationInfo.TryGetValue(realModName ?? moduleName, out var specList))
                {
                    _specializationInfo[realModName ?? moduleName] = specList = new List <SpecializationInfo>();
                }

                specList.Add(new SpecializationInfo(moduleName, name, callable, mergeOriginalAnalysis));
            }
        }
Пример #13
0
 ///<summary>Calls a function for each element in selection.</summary>
 ///<param name="dataFunc">A function that is called for each element. It is given the element, the bound datum, and the element's order within it's group.</param>
 public Selection <TElementType, TDataType, TParentDataType> Call(CallDelegate dlgt)
 {
     foreach (var groupWithData in _groups)
     {
         var id = 0;
         foreach (var visualElement in groupWithData.Elements)
         {
             dlgt(visualElement, (TDataType)visualElement.GetBoundData(), id++);
         }
     }
     return(this);
 }
Пример #14
0
        private static void SpecializeVariableDef(VariableDef def, CallDelegate callable, bool mergeOriginalAnalysis) {
            List<AnalysisValue> items = new List<AnalysisValue>();
            foreach (var v in def.TypesNoCopy) {
                if (!(v is SpecializedNamespace) && v.DeclaringModule != null) {
                    items.Add(v);
                }
            }

            def._dependencies = default(SingleDict<IVersioned, ReferenceableDependencyInfo>);
            foreach (var item in items) {
                def.AddTypes(item.DeclaringModule, new SpecializedCallable(item, callable, mergeOriginalAnalysis).SelfSet);
            }
        }
Пример #15
0
        static void Main(string[] args)
        {
            //实例化委托
            CallDelegate<int, float> delegateBig = new CallDelegate<int, float>(new ImplementingClass().WhichIsBig);

            //调用委托方法,执行ImplementingClass WhichIsBig
            float big = delegateBig(10, 20.5f);

            // 输出最大值20.5
            Console.WriteLine(big);

            // 输入任意键退出
            Console.ReadKey();
        }
Пример #16
0
        public MapWhenMiddleware(CallDelegate next, MapWhenOptions options)
        {
            if (next == null)
            {
                throw new ArgumentNullException(nameof(next));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            this._next    = next;
            this._options = options;
        }
Пример #17
0
        static void Main(string[] args)
        {
            //实例化委托
            CallDelegate <int, float> delegateBig = new CallDelegate <int, float>(new ImplementingClass().WhichIsBig);

            //调用委托方法,执行ImplementingClass WhichIsBig
            float big = delegateBig(10, 20.5f);

            // 输出最大值20.5
            Console.WriteLine(big);

            // 输入任意键退出
            Console.ReadKey();
        }
Пример #18
0
        private void SafeRaiseEvent(CallDelegate del, Call call)
        {
            if (del == null)
            {
                return;
            }

            var invocationList = del.GetInvocationList();

            foreach (var current in invocationList)
            {
                ((CallDelegate)current).BeginInvoke(call, _raiseCallEventCallback, current);
            }
        }
Пример #19
0
 private void Call(CallDelegate callDelegate)
 {
     foreach (IMod mod in mods)
     {
         try
         {
             if (!ModManager.IsModDisabled(mod))
             {
                 callDelegate(mod);
             }
         } catch (Exception ex)
         {
             GeneralManager.Instance.LogToFileOrConsole("[PromDate] " + mod.Name + " threw " + ex);
         }
     }
 }
Пример #20
0
        public void Register <T>(string method, CallDelegate <T> handler)
        {
            ProtoCall call;

            if (!this.protos.TryGetValue(method, out call))
            {
                this.protos.Add(method, new ProtoCall()
                {
                    Type    = typeof(T),
                    Handler = handler,
                });
            }
            else
            {
                call.Handler = handler;
            }
        }
Пример #21
0
        static void Main(string[] args)
        {
            // 3. 在程序中创建委托实例与步骤2创建的方法相关联
            CallDelegate delegateBig = new CallDelegate(new ImplementingClass().WhichIsBig);

            // 4. 用委托调用相关联的方法,执行ImplementingClass WhichIsBig
            int big = delegateBig(10, 20);

            // 另一种使用委托的方式, 执行ImplementingClass WhichIsSmall
            int small = Process(10, 20, new CallDelegate(new ImplementingClass().WhichIsSmall));

            // 输出
            Console.WriteLine(big);     // 输出最大值20
            Console.WriteLine(small);   // 输出最小值10

            // 输入任意键退出
            Console.ReadKey();
        }
Пример #22
0
        static void Main(string[] args)
        {
            // 3. 在程序中创建委托实例与步骤2创建的方法相关联
            CallDelegate delegateBig = new CallDelegate(new ImplementingClass().WhichIsBig);

            // 4. 用委托调用相关联的方法,执行ImplementingClass WhichIsBig
            int big = delegateBig(10, 20);

            // 另一种使用委托的方式, 执行ImplementingClass WhichIsSmall
            int small = Process(10, 20, new CallDelegate(new ImplementingClass().WhichIsSmall));

            // 输出
            Console.WriteLine(big);     // 输出最大值20
            Console.WriteLine(small);   // 输出最小值10

            // 输入任意键退出
            Console.ReadKey();
        }
Пример #23
0
        /// <summary>
        /// 独立信令 呼叫接口
        /// 用于用户新开一个频道并邀请对方加入频道,如果返回码不是200、10201、10202时,sdk会主动关闭频道,标记接口调用失败
        /// 该接口为组合接口,等同于用户先创建频道,成功后加入频道并邀请对方
        /// </summary>
        /// <param name="param">呼叫的传入参数</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs</param>
        public static void Call(NIMSignalingCallParam param, CallDelegate cb)
        {
            int    nSizeOfParam = Marshal.SizeOf(param);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_call(param_ptr, NimSignalingCallCb, user_ptr);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
        private IAnalysisSet GetFunction(Node node, AnalysisUnit unit, string name, CallDelegate callable)
        {
            lock (_callables) {
                if (_callables.TryGetValue(name, out var res))
                {
                    return(res);
                }
            }
            if (unit.ForEval)
            {
                return(null);
            }

            var inner = _inner.GetMember(node, unit, name).OfType <BuiltinFunctionInfo>().FirstOrDefault();

            lock (_callables) {
                return(_callables[name] = new SpecializedCallable(inner, callable, false));
            }
        }
Пример #25
0
        protected async Task <TResult> Call <TResult>(CallDelegate <TResult> call)
        {
            var          callId = NewGuid();
            CallRecorded callRecorded;

            if (TryPop(out callRecorded))
            {
                if (callRecorded.ExceptionMessage == null)
                {
                    return(_serializer.Deserialize <TResult>(callRecorded.Payload));
                }

                throw new TaskFailedException(callRecorded.ExceptionMessage, callRecorded.ExceptionStackTrace);
            }

            // flush before calling external system
            await FlushEvents().ConfigureAwait(false);

            var result = default(TResult);
            TaskFailedException exceptionToThrow = null;

            try
            {
                result = await call(callId).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                exceptionToThrow = new TaskFailedException(ex.Message, ex.StackTrace);
            }

            if (exceptionToThrow == null)
            {
                var payload = _serializer.Serialize(result);
                Append(new CallRecorded(payload));

                // don't flush after call, it's assumed that it's idempotent
                return(result);
            }

            Append(new CallRecorded(exceptionToThrow.Message, exceptionToThrow.StackTrace));
            throw exceptionToThrow;
        }
Пример #26
0
        public InfoView(CallDelegate callDelegate, EmailDelegate emailDelegate)
        {
            _infoLabel       = ViewFactory.CreateUILabel();
            _infoImage       = new UIImageView();
            _infoPhoneButton = UIButton.FromType(UIButtonType.Custom);
            _infoEmailButton = UIButton.FromType(UIButtonType.Custom);

            AddSubview(_infoImage);
            AddSubview(_infoLabel);
            AddSubview(_infoPhoneButton);
            AddSubview(_infoEmailButton);

            BackgroundColor = UIColor.White;

            _callDelegate  = callDelegate;
            _emailDelegate = emailDelegate;

            _infoPhoneButton.TouchUpInside += InfoPhoneButton_TouchUpInside;
            _infoEmailButton.TouchUpInside += InfoEmailButton_TouchUpInside;
        }
Пример #27
0
        void WriteLog(string message)
        {
            CallDelegate callDelegate = delegate
            {
                if (richTextBox1.Lines.Length > 500)
                {
                    richTextBox1.Clear();
                }
                if (!message.EndsWith("\r\n"))
                {
                    this.richTextBox1.AppendText("\r\n");
                }
                this.richTextBox1.AppendText(message);
                richTextBox1.Focus();
                this.richTextBox1.Select(this.richTextBox1.TextLength, 0);
                this.richTextBox1.ScrollToCaret();
            };

            if (this.richTextBox1.InvokeRequired)
            {
                this.richTextBox1.Invoke(callDelegate);
            }
            else
            {
                if (richTextBox1.Lines.Length > 500)
                {
                    richTextBox1.Clear();
                }
                if (!message.EndsWith("\r\n"))
                {
                    this.richTextBox1.AppendText("\r\n");
                }
                this.richTextBox1.AppendText(message);
                this.richTextBox1.SelectionStart = richTextBox1.Text.Length;
                richTextBox1.Focus();
            }
        }
Пример #28
0
 void IModule.SpecializeFunction(string name, CallDelegate callable, bool mergeOriginalAnalysis)
 {
     foreach (var member in _members.OfType<IModule>()) {
         member.SpecializeFunction(name, callable, mergeOriginalAnalysis);
     }
 }
 public SpecializationInfo(string moduleName, string name, CallDelegate callable, bool mergeOriginalAnalysis) {
     ModuleName = moduleName;
     Name = name;
     Callable = callable;
     SuppressOriginalAnalysis = mergeOriginalAnalysis;
 }
Пример #30
0
 private void SpecializeOneFunction(string name, CallDelegate callable, bool mergeOriginalAnalysis) {
     int lastIndex;
     VariableDef def;
     if (Scope.TryGetVariable(name, out def)) {
         SpecializeVariableDef(def, callable, mergeOriginalAnalysis);
     } else if ((lastIndex = name.LastIndexOf('.')) != -1 &&
         Scope.TryGetVariable(name.Substring(0, lastIndex), out def)) {
         var methodName = name.Substring(lastIndex + 1, name.Length - (lastIndex + 1));
         foreach (var v in def.TypesNoCopy) {
             ClassInfo ci = v as ClassInfo;
             if (ci != null) {
                 VariableDef methodDef;
                 if (ci.Scope.TryGetVariable(methodName, out methodDef)) {
                     SpecializeVariableDef(methodDef, callable, mergeOriginalAnalysis);
                 }
             }
         }
     }
 }
Пример #31
0
        private static void SpecializeVariableDef(VariableDef def, CallDelegate callable, bool mergeOriginalAnalysis) {
            List<AnalysisValue> items = new List<AnalysisValue>();
            foreach (var v in def.TypesNoCopy) {
                if (!(v is SpecializedNamespace) && v.DeclaringModule != null) {
                    items.Add(v);
                }
            }

            def._dependencies = default(SingleDict<IVersioned, ReferenceableDependencyInfo>);
            foreach (var item in items) {
                def.AddTypes(item.DeclaringModule, new SpecializedCallable(item, callable, mergeOriginalAnalysis).SelfSet);
            }
        }
Пример #32
0
 public SpecializedCallable(AnalysisValue original, AnalysisValue inst, CallDelegate callable, bool mergeNormalAnalysis)
     : base(original, inst) {
     _callable = callable;
     _mergeOriginalAnalysis = mergeNormalAnalysis;
 }
Пример #33
0
 public void SpecializeFunction(string name, CallDelegate callable, bool mergeOriginalAnalysis) {
     lock (this) {
         if (_specialized == null) {
             _specialized = new Dictionary<string, Tuple<CallDelegate, bool>>();
         }
         _specialized[name] = Tuple.Create(callable, mergeOriginalAnalysis);
     }
 }
 public SpecializedFunctionValue(ProjectEntry projectEntry, string name, CallDelegate func, string documentation = null, ExpandoValue prototype = null, params ParameterResult[] signature)
     : base(projectEntry, name, documentation, prototype, signature) {
     _func = func;
 }
 public CallableFunctionSpecializer(CallDelegate callDelegate) {
     _delegate = callDelegate;
 }
 public PatternSpecialization(CallDelegate specialization, bool callBase, params ExpectedChild[] children)
     : base(specialization, callBase) {
     Body = new ExpectedNode(
         typeof(Block),
         children
     );
 }
 public CloneSpecialization(CallDelegate specialization)
     : base(specialization, false) {
 }
 public PatternSpecialization(CallDelegate specialization, params ExpectedChild[] children)
     : this(specialization, true, children) {
 }
 public BaseSpecialization(CallDelegate specialization, bool callBase) {
     Specialization = specialization;
     CallBase = callBase;
 }
 public BaseSpecialization(CallDelegate specialization) {
     Specialization = specialization;
     CallBase = true;
 }
        private void SaveDelayedSpecialization(string moduleName, string name, CallDelegate callable, string realModName, bool mergeOriginalAnalysis) {
            lock (_specializationInfo) {
                List<SpecializationInfo> specList;
                if (!_specializationInfo.TryGetValue(realModName ?? moduleName, out specList)) {
                    _specializationInfo[realModName ?? moduleName] = specList = new List<SpecializationInfo>();
                }

                specList.Add(new SpecializationInfo(moduleName, name, callable, mergeOriginalAnalysis));
            }
        }
Пример #42
0
 /// <summary>
 /// Replaces a built-in function (specified by module name and function
 /// name) with a customized delegate which provides specific behavior
 /// for handling when that function is called.
 /// </summary>
 /// <remarks>New in 2.0</remarks>
 public void SpecializeFunction(string moduleName, string name, CallDelegate callable, bool mergeOriginalAnalysis = false)
 {
     SpecializeFunction(moduleName, name, callable, mergeOriginalAnalysis, true);
 }
Пример #43
0
 public void SpecializeFunction(string name, CallDelegate callable, bool mergeOriginalAnalysis)
 {
 }
 public SpecializedFunctionValue(ProjectEntry projectEntry, string name, CallDelegate func, OverloadResult[] overloads, string documentation = null, ExpandoValue prototype = null)
     : base(projectEntry, name, overloads, documentation, prototype)
 {
     _func = func;
 }
Пример #45
0
 // 在函数内使用委托
 public static int Process(int a, int b, CallDelegate call)
 {
     return call(a, b);
 }
Пример #46
0
 public POS(int parPort = -1, bool parIsLog = false, CallDelegate pardelCallAudit = null)
 {
     this.varPort = parPort;
     delCallAudit = pardelCallAudit;
 }
Пример #47
0
 private BuiltinFunctionValue SpecializedFunction(string name, CallDelegate value, string documentation = null, params ParameterResult[] parameters) {
     return new SpecializedFunctionValue(_analyzer._builtinEntry, name, value, documentation, null, parameters);
 }
 /// <summary>
 /// Replaces a built-in function (specified by module name and function
 /// name) with a customized delegate which provides specific behavior
 /// for handling when that function is called.
 /// </summary>
 /// <remarks>New in 2.0</remarks>
 public void SpecializeFunction(string moduleName, string name, CallDelegate callable, bool mergeOriginalAnalysis = false) {
     SpecializeFunction(moduleName, name, callable, mergeOriginalAnalysis, true);
 }
Пример #49
0
 public CallableFunctionSpecializer(CallDelegate callDelegate)
 {
     _delegate = callDelegate;
 }
 public SpecializedUserFunctionValue(CallDelegate call, FunctionObject node, AnalysisUnit declUnit, EnvironmentRecord declScope, bool callBase) :
     base(node, declUnit, declScope)
 {
     _call     = call;
     _callBase = callBase;
 }
Пример #51
0
 public SpecializedCallable(AnalysisValue original, AnalysisValue inst, CallDelegate callable, bool mergeNormalAnalysis)
     : base(original, inst)
 {
     _callable = callable;
     _mergeOriginalAnalysis = mergeNormalAnalysis;
 }
 public SpecializedUserFunctionValue(CallDelegate call, FunctionObject node, AnalysisUnit declUnit, EnvironmentRecord declScope, bool callBase) :
     base(node, declUnit, declScope) {
     _call = call;
     _callBase = callBase;
 }