@Check(CheckType.FAST) public void checkTimeEventSpecValueExpression(TimeEventSpec spec) { try { InferenceResult result = typeInferrer.inferType(spec.getValue()); if (result.getType() == null || !typeSystem.isIntegerType(result.getType())) { error(TIME_EXPRESSION, null); } report(result, StextPackage.Literals.TIME_EVENT_SPEC__VALUE); } catch (IllegalArgumentException e) { // ignore unknown literals here, as this also happens when a // linking problem occurred, which is handled in other locations } }
@Check(CheckType.FAST) public void checkVariableDefinition(final VariableDefinition definition) { try { InferenceResult result = typeInferrer.inferType(definition); if (result.getType() != null && typeSystem.isVoidType(result.getType())) { error(VARIABLE_VOID_TYPE, null); } else { report(result, null); } } catch (IllegalArgumentException e) { // ignore unknown literals here, as this also happens when a // linking problem occurred, which is handled in other locations } }
@Check(CheckType.FAST) public void checkGuardExpression(ReactionTrigger trigger) { if (trigger.getGuardExpression() == null) { return; } try { InferenceResult result = typeInferrer.inferType(trigger.getGuardExpression()); if (result.getType() == null || !typeSystem.isBooleanType(result.getType())) { error(GUARD_EXPRESSION, StextPackage.Literals.REACTION_TRIGGER__GUARD_EXPRESSION); } report(result, null); } catch (IllegalArgumentException e) { // ignore unknown literals here, as this also happens when a // linking problem occurred, which is handled in other locations } }
protected void report(InferenceResult result, EStructuralFeature feature) { if (result.getIssues().isEmpty()) return; // TODO: Sort issues by severity and evaluate severity InferenceIssue error = Iterables.getLast(result.getIssues()); error(error.getMessage(), feature); }