private static Set<Class<? extends Tag>> getElementTags(SourceElement[] sourceElements) { if (sourceElements.length == 1) { return Collections.singleton(sourceElements[0].getTag()); } Set<Class<? extends Tag>> elementTags = new HashSet<>(); for (int i = 0; i < sourceElements.length; i++) { elementTags.add(sourceElements[i].getTag()); } return elementTags; }
private static Set<Class<? extends Tag>> getElementTags(SourceElement[] sourceElements) { if (sourceElements.length == 1) { return Collections.singleton(sourceElements[0].getTag()); } Set<Class<? extends Tag>> elementTags = new HashSet<>(); for (int i = 0; i < sourceElements.length; i++) { elementTags.add(sourceElements[i].getTag()); } return elementTags; }
@Override void notifyNodeEntry(EventContext context) { if (exprStepping && context.hasTag(SourceElement.EXPRESSION.getTag())) { exprCounter++; activeExpression = exprCounter <= 0; } }
/** * Returns <code>true</code> if the underlying guest language source location is denoted as the * source element. * * @param sourceElement the source element to check, must not be <code>null</code>. * @since 0.33 */ public boolean hasSourceElement(SourceElement sourceElement) { return context.hasTag(sourceElement.getTag()); }
/** * Returns <code>true</code> if the underlying guest language source location is denoted as the * source element. * * @param sourceElement the source element to check, must not be <code>null</code>. * @since 0.33 */ public boolean hasSourceElement(SourceElement sourceElement) { return context.hasTag(sourceElement.getTag()); }
@Override void notifyNodeExit(EventContext context) { if (exprStepping && context.hasTag(SourceElement.EXPRESSION.getTag())) { boolean isOn = (--exprCounter) < 0; if (isOn) { activeExpression = true; } } }
@Override void notifyNodeExit(EventContext context) { if (exprStepping && context.hasTag(SourceElement.EXPRESSION.getTag())) { boolean isOn = (--exprCounter) < 0; if (isOn) { activeExpression = true; } } }
@Override void notifyNodeEntry(EventContext context) { if (exprStepping && context.hasTag(SourceElement.EXPRESSION.getTag())) { exprCounter++; activeExpression = false; } }
@Override void initialize(SuspendedContext context, SuspendAnchor suspendAnchor) { this.stackCounter = 0; this.exprCounter = context.hasTag(SourceElement.EXPRESSION.getTag()) && SuspendAnchor.BEFORE == suspendAnchor ? 0 : -1; }
@Override void initialize(SuspendedContext context, SuspendAnchor suspendAnchor) { this.stackCounter = 0; this.exprCounter = context.hasTag(SourceElement.EXPRESSION.getTag()) && SuspendAnchor.BEFORE == suspendAnchor ? 0 : -1; }
private static void setTags(SourceSectionFilter.Builder f, SourceElement[] sourceElements) { Class<?>[] elementTags = new Class<?>[sourceElements.length]; for (int i = 0; i < elementTags.length; i++) { elementTags[i] = sourceElements[i].getTag(); } f.tagIs(elementTags); }
@Override void notifyNodeExit(EventContext context) { if (exprStepping && context.hasTag(SourceElement.EXPRESSION.getTag())) { boolean isOn = (--exprCounter) < 0; if (isOn) { activeExpression = true; } } }
@Override void notifyNodeEntry(EventContext context) { if (exprStepping && context.hasTag(SourceElement.EXPRESSION.getTag())) { exprCounter++; activeExpression = exprCounter <= 0; } }
@Override void notifyNodeEntry(EventContext context) { if (exprStepping && context.hasTag(SourceElement.EXPRESSION.getTag())) { exprCounter++; activeExpression = false; } }
@Override void notifyNodeExit(EventContext context) { if (exprStepping && context.hasTag(SourceElement.EXPRESSION.getTag())) { boolean isOn = (--exprCounter) < 0; if (isOn) { activeExpression = true; } } }
boolean matches(DebuggerSession session, EventContext context, SuspendAnchor anchor) { Set<SourceElement> elements = sourceElements; if (elements == null) { elements = session.getSourceElements(); } for (SourceElement se : elements) { if (context.hasTag(se.getTag()) && preferredAnchors.get(se).contains(anchor)) { return true; } } return false; }
private void addBindings(boolean includeInternalCode, Predicate<Source> sFilter) { if (syntaxElementsBinding == null && !sourceElements.isEmpty()) { Class<?>[] syntaxTags = new Class<?>[this.sourceElements.size() + (hasRootElement ? 0 : 1)]; Iterator<SourceElement> elementsIterator = this.sourceElements.iterator(); int i = 0; while (elementsIterator.hasNext()) { syntaxTags[i++] = elementsIterator.next().getTag(); } assert i == sourceElements.size(); if (!hasRootElement) { syntaxTags[i] = RootTag.class; } this.syntaxElementsBinding = createBinding(includeInternalCode, sFilter, new ExecutionEventNodeFactory() { @Override public ExecutionEventNode create(EventContext context) { if (context.hasTag(RootTag.class)) { return new RootSteppingDepthNode(context); } else { return new SteppingNode(context); } } }, hasExpressionElement, syntaxTags); allBindings.add(syntaxElementsBinding); } }
@Override boolean step(DebuggerSession steppingSession, EventContext context, SuspendAnchor suspendAnchor) { if (stepConfig.matches(session, context, suspendAnchor) || SuspendAnchor.AFTER == suspendAnchor && (stackCounter < 0 || exprCounter < 0)) { stackCounter = 0; exprCounter = context.hasTag(SourceElement.EXPRESSION.getTag()) && SuspendAnchor.BEFORE == suspendAnchor ? 0 : -1; return --unfinishedStepCount <= 0; } else { return false; } }
@Override boolean step(DebuggerSession steppingSession, EventContext context, SuspendAnchor suspendAnchor) { if (stepConfig.matches(session, context, suspendAnchor) || SuspendAnchor.AFTER == suspendAnchor && (stackCounter < 0 || exprCounter < 0)) { stackCounter = 0; exprCounter = context.hasTag(SourceElement.EXPRESSION.getTag()) && SuspendAnchor.BEFORE == suspendAnchor ? 0 : -1; return --unfinishedStepCount <= 0; } else { return false; } }
boolean matches(DebuggerSession session, EventContext context, SuspendAnchor anchor) { Set<SourceElement> elements = sourceElements; if (elements == null) { elements = session.getSourceElements(); } for (SourceElement se : elements) { if (context.hasTag(se.getTag()) && preferredAnchorMatches(se, anchor)) { return true; } } return false; }