JsonReturnKind _validJsonReturnTypeCore()

in functions_framework_builder/lib/src/valid_json_utils.dart [91:109]


JsonReturnKind _validJsonReturnTypeCore(DartType type) {
  if (type is VoidType) {
    return JsonReturnKind.isVoid;
  }

  // Look for a `toJson` function that returns a JSON-able type
  if (type is InterfaceType) {
    final toJsonMethod = type.element.augmented
        .lookUpMethod(name: 'toJson', library: type.element.library);
    if (toJsonMethod != null &&
        toJsonMethod.parameters.every((element) => element.isOptional)) {
      type = toJsonMethod.returnType;
    }
  }

  return _validJsonType(type, true)
      ? JsonReturnKind.other
      : JsonReturnKind.notJson;
}