Example #1
0
 internal ITraceLogItem GetItems(IFormalCodeItem target)
 {
     if(!StepsForCode.ContainsKey(target))
         return EmptyItem;
     var data = StepsForCode[target].Select(item => Steps[item]);
     return new TraceLogItem(data, SourceView);
 }
Example #2
0
        void ITraceCollector.Run(DataStack dataStack, IFormalCodeItem codeBase)
        {
            var beforeSize = dataStack.Size;
            var index = Steps.Count;
            var item = new Step(codeBase, dataStack, index, Frames.ToArray());
            Steps.Add(item);
            AssumeStepsForCode(item.CodeBase, index);

            try
            {
                codeBase.Visit(dataStack);
            }
            catch(Exception exception)
            {
                item.Exception = exception;
                dataStack.Size = beforeSize + codeBase.Size;
            }

            item.AfterStack = dataStack;
        }
Example #3
0
 void AssumeStepsForCode(IFormalCodeItem item, int index)
 {
     if(!StepsForCode.ContainsKey(item))
         StepsForCode.Add(item, new int[0]);
     StepsForCode[item] = StepsForCode[item].Concat(new[] {index}).ToArray();
 }
Example #4
0
 void SubVisit(IFormalCodeItem codeBase)
 {
     if(TraceCollector == null)
         codeBase.Visit(this);
     else
         TraceCollector.Run(this, codeBase);
 }
Example #5
0
 internal void SignalClickedCode(IFormalCodeItem codeBase)
     => SignalClickedObject(Compiler.FindFunction(codeBase));
Example #6
0
 internal ITraceLogItem TraceLogItem(IFormalCodeItem target)
     => TraceLog.GetItems(target);