summaryrefslogtreecommitdiff
path: root/Test/dafny0/Trait/TraitExtend.dfy
diff options
context:
space:
mode:
authorGravatar Reza Ahmadi <reza.ahmadi@uta.fi>2014-07-18 21:16:40 +0300
committerGravatar Reza Ahmadi <reza.ahmadi@uta.fi>2014-07-18 21:16:40 +0300
commit77143c833cbb14a20c704fb60fc28dd94edb44eb (patch)
tree7da7588d8dccb94fb1c5c42f23ec69c4edab2785 /Test/dafny0/Trait/TraitExtend.dfy
parentc377658acba5472b6d0c1e1452ce4c4c8f1fc28e (diff)
added trait feature:
-possibility to declare traits in Dafny -possibility to extend a class by a trait -possibility to override body-less methods
Diffstat (limited to 'Test/dafny0/Trait/TraitExtend.dfy')
-rw-r--r--Test/dafny0/Trait/TraitExtend.dfy43
1 files changed, 43 insertions, 0 deletions
diff --git a/Test/dafny0/Trait/TraitExtend.dfy b/Test/dafny0/Trait/TraitExtend.dfy
new file mode 100644
index 00000000..1a59439c
--- /dev/null
+++ b/Test/dafny0/Trait/TraitExtend.dfy
@@ -0,0 +1,43 @@
+// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t"
+// RUN: %diff "%s.expect" "%t"
+
+trait t
+{
+ var f: int;
+
+ function method Plus (x:int, y:int) : int
+ requires x>y;
+ {
+ x + y
+ }
+
+ function method Mul (x:int, y:int, z:int) : int
+ requires x>y;
+ {
+ x * y * z
+ }
+
+ //function method BodyLess1() : int
+
+ static method GetPhoneNumber (code:int, n:int) returns (z:int)
+ {
+ z := code + n;
+ }
+
+ method TestPhone ()
+ {
+ var num : int;
+ num := GetPhoneNumber (10, 30028);
+ }
+}
+
+class c1 extends t
+{
+ method P2(x:int, y:int) returns (z:int)
+ requires x>y;
+ {
+ z:= Plus(x,y) + Mul (x,y,1);
+ var j:int := Mul (x,y); //error, too few parameters in calling inherited method
+ var k:int := Plus(x,y,1); //error, too many parameters in calling inherited method
+ }
+} \ No newline at end of file