wrapFinalizer static method

  1. @protected
ContextFinalizer wrapFinalizer(
  1. Function function
)

Implementation

@protected
static ContextFinalizer wrapFinalizer(Function function) {
  if (function case ContextFinalizer contextFinalizer) {
    return contextFinalizer;
  }

  if (function case EnvironmentFinalizer environmentFinalizer) {
    return (context, value) {
      return environmentFinalizer(context.environment, value);
    };
  }

  if (function case Finalizer finalizer) {
    return (context, value) {
      return finalizer(value);
    };
  }

  // TODO: add error message
  throw ArgumentError.value(function, 'finalize');
}