summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Nemerson <evan@coeus-group.com>2010-04-02 11:41:49 -0700
committerEvan Nemerson <evan@coeus-group.com>2010-04-02 11:41:49 -0700
commit198b4d0f2c3293b1a45f261c011fcf92543d4b15 (patch)
treecdcbf3013dda47b73cba5aa073fa637dd8ccf8f3
parentb48b41f97dfc0c37251beb07b1924af593bba8e1 (diff)
downloadvala-198b4d0f2c3293b1a45f261c011fcf92543d4b15.tar.gz
vapigen: add support for member access based default values
-rw-r--r--vapigen/valagidlparser.vala10
1 files changed, 9 insertions, 1 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index d0831128f..6d3e03d6b 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -1779,6 +1779,8 @@ public class Vala.GIdlParser : CodeVisitor {
p.default_expression = new BooleanLiteral (true, param_type.source_reference);
} else if (val == "false") {
p.default_expression = new BooleanLiteral (false, param_type.source_reference);
+ } else if (val == "") {
+ p.default_expression = new StringLiteral ("\"\"", param_type.source_reference);
} else {
unowned string endptr;
unowned string val_end = val.offset (val.len ());
@@ -1791,7 +1793,13 @@ public class Vala.GIdlParser : CodeVisitor {
if ((long)endptr == (long)val_end) {
p.default_expression = new RealLiteral (val, param_type.source_reference);
} else {
- p.default_expression = new StringLiteral ("\"%s\"".printf (val), param_type.source_reference);
+ if (val.has_prefix ("\"") && val.has_suffix ("\"")) {
+ p.default_expression = new StringLiteral (val, param_type.source_reference);
+ } else {
+ foreach (var member in val.split (".")) {
+ p.default_expression = new MemberAccess (p.default_expression, member, param_type.source_reference);
+ }
+ }
}
}
}