/** Replies the guard evaluation code for the given event. * * @param source the source of the guard evaluation. * @return the guard evaluators. */ public Collection<Procedure1<? super ITreeAppendable>> getGuardEvalationCodeFor(SarlBehaviorUnit source) { assert source != null; final String id = source.getName().getIdentifier(); final Collection<Procedure1<? super ITreeAppendable>> evaluators; final Pair<SarlBehaviorUnit, Collection<Procedure1<? super ITreeAppendable>>> pair = this.guardEvaluators.get(id); if (pair == null) { evaluators = new ArrayList<>(); this.guardEvaluators.put(id, new Pair<>(source, evaluators)); } else { evaluators = pair.getValue(); assert evaluators != null; } return evaluators; }
@Override public int compare(SarlBehaviorUnit o1, SarlBehaviorUnit o2) { if (o1 == o2) { return 0; } if (o1 == null) { return Integer.MIN_VALUE; } if (o2 == null) { return Integer.MAX_VALUE; } final int cmp = o1.getName().getIdentifier().compareTo(o2.getName().getIdentifier()); if (cmp != 0) { return cmp; } return compare(o1.getGuard(), o2.getGuard()); }
/** Check if the parameter of the bahavior unit is an event. * * @param behaviorUnit the behavior unit to test. */ @Check(CheckType.FAST) public void checkBehaviorUnitEventType(SarlBehaviorUnit behaviorUnit) { final JvmTypeReference event = behaviorUnit.getName(); final LightweightTypeReference ref = toLightweightTypeReference(event); if (ref == null || !this.inheritanceHelper.isSarlEvent(ref)) { error(MessageFormat.format( Messages.SARLValidator_75, event.getQualifiedName(), Messages.SARLValidator_62, this.grammarAccess.getOnKeyword()), event, null, ValidationMessageAcceptor.INSIGNIFICANT_INDEX, TYPE_BOUNDS_MISMATCH); } }
final JvmTypeReference event = handler.getName(); final String handleName = it.declareUniqueNameVariable(handler, "__on_" + event.getSimpleName() + "__"); //$NON-NLS-1$ //$NON-NLS-2$ it.append("def ").append(handleName).append("(self, occurrence):"); //$NON-NLS-1$ //$NON-NLS-2$
ValidationMessageAcceptor.INSIGNIFICANT_INDEX, UNREACHABLE_BEHAVIOR_UNIT, behaviorUnit.getName().getSimpleName());
if (source.getName() != null && !Strings.isNullOrEmpty(source.getName().getSimpleName()) && context != null) { final XExpression guard = source.getGuard(); final String bodyMethodName = Utils.createNameForHiddenEventHandlerMethod(source.getName().getSimpleName(), context.getBehaviorUnitIndex()); jvmParam.setParameterType(this.typeBuilder.cloneWithProxies(source.getName())); this.associator.associate(source, jvmParam); bodyOperation.getParameters().add(jvmParam); final String guardMethodName = Utils.createNameForHiddenGuardEvaluatorMethod(source.getName().getSimpleName(), context.getBehaviorUnitIndex()); jvmParam.setParameterType(this.typeBuilder.cloneWithProxies(source.getName())); this.associator.associate(source, jvmParam); guardOperation.getParameters().add(jvmParam); jvmParam.setParameterType(this.typeBuilder.cloneWithProxies(source.getName())); this.associator.associate(source, jvmParam); guardOperation.getParameters().add(jvmParam);
final SarlBehaviorUnit source = evaluators.getKey(); final String behName = Utils.createNameForHiddenGuardGeneralEvaluatorMethod(source.getName().getSimpleName()); jvmParam.setParameterType(this.typeBuilder.cloneWithProxies(source.getName())); this.associator.associate(source, jvmParam); operation.getParameters().add(jvmParam);
/** Format a behavior unit. * * @param behaviorUnit the behavior unit. * @param document the document. */ protected void _format(SarlBehaviorUnit behaviorUnit, IFormattableDocument document) { formatAnnotations(behaviorUnit, document, XbaseFormatterPreferenceKeys.newLineAfterMethodAnnotations); final ISemanticRegionsFinder regionFor = this.textRegionExtensions.regionFor(behaviorUnit); document.append(regionFor.keyword(this.keywords.getOnKeyword()), ONE_SPACE); if (behaviorUnit.getGuard() != null) { ISemanticRegion keyword = this.textRegionExtensions.immediatelyPreceding( behaviorUnit.getGuard()).keyword(this.keywords.getLeftSquareBracketKeyword()); document.prepend(keyword, ONE_SPACE); document.append(keyword, NO_SPACE); keyword = this.textRegionExtensions.immediatelyFollowing( behaviorUnit.getGuard()).keyword(this.keywords.getRightSquareBracketKeyword()); document.prepend(keyword, NO_SPACE); } document.format(behaviorUnit.getName()); document.format(behaviorUnit.getGuard()); final XExpression expression = behaviorUnit.getExpression(); if (expression != null) { final ISemanticRegionFinder finder = this.textRegionExtensions.regionFor(expression); final ISemanticRegion brace = finder.keyword(this.keywords.getLeftCurlyBracketKeyword()); document.prepend(brace, XbaseFormatterPreferenceKeys.bracesInNewLine); document.format(expression); } }