getFunctionWithParameters method

FutureOr<ASTFunctionDeclaration?> getFunctionWithParameters(
  1. String entryFunctionName,
  2. List? positionalParameters,
  3. Map? namedParameters, {
  4. ApolloExternalFunctionMapper? externalFunctionMapper,
  5. VMTypeResolver? typeResolver,
})

Implementation

FutureOr<ASTFunctionDeclaration?> getFunctionWithParameters(
    String entryFunctionName,
    List? positionalParameters,
    Map? namedParameters,
    {ApolloExternalFunctionMapper? externalFunctionMapper,
    VMTypeResolver? typeResolver}) async {
  var rootContext =
      await _initializeEntryPointBlock(externalFunctionMapper, typeResolver);

  ApolloExternalFunctionMapper? prevExternalFunctionMapper;
  if (externalFunctionMapper != null) {
    prevExternalFunctionMapper = rootContext.externalFunctionMapper;
    rootContext.externalFunctionMapper = externalFunctionMapper;
  }

  var prevContext = VMContext.setCurrent(rootContext);
  try {
    var fSignature =
        ASTFunctionSignature.from(positionalParameters, namedParameters);

    try {
      var f = getFunction(entryFunctionName, fSignature, rootContext);
      return f;
    } on Error {
      return null;
    }
  } finally {
    VMContext.setCurrent(prevContext);
    if (identical(
        rootContext.externalFunctionMapper, externalFunctionMapper)) {
      rootContext.externalFunctionMapper = prevExternalFunctionMapper;
    }
  }
}