summaryrefslogtreecommitdiff
path: root/ccode
diff options
context:
space:
mode:
Diffstat (limited to 'ccode')
-rw-r--r--ccode/valaccodefunction.vala17
-rw-r--r--ccode/valaccodeparameter.vala2
2 files changed, 14 insertions, 5 deletions
diff --git a/ccode/valaccodefunction.vala b/ccode/valaccodefunction.vala
index 7f3b3bb12..44dd5b956 100644
--- a/ccode/valaccodefunction.vala
+++ b/ccode/valaccodefunction.vala
@@ -126,16 +126,19 @@ public class Vala.CCodeFunction : CCodeNode {
writer.write_string (name);
writer.write_string (" (");
- bool first = true;
+ int i = 0;
+ int format_arg_index = -1;
foreach (CCodeParameter param in parameters) {
- if (!first) {
+ if (i > 0) {
writer.write_string (", ");
- } else {
- first = false;
}
param.write (writer);
+ if (param.format_arg) {
+ format_arg_index = i;
+ }
+ i++;
}
- if (first) {
+ if (i == 0) {
writer.write_string ("void");
}
@@ -146,6 +149,10 @@ public class Vala.CCodeFunction : CCodeNode {
}
if (is_declaration) {
+ if (format_arg_index >= 0) {
+ writer.write_string (" G_GNUC_FORMAT(%d)".printf (format_arg_index + 1));
+ }
+
if (attributes != null) {
writer.write_string (" ");
writer.write_string (attributes);
diff --git a/ccode/valaccodeparameter.vala b/ccode/valaccodeparameter.vala
index 9f1c2e186..9404f470c 100644
--- a/ccode/valaccodeparameter.vala
+++ b/ccode/valaccodeparameter.vala
@@ -42,6 +42,8 @@ public class Vala.CCodeParameter : CCodeNode {
*/
public bool ellipsis { get; set; }
+ public bool format_arg { get; set; }
+
public CCodeParameter (string n, string type) {
name = n;
type_name = type;