/* methods_bug620673.c generated by valac, the Vala compiler
 * generated from methods_bug620673.vala, do not modify */

#include <glib.h>
#include <stdarg.h>
#include <float.h>
#include <math.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

VALA_EXTERN void foo (gint bar,
          GError** error,
          ...);
static void _vala_main (void);

void
foo (gint bar,
     GError** error,
     ...)
{
	va_list args = {0};
	gint arg = 0;
	gint64 arg2 = 0LL;
	gdouble arg3 = 0.0;
	_vala_assert (bar == 42, "bar == 42");
	va_start (args, error);
	arg = va_arg (args, gint);
	arg2 = va_arg (args, gint64);
	arg3 = va_arg (args, gdouble);
	_vala_assert (arg == 23, "arg == 23");
	_vala_assert (arg2 == 4711LL, "arg2 == 4711LL");
	_vala_assert (arg3 == 3.1415, "arg3 == 3.1415");
	va_end (args);
}

static void
_vala_main (void)
{
	GError* _inner_error0_ = NULL;
	foo (42, &_inner_error0_, 23, 4711LL, 3.1415, NULL);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
}

int
main (int argc,
      char ** argv)
{
	_vala_main ();
	return 0;
}

