invoke method

dynamic invoke(
  1. String funcName, {
  2. List positionalArgs = const [],
  3. Map<String, dynamic> namedArgs = const {},
  4. List<HTType> typeArgs = const [],
})

Call a static function of this HTClass.

Implementation

dynamic invoke(String funcName,
    {List<dynamic> positionalArgs = const [],
    Map<String, dynamic> namedArgs = const {},
    List<HTType> typeArgs = const []}) {
  try {
    final func = memberGet(funcName);

    if (func is HTFunction) {
      func.resolve();
      return func.call(
          positionalArgs: positionalArgs,
          namedArgs: namedArgs,
          typeArgs: typeArgs);
    } else {
      throw HTError.notCallable(funcName,
          filename: interpreter.currentFileName,
          line: interpreter.currentLine,
          column: interpreter.currentColumn);
    }
  } catch (error, stackTrace) {
    if (interpreter.config.processError) {
      interpreter.processError(error, stackTrace);
    } else {
      rethrow;
    }
  }
}