Пример #1
0
  // method calls with spread-dot operator are not rewritten, hence this method doesn't have to care
  // about spread-dot
  public static void verifyMethodCondition(
      @Nullable ErrorCollector errorCollector,
      @Nullable ValueRecorder recorder,
      @Nullable String text,
      int line,
      int column,
      @Nullable Object message,
      Object target,
      String method,
      Object[] args,
      boolean safe,
      boolean explicit,
      int lastVariableNum) {
    MatcherCondition matcherCondition = MatcherCondition.parse(target, method, args, safe);
    if (matcherCondition != null) {
      matcherCondition.verify(
          errorCollector, getValues(recorder), text, line, column, messageToString(message));
      return;
    }

    if (recorder != null) {
      recorder.startRecordingValue(lastVariableNum);
    }
    Object result =
        safe
            ? GroovyRuntimeUtil.invokeMethodNullSafe(target, method, args)
            : GroovyRuntimeUtil.invokeMethod(target, method, args);

    if (!explicit && result == null && GroovyRuntimeUtil.isVoidMethod(target, method, args)) return;

    if (!GroovyRuntimeUtil.isTruthy(result)) {
      List<Object> values = getValues(recorder);
      if (values != null) CollectionUtil.setLastElement(values, result);
      final ConditionNotSatisfiedError conditionNotSatisfiedError =
          new ConditionNotSatisfiedError(
              new Condition(
                  values,
                  text,
                  TextPosition.create(line, column),
                  messageToString(message),
                  null,
                  null));
      errorCollector.collectOrThrow(conditionNotSatisfiedError);
    }
  }
Пример #2
0
 // condition can be null too, but not in the sense of "not available"
 public static void verifyCondition(
     @Nullable ErrorCollector errorCollector,
     @Nullable ValueRecorder recorder,
     @Nullable String text,
     int line,
     int column,
     @Nullable Object message,
     @Nullable Object condition) {
   if (!GroovyRuntimeUtil.isTruthy(condition)) {
     final ConditionNotSatisfiedError conditionNotSatisfiedError =
         new ConditionNotSatisfiedError(
             new Condition(
                 getValues(recorder),
                 text,
                 TextPosition.create(line, column),
                 messageToString(message),
                 null,
                 null));
     errorCollector.collectOrThrow(conditionNotSatisfiedError);
   }
 }
Пример #3
0
  private static String messageToString(Object message) {
    if (message == null) return null; // treat as "not available"

    return GroovyRuntimeUtil.toString(message);
  }
Пример #4
0
 public static Object[] despreadList(Object[] args, Object[] spreads, int[] positions) {
   return GroovyRuntimeUtil.despreadList(args, spreads, positions);
 }