+ public gchar *funcattrtest(self, const char *format (check null), ...)
+ attr {G_GNUC_PRINTF (2, 3)}
+ {
+ gchar *result;
+
+ va_list ap;
+ va_start(ap, format);
+ result = g_strdup_vprintf (format, ap);
+ va_end(ap);
+ return result;
+ }
+ private gchar *funcattrtest2(self, const char *format, ...)
+ attr {G_GNUC_SCANF(2,3)}
+ {
+ gchar *nonsense = NULL;
+ format = format;
+ return nonsense;
+ }
+ protected gchar *funcattrtest3(self, const char *format)
+ attr {G_GNUC_FORMAT (2)}
+ {
+ gchar *nonsense = NULL;
+ format = format;
+ return nonsense;
+ }
+ private char *funcattrtest4(self, const char *format, ...)
+ attr {G_GNUC_PRINTF(2,3)}
+ onerror NULL
+ {
+ gchar *nonsense = NULL;
+ format = format;
+ return nonsense;
+ }
+ protected char * funcattrtest5(self, const char *format, ...)
+ onerror NULL
+ attr {G_GNUC_PRINTF(2,3)}
+ {
+ gchar *nonsense = NULL;
+ format = format;
+ return nonsense;
+ }
+ public char * funcattrtest6(self, const char *format, ...)
+ attr {G_GNUC_PRINTF(2,3)}
+ onerror NULL
+ {
+ gchar *nonsense = NULL;
+ format = format;
+ return nonsense;
+ }
+ // Note that the parser should accept defreturn with function
+ // attributes as well, but this may not be a good thing since
+ // it probably doesn't make sense, so we don't test it.