[vala] Accept pre- and postconditions for constructors
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [vala] Accept pre- and postconditions for constructors
- Date: Wed, 20 Jan 2010 08:50:21 +0000 (UTC)
commit ef7bf64f7544384dbe6dd375609f9413bb2c7e84
Author: Marc-André Lureau <marcandre lureau gmail com>
Date: Sun Jan 17 16:35:46 2010 +0100
Accept pre- and postconditions for constructors
Fixes bug 607110.
vala/valacreationmethod.vala | 16 ++++++++++++++++
vala/valaparser.vala | 10 ++++++++++
2 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/vala/valacreationmethod.vala b/vala/valacreationmethod.vala
index 8469e17..8bcaecf 100644
--- a/vala/valacreationmethod.vala
+++ b/vala/valacreationmethod.vala
@@ -80,6 +80,14 @@ public class Vala.CreationMethod : Method {
error_type.accept (visitor);
}
+ foreach (Expression precondition in get_preconditions ()) {
+ precondition.accept (visitor);
+ }
+
+ foreach (Expression postcondition in get_postconditions ()) {
+ postcondition.accept (visitor);
+ }
+
if (body != null) {
body.accept (visitor);
}
@@ -153,6 +161,14 @@ public class Vala.CreationMethod : Method {
error_type.check (analyzer);
}
+ foreach (Expression precondition in get_preconditions ()) {
+ precondition.check (analyzer);
+ }
+
+ foreach (Expression postcondition in get_postconditions ()) {
+ postcondition.check (analyzer);
+ }
+
if (body != null) {
body.check (analyzer);
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index 5a29d13..4b3c7fd 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -2991,6 +2991,16 @@ public class Vala.Parser : CodeVisitor {
method.add_error_type (parse_type ());
} while (accept (TokenType.COMMA));
}
+ while (accept (TokenType.REQUIRES)) {
+ expect (TokenType.OPEN_PARENS);
+ method.add_precondition (parse_expression ());
+ expect (TokenType.CLOSE_PARENS);
+ }
+ while (accept (TokenType.ENSURES)) {
+ expect (TokenType.OPEN_PARENS);
+ method.add_postcondition (parse_expression ());
+ expect (TokenType.CLOSE_PARENS);
+ }
method.access = access;
set_attributes (method, attrs);
if (!accept (TokenType.SEMICOLON)) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]