/// <summary> /// Visits the Setup/Cleanup/Act block /// </summary> /// <param name="line">Line to add the tag for</param> /// <param name="context">AssignmentsNode to visit</param> /// <param name="lineNo">Current line numer</param> /// <param name="collectedSpans">Collection of spancs found</param> private void Visit(ITextSnapshotLine line, InvokeCodeNode context, int lineNo, List <TagSpan <Z80TestTokenTag> > collectedSpans) { if (context == null || lineNo < context.Span.StartLine || lineNo > context.Span.EndLine) { return; } Visit(line, context.KeywordSpan, lineNo, collectedSpans, Z80TestTokenType.Keyword); Visit(line, context.CallOrStartSpan, lineNo, collectedSpans, Z80TestTokenType.Keyword); Visit(line, context.StopOrHaltSpan, lineNo, collectedSpans, Z80TestTokenType.Keyword); Visit(line, context.StartExpr, lineNo, collectedSpans); Visit(line, context.StopExpr, lineNo, collectedSpans); }
/// <summary> /// Visits the Setup/Cleanup/Act block /// </summary> /// <param name="line">Line to add the tag for</param> /// <param name="context">AssignmentsNode to visit</param> /// <param name="lineNo">Current line number</param> /// <param name="collectedSpans">Collection of spans found</param> private void Visit(ITextSnapshotLine line, InvokeCodeNode context, int lineNo, List <ClassificationSpan> collectedSpans) { if (context == null || lineNo < context.Span.StartLine || lineNo > context.Span.EndLine) { return; } Visit(line, context.KeywordSpan, lineNo, collectedSpans, _keyword); Visit(line, context.CallOrStartSpan, lineNo, collectedSpans, _keyword); Visit(line, context.StopOrHaltSpan, lineNo, collectedSpans, _keyword); Visit(line, context.StartExpr, lineNo, collectedSpans); Visit(line, context.StopExpr, lineNo, collectedSpans); }
/// <summary> /// Visit an invoke node /// </summary> /// <param name="plan">Test file plan</param> /// <param name="testSetPlan">TestSetPlan to visit</param> /// <param name="invokeNode">Invoke syntax node</param> /// <returns>Invoke plan</returns> private InvokePlanBase VisitInvoke(TestFilePlan plan, TestSetPlan testSetPlan, InvokeCodeNode invokeNode) { // --- Get start address var start = Eval(plan, testSetPlan, invokeNode.StartExpr); if (start == null) { return(null); } if (invokeNode.IsCall) { return(new CallPlan(start.AsWord())); } if (invokeNode.IsHalt) { return(new StartPlan(start.AsWord(), null)); } // --- Get Stop address var stop = Eval(plan, testSetPlan, invokeNode.StopExpr); return(stop == null ? null : new StartPlan(start.AsWord(), stop.AsWord())); }