diff --git a/vala/valaformalparameter.vala b/vala/valaformalparameter.vala
index 2dfa557..877f0b0 100644
--- a/vala/valaformalparameter.vala
+++ b/vala/valaformalparameter.vala
@@ -241,6 +241,10 @@ public class Vala.FormalParameter : Symbol {
 			    && direction != ParameterDirection.OUT) {
 				Report.warning (source_reference, "`null' incompatible with parameter type `%s`".printf (parameter_type.to_string ()));
 			}
+			
+			if (!default_expression.is_constant ()) {
+				Report.error (source_reference, "default value must be constant");
+			}
 		}
 
 		if (!ellipsis) {
diff --git a/vala/valaunaryexpression.vala b/vala/valaunaryexpression.vala
index b2066a3..0ee1945 100644
--- a/vala/valaunaryexpression.vala
+++ b/vala/valaunaryexpression.vala
@@ -104,6 +104,10 @@ public class Vala.UnaryExpression : Expression {
 		return inner.is_pure ();
 	}
 
+	public override bool is_constant () {
+		return inner.is_constant ();
+	}
+
 	bool is_numeric_type (DataType type) {
 		if (!(type.data_type is Struct)) {
 			return false;
