From 8e799548618318c37760a2e915eb994745574748 Mon Sep 17 00:00:00 2001 From: krasimir Date: Fri, 2 Oct 2009 13:25:12 +0000 Subject: Implicit arguments in GF. Works only in PGF for now. --- testsuite/runtime/typecheck/Graph.gf | 19 +++++++++++++++++++ testsuite/runtime/typecheck/implicit-arguments.gfs | 9 +++++++++ .../runtime/typecheck/implicit-arguments.gfs.gold | 22 ++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 testsuite/runtime/typecheck/Graph.gf create mode 100644 testsuite/runtime/typecheck/implicit-arguments.gfs create mode 100644 testsuite/runtime/typecheck/implicit-arguments.gfs.gold (limited to 'testsuite') diff --git a/testsuite/runtime/typecheck/Graph.gf b/testsuite/runtime/typecheck/Graph.gf new file mode 100644 index 000000000..a44cf35b5 --- /dev/null +++ b/testsuite/runtime/typecheck/Graph.gf @@ -0,0 +1,19 @@ +abstract Graph = { + +cat + Node ; + Link (n,m : Node) ; + Path (n,m : Node) ; + Label ({n} : Node) ; -- just to debug implicit arguments of categories + +fun + n1,n2,n3,n4,n5 : Node ; + + l12 : Link n1 n2 ; + l23 : Link n2 n3 ; + l34 : Link n3 n4 ; + l35 : Link n3 n5 ; + + link : ({n,m} : Node) -> Link n m -> Path n m ; + join : ({n,p,m} : Node) -> Link n p -> Path p m -> Path n m ; +} \ No newline at end of file diff --git a/testsuite/runtime/typecheck/implicit-arguments.gfs b/testsuite/runtime/typecheck/implicit-arguments.gfs new file mode 100644 index 000000000..0306a662a --- /dev/null +++ b/testsuite/runtime/typecheck/implicit-arguments.gfs @@ -0,0 +1,9 @@ +i testsuite/runtime/typecheck/Graph.gf +ai join l12 (link l23) +ai join {n1} {n2} {n3} l12 (link {n2} {n3} l23) +ai +ai +ai +ai <\x -> x : ({m},n : Node) -> Node> +ai Node> +ai Node> \ No newline at end of file diff --git a/testsuite/runtime/typecheck/implicit-arguments.gfs.gold b/testsuite/runtime/typecheck/implicit-arguments.gfs.gold new file mode 100644 index 000000000..8a5c08461 --- /dev/null +++ b/testsuite/runtime/typecheck/implicit-arguments.gfs.gold @@ -0,0 +1,22 @@ +Expression: join {n1} {n2} {n3} l12 (link {n2} {n3} l23) +Type: Path n1 n3 + +Expression: join {n1} {n2} {n3} l12 (link {n2} {n3} l23) +Type: Path n1 n3 + +Expression: +Type: Label {?1} + +Expression: +Type: Label {n1} + +{n1} is implicit argument but not implicit argument is expected here +Expression: <\{_1}, x -> x : ({m} : Node) -> (n : Node) -> Node> +Type: ({m} : Node) -> (n : Node) -> Node + +Expression: <\{_1} -> n1 : ({m} : Node) -> Node> +Type: ({m} : Node) -> Node + +Expression: <\{_1} -> ?1 : ({m} : Node) -> Node> +Type: ({m} : Node) -> Node + -- cgit v1.2.3