From 6355f88c0fc8836a716d825f0740c20953412c63 Mon Sep 17 00:00:00 2001 From: Adrien Guatto Date: Wed, 15 Nov 2023 19:08:33 +0100 Subject: [PATCH] Jalon 3 --- cours/cours-parsing.pdf | Bin 333714 -> 332793 bytes flap/src/hopix/hopixTypes.ml | 12 +--- flap/src/hopix/hopixTypes.mli | 54 ++++++++++++------ .../03-Typing/01-int-literal.bad.expected | 6 ++ .../03-Typing/01-int-literal.bad.typing.hopix | 1 + ...nt-literal.bad.typing.hopix.human-readable | 2 + .../03-Typing/01-int-literal.good.expected | 2 + .../01-int-literal.good.typing.hopix | 1 + ...t-literal.good.typing.hopix.human-readable | 2 + flap/tests/03-Typing/02-arith-01.bad.expected | 6 ++ .../03-Typing/02-arith-01.bad.typing.hopix | 1 + ...2-arith-01.bad.typing.hopix.human-readable | 1 + .../tests/03-Typing/02-arith-01.good.expected | 1 + .../03-Typing/02-arith-01.good.typing.hopix | 1 + ...-arith-01.good.typing.hopix.human-readable | 1 + flap/tests/03-Typing/03-arith-02.bad.expected | 6 ++ .../03-Typing/03-arith-02.bad.typing.hopix | 1 + ...3-arith-02.bad.typing.hopix.human-readable | 1 + .../tests/03-Typing/03-arith-02.good.expected | 1 + .../03-Typing/03-arith-02.good.typing.hopix | 1 + ...-arith-02.good.typing.hopix.human-readable | 1 + flap/tests/03-Typing/04-arith-03.bad.expected | 6 ++ .../03-Typing/04-arith-03.bad.typing.hopix | 1 + ...4-arith-03.bad.typing.hopix.human-readable | 1 + .../tests/03-Typing/04-arith-03.good.expected | 1 + .../03-Typing/04-arith-03.good.typing.hopix | 1 + ...-arith-03.good.typing.hopix.human-readable | 1 + flap/tests/03-Typing/06-arith-04.bad.expected | 6 ++ .../03-Typing/06-arith-04.bad.typing.hopix | 1 + ...6-arith-04.bad.typing.hopix.human-readable | 1 + .../tests/03-Typing/06-arith-04.good.expected | 1 + .../03-Typing/06-arith-04.good.typing.hopix | 1 + ...-arith-04.good.typing.hopix.human-readable | 1 + flap/tests/03-Typing/07-arith-05.bad.expected | 6 ++ .../03-Typing/07-arith-05.bad.typing.hopix | 1 + ...7-arith-05.bad.typing.hopix.human-readable | 1 + .../tests/03-Typing/07-arith-05.good.expected | 1 + .../03-Typing/07-arith-05.good.typing.hopix | 1 + ...-arith-05.good.typing.hopix.human-readable | 1 + .../03-Typing/08-char-literal.bad.expected | 6 ++ .../08-char-literal.bad.typing.hopix | 1 + ...ar-literal.bad.typing.hopix.human-readable | 1 + .../03-Typing/08-char-literal.good.expected | 1 + .../08-char-literal.good.typing.hopix | 1 + ...r-literal.good.typing.hopix.human-readable | 1 + .../03-Typing/09-char-string.bad.expected | 6 ++ .../03-Typing/09-char-string.bad.typing.hopix | 1 + ...har-string.bad.typing.hopix.human-readable | 1 + .../03-Typing/09-char-string.good.expected | 1 + .../09-char-string.good.typing.hopix | 1 + ...ar-string.good.typing.hopix.human-readable | 1 + .../10-local-definition.bad.expected | 2 + .../10-local-definition.bad.typing.hopix | 1 + ...definition.bad.typing.hopix.human-readable | 3 + .../10-local-definition.good.expected | 1 + .../10-local-definition.good.typing.hopix | 1 + ...efinition.good.typing.hopix.human-readable | 3 + .../11-function-definition.bad.expected | 6 ++ .../11-function-definition.bad.typing.hopix | 1 + ...definition.bad.typing.hopix.human-readable | 5 ++ .../11-function-definition.good.expected | 2 + .../11-function-definition.good.typing.hopix | 1 + ...efinition.good.typing.hopix.human-readable | 5 ++ .../12-rec-function-definition.bad.expected | 6 ++ ...2-rec-function-definition.bad.typing.hopix | 1 + ...definition.bad.typing.hopix.human-readable | 5 ++ .../12-rec-function-definition.good.expected | 2 + ...-rec-function-definition.good.typing.hopix | 1 + ...efinition.good.typing.hopix.human-readable | 5 ++ ...-mutually-rec-fun-definitions.bad.expected | 2 + ...ually-rec-fun-definitions.bad.typing.hopix | 1 + ...efinitions.bad.typing.hopix.human-readable | 8 +++ ...mutually-rec-fun-definitions.good.expected | 3 + ...ally-rec-fun-definitions.good.typing.hopix | 1 + ...finitions.good.typing.hopix.human-readable | 8 +++ .../03-Typing/14-binary-function.bad.expected | 6 ++ .../14-binary-function.bad.typing.hopix | 1 + ...y-function.bad.typing.hopix.human-readable | 4 ++ .../14-binary-function.good.expected | 2 + .../14-binary-function.good.typing.hopix | 1 + ...-function.good.typing.hopix.human-readable | 4 ++ .../14-binary-rec-function.bad.expected | 6 ++ .../14-binary-rec-function.bad.typing.hopix | 1 + ...c-function.bad.typing.hopix.human-readable | 4 ++ .../14-binary-rec-function.good.expected | 2 + .../14-binary-rec-function.good.typing.hopix | 1 + ...-function.good.typing.hopix.human-readable | 4 ++ ...-binary-mutually-rec-function.bad.expected | 6 ++ ...ary-mutually-rec-function.bad.typing.hopix | 1 + ...c-function.bad.typing.hopix.human-readable | 7 +++ ...binary-mutually-rec-function.good.expected | 3 + ...ry-mutually-rec-function.good.typing.hopix | 1 + ...-function.good.typing.hopix.human-readable | 7 +++ .../16-polymorphic-function.bad.expected | 6 ++ .../16-polymorphic-function.bad.typing.hopix | 1 + ...c-function.bad.typing.hopix.human-readable | 4 ++ .../16-polymorphic-function.good.expected | 2 + .../16-polymorphic-function.good.typing.hopix | 1 + ...-function.good.typing.hopix.human-readable | 4 ++ ...7-polymorphic-binary-function.bad.expected | 6 ++ ...lymorphic-binary-function.bad.typing.hopix | 1 + ...y-function.bad.typing.hopix.human-readable | 5 ++ ...-polymorphic-binary-function.good.expected | 2 + ...ymorphic-binary-function.good.typing.hopix | 1 + ...-function.good.typing.hopix.human-readable | 5 ++ ...olymorphic-recursive-function.bad.expected | 6 ++ ...orphic-recursive-function.bad.typing.hopix | 1 + ...e-function.bad.typing.hopix.human-readable | 5 ++ ...lymorphic-recursive-function.good.expected | 2 + ...rphic-recursive-function.good.typing.hopix | 1 + ...-function.good.typing.hopix.human-readable | 5 ++ ...-mutually-recursive-functions.bad.expected | 6 ++ ...ually-recursive-functions.bad.typing.hopix | 1 + ...-functions.bad.typing.hopix.human-readable | 7 +++ ...mutually-recursive-functions.good.expected | 3 + ...ally-recursive-functions.good.typing.hopix | 1 + ...functions.good.typing.hopix.human-readable | 7 +++ ...0-polymorphic-binary-function.bad.expected | 6 ++ ...lymorphic-binary-function.bad.typing.hopix | 1 + ...y-function.bad.typing.hopix.human-readable | 23 ++++++++ ...-polymorphic-binary-function.good.expected | 5 ++ ...ymorphic-binary-function.good.typing.hopix | 1 + ...-function.good.typing.hopix.human-readable | 23 ++++++++ .../tests/03-Typing/21-record-01.bad.expected | 6 ++ .../03-Typing/21-record-01.bad.typing.hopix | 1 + ...-record-01.bad.typing.hopix.human-readable | 3 + .../03-Typing/21-record-01.good.expected | 1 + .../03-Typing/21-record-01.good.typing.hopix | 1 + ...record-01.good.typing.hopix.human-readable | 3 + .../22-polymorphic-record.bad.expected | 6 ++ .../22-polymorphic-record.bad.typing.hopix | 1 + ...hic-record.bad.typing.hopix.human-readable | 3 + .../22-polymorphic-record.good.expected | 1 + .../22-polymorphic-record.good.typing.hopix | 1 + ...ic-record.good.typing.hopix.human-readable | 3 + .../23-polymorphic-record-02.bad.expected | 6 ++ .../23-polymorphic-record-02.bad.typing.hopix | 1 + ...-record-02.bad.typing.hopix.human-readable | 3 + .../23-polymorphic-record-02.good.expected | 1 + ...23-polymorphic-record-02.good.typing.hopix | 1 + ...record-02.good.typing.hopix.human-readable | 3 + .../03-Typing/24-record-proj.bad.expected | 6 ++ .../03-Typing/24-record-proj.bad.typing.hopix | 1 + ...ecord-proj.bad.typing.hopix.human-readable | 7 +++ .../03-Typing/24-record-proj.good.expected | 3 + .../24-record-proj.good.typing.hopix | 1 + ...cord-proj.good.typing.hopix.human-readable | 7 +++ .../25-polymorphic-record-proj.bad.expected | 2 + ...5-polymorphic-record-proj.bad.typing.hopix | 1 + ...ecord-proj.bad.typing.hopix.human-readable | 7 +++ .../25-polymorphic-record-proj.good.expected | 3 + ...-polymorphic-record-proj.good.typing.hopix | 1 + ...cord-proj.good.typing.hopix.human-readable | 7 +++ ...ction-over-polymorphic-record.bad.expected | 6 ++ ...n-over-polymorphic-record.bad.typing.hopix | 1 + ...hic-record.bad.typing.hopix.human-readable | 13 +++++ ...tion-over-polymorphic-record.good.expected | 5 ++ ...-over-polymorphic-record.good.typing.hopix | 1 + ...ic-record.good.typing.hopix.human-readable | 13 +++++ .../27-function-in-record.bad.expected | 2 + .../27-function-in-record.bad.typing.hopix | 1 + ...-in-record.bad.typing.hopix.human-readable | 11 ++++ .../27-function-in-record.good.expected | 4 ++ .../27-function-in-record.good.typing.hopix | 1 + ...in-record.good.typing.hopix.human-readable | 11 ++++ .../28-anonymous-function.bad.expected | 6 ++ .../28-anonymous-function.bad.typing.hopix | 1 + ...s-function.bad.typing.hopix.human-readable | 3 + .../28-anonymous-function.good.expected | 2 + .../28-anonymous-function.good.typing.hopix | 1 + ...-function.good.typing.hopix.human-readable | 3 + .../29-anonymous-nary-functions.bad.expected | 6 ++ ...-anonymous-nary-functions.bad.typing.hopix | 1 + ...-functions.bad.typing.hopix.human-readable | 37 ++++++++++++ .../29-anonymous-nary-functions.good.expected | 7 +++ ...anonymous-nary-functions.good.typing.hopix | 1 + ...functions.good.typing.hopix.human-readable | 37 ++++++++++++ .../30-anonymous-third-order.bad.expected | 6 ++ .../30-anonymous-third-order.bad.typing.hopix | 1 + ...hird-order.bad.typing.hopix.human-readable | 5 ++ .../30-anonymous-third-order.good.expected | 1 + ...30-anonymous-third-order.good.typing.hopix | 1 + ...ird-order.good.typing.hopix.human-readable | 5 ++ .../03-Typing/31-constructor.bad.expected | 2 + .../03-Typing/31-constructor.bad.typing.hopix | 1 + ...onstructor.bad.typing.hopix.human-readable | 5 ++ .../03-Typing/31-constructor.good.expected | 3 + .../31-constructor.good.typing.hopix | 1 + ...nstructor.good.typing.hopix.human-readable | 5 ++ .../32-constructor-with-data.bad.expected | 6 ++ .../32-constructor-with-data.bad.typing.hopix | 1 + ...-with-data.bad.typing.hopix.human-readable | 5 ++ .../32-constructor-with-data.good.expected | 2 + ...32-constructor-with-data.good.typing.hopix | 1 + ...with-data.good.typing.hopix.human-readable | 5 ++ ...onstructor-with-multiple-data.bad.expected | 6 ++ ...ructor-with-multiple-data.bad.typing.hopix | 1 + ...tiple-data.bad.typing.hopix.human-readable | 3 + ...nstructor-with-multiple-data.good.expected | 1 + ...uctor-with-multiple-data.good.typing.hopix | 1 + ...iple-data.good.typing.hopix.human-readable | 3 + .../34-recursive-datatype.bad.expected | 6 ++ .../34-recursive-datatype.bad.typing.hopix | 1 + ...e-datatype.bad.typing.hopix.human-readable | 3 + .../34-recursive-datatype.good.expected | 1 + .../34-recursive-datatype.good.typing.hopix | 1 + ...-datatype.good.typing.hopix.human-readable | 3 + .../35-recursive-datatype-02.bad.expected | 6 ++ .../35-recursive-datatype-02.bad.typing.hopix | 1 + ...atatype-02.bad.typing.hopix.human-readable | 6 ++ .../35-recursive-datatype-02.good.expected | 2 + ...35-recursive-datatype-02.good.typing.hopix | 1 + ...tatype-02.good.typing.hopix.human-readable | 6 ++ ...-datatype-embedding-functions.bad.expected | 2 + ...atype-embedding-functions.bad.typing.hopix | 1 + ...-functions.bad.typing.hopix.human-readable | 4 ++ ...datatype-embedding-functions.good.expected | 1 + ...type-embedding-functions.good.typing.hopix | 1 + ...functions.good.typing.hopix.human-readable | 4 ++ .../37-pattern-matching-01.bad.expected | 2 + .../37-pattern-matching-01.bad.typing.hopix | 1 + ...atching-01.bad.typing.hopix.human-readable | 3 + .../37-pattern-matching-01.good.expected | 1 + .../37-pattern-matching-01.good.typing.hopix | 1 + ...tching-01.good.typing.hopix.human-readable | 3 + .../38-pattern-matching-02.bad.expected | 6 ++ .../38-pattern-matching-02.bad.typing.hopix | 1 + ...atching-02.bad.typing.hopix.human-readable | 3 + .../38-pattern-matching-02.good.expected | 1 + .../38-pattern-matching-02.good.typing.hopix | 1 + ...tching-02.good.typing.hopix.human-readable | 3 + .../39-pattern-matching-03.bad.expected | 2 + .../39-pattern-matching-03.bad.typing.hopix | 1 + ...atching-03.bad.typing.hopix.human-readable | 3 + .../39-pattern-matching-03.good.expected | 1 + .../39-pattern-matching-03.good.typing.hopix | 1 + ...tching-03.good.typing.hopix.human-readable | 3 + .../40-pattern-matching-04.bad.expected | 6 ++ .../40-pattern-matching-04.bad.typing.hopix | 1 + ...atching-04.bad.typing.hopix.human-readable | 3 + .../40-pattern-matching-04.good.expected | 1 + .../40-pattern-matching-04.good.typing.hopix | 1 + ...tching-04.good.typing.hopix.human-readable | 3 + .../41-pattern-matching-05.bad.expected | 6 ++ .../41-pattern-matching-05.bad.typing.hopix | 1 + ...atching-05.bad.typing.hopix.human-readable | 3 + .../41-pattern-matching-05.good.expected | 1 + .../41-pattern-matching-05.good.typing.hopix | 1 + ...tching-05.good.typing.hopix.human-readable | 3 + .../42-pattern-matching-06.bad.expected | 6 ++ .../42-pattern-matching-06.bad.typing.hopix | 1 + ...atching-06.bad.typing.hopix.human-readable | 3 + .../42-pattern-matching-06.good.expected | 1 + .../42-pattern-matching-06.good.typing.hopix | 1 + ...tching-06.good.typing.hopix.human-readable | 3 + .../43-pattern-matching-07.bad.expected | 6 ++ .../43-pattern-matching-07.bad.typing.hopix | 1 + ...atching-07.bad.typing.hopix.human-readable | 5 ++ .../43-pattern-matching-07.good.expected | 1 + .../43-pattern-matching-07.good.typing.hopix | 1 + ...tching-07.good.typing.hopix.human-readable | 5 ++ .../44-pattern-matching-08.bad.expected | 2 + .../44-pattern-matching-08.bad.typing.hopix | 1 + ...atching-08.bad.typing.hopix.human-readable | 5 ++ .../44-pattern-matching-08.good.expected | 1 + .../44-pattern-matching-08.good.typing.hopix | 1 + ...tching-08.good.typing.hopix.human-readable | 5 ++ .../45-pattern-matching-09.bad.expected | 2 + .../45-pattern-matching-09.bad.typing.hopix | 1 + ...atching-09.bad.typing.hopix.human-readable | 5 ++ .../45-pattern-matching-09.good.expected | 1 + .../45-pattern-matching-09.good.typing.hopix | 1 + ...tching-09.good.typing.hopix.human-readable | 5 ++ .../46-pattern-matching-10.bad.expected | 2 + .../46-pattern-matching-10.bad.typing.hopix | 1 + ...atching-10.bad.typing.hopix.human-readable | 5 ++ .../46-pattern-matching-10.good.expected | 1 + .../46-pattern-matching-10.good.typing.hopix | 1 + ...tching-10.good.typing.hopix.human-readable | 5 ++ .../47-pattern-matching-11.bad.expected | 2 + .../47-pattern-matching-11.bad.typing.hopix | 1 + ...atching-11.bad.typing.hopix.human-readable | 6 ++ .../47-pattern-matching-11.good.expected | 1 + .../47-pattern-matching-11.good.typing.hopix | 1 + ...tching-11.good.typing.hopix.human-readable | 6 ++ .../48-pattern-matching-12.bad.expected | 6 ++ .../48-pattern-matching-12.bad.typing.hopix | 1 + ...atching-12.bad.typing.hopix.human-readable | 1 + .../48-pattern-matching-12.good.expected | 1 + .../48-pattern-matching-12.good.typing.hopix | 1 + ...tching-12.good.typing.hopix.human-readable | 1 + .../49-pattern-matching-13.bad.expected | 6 ++ .../49-pattern-matching-13.bad.typing.hopix | 1 + ...atching-13.bad.typing.hopix.human-readable | 1 + .../49-pattern-matching-13.good.expected | 1 + .../49-pattern-matching-13.good.typing.hopix | 1 + ...tching-13.good.typing.hopix.human-readable | 1 + .../50-pattern-matching-14.bad.expected | 6 ++ .../50-pattern-matching-14.bad.typing.hopix | 1 + ...atching-14.bad.typing.hopix.human-readable | 1 + .../50-pattern-matching-14.good.expected | 1 + .../50-pattern-matching-14.good.typing.hopix | 1 + ...tching-14.good.typing.hopix.human-readable | 1 + flap/tests/03-Typing/51-ref.bad.expected | 6 ++ flap/tests/03-Typing/51-ref.bad.typing.hopix | 1 + .../51-ref.bad.typing.hopix.human-readable | 1 + flap/tests/03-Typing/51-ref.good.expected | 1 + flap/tests/03-Typing/51-ref.good.typing.hopix | 1 + .../51-ref.good.typing.hopix.human-readable | 1 + .../52-assign.bad.typing.hopix.human-readable | 4 ++ flap/tests/03-Typing/52-assign.good.expected | 2 + .../03-Typing/52-assign.good.typing.hopix | 1 + ...52-assign.good.typing.hopix.human-readable | 4 ++ flap/tests/03-Typing/53-read.bad.expected | 6 ++ flap/tests/03-Typing/53-read.bad.typing.hopix | 1 + .../53-read.bad.typing.hopix.human-readable | 4 ++ flap/tests/03-Typing/53-read.good.expected | 2 + .../tests/03-Typing/53-read.good.typing.hopix | 1 + .../53-read.good.typing.hopix.human-readable | 4 ++ flap/tests/03-Typing/54-sequence.bad.expected | 6 ++ .../03-Typing/54-sequence.bad.typing.hopix | 1 + ...4-sequence.bad.typing.hopix.human-readable | 5 ++ .../tests/03-Typing/54-sequence.good.expected | 2 + .../03-Typing/54-sequence.good.typing.hopix | 1 + ...-sequence.good.typing.hopix.human-readable | 5 ++ flap/tests/03-Typing/55-while.bad.expected | 6 ++ .../tests/03-Typing/55-while.bad.typing.hopix | 1 + .../55-while.bad.typing.hopix.human-readable | 7 +++ flap/tests/03-Typing/55-while.good.expected | 2 + .../03-Typing/55-while.good.typing.hopix | 1 + .../55-while.good.typing.hopix.human-readable | 7 +++ flap/tests/03-Typing/56-for.bad.expected | 6 ++ flap/tests/03-Typing/56-for.bad.typing.hopix | 1 + .../56-for.bad.typing.hopix.human-readable | 7 +++ flap/tests/03-Typing/56-for.good.expected | 2 + flap/tests/03-Typing/56-for.good.typing.hopix | 1 + .../56-for.good.typing.hopix.human-readable | 7 +++ flap/tests/Makefile | 6 +- jalons/jalon-3.pdf | Bin 0 -> 382805 bytes 339 files changed, 1101 insertions(+), 29 deletions(-) create mode 100644 flap/tests/03-Typing/01-int-literal.bad.expected create mode 100644 flap/tests/03-Typing/01-int-literal.bad.typing.hopix create mode 100644 flap/tests/03-Typing/01-int-literal.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/01-int-literal.good.expected create mode 100644 flap/tests/03-Typing/01-int-literal.good.typing.hopix create mode 100644 flap/tests/03-Typing/01-int-literal.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/02-arith-01.bad.expected create mode 100644 flap/tests/03-Typing/02-arith-01.bad.typing.hopix create mode 100644 flap/tests/03-Typing/02-arith-01.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/02-arith-01.good.expected create mode 100644 flap/tests/03-Typing/02-arith-01.good.typing.hopix create mode 100644 flap/tests/03-Typing/02-arith-01.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/03-arith-02.bad.expected create mode 100644 flap/tests/03-Typing/03-arith-02.bad.typing.hopix create mode 100644 flap/tests/03-Typing/03-arith-02.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/03-arith-02.good.expected create mode 100644 flap/tests/03-Typing/03-arith-02.good.typing.hopix create mode 100644 flap/tests/03-Typing/03-arith-02.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/04-arith-03.bad.expected create mode 100644 flap/tests/03-Typing/04-arith-03.bad.typing.hopix create mode 100644 flap/tests/03-Typing/04-arith-03.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/04-arith-03.good.expected create mode 100644 flap/tests/03-Typing/04-arith-03.good.typing.hopix create mode 100644 flap/tests/03-Typing/04-arith-03.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/06-arith-04.bad.expected create mode 100644 flap/tests/03-Typing/06-arith-04.bad.typing.hopix create mode 100644 flap/tests/03-Typing/06-arith-04.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/06-arith-04.good.expected create mode 100644 flap/tests/03-Typing/06-arith-04.good.typing.hopix create mode 100644 flap/tests/03-Typing/06-arith-04.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/07-arith-05.bad.expected create mode 100644 flap/tests/03-Typing/07-arith-05.bad.typing.hopix create mode 100644 flap/tests/03-Typing/07-arith-05.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/07-arith-05.good.expected create mode 100644 flap/tests/03-Typing/07-arith-05.good.typing.hopix create mode 100644 flap/tests/03-Typing/07-arith-05.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/08-char-literal.bad.expected create mode 100644 flap/tests/03-Typing/08-char-literal.bad.typing.hopix create mode 100644 flap/tests/03-Typing/08-char-literal.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/08-char-literal.good.expected create mode 100644 flap/tests/03-Typing/08-char-literal.good.typing.hopix create mode 100644 flap/tests/03-Typing/08-char-literal.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/09-char-string.bad.expected create mode 100644 flap/tests/03-Typing/09-char-string.bad.typing.hopix create mode 100644 flap/tests/03-Typing/09-char-string.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/09-char-string.good.expected create mode 100644 flap/tests/03-Typing/09-char-string.good.typing.hopix create mode 100644 flap/tests/03-Typing/09-char-string.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/10-local-definition.bad.expected create mode 100644 flap/tests/03-Typing/10-local-definition.bad.typing.hopix create mode 100644 flap/tests/03-Typing/10-local-definition.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/10-local-definition.good.expected create mode 100644 flap/tests/03-Typing/10-local-definition.good.typing.hopix create mode 100644 flap/tests/03-Typing/10-local-definition.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/11-function-definition.bad.expected create mode 100644 flap/tests/03-Typing/11-function-definition.bad.typing.hopix create mode 100644 flap/tests/03-Typing/11-function-definition.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/11-function-definition.good.expected create mode 100644 flap/tests/03-Typing/11-function-definition.good.typing.hopix create mode 100644 flap/tests/03-Typing/11-function-definition.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/12-rec-function-definition.bad.expected create mode 100644 flap/tests/03-Typing/12-rec-function-definition.bad.typing.hopix create mode 100644 flap/tests/03-Typing/12-rec-function-definition.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/12-rec-function-definition.good.expected create mode 100644 flap/tests/03-Typing/12-rec-function-definition.good.typing.hopix create mode 100644 flap/tests/03-Typing/12-rec-function-definition.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.expected create mode 100644 flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.typing.hopix create mode 100644 flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.expected create mode 100644 flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.typing.hopix create mode 100644 flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/14-binary-function.bad.expected create mode 100644 flap/tests/03-Typing/14-binary-function.bad.typing.hopix create mode 100644 flap/tests/03-Typing/14-binary-function.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/14-binary-function.good.expected create mode 100644 flap/tests/03-Typing/14-binary-function.good.typing.hopix create mode 100644 flap/tests/03-Typing/14-binary-function.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/14-binary-rec-function.bad.expected create mode 100644 flap/tests/03-Typing/14-binary-rec-function.bad.typing.hopix create mode 100644 flap/tests/03-Typing/14-binary-rec-function.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/14-binary-rec-function.good.expected create mode 100644 flap/tests/03-Typing/14-binary-rec-function.good.typing.hopix create mode 100644 flap/tests/03-Typing/14-binary-rec-function.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/15-binary-mutually-rec-function.bad.expected create mode 100644 flap/tests/03-Typing/15-binary-mutually-rec-function.bad.typing.hopix create mode 100644 flap/tests/03-Typing/15-binary-mutually-rec-function.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/15-binary-mutually-rec-function.good.expected create mode 100644 flap/tests/03-Typing/15-binary-mutually-rec-function.good.typing.hopix create mode 100644 flap/tests/03-Typing/15-binary-mutually-rec-function.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/16-polymorphic-function.bad.expected create mode 100644 flap/tests/03-Typing/16-polymorphic-function.bad.typing.hopix create mode 100644 flap/tests/03-Typing/16-polymorphic-function.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/16-polymorphic-function.good.expected create mode 100644 flap/tests/03-Typing/16-polymorphic-function.good.typing.hopix create mode 100644 flap/tests/03-Typing/16-polymorphic-function.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/17-polymorphic-binary-function.bad.expected create mode 100644 flap/tests/03-Typing/17-polymorphic-binary-function.bad.typing.hopix create mode 100644 flap/tests/03-Typing/17-polymorphic-binary-function.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/17-polymorphic-binary-function.good.expected create mode 100644 flap/tests/03-Typing/17-polymorphic-binary-function.good.typing.hopix create mode 100644 flap/tests/03-Typing/17-polymorphic-binary-function.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/18-polymorphic-recursive-function.bad.expected create mode 100644 flap/tests/03-Typing/18-polymorphic-recursive-function.bad.typing.hopix create mode 100644 flap/tests/03-Typing/18-polymorphic-recursive-function.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/18-polymorphic-recursive-function.good.expected create mode 100644 flap/tests/03-Typing/18-polymorphic-recursive-function.good.typing.hopix create mode 100644 flap/tests/03-Typing/18-polymorphic-recursive-function.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.expected create mode 100644 flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.typing.hopix create mode 100644 flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.expected create mode 100644 flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.typing.hopix create mode 100644 flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/20-polymorphic-binary-function.bad.expected create mode 100644 flap/tests/03-Typing/20-polymorphic-binary-function.bad.typing.hopix create mode 100644 flap/tests/03-Typing/20-polymorphic-binary-function.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/20-polymorphic-binary-function.good.expected create mode 100644 flap/tests/03-Typing/20-polymorphic-binary-function.good.typing.hopix create mode 100644 flap/tests/03-Typing/20-polymorphic-binary-function.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/21-record-01.bad.expected create mode 100644 flap/tests/03-Typing/21-record-01.bad.typing.hopix create mode 100644 flap/tests/03-Typing/21-record-01.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/21-record-01.good.expected create mode 100644 flap/tests/03-Typing/21-record-01.good.typing.hopix create mode 100644 flap/tests/03-Typing/21-record-01.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/22-polymorphic-record.bad.expected create mode 100644 flap/tests/03-Typing/22-polymorphic-record.bad.typing.hopix create mode 100644 flap/tests/03-Typing/22-polymorphic-record.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/22-polymorphic-record.good.expected create mode 100644 flap/tests/03-Typing/22-polymorphic-record.good.typing.hopix create mode 100644 flap/tests/03-Typing/22-polymorphic-record.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/23-polymorphic-record-02.bad.expected create mode 100644 flap/tests/03-Typing/23-polymorphic-record-02.bad.typing.hopix create mode 100644 flap/tests/03-Typing/23-polymorphic-record-02.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/23-polymorphic-record-02.good.expected create mode 100644 flap/tests/03-Typing/23-polymorphic-record-02.good.typing.hopix create mode 100644 flap/tests/03-Typing/23-polymorphic-record-02.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/24-record-proj.bad.expected create mode 100644 flap/tests/03-Typing/24-record-proj.bad.typing.hopix create mode 100644 flap/tests/03-Typing/24-record-proj.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/24-record-proj.good.expected create mode 100644 flap/tests/03-Typing/24-record-proj.good.typing.hopix create mode 100644 flap/tests/03-Typing/24-record-proj.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/25-polymorphic-record-proj.bad.expected create mode 100644 flap/tests/03-Typing/25-polymorphic-record-proj.bad.typing.hopix create mode 100644 flap/tests/03-Typing/25-polymorphic-record-proj.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/25-polymorphic-record-proj.good.expected create mode 100644 flap/tests/03-Typing/25-polymorphic-record-proj.good.typing.hopix create mode 100644 flap/tests/03-Typing/25-polymorphic-record-proj.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/26-function-over-polymorphic-record.bad.expected create mode 100644 flap/tests/03-Typing/26-function-over-polymorphic-record.bad.typing.hopix create mode 100644 flap/tests/03-Typing/26-function-over-polymorphic-record.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/26-function-over-polymorphic-record.good.expected create mode 100644 flap/tests/03-Typing/26-function-over-polymorphic-record.good.typing.hopix create mode 100644 flap/tests/03-Typing/26-function-over-polymorphic-record.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/27-function-in-record.bad.expected create mode 100644 flap/tests/03-Typing/27-function-in-record.bad.typing.hopix create mode 100644 flap/tests/03-Typing/27-function-in-record.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/27-function-in-record.good.expected create mode 100644 flap/tests/03-Typing/27-function-in-record.good.typing.hopix create mode 100644 flap/tests/03-Typing/27-function-in-record.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/28-anonymous-function.bad.expected create mode 100644 flap/tests/03-Typing/28-anonymous-function.bad.typing.hopix create mode 100644 flap/tests/03-Typing/28-anonymous-function.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/28-anonymous-function.good.expected create mode 100644 flap/tests/03-Typing/28-anonymous-function.good.typing.hopix create mode 100644 flap/tests/03-Typing/28-anonymous-function.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/29-anonymous-nary-functions.bad.expected create mode 100644 flap/tests/03-Typing/29-anonymous-nary-functions.bad.typing.hopix create mode 100644 flap/tests/03-Typing/29-anonymous-nary-functions.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/29-anonymous-nary-functions.good.expected create mode 100644 flap/tests/03-Typing/29-anonymous-nary-functions.good.typing.hopix create mode 100644 flap/tests/03-Typing/29-anonymous-nary-functions.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/30-anonymous-third-order.bad.expected create mode 100644 flap/tests/03-Typing/30-anonymous-third-order.bad.typing.hopix create mode 100644 flap/tests/03-Typing/30-anonymous-third-order.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/30-anonymous-third-order.good.expected create mode 100644 flap/tests/03-Typing/30-anonymous-third-order.good.typing.hopix create mode 100644 flap/tests/03-Typing/30-anonymous-third-order.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/31-constructor.bad.expected create mode 100644 flap/tests/03-Typing/31-constructor.bad.typing.hopix create mode 100644 flap/tests/03-Typing/31-constructor.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/31-constructor.good.expected create mode 100644 flap/tests/03-Typing/31-constructor.good.typing.hopix create mode 100644 flap/tests/03-Typing/31-constructor.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/32-constructor-with-data.bad.expected create mode 100644 flap/tests/03-Typing/32-constructor-with-data.bad.typing.hopix create mode 100644 flap/tests/03-Typing/32-constructor-with-data.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/32-constructor-with-data.good.expected create mode 100644 flap/tests/03-Typing/32-constructor-with-data.good.typing.hopix create mode 100644 flap/tests/03-Typing/32-constructor-with-data.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/33-constructor-with-multiple-data.bad.expected create mode 100644 flap/tests/03-Typing/33-constructor-with-multiple-data.bad.typing.hopix create mode 100644 flap/tests/03-Typing/33-constructor-with-multiple-data.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/33-constructor-with-multiple-data.good.expected create mode 100644 flap/tests/03-Typing/33-constructor-with-multiple-data.good.typing.hopix create mode 100644 flap/tests/03-Typing/33-constructor-with-multiple-data.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/34-recursive-datatype.bad.expected create mode 100644 flap/tests/03-Typing/34-recursive-datatype.bad.typing.hopix create mode 100644 flap/tests/03-Typing/34-recursive-datatype.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/34-recursive-datatype.good.expected create mode 100644 flap/tests/03-Typing/34-recursive-datatype.good.typing.hopix create mode 100644 flap/tests/03-Typing/34-recursive-datatype.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/35-recursive-datatype-02.bad.expected create mode 100644 flap/tests/03-Typing/35-recursive-datatype-02.bad.typing.hopix create mode 100644 flap/tests/03-Typing/35-recursive-datatype-02.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/35-recursive-datatype-02.good.expected create mode 100644 flap/tests/03-Typing/35-recursive-datatype-02.good.typing.hopix create mode 100644 flap/tests/03-Typing/35-recursive-datatype-02.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.expected create mode 100644 flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.typing.hopix create mode 100644 flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.expected create mode 100644 flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.typing.hopix create mode 100644 flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/37-pattern-matching-01.bad.expected create mode 100644 flap/tests/03-Typing/37-pattern-matching-01.bad.typing.hopix create mode 100644 flap/tests/03-Typing/37-pattern-matching-01.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/37-pattern-matching-01.good.expected create mode 100644 flap/tests/03-Typing/37-pattern-matching-01.good.typing.hopix create mode 100644 flap/tests/03-Typing/37-pattern-matching-01.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/38-pattern-matching-02.bad.expected create mode 100644 flap/tests/03-Typing/38-pattern-matching-02.bad.typing.hopix create mode 100644 flap/tests/03-Typing/38-pattern-matching-02.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/38-pattern-matching-02.good.expected create mode 100644 flap/tests/03-Typing/38-pattern-matching-02.good.typing.hopix create mode 100644 flap/tests/03-Typing/38-pattern-matching-02.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/39-pattern-matching-03.bad.expected create mode 100644 flap/tests/03-Typing/39-pattern-matching-03.bad.typing.hopix create mode 100644 flap/tests/03-Typing/39-pattern-matching-03.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/39-pattern-matching-03.good.expected create mode 100644 flap/tests/03-Typing/39-pattern-matching-03.good.typing.hopix create mode 100644 flap/tests/03-Typing/39-pattern-matching-03.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/40-pattern-matching-04.bad.expected create mode 100644 flap/tests/03-Typing/40-pattern-matching-04.bad.typing.hopix create mode 100644 flap/tests/03-Typing/40-pattern-matching-04.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/40-pattern-matching-04.good.expected create mode 100644 flap/tests/03-Typing/40-pattern-matching-04.good.typing.hopix create mode 100644 flap/tests/03-Typing/40-pattern-matching-04.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/41-pattern-matching-05.bad.expected create mode 100644 flap/tests/03-Typing/41-pattern-matching-05.bad.typing.hopix create mode 100644 flap/tests/03-Typing/41-pattern-matching-05.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/41-pattern-matching-05.good.expected create mode 100644 flap/tests/03-Typing/41-pattern-matching-05.good.typing.hopix create mode 100644 flap/tests/03-Typing/41-pattern-matching-05.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/42-pattern-matching-06.bad.expected create mode 100644 flap/tests/03-Typing/42-pattern-matching-06.bad.typing.hopix create mode 100644 flap/tests/03-Typing/42-pattern-matching-06.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/42-pattern-matching-06.good.expected create mode 100644 flap/tests/03-Typing/42-pattern-matching-06.good.typing.hopix create mode 100644 flap/tests/03-Typing/42-pattern-matching-06.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/43-pattern-matching-07.bad.expected create mode 100644 flap/tests/03-Typing/43-pattern-matching-07.bad.typing.hopix create mode 100644 flap/tests/03-Typing/43-pattern-matching-07.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/43-pattern-matching-07.good.expected create mode 100644 flap/tests/03-Typing/43-pattern-matching-07.good.typing.hopix create mode 100644 flap/tests/03-Typing/43-pattern-matching-07.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/44-pattern-matching-08.bad.expected create mode 100644 flap/tests/03-Typing/44-pattern-matching-08.bad.typing.hopix create mode 100644 flap/tests/03-Typing/44-pattern-matching-08.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/44-pattern-matching-08.good.expected create mode 100644 flap/tests/03-Typing/44-pattern-matching-08.good.typing.hopix create mode 100644 flap/tests/03-Typing/44-pattern-matching-08.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/45-pattern-matching-09.bad.expected create mode 100644 flap/tests/03-Typing/45-pattern-matching-09.bad.typing.hopix create mode 100644 flap/tests/03-Typing/45-pattern-matching-09.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/45-pattern-matching-09.good.expected create mode 100644 flap/tests/03-Typing/45-pattern-matching-09.good.typing.hopix create mode 100644 flap/tests/03-Typing/45-pattern-matching-09.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/46-pattern-matching-10.bad.expected create mode 100644 flap/tests/03-Typing/46-pattern-matching-10.bad.typing.hopix create mode 100644 flap/tests/03-Typing/46-pattern-matching-10.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/46-pattern-matching-10.good.expected create mode 100644 flap/tests/03-Typing/46-pattern-matching-10.good.typing.hopix create mode 100644 flap/tests/03-Typing/46-pattern-matching-10.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/47-pattern-matching-11.bad.expected create mode 100644 flap/tests/03-Typing/47-pattern-matching-11.bad.typing.hopix create mode 100644 flap/tests/03-Typing/47-pattern-matching-11.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/47-pattern-matching-11.good.expected create mode 100644 flap/tests/03-Typing/47-pattern-matching-11.good.typing.hopix create mode 100644 flap/tests/03-Typing/47-pattern-matching-11.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/48-pattern-matching-12.bad.expected create mode 100644 flap/tests/03-Typing/48-pattern-matching-12.bad.typing.hopix create mode 100644 flap/tests/03-Typing/48-pattern-matching-12.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/48-pattern-matching-12.good.expected create mode 100644 flap/tests/03-Typing/48-pattern-matching-12.good.typing.hopix create mode 100644 flap/tests/03-Typing/48-pattern-matching-12.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/49-pattern-matching-13.bad.expected create mode 100644 flap/tests/03-Typing/49-pattern-matching-13.bad.typing.hopix create mode 100644 flap/tests/03-Typing/49-pattern-matching-13.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/49-pattern-matching-13.good.expected create mode 100644 flap/tests/03-Typing/49-pattern-matching-13.good.typing.hopix create mode 100644 flap/tests/03-Typing/49-pattern-matching-13.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/50-pattern-matching-14.bad.expected create mode 100644 flap/tests/03-Typing/50-pattern-matching-14.bad.typing.hopix create mode 100644 flap/tests/03-Typing/50-pattern-matching-14.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/50-pattern-matching-14.good.expected create mode 100644 flap/tests/03-Typing/50-pattern-matching-14.good.typing.hopix create mode 100644 flap/tests/03-Typing/50-pattern-matching-14.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/51-ref.bad.expected create mode 100644 flap/tests/03-Typing/51-ref.bad.typing.hopix create mode 100644 flap/tests/03-Typing/51-ref.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/51-ref.good.expected create mode 100644 flap/tests/03-Typing/51-ref.good.typing.hopix create mode 100644 flap/tests/03-Typing/51-ref.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/52-assign.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/52-assign.good.expected create mode 100644 flap/tests/03-Typing/52-assign.good.typing.hopix create mode 100644 flap/tests/03-Typing/52-assign.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/53-read.bad.expected create mode 100644 flap/tests/03-Typing/53-read.bad.typing.hopix create mode 100644 flap/tests/03-Typing/53-read.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/53-read.good.expected create mode 100644 flap/tests/03-Typing/53-read.good.typing.hopix create mode 100644 flap/tests/03-Typing/53-read.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/54-sequence.bad.expected create mode 100644 flap/tests/03-Typing/54-sequence.bad.typing.hopix create mode 100644 flap/tests/03-Typing/54-sequence.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/54-sequence.good.expected create mode 100644 flap/tests/03-Typing/54-sequence.good.typing.hopix create mode 100644 flap/tests/03-Typing/54-sequence.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/55-while.bad.expected create mode 100644 flap/tests/03-Typing/55-while.bad.typing.hopix create mode 100644 flap/tests/03-Typing/55-while.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/55-while.good.expected create mode 100644 flap/tests/03-Typing/55-while.good.typing.hopix create mode 100644 flap/tests/03-Typing/55-while.good.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/56-for.bad.expected create mode 100644 flap/tests/03-Typing/56-for.bad.typing.hopix create mode 100644 flap/tests/03-Typing/56-for.bad.typing.hopix.human-readable create mode 100644 flap/tests/03-Typing/56-for.good.expected create mode 100644 flap/tests/03-Typing/56-for.good.typing.hopix create mode 100644 flap/tests/03-Typing/56-for.good.typing.hopix.human-readable create mode 100644 jalons/jalon-3.pdf diff --git a/cours/cours-parsing.pdf b/cours/cours-parsing.pdf index bd537b171119aba88d9db2e599ee188f17c2569a..65ca4a77f204cb960ef3fc485849285fbf648fe2 100644 GIT binary patch delta 133624 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 Q>&>?n%Gtw|PL-Ga~m|rASefhj7 zx9C1IK?%MwJ(9O|d3S0(Zxm6cr~Dg3Wk^iJ=)AfMJ-kdq^=+Sq&9|Iw_~W>J@BEK~ zrP_)2ue($TMtQJqjl%0BYqK717}k{vzTupfs(K^)Am`>)wPN{?&V4Mbr-Dh})MM^^&{^bQ$3*1_tRBZ+R*C zeEtm5Vb&bK6*?dw%^+3o#>uIwBkhg9eszU~_%Q5zY#wdO{b`}^N@5j%@=F)xIt4gf zrTS-TUm2p$XwECF>LX?CizEB>D`R>#KdLC0LMx1G1L)J1D?XBKV+m_;a2;VC43dwl z9Yabkiq2S5Gkj&In~NUls+V3YAS)bNX1*sxS`SKVM}~ks(E!*32LXEu0I&xctDQ95 ziFmTDXwTdJ_kW^x;J>nVo~XZ6+3QgvdMdfP5F)hUc%>1jn~W!P^-4!NcFZ=<&Q-mb z!=L4`Y)Pa-uVA)AkBwR6emigEcLHu76aRWEmaMNxZ~=p)Xr9#+Xl3}o@$jztH`@9` z*pz5b)wI;M43Y~HY(X9-WeYX*j=gAXvSjvt0EPaDE!etzB4hBilfAI=#4(fw>CV{s z)j1n;Q`oq%9AU4w*^2%*{=_0D)pecNkaMfH=U;iwByE7^03{rEL!mPK#O=^8WT4ub z8+)@n$HY!s{>NoRd__9tnVe#?_L)qpTxM}}f@bxSgx{K*nU-C6OBP1;XP;D|t1X?n z=d1FK>fnpaSe1z1Yzo}vhN8*l*u$*DNi=FoXeZj1TQ+vRzHVJ(dFj6 zU&vOib$+?a7t%y(h_iT^i%~muT}34#E%!xrmb~scou`a12NsWDr6^xDZayqiz$#cL z;SOfi9(mK%;Fzn`4=NOXytiUcfd%yHd;ISxKUpx4wHqJuf6CgGVdHmzrf%bXYWCA! zi=G%@RhtLoj_?5jcT(hGN~FAawi>h-@CXejp(>yb_4u0~SQH9U4y`6s+%9WsP?*&D zD+Piz(`#_(a$^NSb<8|u3{Db<{r;qJlH?hM!NJ`ZK-7*YcGUdx8PRBQ=Zt_Hp86x0 z!{oDhzZ90*lhJ(N>uJ`1W?>->%=#xRvgztVQBU|eqdrDF_Dp9g$9Lpt@dp4#^9E%- zO79f(PV)YUXjxD(BfbMJ_svG`k)FS>xcxi;+zbYtz0F zjN>_B3?WQM^U=gd$1_VXcTKWlfe>p(|GL^us}-~BNT{X5k-LY$A<8A&CD}yoAl&3 zZ|Jf=R#Y!L>z@aK-=MQMqS9%ITFO!iSoiyimo_77m7{>&z`XW~-K$MWt$CSS^}fX> zSQSKd?Q(Kwx*z3USk`txB_ZQ*!+C0T?<%9Oq$7Ys&r!oO{A^q^-9< z^uc$FZQP>Wp{B0GUE+?Ri-)&NZ7)~s4@xkHGB>zMca3agvZ4JuIFz%H_i-FjIQ>u0tZE&{UPItpg@ z^E+a?9h~pn8$1K?9c>63$x<8U?u4h0BWq!k$Z1aLoCl|IeZcbrqITM7i;$=tS11V( zwM$VrIO;8u(C;Di?(iJ-<5%aH{FAiHs&nHeKwlSV%Z^DYUXUOX70GdT)k?W|pfM45 zu#=dlA?c0`=Q;NM#Akc7M;GAxx+!Bx)MM8X5FSES5RE@#T*E{A?)d6A8^6=im}DPj zXZJs{I~)}gLuZ|itZPVAk~y3)SS`w)bgH_Xv251gfuex8UD?diHHR&$vd4VH&X7gh z;gj!BekprH;6^Uvkp@N``Yc107A6$BIAfj`hL-L)W>hiy_CTt-D@?8wAM>DWm}PTy z&o`0+?J84+NiD}1iz2UUuMD^Y4nqM}vDC1lm9_eWp>^adGWPYWqO@w*vnxj^(qkyu zJC{5DbTq0LyK$^j+>sgcDEOd7;YeA6w893YoBUEnP-VrV6@7{1>e7V@Bqfr3;w{Y&Q@MJzJj0$T8-tAmnH9*2W1e@5Ng-)~(RwfuTQv~Tx7D|>Wn@H)*R%kVlL>KF{gmsH^WR}KC*rOyKhG4L{s zR{^=-e>j#CsMgktmlGpSFgRYpx3k?_Hh>+xaaN%+z^NmP7PPdA8@Zo&HI6SY@6+wo zcE1yDY>1@OckQ!2lXFp3=thE|JqSFYrNv0 zbGB3M33I3dWw9x0QsKScc_Q7nov=F?{}{}Z0Y`*Pobu^V2ED$$K1<_meFl+(=iS|? zT$jFu>s-h5Yeioc&?*6(DSW+7p}q2hH#M3(W^F z18jaT%q_s?d;Vebvxw)#p4faTSXKLIS)`IiY(VT+{v!n407~Nm7G8)M@$skNwo)22R)jtWpuM z-zigg13x@B+%?%`>d52~MM|^vdS+dG?ww(voPc`~tMlr%>8P%sj3NrIReBuhv_~{5@Kd4vh-z zTu!8H4S0udpT_g^cC%+(6*_K1bthOyE%k^Ov8*jA60Iy9ou z)${^c-ZPECVf$%&o>bVn^>v#p_YG&kJvU(UX_j$Jvp+QSCnb98Z)mhknZ6Qje0Vm4PdN z7piCk`-R_!yT-4we)a23`oVjp6dFXCnfW36pUdMtXu2SJ1P?gmv|Aj!7!UsNaPY4F zyEYX3k9KNOLuOSzmcUV=gs+rEgv4zJ&n_LhO+?Da3w$*&Z0cVkJ~S>f@H6u zW->Oo`l#FKJ&hsk|26Qdh-W<&V+!u9cC<0y44x1AemRleDgf7a#R}F3dYSm=R}W;V z>Q28b)?WrNH(5DHg+=mhrNPK>OT9N~&7Q9sQuo6QH@^lD>`HC|&o`jwp*3b!OZEn{;r@F<@4XC2EpC54*|O1m*%GA*c}Sc$b?aczeyTDFrWID)^sP0+f+^+s4 zMHCVnrV+l`R4DNlE{fRXa9gW3u_ZJKJk;C#JU@gyr_uc1$wBc;1!7BifJ!h6Wi* zJF1M^U1)KzDPO~?(|#*;OQPgYG;{p8j|s)ws#GyIjC`qZEDz-o_+PKDgbeIOyxb~| z_6WSgWBu7{g+gW!SEQp6JA|n%F`qbhsz022>J#UV*osNUvj<=?yE!eQ#Lx=fN1aRx zF90rPQ21@8*T!eKX6OogxbIP$sl+Yd)DD1j*NY4XNcZPZl%$?KWh2lORwmu^F!R#n z1XmibQ?mo$L@~b4pmU_m8a6q^RxMz zhlA#AOoNoVnT1q(g#>R*NzGTfEu$wHFFkGE(fc(7x)`;n!TJeh6hlZ zAo_%gqwF9DcecM!8t^N53{o@b8IT?l*=1--mi*ldd%YzR7*KOFqbjgw`q6X|;u;*; z2NM0*WyMZ=om+-jzm`lTSL-$|BbOZH8caGOw-2?JoqA@A8_T+si;7hQ*NkHP+C&JFn+)8v! zouHDR@i5+YQbsXU9~Mg)Bb;RK(;przY`Tmpjj7!e*N)3^ zOwfu9LTl>$Hr6Y_4z<80k^LL%?9kANFJ1?6bc@BpbH)%wjGYN43-A?jm2~k43!^sH zj@)+{C58#^C#{ADd)VI+k$LQ2JXrcUeLtC9`X+*KAbE+P(u)W}o)KQU*gF$7@oz-BDXE)qky%5_n$) zwL5~U)*ZtdZ%6GII~(4 z9Gr_uGEjHvA%z~^k=CzV{Qkh~_Iv?npTCh3DbvH`pJV$~V|(*Z&GlQ+5>KnL)cx`J z+wM?x#(fmB22e7ld^5-7qlp|tqkSwL+Uj?XlwaH^0#KL{A^i9B6A)@F^nb*lQ{ZsU~4;b1**8{2EKhV1b zIt<~zuZ-eu0aMC&GBNL5-wexxw{Qfp2vNLO_Z~5nG-@v!=f56rdnfNVExg1Vp*)_4 zknbkIkx}qpa_@>j$w?JX)qKJ{qb1p8Ue0c(C57My=ilgsw8b`GPK<%WtH9jHkRAp z{J$MT$M4d3h)K`VB})J>>1};%435wj_L;V;CHRLm5}&v^Yl-v1H#aCWXk^m!!2jii0k??A~Jx=7{*+;8*i5lHjC2hzN{f6~0_ z)O#Z)J)P^C6ygpjMD_nxftvySnyeVrt9jZ^8+{K$!Q_jyeDq@w=Y=|3`qp&%lYyu?QrebP6_~ zp9qv=8Zf2%IwNQi@jTnn!4^ku**98yQW%fgkYVKDT;)bX7Hb>FPF`d`#$hQ8)*j3i(DF0 z%=n@0+gX}?IeD@FlI{rZdm<*ePV9F%(isB7NA?6=+q0V}CCTR31Ascu))OT$I2EbM z&be=|BntquSb2R=xfW7gMvoJ-1fQkNOaP(X9qNM4Xz)K$yGTa6j4;35qqF{RZH7kM z)D>G!tBR}h9*yDe9$GDga~zC!^Ai5E#XOBJJQZ01HAhf7Xdf0BKTS7)dZzU=Z4Ptv z_$<{SoP03^lW&rRVDbZ;UEn899!c=fDWaaj`2WVq!@_Jui?{36K{$C#k*t$9w$2pi zJ3sJOI@17jU*iwD-@40y(QCnVUbf8+P(p(?03|eN^IuAc0w17+JonvamxvEQdti_H zB7bz}i#{Q(C45M~VGZ;f&AdRrF}DWv8&)++b9Bp3{RZLccn|crP%%ISg#%O&3P1(* zN&HO(aTgx5T?leGM|yAa3r7~8NDLRX^Hc6C_{$70EMx<%2bUl+nBHg=PBK-is1_l@ z8`*jKHW!N=0Sv@?F`5s^hdkr=B-1`>qx=6fbI_EP(lUq7W?p*czHxNeH1Q^@;vNv~ zRevZLfOz(dL}q!mcZW`o3?ZI9;U~`?W-t*%4lW_cPU|XtDBuByS3`NW9)wB{nI5zxPEqwRn)rZVbfnPtI7FDK$MmZ@N-PRXsOe5F(=YlF@u5?iz9{d&7rk;7q^&~! zfO&S>&-(uf22nkMK{=EWahwRxvgLhzz+*&Ty>{aLU7~?=rZaMwMPFm#a3~EBMA6Hf z1oBcn+|!?ZQ#Af2?~ElOKrMLwjT$;fE7&n)Qh7JQ*!|gX&zHn0+{I(nptcC}TJ
miBGC9ZI0ntkzm=FafGB^n1K86tKyk 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
  • >0CMaV>u=}Rmq`-y=D_O*BX^U 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 a06&Q3$4GJu2*TMJC;Wthg1Mc=iT?voLL;yM delta 134704 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 Yx0&Ol81(orgv2C7aM{_Fw3KoG2k_51IsgCw diff --git a/flap/src/hopix/hopixTypes.ml b/flap/src/hopix/hopixTypes.ml index dcf0e64..5301b16 100644 --- a/flap/src/hopix/hopixTypes.ml +++ b/flap/src/hopix/hopixTypes.ml @@ -3,8 +3,6 @@ open HopixASTHelper let type_error = Error.error "typechecking" -type variable = type_variable - type aty = | ATyVar of type_variable | ATyCon of type_constructor * aty list @@ -82,12 +80,6 @@ let tvar x = let ( --> ) tys ty = List.fold_left (fun ty aty -> ATyArrow (aty, ty)) ty (List.rev tys) -exception NotAFunction - -let output_type_of_function = function - | ATyArrow (_, ty) -> ty - | _ -> raise NotAFunction - let constant x = TCon x, ATyCon (TCon x, []) let tcunit, hunit = constant "unit" let tcbool, hbool = constant "bool" @@ -98,8 +90,6 @@ let tcchar, hchar = constant "char" let tcref = TCon "mut" let href ty = ATyCon (tcref, [ty]) -exception NotAReference - let type_error_wrong_shape shape pos given = type_error pos (Printf.sprintf @@ -249,7 +239,7 @@ let free_type_variables_env_values { values; _ } = TypeVariableSet.empty values -let generalize_type_scheme env aty = +let generalize_type env aty = let open TypeVariableSet in let free_aty = free_type_variables aty in let free_env = free_type_variables_env_values env in diff --git a/flap/src/hopix/hopixTypes.mli b/flap/src/hopix/hopixTypes.mli index 981d471..fe7f402 100644 --- a/flap/src/hopix/hopixTypes.mli +++ b/flap/src/hopix/hopixTypes.mli @@ -1,23 +1,51 @@ +(** {1 Internal Types} *) + +(** This module defines an (OCaml) type of (Hopix) types as manipulated by the + typechecker. Such {i internal} types differ from the source-level {i + external} types defined in {! HopixAST} in that they are not annotated with + source-level positions. + + In a more realistic compiler, the distance between internal and external + types would be greater. *) + open HopixAST -(** Abstract syntax for types. - - The following internal syntax for types is the same as the one for the types - [ty] defined in {!HopixAST} except that all positions have been erased. *) +(** Internal types. *) type aty = | ATyVar of type_variable | ATyCon of type_constructor * aty list | ATyTuple of aty list | ATyArrow of aty * aty +(** Internal type schemes. *) type aty_scheme = Scheme of type_variable list * aty +(** {2 Error management} *) + +val type_error : Position.t -> string -> 'a + +(** {2 Utility functions} *) + val string_of_aty : aty -> string val monomorphic_type_scheme : aty -> aty_scheme val instantiate_type_scheme : aty_scheme -> aty list -> aty +(** {3 Type construction and destruction} *) + +val hunit : aty +val hint : aty +val hbool : aty +val hstring : aty +val hchar : aty +val hprod : aty list -> aty +val href : aty -> aty + +(** The type of destructuring functions, which receive a type and destruct it + into its constituents. Such functions fail by raising an exception if the + type is not of the expected shape, e.g., [destruct_function_type (ATyVar x)] + always raise an exception. *) type 'res destruction_fun = Position.t -> aty -> 'res val destruct_function_type : (aty * aty) destruction_fun @@ -30,6 +58,8 @@ val destruct_constructed_type : (type_constructor * aty list) destruction_fun val destruct_reference_type : aty destruction_fun +(** {2 Typing Contexts} *) + type typing_environment val initial_typing_environment : unit -> typing_environment @@ -42,6 +72,8 @@ val bind_type_variable : val bind_type_variables : Position.t -> typing_environment -> type_variable list -> typing_environment +(** [internalize_ty env ety] internalizes the external type [ety]. It signals an + error when [ety] is not well-formed in [env]. *) val internalize_ty : typing_environment -> ty Position.located -> aty type binding = @@ -79,16 +111,6 @@ val bind_type_definition : type_constructor -> type_variable list -> type_definition -> typing_environment -> typing_environment -val type_error : Position.t -> string -> 'a - -val hunit : aty -val hint : aty -val hbool : aty -val hstring : aty -val hchar : aty -val hprod : aty list -> aty -val href : aty -> aty - -val generalize_type_scheme : typing_environment -> aty -> aty_scheme - val string_of_typing_environment : typing_environment -> string + +val generalize_type : typing_environment -> aty -> aty_scheme diff --git a/flap/tests/03-Typing/01-int-literal.bad.expected b/flap/tests/03-Typing/01-int-literal.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/01-int-literal.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/01-int-literal.bad.typing.hopix b/flap/tests/03-Typing/01-int-literal.bad.typing.hopix new file mode 100644 index 0000000..248a2c2 --- /dev/null +++ b/flap/tests/03-Typing/01-int-literal.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Literal((value(LInt 42))(position((start_p(""1 0 14))(end_p(""1 0 16)))))))(position((start_p(""1 0 14))(end_p(""1 0 16)))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(SimpleValue(((value(Id y))(position((start_p(""2 17 21))(end_p(""2 17 22)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""2 17 25))(end_p(""2 17 31)))))))(position((start_p(""2 17 25))(end_p(""2 17 31))))))((value(Literal((value(LInt -42))(position((start_p(""2 17 34))(end_p(""2 17 37)))))))(position((start_p(""2 17 34))(end_p(""2 17 37)))))))))(position((start_p(""2 17 17))(end_p(""2 17 37)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/01-int-literal.bad.typing.hopix.human-readable b/flap/tests/03-Typing/01-int-literal.bad.typing.hopix.human-readable new file mode 100644 index 0000000..a903fb8 --- /dev/null +++ b/flap/tests/03-Typing/01-int-literal.bad.typing.hopix.human-readable @@ -0,0 +1,2 @@ +let x : int = 42 +let y : string = -42 \ No newline at end of file diff --git a/flap/tests/03-Typing/01-int-literal.good.expected b/flap/tests/03-Typing/01-int-literal.good.expected new file mode 100644 index 0000000..ac42051 --- /dev/null +++ b/flap/tests/03-Typing/01-int-literal.good.expected @@ -0,0 +1,2 @@ +x : int +y : int diff --git a/flap/tests/03-Typing/01-int-literal.good.typing.hopix b/flap/tests/03-Typing/01-int-literal.good.typing.hopix new file mode 100644 index 0000000..a9c4bbf --- /dev/null +++ b/flap/tests/03-Typing/01-int-literal.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Literal((value(LInt 42))(position((start_p(""1 0 14))(end_p(""1 0 16)))))))(position((start_p(""1 0 14))(end_p(""1 0 16)))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(SimpleValue(((value(Id y))(position((start_p(""2 17 21))(end_p(""2 17 22)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""2 17 25))(end_p(""2 17 28)))))))(position((start_p(""2 17 25))(end_p(""2 17 28))))))((value(Literal((value(LInt -42))(position((start_p(""2 17 31))(end_p(""2 17 34)))))))(position((start_p(""2 17 31))(end_p(""2 17 34)))))))))(position((start_p(""2 17 17))(end_p(""2 17 34)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/01-int-literal.good.typing.hopix.human-readable b/flap/tests/03-Typing/01-int-literal.good.typing.hopix.human-readable new file mode 100644 index 0000000..c0c128b --- /dev/null +++ b/flap/tests/03-Typing/01-int-literal.good.typing.hopix.human-readable @@ -0,0 +1,2 @@ +let x : int = 42 +let y : int = -42 \ No newline at end of file diff --git a/flap/tests/03-Typing/02-arith-01.bad.expected b/flap/tests/03-Typing/02-arith-01.bad.expected new file mode 100644 index 0000000..c091cc2 --- /dev/null +++ b/flap/tests/03-Typing/02-arith-01.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + string diff --git a/flap/tests/03-Typing/02-arith-01.bad.typing.hopix b/flap/tests/03-Typing/02-arith-01.bad.typing.hopix new file mode 100644 index 0000000..9f82593 --- /dev/null +++ b/flap/tests/03-Typing/02-arith-01.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LString foo))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 14))(end_p(""1 0 23)))))))))(position((start_p(""1 0 0))(end_p(""1 0 23)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/02-arith-01.bad.typing.hopix.human-readable b/flap/tests/03-Typing/02-arith-01.bad.typing.hopix.human-readable new file mode 100644 index 0000000..3824630 --- /dev/null +++ b/flap/tests/03-Typing/02-arith-01.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 1 + "foo" \ No newline at end of file diff --git a/flap/tests/03-Typing/02-arith-01.good.expected b/flap/tests/03-Typing/02-arith-01.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/02-arith-01.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/02-arith-01.good.typing.hopix b/flap/tests/03-Typing/02-arith-01.good.typing.hopix new file mode 100644 index 0000000..8706075 --- /dev/null +++ b/flap/tests/03-Typing/02-arith-01.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))))(position((start_p(""1 0 0))(end_p(""1 0 19)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/02-arith-01.good.typing.hopix.human-readable b/flap/tests/03-Typing/02-arith-01.good.typing.hopix.human-readable new file mode 100644 index 0000000..5070776 --- /dev/null +++ b/flap/tests/03-Typing/02-arith-01.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 1 + 1 \ No newline at end of file diff --git a/flap/tests/03-Typing/03-arith-02.bad.expected b/flap/tests/03-Typing/03-arith-02.bad.expected new file mode 100644 index 0000000..fa86d59 --- /dev/null +++ b/flap/tests/03-Typing/03-arith-02.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + char diff --git a/flap/tests/03-Typing/03-arith-02.bad.typing.hopix b/flap/tests/03-Typing/03-arith-02.bad.typing.hopix new file mode 100644 index 0000000..ca0ce09 --- /dev/null +++ b/flap/tests/03-Typing/03-arith-02.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LChar a))(position((start_p(""1 0 18))(end_p(""1 0 21)))))))(position((start_p(""1 0 18))(end_p(""1 0 21)))))))(position((start_p(""1 0 14))(end_p(""1 0 21)))))))))(position((start_p(""1 0 0))(end_p(""1 0 21)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/03-arith-02.bad.typing.hopix.human-readable b/flap/tests/03-Typing/03-arith-02.bad.typing.hopix.human-readable new file mode 100644 index 0000000..ec20d47 --- /dev/null +++ b/flap/tests/03-Typing/03-arith-02.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 1 * 'a' \ No newline at end of file diff --git a/flap/tests/03-Typing/03-arith-02.good.expected b/flap/tests/03-Typing/03-arith-02.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/03-arith-02.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/03-arith-02.good.typing.hopix b/flap/tests/03-Typing/03-arith-02.good.typing.hopix new file mode 100644 index 0000000..b89b997 --- /dev/null +++ b/flap/tests/03-Typing/03-arith-02.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))))(position((start_p(""1 0 0))(end_p(""1 0 19)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/03-arith-02.good.typing.hopix.human-readable b/flap/tests/03-Typing/03-arith-02.good.typing.hopix.human-readable new file mode 100644 index 0000000..c1d6359 --- /dev/null +++ b/flap/tests/03-Typing/03-arith-02.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 1 * 2 \ No newline at end of file diff --git a/flap/tests/03-Typing/04-arith-03.bad.expected b/flap/tests/03-Typing/04-arith-03.bad.expected new file mode 100644 index 0000000..fa86d59 --- /dev/null +++ b/flap/tests/03-Typing/04-arith-03.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + char diff --git a/flap/tests/03-Typing/04-arith-03.bad.typing.hopix b/flap/tests/03-Typing/04-arith-03.bad.typing.hopix new file mode 100644 index 0000000..119761b --- /dev/null +++ b/flap/tests/03-Typing/04-arith-03.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 18))(end_p(""1 0 19)))))()))(position((start_p(""1 0 18))(end_p(""1 0 19)))))((value(Literal((value(LChar a))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 20))(end_p(""1 0 21)))))))(position((start_p(""1 0 20))(end_p(""1 0 21)))))))(position((start_p(""1 0 14))(end_p(""1 0 21)))))))))(position((start_p(""1 0 0))(end_p(""1 0 21)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/04-arith-03.bad.typing.hopix.human-readable b/flap/tests/03-Typing/04-arith-03.bad.typing.hopix.human-readable new file mode 100644 index 0000000..a53568c --- /dev/null +++ b/flap/tests/03-Typing/04-arith-03.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 'a' - 2 \ No newline at end of file diff --git a/flap/tests/03-Typing/04-arith-03.good.expected b/flap/tests/03-Typing/04-arith-03.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/04-arith-03.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/04-arith-03.good.typing.hopix b/flap/tests/03-Typing/04-arith-03.good.typing.hopix new file mode 100644 index 0000000..a39b41f --- /dev/null +++ b/flap/tests/03-Typing/04-arith-03.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))))(position((start_p(""1 0 0))(end_p(""1 0 19)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/04-arith-03.good.typing.hopix.human-readable b/flap/tests/03-Typing/04-arith-03.good.typing.hopix.human-readable new file mode 100644 index 0000000..b64a54d --- /dev/null +++ b/flap/tests/03-Typing/04-arith-03.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 1 - 2 \ No newline at end of file diff --git a/flap/tests/03-Typing/06-arith-04.bad.expected b/flap/tests/03-Typing/06-arith-04.bad.expected new file mode 100644 index 0000000..fa86d59 --- /dev/null +++ b/flap/tests/03-Typing/06-arith-04.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + char diff --git a/flap/tests/03-Typing/06-arith-04.bad.typing.hopix b/flap/tests/03-Typing/06-arith-04.bad.typing.hopix new file mode 100644 index 0000000..192968e --- /dev/null +++ b/flap/tests/03-Typing/06-arith-04.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 18))(end_p(""1 0 19)))))()))(position((start_p(""1 0 18))(end_p(""1 0 19)))))((value(Literal((value(LChar a))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))((value(Literal((value(LChar a))(position((start_p(""1 0 20))(end_p(""1 0 23)))))))(position((start_p(""1 0 20))(end_p(""1 0 23)))))))(position((start_p(""1 0 14))(end_p(""1 0 23)))))))))(position((start_p(""1 0 0))(end_p(""1 0 23)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/06-arith-04.bad.typing.hopix.human-readable b/flap/tests/03-Typing/06-arith-04.bad.typing.hopix.human-readable new file mode 100644 index 0000000..2f7a076 --- /dev/null +++ b/flap/tests/03-Typing/06-arith-04.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 'a' / 'a' \ No newline at end of file diff --git a/flap/tests/03-Typing/06-arith-04.good.expected b/flap/tests/03-Typing/06-arith-04.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/06-arith-04.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/06-arith-04.good.typing.hopix b/flap/tests/03-Typing/06-arith-04.good.typing.hopix new file mode 100644 index 0000000..ee16791 --- /dev/null +++ b/flap/tests/03-Typing/06-arith-04.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))))(position((start_p(""1 0 0))(end_p(""1 0 19)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/06-arith-04.good.typing.hopix.human-readable b/flap/tests/03-Typing/06-arith-04.good.typing.hopix.human-readable new file mode 100644 index 0000000..d0196b8 --- /dev/null +++ b/flap/tests/03-Typing/06-arith-04.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 1 / 2 \ No newline at end of file diff --git a/flap/tests/03-Typing/07-arith-05.bad.expected b/flap/tests/03-Typing/07-arith-05.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/07-arith-05.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/07-arith-05.bad.typing.hopix b/flap/tests/03-Typing/07-arith-05.bad.typing.hopix new file mode 100644 index 0000000..a327993 --- /dev/null +++ b/flap/tests/03-Typing/07-arith-05.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""1 0 8))(end_p(""1 0 14)))))))(position((start_p(""1 0 8))(end_p(""1 0 14))))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 31))(end_p(""1 0 32)))))()))(position((start_p(""1 0 31))(end_p(""1 0 32)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 23))(end_p(""1 0 24)))))()))(position((start_p(""1 0 23))(end_p(""1 0 24)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 19))(end_p(""1 0 20)))))()))(position((start_p(""1 0 19))(end_p(""1 0 20)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 17))(end_p(""1 0 18)))))))(position((start_p(""1 0 17))(end_p(""1 0 18)))))))(position((start_p(""1 0 17))(end_p(""1 0 18)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 21))(end_p(""1 0 22)))))))(position((start_p(""1 0 21))(end_p(""1 0 22)))))))(position((start_p(""1 0 17))(end_p(""1 0 22)))))))(position((start_p(""1 0 17))(end_p(""1 0 22)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 27))(end_p(""1 0 28)))))()))(position((start_p(""1 0 27))(end_p(""1 0 28)))))((value(Literal((value(LInt 3))(position((start_p(""1 0 25))(end_p(""1 0 26)))))))(position((start_p(""1 0 25))(end_p(""1 0 26)))))))(position((start_p(""1 0 25))(end_p(""1 0 26)))))((value(Literal((value(LInt 5))(position((start_p(""1 0 29))(end_p(""1 0 30)))))))(position((start_p(""1 0 29))(end_p(""1 0 30)))))))(position((start_p(""1 0 25))(end_p(""1 0 30)))))))(position((start_p(""1 0 17))(end_p(""1 0 30)))))))(position((start_p(""1 0 17))(end_p(""1 0 30)))))((value(Literal((value(LInt 6))(position((start_p(""1 0 33))(end_p(""1 0 34)))))))(position((start_p(""1 0 33))(end_p(""1 0 34)))))))(position((start_p(""1 0 17))(end_p(""1 0 34)))))))))(position((start_p(""1 0 0))(end_p(""1 0 34)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/07-arith-05.bad.typing.hopix.human-readable b/flap/tests/03-Typing/07-arith-05.bad.typing.hopix.human-readable new file mode 100644 index 0000000..4b32389 --- /dev/null +++ b/flap/tests/03-Typing/07-arith-05.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : string = 1 / 2 + 3 * 5 - 6 \ No newline at end of file diff --git a/flap/tests/03-Typing/07-arith-05.good.expected b/flap/tests/03-Typing/07-arith-05.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/07-arith-05.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/07-arith-05.good.typing.hopix b/flap/tests/03-Typing/07-arith-05.good.typing.hopix new file mode 100644 index 0000000..0a2b24b --- /dev/null +++ b/flap/tests/03-Typing/07-arith-05.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 28))(end_p(""1 0 29)))))()))(position((start_p(""1 0 28))(end_p(""1 0 29)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 20))(end_p(""1 0 21)))))()))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 24))(end_p(""1 0 25)))))()))(position((start_p(""1 0 24))(end_p(""1 0 25)))))((value(Literal((value(LInt 3))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 22))(end_p(""1 0 23)))))((value(Literal((value(LInt 5))(position((start_p(""1 0 26))(end_p(""1 0 27)))))))(position((start_p(""1 0 26))(end_p(""1 0 27)))))))(position((start_p(""1 0 22))(end_p(""1 0 27)))))))(position((start_p(""1 0 14))(end_p(""1 0 27)))))))(position((start_p(""1 0 14))(end_p(""1 0 27)))))((value(Literal((value(LInt 6))(position((start_p(""1 0 30))(end_p(""1 0 31)))))))(position((start_p(""1 0 30))(end_p(""1 0 31)))))))(position((start_p(""1 0 14))(end_p(""1 0 31)))))))))(position((start_p(""1 0 0))(end_p(""1 0 31)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/07-arith-05.good.typing.hopix.human-readable b/flap/tests/03-Typing/07-arith-05.good.typing.hopix.human-readable new file mode 100644 index 0000000..c026fcd --- /dev/null +++ b/flap/tests/03-Typing/07-arith-05.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = 1 / 2 + 3 * 5 - 6 \ No newline at end of file diff --git a/flap/tests/03-Typing/08-char-literal.bad.expected b/flap/tests/03-Typing/08-char-literal.bad.expected new file mode 100644 index 0000000..fa86d59 --- /dev/null +++ b/flap/tests/03-Typing/08-char-literal.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + char diff --git a/flap/tests/03-Typing/08-char-literal.bad.typing.hopix b/flap/tests/03-Typing/08-char-literal.bad.typing.hopix new file mode 100644 index 0000000..bdff1b5 --- /dev/null +++ b/flap/tests/03-Typing/08-char-literal.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id c))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Literal((value(LChar a))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))))(position((start_p(""1 0 0))(end_p(""1 0 17)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/08-char-literal.bad.typing.hopix.human-readable b/flap/tests/03-Typing/08-char-literal.bad.typing.hopix.human-readable new file mode 100644 index 0000000..a4089fd --- /dev/null +++ b/flap/tests/03-Typing/08-char-literal.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let c : int = 'a' \ No newline at end of file diff --git a/flap/tests/03-Typing/08-char-literal.good.expected b/flap/tests/03-Typing/08-char-literal.good.expected new file mode 100644 index 0000000..c5972d9 --- /dev/null +++ b/flap/tests/03-Typing/08-char-literal.good.expected @@ -0,0 +1 @@ +c : char diff --git a/flap/tests/03-Typing/08-char-literal.good.typing.hopix b/flap/tests/03-Typing/08-char-literal.good.typing.hopix new file mode 100644 index 0000000..bd833ba --- /dev/null +++ b/flap/tests/03-Typing/08-char-literal.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id c))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon char)()))(position((start_p(""1 0 8))(end_p(""1 0 12)))))))(position((start_p(""1 0 8))(end_p(""1 0 12))))))((value(Literal((value(LChar a))(position((start_p(""1 0 15))(end_p(""1 0 18)))))))(position((start_p(""1 0 15))(end_p(""1 0 18)))))))))(position((start_p(""1 0 0))(end_p(""1 0 18)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/08-char-literal.good.typing.hopix.human-readable b/flap/tests/03-Typing/08-char-literal.good.typing.hopix.human-readable new file mode 100644 index 0000000..feea91c --- /dev/null +++ b/flap/tests/03-Typing/08-char-literal.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let c : char = 'a' \ No newline at end of file diff --git a/flap/tests/03-Typing/09-char-string.bad.expected b/flap/tests/03-Typing/09-char-string.bad.expected new file mode 100644 index 0000000..10a1a2e --- /dev/null +++ b/flap/tests/03-Typing/09-char-string.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + char +Given: + string diff --git a/flap/tests/03-Typing/09-char-string.bad.typing.hopix b/flap/tests/03-Typing/09-char-string.bad.typing.hopix new file mode 100644 index 0000000..d8b440c --- /dev/null +++ b/flap/tests/03-Typing/09-char-string.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id c))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon char)()))(position((start_p(""1 0 8))(end_p(""1 0 12)))))))(position((start_p(""1 0 8))(end_p(""1 0 12))))))((value(Literal((value(LString"Luke, I may be your father!"))(position((start_p(""1 0 43))(end_p(""1 0 44)))))))(position((start_p(""1 0 43))(end_p(""1 0 44)))))))))(position((start_p(""1 0 0))(end_p(""1 0 44)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/09-char-string.bad.typing.hopix.human-readable b/flap/tests/03-Typing/09-char-string.bad.typing.hopix.human-readable new file mode 100644 index 0000000..c03b8db --- /dev/null +++ b/flap/tests/03-Typing/09-char-string.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let c : char = "Luke, I may be your father!" \ No newline at end of file diff --git a/flap/tests/03-Typing/09-char-string.good.expected b/flap/tests/03-Typing/09-char-string.good.expected new file mode 100644 index 0000000..aa5dda4 --- /dev/null +++ b/flap/tests/03-Typing/09-char-string.good.expected @@ -0,0 +1 @@ +c : string diff --git a/flap/tests/03-Typing/09-char-string.good.typing.hopix b/flap/tests/03-Typing/09-char-string.good.typing.hopix new file mode 100644 index 0000000..6a62a20 --- /dev/null +++ b/flap/tests/03-Typing/09-char-string.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id c))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""1 0 8))(end_p(""1 0 14)))))))(position((start_p(""1 0 8))(end_p(""1 0 14))))))((value(Literal((value(LString"Luke, I may be your father!"))(position((start_p(""1 0 45))(end_p(""1 0 46)))))))(position((start_p(""1 0 45))(end_p(""1 0 46)))))))))(position((start_p(""1 0 0))(end_p(""1 0 46)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/09-char-string.good.typing.hopix.human-readable b/flap/tests/03-Typing/09-char-string.good.typing.hopix.human-readable new file mode 100644 index 0000000..cbbf0da --- /dev/null +++ b/flap/tests/03-Typing/09-char-string.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let c : string = "Luke, I may be your father!" \ No newline at end of file diff --git a/flap/tests/03-Typing/10-local-definition.bad.expected b/flap/tests/03-Typing/10-local-definition.bad.expected new file mode 100644 index 0000000..c801825 --- /dev/null +++ b/flap/tests/03-Typing/10-local-definition.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + Unbound identifier `y'. diff --git a/flap/tests/03-Typing/10-local-definition.bad.typing.hopix b/flap/tests/03-Typing/10-local-definition.bad.typing.hopix new file mode 100644 index 0000000..2cfdb25 --- /dev/null +++ b/flap/tests/03-Typing/10-local-definition.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""1 0 4))(end_p(""1 0 8)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 11))(end_p(""1 0 14)))))))(position((start_p(""1 0 11))(end_p(""1 0 14))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 17 25))(end_p(""2 17 26)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""2 17 29))(end_p(""2 17 32)))))))(position((start_p(""2 17 29))(end_p(""2 17 32))))))((value(Literal((value(LInt 1))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))((value(Variable((value(Id y))(position((start_p(""3 38 42))(end_p(""3 38 43)))))()))(position((start_p(""3 38 42))(end_p(""3 38 43)))))))(position((start_p(""2 17 21))(end_p(""3 38 43)))))))))(position((start_p(""1 0 0))(end_p(""3 38 43)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/10-local-definition.bad.typing.hopix.human-readable b/flap/tests/03-Typing/10-local-definition.bad.typing.hopix.human-readable new file mode 100644 index 0000000..db142c2 --- /dev/null +++ b/flap/tests/03-Typing/10-local-definition.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +let main : int = + let x : int = 1; + y \ No newline at end of file diff --git a/flap/tests/03-Typing/10-local-definition.good.expected b/flap/tests/03-Typing/10-local-definition.good.expected new file mode 100644 index 0000000..4b66f6f --- /dev/null +++ b/flap/tests/03-Typing/10-local-definition.good.expected @@ -0,0 +1 @@ +main : int diff --git a/flap/tests/03-Typing/10-local-definition.good.typing.hopix b/flap/tests/03-Typing/10-local-definition.good.typing.hopix new file mode 100644 index 0000000..5c9149f --- /dev/null +++ b/flap/tests/03-Typing/10-local-definition.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""1 0 4))(end_p(""1 0 8)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 11))(end_p(""1 0 14)))))))(position((start_p(""1 0 11))(end_p(""1 0 14))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 17 25))(end_p(""2 17 26)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""2 17 29))(end_p(""2 17 32)))))))(position((start_p(""2 17 29))(end_p(""2 17 32))))))((value(Literal((value(LInt 1))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))((value(Variable((value(Id x))(position((start_p(""3 38 42))(end_p(""3 38 43)))))()))(position((start_p(""3 38 42))(end_p(""3 38 43)))))))(position((start_p(""2 17 21))(end_p(""3 38 43)))))))))(position((start_p(""1 0 0))(end_p(""3 38 43)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/10-local-definition.good.typing.hopix.human-readable b/flap/tests/03-Typing/10-local-definition.good.typing.hopix.human-readable new file mode 100644 index 0000000..1f6b396 --- /dev/null +++ b/flap/tests/03-Typing/10-local-definition.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +let main : int = + let x : int = 1; + x \ No newline at end of file diff --git a/flap/tests/03-Typing/11-function-definition.bad.expected b/flap/tests/03-Typing/11-function-definition.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/11-function-definition.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/11-function-definition.bad.typing.hopix b/flap/tests/03-Typing/11-function-definition.bad.typing.hopix new file mode 100644 index 0000000..c5f6b0c --- /dev/null +++ b/flap/tests/03-Typing/11-function-definition.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 20 24))(end_p(""2 20 26)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon string)()))(position((start_p(""1 0 13))(end_p(""1 0 19)))))))(position((start_p(""1 0 6))(end_p(""1 0 19)))))))(position((start_p(""1 0 6))(end_p(""1 0 19))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 20 28))(end_p(""2 20 29)))))))(position((start_p(""2 20 28))(end_p(""2 20 29)))))((value(TyCon(TCon int)()))(position((start_p(""2 20 32))(end_p(""2 20 35)))))))(position((start_p(""2 20 27))(end_p(""2 20 36)))))((value(Variable((value(Id x))(position((start_p(""2 20 39))(end_p(""2 20 40)))))()))(position((start_p(""2 20 39))(end_p(""2 20 40)))))))))))(position((start_p(""1 0 0))(end_p(""2 20 40)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 42 46))(end_p(""4 42 50)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 42 53))(end_p(""4 42 56)))))))(position((start_p(""4 42 53))(end_p(""4 42 56))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""5 59 63))(end_p(""5 59 65)))))()))(position((start_p(""5 59 63))(end_p(""5 59 65)))))((value(Literal((value(LInt 42))(position((start_p(""5 59 67))(end_p(""5 59 69)))))))(position((start_p(""5 59 66))(end_p(""5 59 70)))))))(position((start_p(""5 59 63))(end_p(""5 59 70)))))))))(position((start_p(""4 42 42))(end_p(""5 59 70)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/11-function-definition.bad.typing.hopix.human-readable b/flap/tests/03-Typing/11-function-definition.bad.typing.hopix.human-readable new file mode 100644 index 0000000..55bed59 --- /dev/null +++ b/flap/tests/03-Typing/11-function-definition.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : int -> string + id (x : int) = x + +let main : int = + id (42) \ No newline at end of file diff --git a/flap/tests/03-Typing/11-function-definition.good.expected b/flap/tests/03-Typing/11-function-definition.good.expected new file mode 100644 index 0000000..4136dc0 --- /dev/null +++ b/flap/tests/03-Typing/11-function-definition.good.expected @@ -0,0 +1,2 @@ +id : int -> int +main : int diff --git a/flap/tests/03-Typing/11-function-definition.good.typing.hopix b/flap/tests/03-Typing/11-function-definition.good.typing.hopix new file mode 100644 index 0000000..ae5d5d9 --- /dev/null +++ b/flap/tests/03-Typing/11-function-definition.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 17 21))(end_p(""2 17 23)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 25))(end_p(""2 17 26)))))))(position((start_p(""2 17 25))(end_p(""2 17 26)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 29))(end_p(""2 17 32)))))))(position((start_p(""2 17 24))(end_p(""2 17 33)))))((value(Variable((value(Id x))(position((start_p(""2 17 36))(end_p(""2 17 37)))))()))(position((start_p(""2 17 36))(end_p(""2 17 37)))))))))))(position((start_p(""1 0 0))(end_p(""2 17 37)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 39 43))(end_p(""4 39 47)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 39 50))(end_p(""4 39 53)))))))(position((start_p(""4 39 50))(end_p(""4 39 53))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""5 56 60))(end_p(""5 56 62)))))()))(position((start_p(""5 56 60))(end_p(""5 56 62)))))((value(Literal((value(LInt 42))(position((start_p(""5 56 64))(end_p(""5 56 66)))))))(position((start_p(""5 56 63))(end_p(""5 56 67)))))))(position((start_p(""5 56 60))(end_p(""5 56 67)))))))))(position((start_p(""4 39 39))(end_p(""5 56 67)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/11-function-definition.good.typing.hopix.human-readable b/flap/tests/03-Typing/11-function-definition.good.typing.hopix.human-readable new file mode 100644 index 0000000..1e5f4f7 --- /dev/null +++ b/flap/tests/03-Typing/11-function-definition.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : int -> int + id (x : int) = x + +let main : int = + id (42) diff --git a/flap/tests/03-Typing/12-rec-function-definition.bad.expected b/flap/tests/03-Typing/12-rec-function-definition.bad.expected new file mode 100644 index 0000000..c091cc2 --- /dev/null +++ b/flap/tests/03-Typing/12-rec-function-definition.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + string diff --git a/flap/tests/03-Typing/12-rec-function-definition.bad.typing.hopix b/flap/tests/03-Typing/12-rec-function-definition.bad.typing.hopix new file mode 100644 index 0000000..5e77c07 --- /dev/null +++ b/flap/tests/03-Typing/12-rec-function-definition.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 17 20))(end_p(""2 17 22)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 24))(end_p(""2 17 25)))))))(position((start_p(""2 17 24))(end_p(""2 17 25)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 28))(end_p(""2 17 31)))))))(position((start_p(""2 17 23))(end_p(""2 17 32)))))((value(Apply((value(Variable((value(Id id))(position((start_p(""2 17 35))(end_p(""2 17 37)))))()))(position((start_p(""2 17 35))(end_p(""2 17 37)))))((value(Variable((value(Id x))(position((start_p(""2 17 38))(end_p(""2 17 39)))))()))(position((start_p(""2 17 38))(end_p(""2 17 39)))))))(position((start_p(""2 17 35))(end_p(""2 17 39)))))))))))(position((start_p(""1 0 0))(end_p(""2 17 39)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 41 45))(end_p(""4 41 49)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 41 52))(end_p(""4 41 55)))))))(position((start_p(""4 41 52))(end_p(""4 41 55))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""5 58 62))(end_p(""5 58 64)))))()))(position((start_p(""5 58 62))(end_p(""5 58 64)))))((value(Literal((value(LString foo))(position((start_p(""5 58 69))(end_p(""5 58 70)))))))(position((start_p(""5 58 69))(end_p(""5 58 70)))))))(position((start_p(""5 58 62))(end_p(""5 58 70)))))))))(position((start_p(""4 41 41))(end_p(""5 58 70)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/12-rec-function-definition.bad.typing.hopix.human-readable b/flap/tests/03-Typing/12-rec-function-definition.bad.typing.hopix.human-readable new file mode 100644 index 0000000..8bc8619 --- /dev/null +++ b/flap/tests/03-Typing/12-rec-function-definition.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : int -> int + id (x : int) = id x + +let main : int = + id "foo" \ No newline at end of file diff --git a/flap/tests/03-Typing/12-rec-function-definition.good.expected b/flap/tests/03-Typing/12-rec-function-definition.good.expected new file mode 100644 index 0000000..4136dc0 --- /dev/null +++ b/flap/tests/03-Typing/12-rec-function-definition.good.expected @@ -0,0 +1,2 @@ +id : int -> int +main : int diff --git a/flap/tests/03-Typing/12-rec-function-definition.good.typing.hopix b/flap/tests/03-Typing/12-rec-function-definition.good.typing.hopix new file mode 100644 index 0000000..44ea197 --- /dev/null +++ b/flap/tests/03-Typing/12-rec-function-definition.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 17 20))(end_p(""2 17 22)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 24))(end_p(""2 17 25)))))))(position((start_p(""2 17 24))(end_p(""2 17 25)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 28))(end_p(""2 17 31)))))))(position((start_p(""2 17 23))(end_p(""2 17 32)))))((value(Apply((value(Variable((value(Id id))(position((start_p(""2 17 35))(end_p(""2 17 37)))))()))(position((start_p(""2 17 35))(end_p(""2 17 37)))))((value(Variable((value(Id x))(position((start_p(""2 17 38))(end_p(""2 17 39)))))()))(position((start_p(""2 17 38))(end_p(""2 17 39)))))))(position((start_p(""2 17 35))(end_p(""2 17 39)))))))))))(position((start_p(""1 0 0))(end_p(""2 17 39)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 41 45))(end_p(""4 41 49)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 41 52))(end_p(""4 41 55)))))))(position((start_p(""4 41 52))(end_p(""4 41 55))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""5 58 62))(end_p(""5 58 64)))))()))(position((start_p(""5 58 62))(end_p(""5 58 64)))))((value(Literal((value(LInt 42))(position((start_p(""5 58 65))(end_p(""5 58 67)))))))(position((start_p(""5 58 65))(end_p(""5 58 67)))))))(position((start_p(""5 58 62))(end_p(""5 58 67)))))))))(position((start_p(""4 41 41))(end_p(""5 58 67)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/12-rec-function-definition.good.typing.hopix.human-readable b/flap/tests/03-Typing/12-rec-function-definition.good.typing.hopix.human-readable new file mode 100644 index 0000000..57404ac --- /dev/null +++ b/flap/tests/03-Typing/12-rec-function-definition.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : int -> int + id (x : int) = id x + +let main : int = + id 42 \ No newline at end of file diff --git a/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.expected b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.expected new file mode 100644 index 0000000..f48dd1a --- /dev/null +++ b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + This expression has type int which should be a function type. diff --git a/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.typing.hopix b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.typing.hopix new file mode 100644 index 0000000..ef5d11c --- /dev/null +++ b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id double_omega))(position((start_p(""2 17 21))(end_p(""2 17 33)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))(position((start_p(""2 17 35))(end_p(""2 17 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 39))(end_p(""2 17 42)))))))(position((start_p(""2 17 34))(end_p(""2 17 43)))))((value(Apply((value(Apply((value(Variable((value(Id omega))(position((start_p(""3 46 50))(end_p(""3 46 55)))))()))(position((start_p(""3 46 50))(end_p(""3 46 55)))))((value(Variable((value(Id x))(position((start_p(""3 46 57))(end_p(""3 46 58)))))()))(position((start_p(""3 46 56))(end_p(""3 46 59)))))))(position((start_p(""3 46 50))(end_p(""3 46 59)))))((value(Variable((value(Id x))(position((start_p(""3 46 61))(end_p(""3 46 62)))))()))(position((start_p(""3 46 60))(end_p(""3 46 63)))))))(position((start_p(""3 46 50))(end_p(""3 46 63)))))))(((value(Id omega))(position((start_p(""5 81 85))(end_p(""5 81 90)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""4 64 70))(end_p(""4 64 73)))))((value(TyCon(TCon int)()))(position((start_p(""4 64 77))(end_p(""4 64 80)))))))(position((start_p(""4 64 70))(end_p(""4 64 80)))))))(position((start_p(""4 64 70))(end_p(""4 64 80))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 81 92))(end_p(""5 81 93)))))))(position((start_p(""5 81 92))(end_p(""5 81 93)))))((value(TyCon(TCon int)()))(position((start_p(""5 81 95))(end_p(""5 81 98)))))))(position((start_p(""5 81 91))(end_p(""5 81 99)))))((value(Apply((value(Variable((value(Id double_omega))(position((start_p(""6 102 106))(end_p(""6 102 118)))))()))(position((start_p(""6 102 106))(end_p(""6 102 118)))))((value(Variable((value(Id x))(position((start_p(""6 102 120))(end_p(""6 102 121)))))()))(position((start_p(""6 102 119))(end_p(""6 102 122)))))))(position((start_p(""6 102 106))(end_p(""6 102 122)))))))))))(position((start_p(""1 0 0))(end_p(""6 102 122)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""8 124 128))(end_p(""8 124 132)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""8 124 135))(end_p(""8 124 138)))))))(position((start_p(""8 124 135))(end_p(""8 124 138))))))((value(Apply((value(Variable((value(Id double_omega))(position((start_p(""8 124 141))(end_p(""8 124 153)))))()))(position((start_p(""8 124 141))(end_p(""8 124 153)))))((value(Literal((value(LInt 73))(position((start_p(""8 124 154))(end_p(""8 124 156)))))))(position((start_p(""8 124 154))(end_p(""8 124 156)))))))(position((start_p(""8 124 141))(end_p(""8 124 156)))))))))(position((start_p(""8 124 124))(end_p(""8 124 156)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.typing.hopix.human-readable b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.typing.hopix.human-readable new file mode 100644 index 0000000..424067f --- /dev/null +++ b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.bad.typing.hopix.human-readable @@ -0,0 +1,8 @@ +fun : int -> int + double_omega (x : int) = + omega (x) (x) +and : int -> int + omega (x: int) = + double_omega (x) + +let main : int = double_omega 73 \ No newline at end of file diff --git a/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.expected b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.expected new file mode 100644 index 0000000..c363346 --- /dev/null +++ b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.expected @@ -0,0 +1,3 @@ +double_omega : int -> int +omega : int -> int +main : int diff --git a/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.typing.hopix b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.typing.hopix new file mode 100644 index 0000000..e76b9fa --- /dev/null +++ b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id double_omega))(position((start_p(""2 17 21))(end_p(""2 17 33)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))(position((start_p(""2 17 35))(end_p(""2 17 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 39))(end_p(""2 17 42)))))))(position((start_p(""2 17 34))(end_p(""2 17 43)))))((value(Apply((value(Variable((value(Id omega))(position((start_p(""3 46 50))(end_p(""3 46 55)))))()))(position((start_p(""3 46 50))(end_p(""3 46 55)))))((value(Variable((value(Id x))(position((start_p(""3 46 57))(end_p(""3 46 58)))))()))(position((start_p(""3 46 56))(end_p(""3 46 59)))))))(position((start_p(""3 46 50))(end_p(""3 46 59)))))))(((value(Id omega))(position((start_p(""5 77 81))(end_p(""5 77 86)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""4 60 66))(end_p(""4 60 69)))))((value(TyCon(TCon int)()))(position((start_p(""4 60 73))(end_p(""4 60 76)))))))(position((start_p(""4 60 66))(end_p(""4 60 76)))))))(position((start_p(""4 60 66))(end_p(""4 60 76))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 77 88))(end_p(""5 77 89)))))))(position((start_p(""5 77 88))(end_p(""5 77 89)))))((value(TyCon(TCon int)()))(position((start_p(""5 77 91))(end_p(""5 77 94)))))))(position((start_p(""5 77 87))(end_p(""5 77 95)))))((value(Apply((value(Variable((value(Id double_omega))(position((start_p(""6 98 102))(end_p(""6 98 114)))))()))(position((start_p(""6 98 102))(end_p(""6 98 114)))))((value(Variable((value(Id x))(position((start_p(""6 98 116))(end_p(""6 98 117)))))()))(position((start_p(""6 98 115))(end_p(""6 98 118)))))))(position((start_p(""6 98 102))(end_p(""6 98 118)))))))))))(position((start_p(""1 0 0))(end_p(""6 98 118)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""8 120 124))(end_p(""8 120 128)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""8 120 131))(end_p(""8 120 134)))))))(position((start_p(""8 120 131))(end_p(""8 120 134))))))((value(Apply((value(Variable((value(Id double_omega))(position((start_p(""8 120 137))(end_p(""8 120 149)))))()))(position((start_p(""8 120 137))(end_p(""8 120 149)))))((value(Literal((value(LInt 73))(position((start_p(""8 120 150))(end_p(""8 120 152)))))))(position((start_p(""8 120 150))(end_p(""8 120 152)))))))(position((start_p(""8 120 137))(end_p(""8 120 152)))))))))(position((start_p(""8 120 120))(end_p(""8 120 152)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.typing.hopix.human-readable b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.typing.hopix.human-readable new file mode 100644 index 0000000..a4e425f --- /dev/null +++ b/flap/tests/03-Typing/13-mutually-rec-fun-definitions.good.typing.hopix.human-readable @@ -0,0 +1,8 @@ +fun : int -> int + double_omega (x : int) = + omega (x) +and : int -> int + omega (x: int) = + double_omega (x) + +let main : int = double_omega 73 \ No newline at end of file diff --git a/flap/tests/03-Typing/14-binary-function.bad.expected b/flap/tests/03-Typing/14-binary-function.bad.expected new file mode 100644 index 0000000..416dc3b --- /dev/null +++ b/flap/tests/03-Typing/14-binary-function.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int * int +Given: + int * int * int diff --git a/flap/tests/03-Typing/14-binary-function.bad.typing.hopix b/flap/tests/03-Typing/14-binary-function.bad.typing.hopix new file mode 100644 index 0000000..3486d6d --- /dev/null +++ b/flap/tests/03-Typing/14-binary-function.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 29))(end_p(""2 23 32)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 35))(end_p(""2 23 36)))))))(position((start_p(""2 23 35))(end_p(""2 23 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 39))(end_p(""2 23 42)))))))(position((start_p(""2 23 34))(end_p(""2 23 43)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 46))(end_p(""2 23 47)))))))(position((start_p(""2 23 46))(end_p(""2 23 47)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 50))(end_p(""2 23 53)))))))(position((start_p(""2 23 45))(end_p(""2 23 54))))))))(position((start_p(""2 23 33))(end_p(""2 23 55)))))((value(Variable((value(Id x))(position((start_p(""2 23 58))(end_p(""2 23 59)))))()))(position((start_p(""2 23 58))(end_p(""2 23 59)))))))))))(position((start_p(""1 0 0))(end_p(""2 23 59)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 61 65))(end_p(""4 61 69)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 61 72))(end_p(""4 61 75)))))))(position((start_p(""4 61 72))(end_p(""4 61 75))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""4 61 78))(end_p(""4 61 81)))))()))(position((start_p(""4 61 78))(end_p(""4 61 81)))))((value(Tuple(((value(Literal((value(LInt 3))(position((start_p(""4 61 83))(end_p(""4 61 84)))))))(position((start_p(""4 61 83))(end_p(""4 61 84)))))((value(Literal((value(LInt 4))(position((start_p(""4 61 86))(end_p(""4 61 87)))))))(position((start_p(""4 61 86))(end_p(""4 61 87)))))((value(Literal((value(LInt 4))(position((start_p(""4 61 89))(end_p(""4 61 90)))))))(position((start_p(""4 61 89))(end_p(""4 61 90))))))))(position((start_p(""4 61 82))(end_p(""4 61 91)))))))(position((start_p(""4 61 78))(end_p(""4 61 91)))))))))(position((start_p(""4 61 61))(end_p(""4 61 91)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/14-binary-function.bad.typing.hopix.human-readable b/flap/tests/03-Typing/14-binary-function.bad.typing.hopix.human-readable new file mode 100644 index 0000000..dbeaf32 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-function.bad.typing.hopix.human-readable @@ -0,0 +1,4 @@ +fun : int * int -> int + fst ((x : int), (y : int)) = x + +let main : int = fst (3, 4, 4) \ No newline at end of file diff --git a/flap/tests/03-Typing/14-binary-function.good.expected b/flap/tests/03-Typing/14-binary-function.good.expected new file mode 100644 index 0000000..b2217a4 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-function.good.expected @@ -0,0 +1,2 @@ +fst : int * int -> int +main : int diff --git a/flap/tests/03-Typing/14-binary-function.good.typing.hopix b/flap/tests/03-Typing/14-binary-function.good.typing.hopix new file mode 100644 index 0000000..9b7e234 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-function.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 29))(end_p(""2 23 32)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 35))(end_p(""2 23 36)))))))(position((start_p(""2 23 35))(end_p(""2 23 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 39))(end_p(""2 23 42)))))))(position((start_p(""2 23 34))(end_p(""2 23 43)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 46))(end_p(""2 23 47)))))))(position((start_p(""2 23 46))(end_p(""2 23 47)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 50))(end_p(""2 23 53)))))))(position((start_p(""2 23 45))(end_p(""2 23 54))))))))(position((start_p(""2 23 33))(end_p(""2 23 55)))))((value(Variable((value(Id x))(position((start_p(""2 23 58))(end_p(""2 23 59)))))()))(position((start_p(""2 23 58))(end_p(""2 23 59)))))))))))(position((start_p(""1 0 0))(end_p(""2 23 59)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 61 65))(end_p(""4 61 69)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 61 72))(end_p(""4 61 75)))))))(position((start_p(""4 61 72))(end_p(""4 61 75))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""4 61 78))(end_p(""4 61 81)))))()))(position((start_p(""4 61 78))(end_p(""4 61 81)))))((value(Tuple(((value(Literal((value(LInt 3))(position((start_p(""4 61 83))(end_p(""4 61 84)))))))(position((start_p(""4 61 83))(end_p(""4 61 84)))))((value(Literal((value(LInt 4))(position((start_p(""4 61 86))(end_p(""4 61 87)))))))(position((start_p(""4 61 86))(end_p(""4 61 87))))))))(position((start_p(""4 61 82))(end_p(""4 61 88)))))))(position((start_p(""4 61 78))(end_p(""4 61 88)))))))))(position((start_p(""4 61 61))(end_p(""4 61 88)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/14-binary-function.good.typing.hopix.human-readable b/flap/tests/03-Typing/14-binary-function.good.typing.hopix.human-readable new file mode 100644 index 0000000..b035446 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-function.good.typing.hopix.human-readable @@ -0,0 +1,4 @@ +fun : int * int -> int + fst ((x : int), (y : int)) = x + +let main : int = fst (3, 4) \ No newline at end of file diff --git a/flap/tests/03-Typing/14-binary-rec-function.bad.expected b/flap/tests/03-Typing/14-binary-rec-function.bad.expected new file mode 100644 index 0000000..d8c7446 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-rec-function.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int * int +Given: + int diff --git a/flap/tests/03-Typing/14-binary-rec-function.bad.typing.hopix b/flap/tests/03-Typing/14-binary-rec-function.bad.typing.hopix new file mode 100644 index 0000000..fe6131a --- /dev/null +++ b/flap/tests/03-Typing/14-binary-rec-function.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 29))(end_p(""2 23 32)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 35))(end_p(""2 23 36)))))))(position((start_p(""2 23 35))(end_p(""2 23 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 39))(end_p(""2 23 42)))))))(position((start_p(""2 23 34))(end_p(""2 23 43)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 46))(end_p(""2 23 47)))))))(position((start_p(""2 23 46))(end_p(""2 23 47)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 50))(end_p(""2 23 53)))))))(position((start_p(""2 23 45))(end_p(""2 23 54))))))))(position((start_p(""2 23 33))(end_p(""2 23 55)))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""2 23 58))(end_p(""2 23 61)))))()))(position((start_p(""2 23 58))(end_p(""2 23 61)))))((value(Tuple(((value(Variable((value(Id y))(position((start_p(""2 23 63))(end_p(""2 23 64)))))()))(position((start_p(""2 23 63))(end_p(""2 23 64)))))((value(Variable((value(Id x))(position((start_p(""2 23 66))(end_p(""2 23 67)))))()))(position((start_p(""2 23 66))(end_p(""2 23 67))))))))(position((start_p(""2 23 62))(end_p(""2 23 68)))))))(position((start_p(""2 23 58))(end_p(""2 23 68)))))))))))(position((start_p(""1 0 0))(end_p(""2 23 68)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 70 74))(end_p(""4 70 78)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 70 81))(end_p(""4 70 84)))))))(position((start_p(""4 70 81))(end_p(""4 70 84))))))((value(Apply((value(Apply((value(Variable((value(Id fst))(position((start_p(""4 70 87))(end_p(""4 70 90)))))()))(position((start_p(""4 70 87))(end_p(""4 70 90)))))((value(Literal((value(LInt 3))(position((start_p(""4 70 91))(end_p(""4 70 92)))))))(position((start_p(""4 70 91))(end_p(""4 70 92)))))))(position((start_p(""4 70 87))(end_p(""4 70 92)))))((value(Literal((value(LInt 4))(position((start_p(""4 70 93))(end_p(""4 70 94)))))))(position((start_p(""4 70 93))(end_p(""4 70 94)))))))(position((start_p(""4 70 87))(end_p(""4 70 94)))))))))(position((start_p(""4 70 70))(end_p(""4 70 94)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/14-binary-rec-function.bad.typing.hopix.human-readable b/flap/tests/03-Typing/14-binary-rec-function.bad.typing.hopix.human-readable new file mode 100644 index 0000000..8479422 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-rec-function.bad.typing.hopix.human-readable @@ -0,0 +1,4 @@ +fun : int * int -> int + fst ((x : int), (y : int)) = fst (y, x) + +let main : int = fst 3 4 \ No newline at end of file diff --git a/flap/tests/03-Typing/14-binary-rec-function.good.expected b/flap/tests/03-Typing/14-binary-rec-function.good.expected new file mode 100644 index 0000000..b2217a4 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-rec-function.good.expected @@ -0,0 +1,2 @@ +fst : int * int -> int +main : int diff --git a/flap/tests/03-Typing/14-binary-rec-function.good.typing.hopix b/flap/tests/03-Typing/14-binary-rec-function.good.typing.hopix new file mode 100644 index 0000000..99d0f58 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-rec-function.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 29))(end_p(""2 23 32)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 35))(end_p(""2 23 36)))))))(position((start_p(""2 23 35))(end_p(""2 23 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 39))(end_p(""2 23 42)))))))(position((start_p(""2 23 34))(end_p(""2 23 43)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 46))(end_p(""2 23 47)))))))(position((start_p(""2 23 46))(end_p(""2 23 47)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 50))(end_p(""2 23 53)))))))(position((start_p(""2 23 45))(end_p(""2 23 54))))))))(position((start_p(""2 23 33))(end_p(""2 23 55)))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""2 23 58))(end_p(""2 23 61)))))()))(position((start_p(""2 23 58))(end_p(""2 23 61)))))((value(Tuple(((value(Variable((value(Id y))(position((start_p(""2 23 63))(end_p(""2 23 64)))))()))(position((start_p(""2 23 63))(end_p(""2 23 64)))))((value(Variable((value(Id x))(position((start_p(""2 23 66))(end_p(""2 23 67)))))()))(position((start_p(""2 23 66))(end_p(""2 23 67))))))))(position((start_p(""2 23 62))(end_p(""2 23 68)))))))(position((start_p(""2 23 58))(end_p(""2 23 68)))))))))))(position((start_p(""1 0 0))(end_p(""2 23 68)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 70 74))(end_p(""4 70 78)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 70 81))(end_p(""4 70 84)))))))(position((start_p(""4 70 81))(end_p(""4 70 84))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""4 70 87))(end_p(""4 70 90)))))()))(position((start_p(""4 70 87))(end_p(""4 70 90)))))((value(Tuple(((value(Literal((value(LInt 3))(position((start_p(""4 70 92))(end_p(""4 70 93)))))))(position((start_p(""4 70 92))(end_p(""4 70 93)))))((value(Literal((value(LInt 4))(position((start_p(""4 70 95))(end_p(""4 70 96)))))))(position((start_p(""4 70 95))(end_p(""4 70 96))))))))(position((start_p(""4 70 91))(end_p(""4 70 97)))))))(position((start_p(""4 70 87))(end_p(""4 70 97)))))))))(position((start_p(""4 70 70))(end_p(""4 70 97)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/14-binary-rec-function.good.typing.hopix.human-readable b/flap/tests/03-Typing/14-binary-rec-function.good.typing.hopix.human-readable new file mode 100644 index 0000000..80ffe56 --- /dev/null +++ b/flap/tests/03-Typing/14-binary-rec-function.good.typing.hopix.human-readable @@ -0,0 +1,4 @@ +fun : int * int -> int + fst ((x : int), (y : int)) = fst (y, x) + +let main : int = fst (3, 4) \ No newline at end of file diff --git a/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.expected b/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.expected new file mode 100644 index 0000000..d8c7446 --- /dev/null +++ b/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int * int +Given: + int diff --git a/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.typing.hopix b/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.typing.hopix new file mode 100644 index 0000000..2f61b1c --- /dev/null +++ b/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 27))(end_p(""2 23 30)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 33))(end_p(""2 23 34)))))))(position((start_p(""2 23 33))(end_p(""2 23 34)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 37))(end_p(""2 23 40)))))))(position((start_p(""2 23 32))(end_p(""2 23 41)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 44))(end_p(""2 23 45)))))))(position((start_p(""2 23 44))(end_p(""2 23 45)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 48))(end_p(""2 23 51)))))))(position((start_p(""2 23 43))(end_p(""2 23 52))))))))(position((start_p(""2 23 31))(end_p(""2 23 53)))))((value(Apply((value(Variable((value(Id snd))(position((start_p(""2 23 56))(end_p(""2 23 59)))))()))(position((start_p(""2 23 56))(end_p(""2 23 59)))))((value(Tuple(((value(Variable((value(Id y))(position((start_p(""2 23 61))(end_p(""2 23 62)))))()))(position((start_p(""2 23 61))(end_p(""2 23 62)))))((value(Variable((value(Id x))(position((start_p(""2 23 64))(end_p(""2 23 65)))))()))(position((start_p(""2 23 64))(end_p(""2 23 65))))))))(position((start_p(""2 23 60))(end_p(""2 23 66)))))))(position((start_p(""2 23 56))(end_p(""2 23 66)))))))(((value(Id snd))(position((start_p(""5 91 95))(end_p(""5 91 98)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""4 68 74))(end_p(""4 68 77)))))((value(TyCon(TCon int)()))(position((start_p(""4 68 80))(end_p(""4 68 83))))))))(position((start_p(""4 68 74))(end_p(""4 68 83)))))((value(TyCon(TCon int)()))(position((start_p(""4 68 87))(end_p(""4 68 90)))))))(position((start_p(""4 68 74))(end_p(""4 68 90)))))))(position((start_p(""4 68 74))(end_p(""4 68 90))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 91 101))(end_p(""5 91 102)))))))(position((start_p(""5 91 101))(end_p(""5 91 102)))))((value(TyCon(TCon int)()))(position((start_p(""5 91 105))(end_p(""5 91 108)))))))(position((start_p(""5 91 100))(end_p(""5 91 109)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""5 91 112))(end_p(""5 91 113)))))))(position((start_p(""5 91 112))(end_p(""5 91 113)))))((value(TyCon(TCon int)()))(position((start_p(""5 91 116))(end_p(""5 91 119)))))))(position((start_p(""5 91 111))(end_p(""5 91 120))))))))(position((start_p(""5 91 99))(end_p(""5 91 121)))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""5 91 124))(end_p(""5 91 127)))))()))(position((start_p(""5 91 124))(end_p(""5 91 127)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""5 91 129))(end_p(""5 91 130)))))()))(position((start_p(""5 91 129))(end_p(""5 91 130)))))((value(Variable((value(Id y))(position((start_p(""5 91 132))(end_p(""5 91 133)))))()))(position((start_p(""5 91 132))(end_p(""5 91 133))))))))(position((start_p(""5 91 128))(end_p(""5 91 134)))))))(position((start_p(""5 91 124))(end_p(""5 91 134)))))))))))(position((start_p(""1 0 0))(end_p(""5 91 134)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""7 136 140))(end_p(""7 136 144)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""7 136 147))(end_p(""7 136 150)))))))(position((start_p(""7 136 147))(end_p(""7 136 150))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""7 136 153))(end_p(""7 136 156)))))()))(position((start_p(""7 136 153))(end_p(""7 136 156)))))((value(Literal((value(LInt 3))(position((start_p(""7 136 157))(end_p(""7 136 158)))))))(position((start_p(""7 136 157))(end_p(""7 136 158)))))))(position((start_p(""7 136 153))(end_p(""7 136 158)))))))))(position((start_p(""7 136 136))(end_p(""7 136 158)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.typing.hopix.human-readable b/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.typing.hopix.human-readable new file mode 100644 index 0000000..febfff5 --- /dev/null +++ b/flap/tests/03-Typing/15-binary-mutually-rec-function.bad.typing.hopix.human-readable @@ -0,0 +1,7 @@ +fun : int * int -> int + fst ((x : int), (y : int)) = snd (y, x) + +and : int * int -> int + snd ((x : int), (y : int)) = fst (x, y) + +let main : int = fst 3 \ No newline at end of file diff --git a/flap/tests/03-Typing/15-binary-mutually-rec-function.good.expected b/flap/tests/03-Typing/15-binary-mutually-rec-function.good.expected new file mode 100644 index 0000000..06284d7 --- /dev/null +++ b/flap/tests/03-Typing/15-binary-mutually-rec-function.good.expected @@ -0,0 +1,3 @@ +fst : int * int -> int +snd : int * int -> int +main : int diff --git a/flap/tests/03-Typing/15-binary-mutually-rec-function.good.typing.hopix b/flap/tests/03-Typing/15-binary-mutually-rec-function.good.typing.hopix new file mode 100644 index 0000000..00ffcf0 --- /dev/null +++ b/flap/tests/03-Typing/15-binary-mutually-rec-function.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 27))(end_p(""2 23 30)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 33))(end_p(""2 23 34)))))))(position((start_p(""2 23 33))(end_p(""2 23 34)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 37))(end_p(""2 23 40)))))))(position((start_p(""2 23 32))(end_p(""2 23 41)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 44))(end_p(""2 23 45)))))))(position((start_p(""2 23 44))(end_p(""2 23 45)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 48))(end_p(""2 23 51)))))))(position((start_p(""2 23 43))(end_p(""2 23 52))))))))(position((start_p(""2 23 31))(end_p(""2 23 53)))))((value(Apply((value(Variable((value(Id snd))(position((start_p(""2 23 56))(end_p(""2 23 59)))))()))(position((start_p(""2 23 56))(end_p(""2 23 59)))))((value(Tuple(((value(Variable((value(Id y))(position((start_p(""2 23 61))(end_p(""2 23 62)))))()))(position((start_p(""2 23 61))(end_p(""2 23 62)))))((value(Variable((value(Id x))(position((start_p(""2 23 64))(end_p(""2 23 65)))))()))(position((start_p(""2 23 64))(end_p(""2 23 65))))))))(position((start_p(""2 23 60))(end_p(""2 23 66)))))))(position((start_p(""2 23 56))(end_p(""2 23 66)))))))(((value(Id snd))(position((start_p(""5 91 95))(end_p(""5 91 98)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""4 68 74))(end_p(""4 68 77)))))((value(TyCon(TCon int)()))(position((start_p(""4 68 80))(end_p(""4 68 83))))))))(position((start_p(""4 68 74))(end_p(""4 68 83)))))((value(TyCon(TCon int)()))(position((start_p(""4 68 87))(end_p(""4 68 90)))))))(position((start_p(""4 68 74))(end_p(""4 68 90)))))))(position((start_p(""4 68 74))(end_p(""4 68 90))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 91 101))(end_p(""5 91 102)))))))(position((start_p(""5 91 101))(end_p(""5 91 102)))))((value(TyCon(TCon int)()))(position((start_p(""5 91 105))(end_p(""5 91 108)))))))(position((start_p(""5 91 100))(end_p(""5 91 109)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""5 91 112))(end_p(""5 91 113)))))))(position((start_p(""5 91 112))(end_p(""5 91 113)))))((value(TyCon(TCon int)()))(position((start_p(""5 91 116))(end_p(""5 91 119)))))))(position((start_p(""5 91 111))(end_p(""5 91 120))))))))(position((start_p(""5 91 99))(end_p(""5 91 121)))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""5 91 124))(end_p(""5 91 127)))))()))(position((start_p(""5 91 124))(end_p(""5 91 127)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""5 91 129))(end_p(""5 91 130)))))()))(position((start_p(""5 91 129))(end_p(""5 91 130)))))((value(Variable((value(Id y))(position((start_p(""5 91 132))(end_p(""5 91 133)))))()))(position((start_p(""5 91 132))(end_p(""5 91 133))))))))(position((start_p(""5 91 128))(end_p(""5 91 134)))))))(position((start_p(""5 91 124))(end_p(""5 91 134)))))))))))(position((start_p(""1 0 0))(end_p(""5 91 134)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""7 136 140))(end_p(""7 136 144)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""7 136 147))(end_p(""7 136 150)))))))(position((start_p(""7 136 147))(end_p(""7 136 150))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""7 136 153))(end_p(""7 136 156)))))()))(position((start_p(""7 136 153))(end_p(""7 136 156)))))((value(Tuple(((value(Literal((value(LInt 3))(position((start_p(""7 136 158))(end_p(""7 136 159)))))))(position((start_p(""7 136 158))(end_p(""7 136 159)))))((value(Literal((value(LInt 4))(position((start_p(""7 136 161))(end_p(""7 136 162)))))))(position((start_p(""7 136 161))(end_p(""7 136 162))))))))(position((start_p(""7 136 157))(end_p(""7 136 163)))))))(position((start_p(""7 136 153))(end_p(""7 136 163)))))))))(position((start_p(""7 136 136))(end_p(""7 136 163)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/15-binary-mutually-rec-function.good.typing.hopix.human-readable b/flap/tests/03-Typing/15-binary-mutually-rec-function.good.typing.hopix.human-readable new file mode 100644 index 0000000..f381853 --- /dev/null +++ b/flap/tests/03-Typing/15-binary-mutually-rec-function.good.typing.hopix.human-readable @@ -0,0 +1,7 @@ +fun : int * int -> int + fst ((x : int), (y : int)) = snd (y, x) + +and : int * int -> int + snd ((x : int), (y : int)) = fst (x, y) + +let main : int = fst (3, 4) \ No newline at end of file diff --git a/flap/tests/03-Typing/16-polymorphic-function.bad.expected b/flap/tests/03-Typing/16-polymorphic-function.bad.expected new file mode 100644 index 0000000..9bc6c30 --- /dev/null +++ b/flap/tests/03-Typing/16-polymorphic-function.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + `a +Given: + int diff --git a/flap/tests/03-Typing/16-polymorphic-function.bad.typing.hopix b/flap/tests/03-Typing/16-polymorphic-function.bad.typing.hopix new file mode 100644 index 0000000..115910e --- /dev/null +++ b/flap/tests/03-Typing/16-polymorphic-function.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 20 26))(end_p(""2 20 28)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9))))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 11))(end_p(""1 0 13)))))((value(TyVar(TId `a)))(position((start_p(""1 0 17))(end_p(""1 0 19)))))))(position((start_p(""1 0 11))(end_p(""1 0 19)))))))(position((start_p(""1 0 6))(end_p(""1 0 19))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 20 30))(end_p(""2 20 31)))))))(position((start_p(""2 20 30))(end_p(""2 20 31)))))((value(TyCon(TCon int)()))(position((start_p(""2 20 34))(end_p(""2 20 37)))))))(position((start_p(""2 20 29))(end_p(""2 20 38)))))((value(Variable((value(Id x))(position((start_p(""2 20 41))(end_p(""2 20 42)))))()))(position((start_p(""2 20 41))(end_p(""2 20 42)))))))))))(position((start_p(""1 0 0))(end_p(""2 20 42)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 44 48))(end_p(""4 44 52)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 44 55))(end_p(""4 44 58)))))))(position((start_p(""4 44 55))(end_p(""4 44 58))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""4 44 61))(end_p(""4 44 63)))))((((value(TyCon(TCon int)()))(position((start_p(""4 44 64))(end_p(""4 44 67)))))))))(position((start_p(""4 44 61))(end_p(""4 44 68)))))((value(Literal((value(LInt 37))(position((start_p(""4 44 70))(end_p(""4 44 72)))))))(position((start_p(""4 44 69))(end_p(""4 44 73)))))))(position((start_p(""4 44 61))(end_p(""4 44 73)))))))))(position((start_p(""4 44 44))(end_p(""4 44 73)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/16-polymorphic-function.bad.typing.hopix.human-readable b/flap/tests/03-Typing/16-polymorphic-function.bad.typing.hopix.human-readable new file mode 100644 index 0000000..e579570 --- /dev/null +++ b/flap/tests/03-Typing/16-polymorphic-function.bad.typing.hopix.human-readable @@ -0,0 +1,4 @@ +fun : [`a] `a -> `a + id (x : int) = x + +let main : int = id (37) \ No newline at end of file diff --git a/flap/tests/03-Typing/16-polymorphic-function.good.expected b/flap/tests/03-Typing/16-polymorphic-function.good.expected new file mode 100644 index 0000000..a1dff99 --- /dev/null +++ b/flap/tests/03-Typing/16-polymorphic-function.good.expected @@ -0,0 +1,2 @@ +id : [`a] `a -> `a +main : int diff --git a/flap/tests/03-Typing/16-polymorphic-function.good.typing.hopix b/flap/tests/03-Typing/16-polymorphic-function.good.typing.hopix new file mode 100644 index 0000000..f0f8651 --- /dev/null +++ b/flap/tests/03-Typing/16-polymorphic-function.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 20 26))(end_p(""2 20 28)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9))))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 11))(end_p(""1 0 13)))))((value(TyVar(TId `a)))(position((start_p(""1 0 17))(end_p(""1 0 19)))))))(position((start_p(""1 0 11))(end_p(""1 0 19)))))))(position((start_p(""1 0 6))(end_p(""1 0 19))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 20 30))(end_p(""2 20 31)))))))(position((start_p(""2 20 30))(end_p(""2 20 31)))))((value(TyVar(TId `a)))(position((start_p(""2 20 34))(end_p(""2 20 36)))))))(position((start_p(""2 20 29))(end_p(""2 20 37)))))((value(Variable((value(Id x))(position((start_p(""2 20 40))(end_p(""2 20 41)))))()))(position((start_p(""2 20 40))(end_p(""2 20 41)))))))))))(position((start_p(""1 0 0))(end_p(""2 20 41)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 43 47))(end_p(""4 43 51)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 43 54))(end_p(""4 43 57)))))))(position((start_p(""4 43 54))(end_p(""4 43 57))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""4 43 60))(end_p(""4 43 62)))))((((value(TyCon(TCon int)()))(position((start_p(""4 43 63))(end_p(""4 43 66)))))))))(position((start_p(""4 43 60))(end_p(""4 43 67)))))((value(Literal((value(LInt 37))(position((start_p(""4 43 69))(end_p(""4 43 71)))))))(position((start_p(""4 43 68))(end_p(""4 43 72)))))))(position((start_p(""4 43 60))(end_p(""4 43 72)))))))))(position((start_p(""4 43 43))(end_p(""4 43 72)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/16-polymorphic-function.good.typing.hopix.human-readable b/flap/tests/03-Typing/16-polymorphic-function.good.typing.hopix.human-readable new file mode 100644 index 0000000..5ae687b --- /dev/null +++ b/flap/tests/03-Typing/16-polymorphic-function.good.typing.hopix.human-readable @@ -0,0 +1,4 @@ +fun : [`a] `a -> `a + id (x : `a) = x + +let main : int = id (37) \ No newline at end of file diff --git a/flap/tests/03-Typing/17-polymorphic-binary-function.bad.expected b/flap/tests/03-Typing/17-polymorphic-binary-function.bad.expected new file mode 100644 index 0000000..225abb0 --- /dev/null +++ b/flap/tests/03-Typing/17-polymorphic-binary-function.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + `a +Given: + `b diff --git a/flap/tests/03-Typing/17-polymorphic-binary-function.bad.typing.hopix b/flap/tests/03-Typing/17-polymorphic-binary-function.bad.typing.hopix new file mode 100644 index 0000000..0f8f50c --- /dev/null +++ b/flap/tests/03-Typing/17-polymorphic-binary-function.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 29 35))(end_p(""2 29 38)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""1 0 15))(end_p(""1 0 17)))))((value(TyVar(TId `b)))(position((start_p(""1 0 20))(end_p(""1 0 22))))))))(position((start_p(""1 0 15))(end_p(""1 0 22)))))((value(TyVar(TId `a)))(position((start_p(""1 0 26))(end_p(""1 0 28)))))))(position((start_p(""1 0 15))(end_p(""1 0 28)))))))(position((start_p(""1 0 6))(end_p(""1 0 28))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 29 41))(end_p(""2 29 42)))))))(position((start_p(""2 29 41))(end_p(""2 29 42)))))((value(TyVar(TId `b)))(position((start_p(""2 29 45))(end_p(""2 29 47)))))))(position((start_p(""2 29 40))(end_p(""2 29 48)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 29 51))(end_p(""2 29 52)))))))(position((start_p(""2 29 51))(end_p(""2 29 52)))))((value(TyVar(TId `a)))(position((start_p(""2 29 55))(end_p(""2 29 57)))))))(position((start_p(""2 29 50))(end_p(""2 29 58))))))))(position((start_p(""2 29 39))(end_p(""2 29 59)))))((value(Variable((value(Id x))(position((start_p(""2 29 62))(end_p(""2 29 63)))))()))(position((start_p(""2 29 62))(end_p(""2 29 63)))))))))))(position((start_p(""1 0 0))(end_p(""2 29 63)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 65 69))(end_p(""4 65 73)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 65 76))(end_p(""4 65 79)))))))(position((start_p(""4 65 76))(end_p(""4 65 79))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""5 82 86))(end_p(""5 82 89)))))((((value(TyCon(TCon int)()))(position((start_p(""5 82 90))(end_p(""5 82 93)))))((value(TyCon(TCon char)()))(position((start_p(""5 82 95))(end_p(""5 82 99)))))))))(position((start_p(""5 82 86))(end_p(""5 82 100)))))((value(Tuple(((value(Literal((value(LInt 37))(position((start_p(""5 82 102))(end_p(""5 82 104)))))))(position((start_p(""5 82 102))(end_p(""5 82 104)))))((value(Literal((value(LChar a))(position((start_p(""5 82 106))(end_p(""5 82 109)))))))(position((start_p(""5 82 106))(end_p(""5 82 109))))))))(position((start_p(""5 82 101))(end_p(""5 82 110)))))))(position((start_p(""5 82 86))(end_p(""5 82 110)))))))))(position((start_p(""4 65 65))(end_p(""5 82 110)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/17-polymorphic-binary-function.bad.typing.hopix.human-readable b/flap/tests/03-Typing/17-polymorphic-binary-function.bad.typing.hopix.human-readable new file mode 100644 index 0000000..f1319a3 --- /dev/null +++ b/flap/tests/03-Typing/17-polymorphic-binary-function.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : [`a, `b] `a * `b -> `a + fst ((x : `b), (y : `a)) = x + +let main : int = + fst (37, 'a') \ No newline at end of file diff --git a/flap/tests/03-Typing/17-polymorphic-binary-function.good.expected b/flap/tests/03-Typing/17-polymorphic-binary-function.good.expected new file mode 100644 index 0000000..34b75c1 --- /dev/null +++ b/flap/tests/03-Typing/17-polymorphic-binary-function.good.expected @@ -0,0 +1,2 @@ +fst : [`a, `b] `a * `b -> `a +main : int diff --git a/flap/tests/03-Typing/17-polymorphic-binary-function.good.typing.hopix b/flap/tests/03-Typing/17-polymorphic-binary-function.good.typing.hopix new file mode 100644 index 0000000..a2bcaf2 --- /dev/null +++ b/flap/tests/03-Typing/17-polymorphic-binary-function.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 29 35))(end_p(""2 29 38)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""1 0 15))(end_p(""1 0 17)))))((value(TyVar(TId `b)))(position((start_p(""1 0 20))(end_p(""1 0 22))))))))(position((start_p(""1 0 15))(end_p(""1 0 22)))))((value(TyVar(TId `a)))(position((start_p(""1 0 26))(end_p(""1 0 28)))))))(position((start_p(""1 0 15))(end_p(""1 0 28)))))))(position((start_p(""1 0 6))(end_p(""1 0 28))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 29 41))(end_p(""2 29 42)))))))(position((start_p(""2 29 41))(end_p(""2 29 42)))))((value(TyVar(TId `a)))(position((start_p(""2 29 45))(end_p(""2 29 47)))))))(position((start_p(""2 29 40))(end_p(""2 29 48)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 29 51))(end_p(""2 29 52)))))))(position((start_p(""2 29 51))(end_p(""2 29 52)))))((value(TyVar(TId `b)))(position((start_p(""2 29 55))(end_p(""2 29 57)))))))(position((start_p(""2 29 50))(end_p(""2 29 58))))))))(position((start_p(""2 29 39))(end_p(""2 29 59)))))((value(Variable((value(Id x))(position((start_p(""2 29 62))(end_p(""2 29 63)))))()))(position((start_p(""2 29 62))(end_p(""2 29 63)))))))))))(position((start_p(""1 0 0))(end_p(""2 29 63)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 65 69))(end_p(""4 65 73)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 65 76))(end_p(""4 65 79)))))))(position((start_p(""4 65 76))(end_p(""4 65 79))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""5 82 86))(end_p(""5 82 89)))))((((value(TyCon(TCon int)()))(position((start_p(""5 82 90))(end_p(""5 82 93)))))((value(TyCon(TCon char)()))(position((start_p(""5 82 95))(end_p(""5 82 99)))))))))(position((start_p(""5 82 86))(end_p(""5 82 100)))))((value(Tuple(((value(Literal((value(LInt 37))(position((start_p(""5 82 102))(end_p(""5 82 104)))))))(position((start_p(""5 82 102))(end_p(""5 82 104)))))((value(Literal((value(LChar a))(position((start_p(""5 82 106))(end_p(""5 82 109)))))))(position((start_p(""5 82 106))(end_p(""5 82 109))))))))(position((start_p(""5 82 101))(end_p(""5 82 110)))))))(position((start_p(""5 82 86))(end_p(""5 82 110)))))))))(position((start_p(""4 65 65))(end_p(""5 82 110)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/17-polymorphic-binary-function.good.typing.hopix.human-readable b/flap/tests/03-Typing/17-polymorphic-binary-function.good.typing.hopix.human-readable new file mode 100644 index 0000000..5ac3fa4 --- /dev/null +++ b/flap/tests/03-Typing/17-polymorphic-binary-function.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : [`a, `b] `a * `b -> `a + fst ((x : `a), (y : `b)) = x + +let main : int = + fst (37, 'a') \ No newline at end of file diff --git a/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.expected b/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.expected new file mode 100644 index 0000000..af772b3 --- /dev/null +++ b/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + `b +Given: + `a diff --git a/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.typing.hopix b/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.typing.hopix new file mode 100644 index 0000000..92f6a0a --- /dev/null +++ b/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id false_rec))(position((start_p(""2 24 28))(end_p(""2 24 37)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 15))(end_p(""1 0 17)))))((value(TyVar(TId `b)))(position((start_p(""1 0 21))(end_p(""1 0 23)))))))(position((start_p(""1 0 15))(end_p(""1 0 23)))))))(position((start_p(""1 0 6))(end_p(""1 0 23))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 24 39))(end_p(""2 24 40)))))))(position((start_p(""2 24 39))(end_p(""2 24 40)))))((value(TyVar(TId `a)))(position((start_p(""2 24 43))(end_p(""2 24 45)))))))(position((start_p(""2 24 38))(end_p(""2 24 46)))))((value(Apply((value(Variable((value(Id false_rec))(position((start_p(""2 24 49))(end_p(""2 24 58)))))((((value(TyVar(TId `a)))(position((start_p(""2 24 59))(end_p(""2 24 61)))))((value(TyVar(TId `a)))(position((start_p(""2 24 63))(end_p(""2 24 65)))))))))(position((start_p(""2 24 49))(end_p(""2 24 66)))))((value(Variable((value(Id x))(position((start_p(""2 24 68))(end_p(""2 24 69)))))()))(position((start_p(""2 24 67))(end_p(""2 24 70)))))))(position((start_p(""2 24 49))(end_p(""2 24 70)))))))))))(position((start_p(""1 0 0))(end_p(""2 24 70)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 72 76))(end_p(""4 72 80)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""4 72 83))(end_p(""4 72 89)))))))(position((start_p(""4 72 83))(end_p(""4 72 89))))))((value(Apply((value(Variable((value(Id false_rec))(position((start_p(""5 92 96))(end_p(""5 92 105)))))((((value(TyCon(TCon int)()))(position((start_p(""5 92 106))(end_p(""5 92 109)))))((value(TyCon(TCon string)()))(position((start_p(""5 92 111))(end_p(""5 92 117)))))))))(position((start_p(""5 92 96))(end_p(""5 92 118)))))((value(Literal((value(LInt 33))(position((start_p(""5 92 119))(end_p(""5 92 121)))))))(position((start_p(""5 92 118))(end_p(""5 92 122)))))))(position((start_p(""5 92 96))(end_p(""5 92 122)))))))))(position((start_p(""4 72 72))(end_p(""5 92 122)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.typing.hopix.human-readable b/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.typing.hopix.human-readable new file mode 100644 index 0000000..f8c6365 --- /dev/null +++ b/flap/tests/03-Typing/18-polymorphic-recursive-function.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : [`a, `b] `a -> `b + false_rec (x : `a) = false_rec<`a, `a> (x) + +let main : string = + false_rec(33) \ No newline at end of file diff --git a/flap/tests/03-Typing/18-polymorphic-recursive-function.good.expected b/flap/tests/03-Typing/18-polymorphic-recursive-function.good.expected new file mode 100644 index 0000000..553ea9c --- /dev/null +++ b/flap/tests/03-Typing/18-polymorphic-recursive-function.good.expected @@ -0,0 +1,2 @@ +false_rec : [`a, `b] `a -> `b +main : string diff --git a/flap/tests/03-Typing/18-polymorphic-recursive-function.good.typing.hopix b/flap/tests/03-Typing/18-polymorphic-recursive-function.good.typing.hopix new file mode 100644 index 0000000..7c7e1d8 --- /dev/null +++ b/flap/tests/03-Typing/18-polymorphic-recursive-function.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id false_rec))(position((start_p(""2 24 28))(end_p(""2 24 37)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 15))(end_p(""1 0 17)))))((value(TyVar(TId `b)))(position((start_p(""1 0 21))(end_p(""1 0 23)))))))(position((start_p(""1 0 15))(end_p(""1 0 23)))))))(position((start_p(""1 0 6))(end_p(""1 0 23))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 24 39))(end_p(""2 24 40)))))))(position((start_p(""2 24 39))(end_p(""2 24 40)))))((value(TyVar(TId `a)))(position((start_p(""2 24 43))(end_p(""2 24 45)))))))(position((start_p(""2 24 38))(end_p(""2 24 46)))))((value(Apply((value(Variable((value(Id false_rec))(position((start_p(""2 24 49))(end_p(""2 24 58)))))((((value(TyVar(TId `a)))(position((start_p(""2 24 59))(end_p(""2 24 61)))))((value(TyVar(TId `b)))(position((start_p(""2 24 63))(end_p(""2 24 65)))))))))(position((start_p(""2 24 49))(end_p(""2 24 66)))))((value(Variable((value(Id x))(position((start_p(""2 24 68))(end_p(""2 24 69)))))()))(position((start_p(""2 24 67))(end_p(""2 24 70)))))))(position((start_p(""2 24 49))(end_p(""2 24 70)))))))))))(position((start_p(""1 0 0))(end_p(""2 24 70)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 72 76))(end_p(""4 72 80)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""4 72 83))(end_p(""4 72 89)))))))(position((start_p(""4 72 83))(end_p(""4 72 89))))))((value(Apply((value(Variable((value(Id false_rec))(position((start_p(""5 92 96))(end_p(""5 92 105)))))((((value(TyCon(TCon int)()))(position((start_p(""5 92 106))(end_p(""5 92 109)))))((value(TyCon(TCon string)()))(position((start_p(""5 92 111))(end_p(""5 92 117)))))))))(position((start_p(""5 92 96))(end_p(""5 92 118)))))((value(Literal((value(LInt 33))(position((start_p(""5 92 119))(end_p(""5 92 121)))))))(position((start_p(""5 92 118))(end_p(""5 92 122)))))))(position((start_p(""5 92 96))(end_p(""5 92 122)))))))))(position((start_p(""4 72 72))(end_p(""5 92 122)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/18-polymorphic-recursive-function.good.typing.hopix.human-readable b/flap/tests/03-Typing/18-polymorphic-recursive-function.good.typing.hopix.human-readable new file mode 100644 index 0000000..cc39ee4 --- /dev/null +++ b/flap/tests/03-Typing/18-polymorphic-recursive-function.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : [`a, `b] `a -> `b + false_rec (x : `a) = false_rec<`a, `b> (x) + +let main : string = + false_rec(33) \ No newline at end of file diff --git a/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.expected b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.expected new file mode 100644 index 0000000..af772b3 --- /dev/null +++ b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + `b +Given: + `a diff --git a/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.typing.hopix b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.typing.hopix new file mode 100644 index 0000000..9898652 --- /dev/null +++ b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id false_rec))(position((start_p(""2 24 28))(end_p(""2 24 37)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 15))(end_p(""1 0 17)))))((value(TyVar(TId `b)))(position((start_p(""1 0 21))(end_p(""1 0 23)))))))(position((start_p(""1 0 15))(end_p(""1 0 23)))))))(position((start_p(""1 0 6))(end_p(""1 0 23))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 24 39))(end_p(""2 24 40)))))))(position((start_p(""2 24 39))(end_p(""2 24 40)))))((value(TyVar(TId `a)))(position((start_p(""2 24 43))(end_p(""2 24 45)))))))(position((start_p(""2 24 38))(end_p(""2 24 46)))))((value(Apply((value(Variable((value(Id false_rec2))(position((start_p(""2 24 49))(end_p(""2 24 59)))))((((value(TyVar(TId `b)))(position((start_p(""2 24 60))(end_p(""2 24 62)))))((value(TyVar(TId `a)))(position((start_p(""2 24 64))(end_p(""2 24 66)))))))))(position((start_p(""2 24 49))(end_p(""2 24 67)))))((value(Variable((value(Id x))(position((start_p(""2 24 69))(end_p(""2 24 70)))))()))(position((start_p(""2 24 68))(end_p(""2 24 71)))))))(position((start_p(""2 24 49))(end_p(""2 24 71)))))))(((value(Id false_rec2))(position((start_p(""5 97 101))(end_p(""5 97 111)))))(((value(ForallTy(((value(TId `a))(position((start_p(""4 73 80))(end_p(""4 73 82)))))((value(TId `b))(position((start_p(""4 73 84))(end_p(""4 73 86))))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""4 73 88))(end_p(""4 73 90)))))((value(TyVar(TId `b)))(position((start_p(""4 73 94))(end_p(""4 73 96)))))))(position((start_p(""4 73 88))(end_p(""4 73 96)))))))(position((start_p(""4 73 79))(end_p(""4 73 96))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 97 113))(end_p(""5 97 114)))))))(position((start_p(""5 97 113))(end_p(""5 97 114)))))((value(TyVar(TId `b)))(position((start_p(""5 97 117))(end_p(""5 97 119)))))))(position((start_p(""5 97 112))(end_p(""5 97 120)))))((value(Apply((value(Variable((value(Id false_rec))(position((start_p(""5 97 123))(end_p(""5 97 132)))))((((value(TyVar(TId `b)))(position((start_p(""5 97 133))(end_p(""5 97 135)))))((value(TyVar(TId `a)))(position((start_p(""5 97 137))(end_p(""5 97 139)))))))))(position((start_p(""5 97 123))(end_p(""5 97 140)))))((value(Variable((value(Id x))(position((start_p(""5 97 142))(end_p(""5 97 143)))))()))(position((start_p(""5 97 141))(end_p(""5 97 144)))))))(position((start_p(""5 97 123))(end_p(""5 97 144)))))))))))(position((start_p(""1 0 0))(end_p(""5 97 144)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""7 146 150))(end_p(""7 146 154)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""7 146 157))(end_p(""7 146 163)))))))(position((start_p(""7 146 157))(end_p(""7 146 163))))))((value(Apply((value(Variable((value(Id false_rec))(position((start_p(""7 146 166))(end_p(""7 146 175)))))((((value(TyCon(TCon int)()))(position((start_p(""7 146 176))(end_p(""7 146 179)))))((value(TyCon(TCon string)()))(position((start_p(""7 146 181))(end_p(""7 146 187)))))))))(position((start_p(""7 146 166))(end_p(""7 146 188)))))((value(Literal((value(LInt 43))(position((start_p(""7 146 190))(end_p(""7 146 192)))))))(position((start_p(""7 146 189))(end_p(""7 146 193)))))))(position((start_p(""7 146 166))(end_p(""7 146 193)))))))))(position((start_p(""7 146 146))(end_p(""7 146 193)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.typing.hopix.human-readable b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.typing.hopix.human-readable new file mode 100644 index 0000000..5d8d048 --- /dev/null +++ b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.bad.typing.hopix.human-readable @@ -0,0 +1,7 @@ +fun : [`a, `b] `a -> `b + false_rec (x : `a) = false_rec2<`b, `a> (x) + +and : [`a, `b] `b -> `b + false_rec2 (x : `b) = false_rec<`b, `a> (x) + +let main : string = false_rec (43) diff --git a/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.expected b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.expected new file mode 100644 index 0000000..e902b38 --- /dev/null +++ b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.expected @@ -0,0 +1,3 @@ +false_rec : [`a, `b] `a -> `b +false_rec2 : [`b, `a] `a -> `b +main : string diff --git a/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.typing.hopix b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.typing.hopix new file mode 100644 index 0000000..3440b56 --- /dev/null +++ b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id false_rec))(position((start_p(""2 24 28))(end_p(""2 24 37)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 15))(end_p(""1 0 17)))))((value(TyVar(TId `b)))(position((start_p(""1 0 21))(end_p(""1 0 23)))))))(position((start_p(""1 0 15))(end_p(""1 0 23)))))))(position((start_p(""1 0 6))(end_p(""1 0 23))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 24 39))(end_p(""2 24 40)))))))(position((start_p(""2 24 39))(end_p(""2 24 40)))))((value(TyVar(TId `a)))(position((start_p(""2 24 43))(end_p(""2 24 45)))))))(position((start_p(""2 24 38))(end_p(""2 24 46)))))((value(Apply((value(Variable((value(Id false_rec2))(position((start_p(""2 24 49))(end_p(""2 24 59)))))((((value(TyVar(TId `b)))(position((start_p(""2 24 60))(end_p(""2 24 62)))))((value(TyVar(TId `a)))(position((start_p(""2 24 64))(end_p(""2 24 66)))))))))(position((start_p(""2 24 49))(end_p(""2 24 67)))))((value(Variable((value(Id x))(position((start_p(""2 24 69))(end_p(""2 24 70)))))()))(position((start_p(""2 24 68))(end_p(""2 24 71)))))))(position((start_p(""2 24 49))(end_p(""2 24 71)))))))(((value(Id false_rec2))(position((start_p(""5 97 101))(end_p(""5 97 111)))))(((value(ForallTy(((value(TId `a))(position((start_p(""4 73 80))(end_p(""4 73 82)))))((value(TId `b))(position((start_p(""4 73 84))(end_p(""4 73 86))))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""4 73 88))(end_p(""4 73 90)))))((value(TyVar(TId `a)))(position((start_p(""4 73 94))(end_p(""4 73 96)))))))(position((start_p(""4 73 88))(end_p(""4 73 96)))))))(position((start_p(""4 73 79))(end_p(""4 73 96))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 97 113))(end_p(""5 97 114)))))))(position((start_p(""5 97 113))(end_p(""5 97 114)))))((value(TyVar(TId `b)))(position((start_p(""5 97 117))(end_p(""5 97 119)))))))(position((start_p(""5 97 112))(end_p(""5 97 120)))))((value(Apply((value(Variable((value(Id false_rec))(position((start_p(""5 97 123))(end_p(""5 97 132)))))((((value(TyVar(TId `b)))(position((start_p(""5 97 133))(end_p(""5 97 135)))))((value(TyVar(TId `a)))(position((start_p(""5 97 137))(end_p(""5 97 139)))))))))(position((start_p(""5 97 123))(end_p(""5 97 140)))))((value(Variable((value(Id x))(position((start_p(""5 97 142))(end_p(""5 97 143)))))()))(position((start_p(""5 97 141))(end_p(""5 97 144)))))))(position((start_p(""5 97 123))(end_p(""5 97 144)))))))))))(position((start_p(""1 0 0))(end_p(""5 97 144)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""7 146 150))(end_p(""7 146 154)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""7 146 157))(end_p(""7 146 163)))))))(position((start_p(""7 146 157))(end_p(""7 146 163))))))((value(Apply((value(Variable((value(Id false_rec))(position((start_p(""7 146 166))(end_p(""7 146 175)))))((((value(TyCon(TCon int)()))(position((start_p(""7 146 176))(end_p(""7 146 179)))))((value(TyCon(TCon string)()))(position((start_p(""7 146 181))(end_p(""7 146 187)))))))))(position((start_p(""7 146 166))(end_p(""7 146 188)))))((value(Literal((value(LInt 43))(position((start_p(""7 146 190))(end_p(""7 146 192)))))))(position((start_p(""7 146 189))(end_p(""7 146 193)))))))(position((start_p(""7 146 166))(end_p(""7 146 193)))))))))(position((start_p(""7 146 146))(end_p(""7 146 193)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.typing.hopix.human-readable b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.typing.hopix.human-readable new file mode 100644 index 0000000..ff7ac4d --- /dev/null +++ b/flap/tests/03-Typing/19-polymorphic-mutually-recursive-functions.good.typing.hopix.human-readable @@ -0,0 +1,7 @@ +fun : [`a, `b] `a -> `b + false_rec (x : `a) = false_rec2<`b, `a> (x) + +and : [`a, `b] `b -> `a + false_rec2 (x : `b) = false_rec<`b, `a> (x) + +let main : string = false_rec (43) diff --git a/flap/tests/03-Typing/20-polymorphic-binary-function.bad.expected b/flap/tests/03-Typing/20-polymorphic-binary-function.bad.expected new file mode 100644 index 0000000..0ac19fd --- /dev/null +++ b/flap/tests/03-Typing/20-polymorphic-binary-function.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + `b -> (`a -> `c) +Given: + `a -> (`b -> `c) diff --git a/flap/tests/03-Typing/20-polymorphic-binary-function.bad.typing.hopix b/flap/tests/03-Typing/20-polymorphic-binary-function.bad.typing.hopix new file mode 100644 index 0000000..2da13d6 --- /dev/null +++ b/flap/tests/03-Typing/20-polymorphic-binary-function.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id apply))(position((start_p(""2 37 41))(end_p(""2 37 46)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyTuple(((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 16))(end_p(""1 0 18)))))((value(TyVar(TId `b)))(position((start_p(""1 0 22))(end_p(""1 0 24)))))))(position((start_p(""1 0 15))(end_p(""1 0 25)))))((value(TyVar(TId `a)))(position((start_p(""1 0 28))(end_p(""1 0 30))))))))(position((start_p(""1 0 15))(end_p(""1 0 30)))))((value(TyVar(TId `b)))(position((start_p(""1 0 34))(end_p(""1 0 36)))))))(position((start_p(""1 0 15))(end_p(""1 0 36)))))))(position((start_p(""1 0 6))(end_p(""1 0 36))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""2 37 49))(end_p(""2 37 50)))))))(position((start_p(""2 37 49))(end_p(""2 37 50)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""2 37 53))(end_p(""2 37 55)))))((value(TyVar(TId `b)))(position((start_p(""2 37 59))(end_p(""2 37 61)))))))(position((start_p(""2 37 53))(end_p(""2 37 61)))))))(position((start_p(""2 37 48))(end_p(""2 37 62)))))((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 37 65))(end_p(""2 37 66)))))))(position((start_p(""2 37 65))(end_p(""2 37 66)))))((value(TyVar(TId `a)))(position((start_p(""2 37 69))(end_p(""2 37 71)))))))(position((start_p(""2 37 64))(end_p(""2 37 72))))))))(position((start_p(""2 37 47))(end_p(""2 37 73)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""2 37 76))(end_p(""2 37 77)))))()))(position((start_p(""2 37 76))(end_p(""2 37 77)))))((value(Variable((value(Id x))(position((start_p(""2 37 79))(end_p(""2 37 80)))))()))(position((start_p(""2 37 78))(end_p(""2 37 81)))))))(position((start_p(""2 37 76))(end_p(""2 37 81)))))))))))(position((start_p(""1 0 0))(end_p(""2 37 81)))))((value(DefineValue(RecFunctions((((value(Id curry))(position((start_p(""5 138 142))(end_p(""5 138 147)))))(((value(ForallTy(((value(TId `a))(position((start_p(""4 83 90))(end_p(""4 83 92)))))((value(TId `b))(position((start_p(""4 83 94))(end_p(""4 83 96)))))((value(TId `c))(position((start_p(""4 83 98))(end_p(""4 83 100))))))((value(TyArrow((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""4 83 103))(end_p(""4 83 105)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""4 83 109))(end_p(""4 83 111)))))((value(TyVar(TId `c)))(position((start_p(""4 83 115))(end_p(""4 83 117)))))))(position((start_p(""4 83 109))(end_p(""4 83 117)))))))(position((start_p(""4 83 102))(end_p(""4 83 118)))))((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""4 83 123))(end_p(""4 83 125)))))((value(TyVar(TId `b)))(position((start_p(""4 83 128))(end_p(""4 83 130))))))))(position((start_p(""4 83 123))(end_p(""4 83 130)))))((value(TyVar(TId `c)))(position((start_p(""4 83 134))(end_p(""4 83 136)))))))(position((start_p(""4 83 122))(end_p(""4 83 137)))))))(position((start_p(""4 83 102))(end_p(""4 83 137)))))))(position((start_p(""4 83 89))(end_p(""4 83 137))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""5 138 149))(end_p(""5 138 150)))))))(position((start_p(""5 138 149))(end_p(""5 138 150)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""5 138 153))(end_p(""5 138 155)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""5 138 159))(end_p(""5 138 161)))))((value(TyVar(TId `c)))(position((start_p(""5 138 165))(end_p(""5 138 167)))))))(position((start_p(""5 138 159))(end_p(""5 138 167)))))))(position((start_p(""5 138 153))(end_p(""5 138 167)))))))(position((start_p(""5 138 148))(end_p(""5 138 168)))))((value(Define(RecFunctions((((value(Id fc))(position((start_p(""7 195 203))(end_p(""7 195 205)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""6 171 181))(end_p(""6 171 183)))))((value(TyVar(TId `b)))(position((start_p(""6 171 186))(end_p(""6 171 188))))))))(position((start_p(""6 171 181))(end_p(""6 171 188)))))((value(TyVar(TId `c)))(position((start_p(""6 171 192))(end_p(""6 171 194)))))))(position((start_p(""6 171 181))(end_p(""6 171 194)))))))(position((start_p(""6 171 181))(end_p(""6 171 194))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""7 195 208))(end_p(""7 195 209)))))))(position((start_p(""7 195 208))(end_p(""7 195 209)))))((value(TyVar(TId `a)))(position((start_p(""7 195 211))(end_p(""7 195 213)))))))(position((start_p(""7 195 207))(end_p(""7 195 214)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""7 195 217))(end_p(""7 195 218)))))))(position((start_p(""7 195 217))(end_p(""7 195 218)))))((value(TyVar(TId `b)))(position((start_p(""7 195 221))(end_p(""7 195 223)))))))(position((start_p(""7 195 216))(end_p(""7 195 224))))))))(position((start_p(""7 195 206))(end_p(""7 195 225)))))((value(Apply((value(Apply((value(Variable((value(Id f))(position((start_p(""7 195 229))(end_p(""7 195 230)))))()))(position((start_p(""7 195 229))(end_p(""7 195 230)))))((value(Variable((value(Id x))(position((start_p(""7 195 232))(end_p(""7 195 233)))))()))(position((start_p(""7 195 231))(end_p(""7 195 234)))))))(position((start_p(""7 195 228))(end_p(""7 195 235)))))((value(Variable((value(Id y))(position((start_p(""7 195 237))(end_p(""7 195 238)))))()))(position((start_p(""7 195 236))(end_p(""7 195 239)))))))(position((start_p(""7 195 228))(end_p(""7 195 239)))))))))((value(Variable((value(Id fc))(position((start_p(""8 241 245))(end_p(""8 241 247)))))()))(position((start_p(""8 241 245))(end_p(""8 241 247)))))))(position((start_p(""6 171 175))(end_p(""8 241 247)))))))))))(position((start_p(""4 83 83))(end_p(""8 241 247)))))((value(DefineValue(RecFunctions((((value(Id uncurry))(position((start_p(""11 304 308))(end_p(""11 304 315)))))(((value(ForallTy(((value(TId `a))(position((start_p(""10 249 256))(end_p(""10 249 258)))))((value(TId `b))(position((start_p(""10 249 260))(end_p(""10 249 262)))))((value(TId `c))(position((start_p(""10 249 264))(end_p(""10 249 266))))))((value(TyArrow((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""10 249 269))(end_p(""10 249 271)))))((value(TyVar(TId `b)))(position((start_p(""10 249 274))(end_p(""10 249 276))))))))(position((start_p(""10 249 269))(end_p(""10 249 276)))))((value(TyVar(TId `c)))(position((start_p(""10 249 280))(end_p(""10 249 282)))))))(position((start_p(""10 249 268))(end_p(""10 249 283)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""10 249 288))(end_p(""10 249 290)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""10 249 294))(end_p(""10 249 296)))))((value(TyVar(TId `c)))(position((start_p(""10 249 300))(end_p(""10 249 302)))))))(position((start_p(""10 249 294))(end_p(""10 249 302)))))))(position((start_p(""10 249 287))(end_p(""10 249 303)))))))(position((start_p(""10 249 268))(end_p(""10 249 303)))))))(position((start_p(""10 249 255))(end_p(""10 249 303))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""11 304 318))(end_p(""11 304 319)))))))(position((start_p(""11 304 318))(end_p(""11 304 319)))))((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""11 304 322))(end_p(""11 304 324)))))((value(TyVar(TId `b)))(position((start_p(""11 304 327))(end_p(""11 304 329))))))))(position((start_p(""11 304 322))(end_p(""11 304 329)))))((value(TyVar(TId `c)))(position((start_p(""11 304 333))(end_p(""11 304 335)))))))(position((start_p(""11 304 322))(end_p(""11 304 335)))))))(position((start_p(""11 304 317))(end_p(""11 304 336)))))((value(Define(RecFunctions((((value(Id fu))(position((start_p(""13 364 370))(end_p(""13 364 372)))))(((value(ForallTy()((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""12 339 349))(end_p(""12 339 351)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""12 339 355))(end_p(""12 339 357)))))((value(TyVar(TId `c)))(position((start_p(""12 339 361))(end_p(""12 339 363)))))))(position((start_p(""12 339 355))(end_p(""12 339 363)))))))(position((start_p(""12 339 349))(end_p(""12 339 363)))))))(position((start_p(""12 339 349))(end_p(""12 339 363))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""13 364 374))(end_p(""13 364 375)))))))(position((start_p(""13 364 374))(end_p(""13 364 375)))))((value(TyVar(TId `a)))(position((start_p(""13 364 378))(end_p(""13 364 380)))))))(position((start_p(""13 364 373))(end_p(""13 364 381)))))((value(Define(RecFunctions((((value(Id g))(position((start_p(""15 406 413))(end_p(""15 406 414)))))(((value(ForallTy()((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""14 384 397))(end_p(""14 384 399)))))((value(TyVar(TId `c)))(position((start_p(""14 384 403))(end_p(""14 384 405)))))))(position((start_p(""14 384 397))(end_p(""14 384 405)))))))(position((start_p(""14 384 397))(end_p(""14 384 405))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""15 406 416))(end_p(""15 406 417)))))))(position((start_p(""15 406 416))(end_p(""15 406 417)))))((value(TyVar(TId `b)))(position((start_p(""15 406 420))(end_p(""15 406 422)))))))(position((start_p(""15 406 415))(end_p(""15 406 423)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""15 406 426))(end_p(""15 406 427)))))()))(position((start_p(""15 406 426))(end_p(""15 406 427)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""15 406 429))(end_p(""15 406 430)))))()))(position((start_p(""15 406 429))(end_p(""15 406 430)))))((value(Variable((value(Id y))(position((start_p(""15 406 432))(end_p(""15 406 433)))))()))(position((start_p(""15 406 432))(end_p(""15 406 433))))))))(position((start_p(""15 406 428))(end_p(""15 406 434)))))))(position((start_p(""15 406 426))(end_p(""15 406 434)))))))))((value(Variable((value(Id g))(position((start_p(""16 436 442))(end_p(""16 436 443)))))()))(position((start_p(""16 436 442))(end_p(""16 436 443)))))))(position((start_p(""14 384 390))(end_p(""16 436 444)))))))))((value(Variable((value(Id fu))(position((start_p(""17 446 450))(end_p(""17 446 452)))))()))(position((start_p(""17 446 450))(end_p(""17 446 452)))))))(position((start_p(""12 339 343))(end_p(""17 446 452)))))))))))(position((start_p(""10 249 249))(end_p(""17 446 452)))))((value(DefineValue(RecFunctions((((value(Id id_int))(position((start_p(""20 471 474))(end_p(""20 471 480)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""19 454 460))(end_p(""19 454 463)))))((value(TyCon(TCon int)()))(position((start_p(""19 454 467))(end_p(""19 454 470)))))))(position((start_p(""19 454 460))(end_p(""19 454 470)))))))(position((start_p(""19 454 460))(end_p(""19 454 470))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""20 471 482))(end_p(""20 471 483)))))))(position((start_p(""20 471 482))(end_p(""20 471 483)))))((value(TyCon(TCon int)()))(position((start_p(""20 471 486))(end_p(""20 471 489)))))))(position((start_p(""20 471 481))(end_p(""20 471 490)))))((value(Variable((value(Id x))(position((start_p(""20 471 493))(end_p(""20 471 494)))))()))(position((start_p(""20 471 493))(end_p(""20 471 494)))))))))))(position((start_p(""19 454 454))(end_p(""20 471 494)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""22 496 500))(end_p(""22 496 504)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""22 496 507))(end_p(""22 496 510)))))))(position((start_p(""22 496 507))(end_p(""22 496 510))))))((value(Apply((value(Apply((value(Variable((value(Id curry))(position((start_p(""23 513 517))(end_p(""23 513 522)))))((((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""23 513 523))(end_p(""23 513 526)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 530))(end_p(""23 513 533)))))))(position((start_p(""23 513 523))(end_p(""23 513 533)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 535))(end_p(""23 513 538)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 540))(end_p(""23 513 543)))))))))(position((start_p(""23 513 517))(end_p(""23 513 544)))))((value(Apply((value(Variable((value(Id uncurry))(position((start_p(""23 513 546))(end_p(""23 513 553)))))((((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""23 513 554))(end_p(""23 513 557)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 561))(end_p(""23 513 564)))))))(position((start_p(""23 513 554))(end_p(""23 513 564)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 566))(end_p(""23 513 569)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 571))(end_p(""23 513 574)))))))))(position((start_p(""23 513 546))(end_p(""23 513 575)))))((value(Variable((value(Id apply))(position((start_p(""23 513 577))(end_p(""23 513 582)))))((((value(TyCon(TCon int)()))(position((start_p(""23 513 583))(end_p(""23 513 586)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 588))(end_p(""23 513 591)))))))))(position((start_p(""23 513 576))(end_p(""23 513 593)))))))(position((start_p(""23 513 545))(end_p(""23 513 594)))))))(position((start_p(""23 513 516))(end_p(""23 513 595)))))((value(Tuple(((value(Variable((value(Id id_int))(position((start_p(""23 513 597))(end_p(""23 513 603)))))()))(position((start_p(""23 513 597))(end_p(""23 513 603)))))((value(Literal((value(LInt 37))(position((start_p(""23 513 605))(end_p(""23 513 607)))))))(position((start_p(""23 513 605))(end_p(""23 513 607))))))))(position((start_p(""23 513 596))(end_p(""23 513 608)))))))(position((start_p(""23 513 516))(end_p(""23 513 608)))))))))(position((start_p(""22 496 496))(end_p(""23 513 608)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/20-polymorphic-binary-function.bad.typing.hopix.human-readable b/flap/tests/03-Typing/20-polymorphic-binary-function.bad.typing.hopix.human-readable new file mode 100644 index 0000000..1bc45ea --- /dev/null +++ b/flap/tests/03-Typing/20-polymorphic-binary-function.bad.typing.hopix.human-readable @@ -0,0 +1,23 @@ +fun : [`a, `b] (`a -> `b) * `a -> `b + apply ((f : `a -> `b), (x : `a)) = f (x) + +fun : [`a, `b, `c] (`a -> `b -> `c) -> (`a * `b -> `c) + curry (f : `a -> `b -> `c) = + fun : `a * `b -> `c + fc ((x :`a), (y : `b)) = (f (x)) (y); + fc + +fun : [`a, `b, `c] (`a * `b -> `c) -> (`b -> `a -> `c) + uncurry (f : `a * `b -> `c) = + fun : `a -> `b -> `c + fu (x : `a) = + (fun : `b -> `c + g (y : `b) = f (x, y); + g); + fu + +fun : int -> int + id_int (x : int) = x + +let main : int = + (curry int, int, int> (uncurry int, int, int> (apply))) (id_int, 37) \ No newline at end of file diff --git a/flap/tests/03-Typing/20-polymorphic-binary-function.good.expected b/flap/tests/03-Typing/20-polymorphic-binary-function.good.expected new file mode 100644 index 0000000..3426967 --- /dev/null +++ b/flap/tests/03-Typing/20-polymorphic-binary-function.good.expected @@ -0,0 +1,5 @@ +apply : [`a, `b] (`a -> `b) * `a -> `b +curry : [`a, `b, `c] (`a -> (`b -> `c)) -> (`a * `b -> `c) +uncurry : [`a, `b, `c] (`a * `b -> `c) -> (`a -> (`b -> `c)) +id_int : int -> int +main : int diff --git a/flap/tests/03-Typing/20-polymorphic-binary-function.good.typing.hopix b/flap/tests/03-Typing/20-polymorphic-binary-function.good.typing.hopix new file mode 100644 index 0000000..08deea6 --- /dev/null +++ b/flap/tests/03-Typing/20-polymorphic-binary-function.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id apply))(position((start_p(""2 37 41))(end_p(""2 37 46)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyTuple(((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 16))(end_p(""1 0 18)))))((value(TyVar(TId `b)))(position((start_p(""1 0 22))(end_p(""1 0 24)))))))(position((start_p(""1 0 15))(end_p(""1 0 25)))))((value(TyVar(TId `a)))(position((start_p(""1 0 28))(end_p(""1 0 30))))))))(position((start_p(""1 0 15))(end_p(""1 0 30)))))((value(TyVar(TId `b)))(position((start_p(""1 0 34))(end_p(""1 0 36)))))))(position((start_p(""1 0 15))(end_p(""1 0 36)))))))(position((start_p(""1 0 6))(end_p(""1 0 36))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""2 37 49))(end_p(""2 37 50)))))))(position((start_p(""2 37 49))(end_p(""2 37 50)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""2 37 53))(end_p(""2 37 55)))))((value(TyVar(TId `b)))(position((start_p(""2 37 59))(end_p(""2 37 61)))))))(position((start_p(""2 37 53))(end_p(""2 37 61)))))))(position((start_p(""2 37 48))(end_p(""2 37 62)))))((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 37 65))(end_p(""2 37 66)))))))(position((start_p(""2 37 65))(end_p(""2 37 66)))))((value(TyVar(TId `a)))(position((start_p(""2 37 69))(end_p(""2 37 71)))))))(position((start_p(""2 37 64))(end_p(""2 37 72))))))))(position((start_p(""2 37 47))(end_p(""2 37 73)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""2 37 76))(end_p(""2 37 77)))))()))(position((start_p(""2 37 76))(end_p(""2 37 77)))))((value(Variable((value(Id x))(position((start_p(""2 37 79))(end_p(""2 37 80)))))()))(position((start_p(""2 37 78))(end_p(""2 37 81)))))))(position((start_p(""2 37 76))(end_p(""2 37 81)))))))))))(position((start_p(""1 0 0))(end_p(""2 37 81)))))((value(DefineValue(RecFunctions((((value(Id curry))(position((start_p(""5 138 142))(end_p(""5 138 147)))))(((value(ForallTy(((value(TId `a))(position((start_p(""4 83 90))(end_p(""4 83 92)))))((value(TId `b))(position((start_p(""4 83 94))(end_p(""4 83 96)))))((value(TId `c))(position((start_p(""4 83 98))(end_p(""4 83 100))))))((value(TyArrow((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""4 83 103))(end_p(""4 83 105)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""4 83 109))(end_p(""4 83 111)))))((value(TyVar(TId `c)))(position((start_p(""4 83 115))(end_p(""4 83 117)))))))(position((start_p(""4 83 109))(end_p(""4 83 117)))))))(position((start_p(""4 83 102))(end_p(""4 83 118)))))((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""4 83 123))(end_p(""4 83 125)))))((value(TyVar(TId `b)))(position((start_p(""4 83 128))(end_p(""4 83 130))))))))(position((start_p(""4 83 123))(end_p(""4 83 130)))))((value(TyVar(TId `c)))(position((start_p(""4 83 134))(end_p(""4 83 136)))))))(position((start_p(""4 83 122))(end_p(""4 83 137)))))))(position((start_p(""4 83 102))(end_p(""4 83 137)))))))(position((start_p(""4 83 89))(end_p(""4 83 137))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""5 138 149))(end_p(""5 138 150)))))))(position((start_p(""5 138 149))(end_p(""5 138 150)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""5 138 153))(end_p(""5 138 155)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""5 138 159))(end_p(""5 138 161)))))((value(TyVar(TId `c)))(position((start_p(""5 138 165))(end_p(""5 138 167)))))))(position((start_p(""5 138 159))(end_p(""5 138 167)))))))(position((start_p(""5 138 153))(end_p(""5 138 167)))))))(position((start_p(""5 138 148))(end_p(""5 138 168)))))((value(Define(RecFunctions((((value(Id fc))(position((start_p(""7 195 203))(end_p(""7 195 205)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""6 171 181))(end_p(""6 171 183)))))((value(TyVar(TId `b)))(position((start_p(""6 171 186))(end_p(""6 171 188))))))))(position((start_p(""6 171 181))(end_p(""6 171 188)))))((value(TyVar(TId `c)))(position((start_p(""6 171 192))(end_p(""6 171 194)))))))(position((start_p(""6 171 181))(end_p(""6 171 194)))))))(position((start_p(""6 171 181))(end_p(""6 171 194))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""7 195 208))(end_p(""7 195 209)))))))(position((start_p(""7 195 208))(end_p(""7 195 209)))))((value(TyVar(TId `a)))(position((start_p(""7 195 211))(end_p(""7 195 213)))))))(position((start_p(""7 195 207))(end_p(""7 195 214)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""7 195 217))(end_p(""7 195 218)))))))(position((start_p(""7 195 217))(end_p(""7 195 218)))))((value(TyVar(TId `b)))(position((start_p(""7 195 221))(end_p(""7 195 223)))))))(position((start_p(""7 195 216))(end_p(""7 195 224))))))))(position((start_p(""7 195 206))(end_p(""7 195 225)))))((value(Apply((value(Apply((value(Variable((value(Id f))(position((start_p(""7 195 229))(end_p(""7 195 230)))))()))(position((start_p(""7 195 229))(end_p(""7 195 230)))))((value(Variable((value(Id x))(position((start_p(""7 195 232))(end_p(""7 195 233)))))()))(position((start_p(""7 195 231))(end_p(""7 195 234)))))))(position((start_p(""7 195 228))(end_p(""7 195 235)))))((value(Variable((value(Id y))(position((start_p(""7 195 237))(end_p(""7 195 238)))))()))(position((start_p(""7 195 236))(end_p(""7 195 239)))))))(position((start_p(""7 195 228))(end_p(""7 195 239)))))))))((value(Variable((value(Id fc))(position((start_p(""8 241 245))(end_p(""8 241 247)))))()))(position((start_p(""8 241 245))(end_p(""8 241 247)))))))(position((start_p(""6 171 175))(end_p(""8 241 247)))))))))))(position((start_p(""4 83 83))(end_p(""8 241 247)))))((value(DefineValue(RecFunctions((((value(Id uncurry))(position((start_p(""11 304 308))(end_p(""11 304 315)))))(((value(ForallTy(((value(TId `a))(position((start_p(""10 249 256))(end_p(""10 249 258)))))((value(TId `b))(position((start_p(""10 249 260))(end_p(""10 249 262)))))((value(TId `c))(position((start_p(""10 249 264))(end_p(""10 249 266))))))((value(TyArrow((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""10 249 269))(end_p(""10 249 271)))))((value(TyVar(TId `b)))(position((start_p(""10 249 274))(end_p(""10 249 276))))))))(position((start_p(""10 249 269))(end_p(""10 249 276)))))((value(TyVar(TId `c)))(position((start_p(""10 249 280))(end_p(""10 249 282)))))))(position((start_p(""10 249 268))(end_p(""10 249 283)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""10 249 288))(end_p(""10 249 290)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""10 249 294))(end_p(""10 249 296)))))((value(TyVar(TId `c)))(position((start_p(""10 249 300))(end_p(""10 249 302)))))))(position((start_p(""10 249 294))(end_p(""10 249 302)))))))(position((start_p(""10 249 287))(end_p(""10 249 303)))))))(position((start_p(""10 249 268))(end_p(""10 249 303)))))))(position((start_p(""10 249 255))(end_p(""10 249 303))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""11 304 318))(end_p(""11 304 319)))))))(position((start_p(""11 304 318))(end_p(""11 304 319)))))((value(TyArrow((value(TyTuple(((value(TyVar(TId `a)))(position((start_p(""11 304 322))(end_p(""11 304 324)))))((value(TyVar(TId `b)))(position((start_p(""11 304 327))(end_p(""11 304 329))))))))(position((start_p(""11 304 322))(end_p(""11 304 329)))))((value(TyVar(TId `c)))(position((start_p(""11 304 333))(end_p(""11 304 335)))))))(position((start_p(""11 304 322))(end_p(""11 304 335)))))))(position((start_p(""11 304 317))(end_p(""11 304 336)))))((value(Define(RecFunctions((((value(Id fu))(position((start_p(""13 364 370))(end_p(""13 364 372)))))(((value(ForallTy()((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""12 339 349))(end_p(""12 339 351)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""12 339 355))(end_p(""12 339 357)))))((value(TyVar(TId `c)))(position((start_p(""12 339 361))(end_p(""12 339 363)))))))(position((start_p(""12 339 355))(end_p(""12 339 363)))))))(position((start_p(""12 339 349))(end_p(""12 339 363)))))))(position((start_p(""12 339 349))(end_p(""12 339 363))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""13 364 374))(end_p(""13 364 375)))))))(position((start_p(""13 364 374))(end_p(""13 364 375)))))((value(TyVar(TId `a)))(position((start_p(""13 364 378))(end_p(""13 364 380)))))))(position((start_p(""13 364 373))(end_p(""13 364 381)))))((value(Define(RecFunctions((((value(Id g))(position((start_p(""15 406 413))(end_p(""15 406 414)))))(((value(ForallTy()((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""14 384 397))(end_p(""14 384 399)))))((value(TyVar(TId `c)))(position((start_p(""14 384 403))(end_p(""14 384 405)))))))(position((start_p(""14 384 397))(end_p(""14 384 405)))))))(position((start_p(""14 384 397))(end_p(""14 384 405))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""15 406 416))(end_p(""15 406 417)))))))(position((start_p(""15 406 416))(end_p(""15 406 417)))))((value(TyVar(TId `b)))(position((start_p(""15 406 420))(end_p(""15 406 422)))))))(position((start_p(""15 406 415))(end_p(""15 406 423)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""15 406 426))(end_p(""15 406 427)))))()))(position((start_p(""15 406 426))(end_p(""15 406 427)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""15 406 429))(end_p(""15 406 430)))))()))(position((start_p(""15 406 429))(end_p(""15 406 430)))))((value(Variable((value(Id y))(position((start_p(""15 406 432))(end_p(""15 406 433)))))()))(position((start_p(""15 406 432))(end_p(""15 406 433))))))))(position((start_p(""15 406 428))(end_p(""15 406 434)))))))(position((start_p(""15 406 426))(end_p(""15 406 434)))))))))((value(Variable((value(Id g))(position((start_p(""16 436 442))(end_p(""16 436 443)))))()))(position((start_p(""16 436 442))(end_p(""16 436 443)))))))(position((start_p(""14 384 390))(end_p(""16 436 444)))))))))((value(Variable((value(Id fu))(position((start_p(""17 446 450))(end_p(""17 446 452)))))()))(position((start_p(""17 446 450))(end_p(""17 446 452)))))))(position((start_p(""12 339 343))(end_p(""17 446 452)))))))))))(position((start_p(""10 249 249))(end_p(""17 446 452)))))((value(DefineValue(RecFunctions((((value(Id id_int))(position((start_p(""20 471 474))(end_p(""20 471 480)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""19 454 460))(end_p(""19 454 463)))))((value(TyCon(TCon int)()))(position((start_p(""19 454 467))(end_p(""19 454 470)))))))(position((start_p(""19 454 460))(end_p(""19 454 470)))))))(position((start_p(""19 454 460))(end_p(""19 454 470))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""20 471 482))(end_p(""20 471 483)))))))(position((start_p(""20 471 482))(end_p(""20 471 483)))))((value(TyCon(TCon int)()))(position((start_p(""20 471 486))(end_p(""20 471 489)))))))(position((start_p(""20 471 481))(end_p(""20 471 490)))))((value(Variable((value(Id x))(position((start_p(""20 471 493))(end_p(""20 471 494)))))()))(position((start_p(""20 471 493))(end_p(""20 471 494)))))))))))(position((start_p(""19 454 454))(end_p(""20 471 494)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""22 496 500))(end_p(""22 496 504)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""22 496 507))(end_p(""22 496 510)))))))(position((start_p(""22 496 507))(end_p(""22 496 510))))))((value(Apply((value(Apply((value(Variable((value(Id curry))(position((start_p(""23 513 517))(end_p(""23 513 522)))))((((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""23 513 523))(end_p(""23 513 526)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 530))(end_p(""23 513 533)))))))(position((start_p(""23 513 523))(end_p(""23 513 533)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 535))(end_p(""23 513 538)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 540))(end_p(""23 513 543)))))))))(position((start_p(""23 513 517))(end_p(""23 513 544)))))((value(Apply((value(Variable((value(Id uncurry))(position((start_p(""23 513 546))(end_p(""23 513 553)))))((((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""23 513 554))(end_p(""23 513 557)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 561))(end_p(""23 513 564)))))))(position((start_p(""23 513 554))(end_p(""23 513 564)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 566))(end_p(""23 513 569)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 571))(end_p(""23 513 574)))))))))(position((start_p(""23 513 546))(end_p(""23 513 575)))))((value(Variable((value(Id apply))(position((start_p(""23 513 577))(end_p(""23 513 582)))))((((value(TyCon(TCon int)()))(position((start_p(""23 513 583))(end_p(""23 513 586)))))((value(TyCon(TCon int)()))(position((start_p(""23 513 588))(end_p(""23 513 591)))))))))(position((start_p(""23 513 576))(end_p(""23 513 593)))))))(position((start_p(""23 513 545))(end_p(""23 513 594)))))))(position((start_p(""23 513 516))(end_p(""23 513 595)))))((value(Tuple(((value(Variable((value(Id id_int))(position((start_p(""23 513 597))(end_p(""23 513 603)))))()))(position((start_p(""23 513 597))(end_p(""23 513 603)))))((value(Literal((value(LInt 37))(position((start_p(""23 513 605))(end_p(""23 513 607)))))))(position((start_p(""23 513 605))(end_p(""23 513 607))))))))(position((start_p(""23 513 596))(end_p(""23 513 608)))))))(position((start_p(""23 513 516))(end_p(""23 513 608)))))))))(position((start_p(""22 496 496))(end_p(""23 513 608)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/20-polymorphic-binary-function.good.typing.hopix.human-readable b/flap/tests/03-Typing/20-polymorphic-binary-function.good.typing.hopix.human-readable new file mode 100644 index 0000000..6991664 --- /dev/null +++ b/flap/tests/03-Typing/20-polymorphic-binary-function.good.typing.hopix.human-readable @@ -0,0 +1,23 @@ +fun : [`a, `b] (`a -> `b) * `a -> `b + apply ((f : `a -> `b), (x : `a)) = f (x) + +fun : [`a, `b, `c] (`a -> `b -> `c) -> (`a * `b -> `c) + curry (f : `a -> `b -> `c) = + fun : `a * `b -> `c + fc ((x :`a), (y : `b)) = (f (x)) (y); + fc + +fun : [`a, `b, `c] (`a * `b -> `c) -> (`a -> `b -> `c) + uncurry (f : `a * `b -> `c) = + fun : `a -> `b -> `c + fu (x : `a) = + (fun : `b -> `c + g (y : `b) = f (x, y); + g); + fu + +fun : int -> int + id_int (x : int) = x + +let main : int = + (curry int, int, int> (uncurry int, int, int> (apply))) (id_int, 37) \ No newline at end of file diff --git a/flap/tests/03-Typing/21-record-01.bad.expected b/flap/tests/03-Typing/21-record-01.bad.expected new file mode 100644 index 0000000..c091cc2 --- /dev/null +++ b/flap/tests/03-Typing/21-record-01.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + string diff --git a/flap/tests/03-Typing/21-record-01.bad.typing.hopix b/flap/tests/03-Typing/21-record-01.bad.typing.hopix new file mode 100644 index 0000000..516b8e4 --- /dev/null +++ b/flap/tests/03-Typing/21-record-01.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineRecordType((((value(LId x))(position((start_p(""1 0 11))(end_p(""1 0 12)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 15))(end_p(""1 0 18))))))(((value(LId y))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 24))(end_p(""1 0 27))))))))))(position((start_p(""1 0 0))(end_p(""1 0 29)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 31 35))(end_p(""3 31 36)))))(((value(ForallTy()((value(TyCon(TCon p)()))(position((start_p(""3 31 39))(end_p(""3 31 40)))))))(position((start_p(""3 31 39))(end_p(""3 31 40))))))((value(Record((((value(LId x))(position((start_p(""3 31 45))(end_p(""3 31 46)))))((value(Literal((value(LInt 0))(position((start_p(""3 31 49))(end_p(""3 31 50)))))))(position((start_p(""3 31 49))(end_p(""3 31 50))))))(((value(LId y))(position((start_p(""3 31 52))(end_p(""3 31 53)))))((value(Literal((value(LString foo))(position((start_p(""3 31 60))(end_p(""3 31 61)))))))(position((start_p(""3 31 60))(end_p(""3 31 61)))))))(())))(position((start_p(""3 31 43))(end_p(""3 31 65)))))))))(position((start_p(""3 31 31))(end_p(""3 31 65)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/21-record-01.bad.typing.hopix.human-readable b/flap/tests/03-Typing/21-record-01.bad.typing.hopix.human-readable new file mode 100644 index 0000000..85b7a1e --- /dev/null +++ b/flap/tests/03-Typing/21-record-01.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type p = { x : int, y : int } + +let x : p = { x = 0, y = "foo" }<> \ No newline at end of file diff --git a/flap/tests/03-Typing/21-record-01.good.expected b/flap/tests/03-Typing/21-record-01.good.expected new file mode 100644 index 0000000..62652c8 --- /dev/null +++ b/flap/tests/03-Typing/21-record-01.good.expected @@ -0,0 +1 @@ +x : p diff --git a/flap/tests/03-Typing/21-record-01.good.typing.hopix b/flap/tests/03-Typing/21-record-01.good.typing.hopix new file mode 100644 index 0000000..f4efce6 --- /dev/null +++ b/flap/tests/03-Typing/21-record-01.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineRecordType((((value(LId x))(position((start_p(""1 0 11))(end_p(""1 0 12)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 15))(end_p(""1 0 18))))))(((value(LId y))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 24))(end_p(""1 0 27))))))))))(position((start_p(""1 0 0))(end_p(""1 0 29)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 31 35))(end_p(""3 31 36)))))(((value(ForallTy()((value(TyCon(TCon p)()))(position((start_p(""3 31 39))(end_p(""3 31 40)))))))(position((start_p(""3 31 39))(end_p(""3 31 40))))))((value(Record((((value(LId x))(position((start_p(""3 31 45))(end_p(""3 31 46)))))((value(Literal((value(LInt 0))(position((start_p(""3 31 49))(end_p(""3 31 50)))))))(position((start_p(""3 31 49))(end_p(""3 31 50))))))(((value(LId y))(position((start_p(""3 31 52))(end_p(""3 31 53)))))((value(Literal((value(LInt 1))(position((start_p(""3 31 56))(end_p(""3 31 57)))))))(position((start_p(""3 31 56))(end_p(""3 31 57)))))))(())))(position((start_p(""3 31 43))(end_p(""3 31 61)))))))))(position((start_p(""3 31 31))(end_p(""3 31 61)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/21-record-01.good.typing.hopix.human-readable b/flap/tests/03-Typing/21-record-01.good.typing.hopix.human-readable new file mode 100644 index 0000000..d1d0f8c --- /dev/null +++ b/flap/tests/03-Typing/21-record-01.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type p = { x : int, y : int } + +let x : p = { x = 0, y = 1 }<> \ No newline at end of file diff --git a/flap/tests/03-Typing/22-polymorphic-record.bad.expected b/flap/tests/03-Typing/22-polymorphic-record.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/22-polymorphic-record.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/22-polymorphic-record.bad.typing.hopix b/flap/tests/03-Typing/22-polymorphic-record.bad.typing.hopix new file mode 100644 index 0000000..80ff508 --- /dev/null +++ b/flap/tests/03-Typing/22-polymorphic-record.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 8))(end_p(""1 0 10))))))(DefineRecordType((((value(LId x))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(TyVar(TId `a)))(position((start_p(""1 0 20))(end_p(""1 0 22))))))(((value(LId y))(position((start_p(""1 0 24))(end_p(""1 0 25)))))((value(TyCon(TCon string)()))(position((start_p(""1 0 28))(end_p(""1 0 34))))))))))(position((start_p(""1 0 0))(end_p(""1 0 36)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 38 42))(end_p(""3 38 43)))))(((value(ForallTy()((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""3 38 49))(end_p(""3 38 52))))))))(position((start_p(""3 38 46))(end_p(""3 38 53)))))))(position((start_p(""3 38 46))(end_p(""3 38 53))))))((value(Record((((value(LId x))(position((start_p(""3 38 58))(end_p(""3 38 59)))))((value(Literal((value(LInt 0))(position((start_p(""3 38 62))(end_p(""3 38 63)))))))(position((start_p(""3 38 62))(end_p(""3 38 63))))))(((value(LId y))(position((start_p(""3 38 65))(end_p(""3 38 66)))))((value(Literal((value(LInt 1))(position((start_p(""3 38 69))(end_p(""3 38 70)))))))(position((start_p(""3 38 69))(end_p(""3 38 70)))))))((((value(TyCon(TCon int)()))(position((start_p(""3 38 73))(end_p(""3 38 76)))))))))(position((start_p(""3 38 56))(end_p(""3 38 77)))))))))(position((start_p(""3 38 38))(end_p(""3 38 77)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/22-polymorphic-record.bad.typing.hopix.human-readable b/flap/tests/03-Typing/22-polymorphic-record.bad.typing.hopix.human-readable new file mode 100644 index 0000000..31c8e2a --- /dev/null +++ b/flap/tests/03-Typing/22-polymorphic-record.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type p <`a> = { x : `a, y : string } + +let x : p = { x = 0, y = 1 } \ No newline at end of file diff --git a/flap/tests/03-Typing/22-polymorphic-record.good.expected b/flap/tests/03-Typing/22-polymorphic-record.good.expected new file mode 100644 index 0000000..948db15 --- /dev/null +++ b/flap/tests/03-Typing/22-polymorphic-record.good.expected @@ -0,0 +1 @@ +x : p diff --git a/flap/tests/03-Typing/22-polymorphic-record.good.typing.hopix b/flap/tests/03-Typing/22-polymorphic-record.good.typing.hopix new file mode 100644 index 0000000..7419b03 --- /dev/null +++ b/flap/tests/03-Typing/22-polymorphic-record.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 8))(end_p(""1 0 10))))))(DefineRecordType((((value(LId x))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(TyVar(TId `a)))(position((start_p(""1 0 20))(end_p(""1 0 22))))))(((value(LId y))(position((start_p(""1 0 24))(end_p(""1 0 25)))))((value(TyVar(TId `a)))(position((start_p(""1 0 28))(end_p(""1 0 30))))))))))(position((start_p(""1 0 0))(end_p(""1 0 32)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 34 38))(end_p(""3 34 39)))))(((value(ForallTy()((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""3 34 45))(end_p(""3 34 48))))))))(position((start_p(""3 34 42))(end_p(""3 34 49)))))))(position((start_p(""3 34 42))(end_p(""3 34 49))))))((value(Record((((value(LId x))(position((start_p(""3 34 54))(end_p(""3 34 55)))))((value(Literal((value(LInt 0))(position((start_p(""3 34 58))(end_p(""3 34 59)))))))(position((start_p(""3 34 58))(end_p(""3 34 59))))))(((value(LId y))(position((start_p(""3 34 61))(end_p(""3 34 62)))))((value(Literal((value(LInt 1))(position((start_p(""3 34 65))(end_p(""3 34 66)))))))(position((start_p(""3 34 65))(end_p(""3 34 66)))))))((((value(TyCon(TCon int)()))(position((start_p(""3 34 69))(end_p(""3 34 72)))))))))(position((start_p(""3 34 52))(end_p(""3 34 73)))))))))(position((start_p(""3 34 34))(end_p(""3 34 73)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/22-polymorphic-record.good.typing.hopix.human-readable b/flap/tests/03-Typing/22-polymorphic-record.good.typing.hopix.human-readable new file mode 100644 index 0000000..7bd33ed --- /dev/null +++ b/flap/tests/03-Typing/22-polymorphic-record.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type p <`a> = { x : `a, y : `a } + +let x : p = { x = 0, y = 1 } \ No newline at end of file diff --git a/flap/tests/03-Typing/23-polymorphic-record-02.bad.expected b/flap/tests/03-Typing/23-polymorphic-record-02.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/23-polymorphic-record-02.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/23-polymorphic-record-02.bad.typing.hopix b/flap/tests/03-Typing/23-polymorphic-record-02.bad.typing.hopix new file mode 100644 index 0000000..d488688 --- /dev/null +++ b/flap/tests/03-Typing/23-polymorphic-record-02.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 8))(end_p(""1 0 10)))))((value(TId `b))(position((start_p(""1 0 12))(end_p(""1 0 14))))))(DefineRecordType((((value(LId x))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(TyCon(TCon string)()))(position((start_p(""1 0 24))(end_p(""1 0 30))))))(((value(LId y))(position((start_p(""1 0 32))(end_p(""1 0 33)))))((value(TyVar(TId `b)))(position((start_p(""1 0 36))(end_p(""1 0 38))))))))))(position((start_p(""1 0 0))(end_p(""1 0 40)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 42 46))(end_p(""3 42 47)))))(((value(ForallTy()((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""3 42 53))(end_p(""3 42 56)))))((value(TyCon(TCon string)()))(position((start_p(""3 42 58))(end_p(""3 42 64))))))))(position((start_p(""3 42 50))(end_p(""3 42 65)))))))(position((start_p(""3 42 50))(end_p(""3 42 65))))))((value(Record((((value(LId x))(position((start_p(""3 42 70))(end_p(""3 42 71)))))((value(Literal((value(LInt 0))(position((start_p(""3 42 74))(end_p(""3 42 75)))))))(position((start_p(""3 42 74))(end_p(""3 42 75))))))(((value(LId y))(position((start_p(""3 42 77))(end_p(""3 42 78)))))((value(Literal((value(LString"River Song"))(position((start_p(""3 42 92))(end_p(""3 42 93)))))))(position((start_p(""3 42 92))(end_p(""3 42 93)))))))((((value(TyCon(TCon int)()))(position((start_p(""3 42 96))(end_p(""3 42 99)))))((value(TyCon(TCon string)()))(position((start_p(""3 42 101))(end_p(""3 42 107)))))))))(position((start_p(""3 42 68))(end_p(""3 42 108)))))))))(position((start_p(""3 42 42))(end_p(""3 42 108)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/23-polymorphic-record-02.bad.typing.hopix.human-readable b/flap/tests/03-Typing/23-polymorphic-record-02.bad.typing.hopix.human-readable new file mode 100644 index 0000000..6328d4f --- /dev/null +++ b/flap/tests/03-Typing/23-polymorphic-record-02.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type p <`a, `b> = { x : string, y : `b } + +let x : p = { x = 0, y = "River Song" } \ No newline at end of file diff --git a/flap/tests/03-Typing/23-polymorphic-record-02.good.expected b/flap/tests/03-Typing/23-polymorphic-record-02.good.expected new file mode 100644 index 0000000..1ca64d4 --- /dev/null +++ b/flap/tests/03-Typing/23-polymorphic-record-02.good.expected @@ -0,0 +1 @@ +x : p diff --git a/flap/tests/03-Typing/23-polymorphic-record-02.good.typing.hopix b/flap/tests/03-Typing/23-polymorphic-record-02.good.typing.hopix new file mode 100644 index 0000000..d360cb3 --- /dev/null +++ b/flap/tests/03-Typing/23-polymorphic-record-02.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 8))(end_p(""1 0 10)))))((value(TId `b))(position((start_p(""1 0 12))(end_p(""1 0 14))))))(DefineRecordType((((value(LId x))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(TyVar(TId `a)))(position((start_p(""1 0 24))(end_p(""1 0 26))))))(((value(LId y))(position((start_p(""1 0 28))(end_p(""1 0 29)))))((value(TyVar(TId `b)))(position((start_p(""1 0 32))(end_p(""1 0 34))))))))))(position((start_p(""1 0 0))(end_p(""1 0 36)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 38 42))(end_p(""3 38 43)))))(((value(ForallTy()((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""3 38 49))(end_p(""3 38 52)))))((value(TyCon(TCon string)()))(position((start_p(""3 38 54))(end_p(""3 38 60))))))))(position((start_p(""3 38 46))(end_p(""3 38 61)))))))(position((start_p(""3 38 46))(end_p(""3 38 61))))))((value(Record((((value(LId x))(position((start_p(""3 38 66))(end_p(""3 38 67)))))((value(Literal((value(LInt 0))(position((start_p(""3 38 70))(end_p(""3 38 71)))))))(position((start_p(""3 38 70))(end_p(""3 38 71))))))(((value(LId y))(position((start_p(""3 38 73))(end_p(""3 38 74)))))((value(Literal((value(LString"River Song"))(position((start_p(""3 38 88))(end_p(""3 38 89)))))))(position((start_p(""3 38 88))(end_p(""3 38 89)))))))((((value(TyCon(TCon int)()))(position((start_p(""3 38 92))(end_p(""3 38 95)))))((value(TyCon(TCon string)()))(position((start_p(""3 38 97))(end_p(""3 38 103)))))))))(position((start_p(""3 38 64))(end_p(""3 38 104)))))))))(position((start_p(""3 38 38))(end_p(""3 38 104)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/23-polymorphic-record-02.good.typing.hopix.human-readable b/flap/tests/03-Typing/23-polymorphic-record-02.good.typing.hopix.human-readable new file mode 100644 index 0000000..e819189 --- /dev/null +++ b/flap/tests/03-Typing/23-polymorphic-record-02.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type p <`a, `b> = { x : `a, y : `b } + +let x : p = { x = 0, y = "River Song" } \ No newline at end of file diff --git a/flap/tests/03-Typing/24-record-proj.bad.expected b/flap/tests/03-Typing/24-record-proj.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/24-record-proj.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/24-record-proj.bad.typing.hopix b/flap/tests/03-Typing/24-record-proj.bad.typing.hopix new file mode 100644 index 0000000..5df6b22 --- /dev/null +++ b/flap/tests/03-Typing/24-record-proj.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineRecordType((((value(LId x))(position((start_p(""1 0 11))(end_p(""1 0 12)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 15))(end_p(""1 0 18))))))(((value(LId y))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(TyCon(TCon string)()))(position((start_p(""1 0 24))(end_p(""1 0 30))))))))))(position((start_p(""1 0 0))(end_p(""1 0 32)))))((value(DefineValue(SimpleValue(((value(Id p))(position((start_p(""3 34 38))(end_p(""3 34 39)))))(((value(ForallTy()((value(TyCon(TCon p)()))(position((start_p(""3 34 42))(end_p(""3 34 43)))))))(position((start_p(""3 34 42))(end_p(""3 34 43))))))((value(Record((((value(LId x))(position((start_p(""3 34 48))(end_p(""3 34 49)))))((value(Literal((value(LInt 42))(position((start_p(""3 34 52))(end_p(""3 34 54)))))))(position((start_p(""3 34 52))(end_p(""3 34 54))))))(((value(LId y))(position((start_p(""3 34 56))(end_p(""3 34 57)))))((value(Literal((value(LString Dalek))(position((start_p(""3 34 66))(end_p(""3 34 67)))))))(position((start_p(""3 34 66))(end_p(""3 34 67)))))))(())))(position((start_p(""3 34 46))(end_p(""3 34 71)))))))))(position((start_p(""3 34 34))(end_p(""3 34 71)))))((value(DefineValue(SimpleValue(((value(Id px))(position((start_p(""5 73 77))(end_p(""5 73 79)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""5 73 82))(end_p(""5 73 88)))))))(position((start_p(""5 73 82))(end_p(""5 73 88))))))((value(Field((value(Variable((value(Id p))(position((start_p(""5 73 91))(end_p(""5 73 92)))))()))(position((start_p(""5 73 91))(end_p(""5 73 92)))))((value(LId x))(position((start_p(""5 73 93))(end_p(""5 73 94)))))()))(position((start_p(""5 73 91))(end_p(""5 73 94)))))))))(position((start_p(""5 73 73))(end_p(""5 73 94)))))((value(DefineValue(SimpleValue(((value(Id py))(position((start_p(""7 96 100))(end_p(""7 96 102)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""7 96 105))(end_p(""7 96 111)))))))(position((start_p(""7 96 105))(end_p(""7 96 111))))))((value(Field((value(Variable((value(Id p))(position((start_p(""7 96 114))(end_p(""7 96 115)))))()))(position((start_p(""7 96 114))(end_p(""7 96 115)))))((value(LId y))(position((start_p(""7 96 116))(end_p(""7 96 117)))))()))(position((start_p(""7 96 114))(end_p(""7 96 117)))))))))(position((start_p(""7 96 96))(end_p(""7 96 117)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/24-record-proj.bad.typing.hopix.human-readable b/flap/tests/03-Typing/24-record-proj.bad.typing.hopix.human-readable new file mode 100644 index 0000000..88a7be4 --- /dev/null +++ b/flap/tests/03-Typing/24-record-proj.bad.typing.hopix.human-readable @@ -0,0 +1,7 @@ +type p = { x : int, y : string } + +let p : p = { x = 42, y = "Dalek" }<> + +let px : string = p.x + +let py : string = p.y \ No newline at end of file diff --git a/flap/tests/03-Typing/24-record-proj.good.expected b/flap/tests/03-Typing/24-record-proj.good.expected new file mode 100644 index 0000000..799aba2 --- /dev/null +++ b/flap/tests/03-Typing/24-record-proj.good.expected @@ -0,0 +1,3 @@ +p : p +px : int +py : string diff --git a/flap/tests/03-Typing/24-record-proj.good.typing.hopix b/flap/tests/03-Typing/24-record-proj.good.typing.hopix new file mode 100644 index 0000000..c9c26c3 --- /dev/null +++ b/flap/tests/03-Typing/24-record-proj.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineRecordType((((value(LId x))(position((start_p(""1 0 11))(end_p(""1 0 12)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 15))(end_p(""1 0 18))))))(((value(LId y))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(TyCon(TCon string)()))(position((start_p(""1 0 24))(end_p(""1 0 30))))))))))(position((start_p(""1 0 0))(end_p(""1 0 32)))))((value(DefineValue(SimpleValue(((value(Id p))(position((start_p(""3 34 38))(end_p(""3 34 39)))))(((value(ForallTy()((value(TyCon(TCon p)()))(position((start_p(""3 34 42))(end_p(""3 34 43)))))))(position((start_p(""3 34 42))(end_p(""3 34 43))))))((value(Record((((value(LId x))(position((start_p(""3 34 48))(end_p(""3 34 49)))))((value(Literal((value(LInt 42))(position((start_p(""3 34 52))(end_p(""3 34 54)))))))(position((start_p(""3 34 52))(end_p(""3 34 54))))))(((value(LId y))(position((start_p(""3 34 56))(end_p(""3 34 57)))))((value(Literal((value(LString Dalek))(position((start_p(""3 34 66))(end_p(""3 34 67)))))))(position((start_p(""3 34 66))(end_p(""3 34 67)))))))(())))(position((start_p(""3 34 46))(end_p(""3 34 71)))))))))(position((start_p(""3 34 34))(end_p(""3 34 71)))))((value(DefineValue(SimpleValue(((value(Id px))(position((start_p(""5 73 77))(end_p(""5 73 79)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""5 73 82))(end_p(""5 73 85)))))))(position((start_p(""5 73 82))(end_p(""5 73 85))))))((value(Field((value(Variable((value(Id p))(position((start_p(""5 73 88))(end_p(""5 73 89)))))()))(position((start_p(""5 73 88))(end_p(""5 73 89)))))((value(LId x))(position((start_p(""5 73 90))(end_p(""5 73 91)))))()))(position((start_p(""5 73 88))(end_p(""5 73 91)))))))))(position((start_p(""5 73 73))(end_p(""5 73 91)))))((value(DefineValue(SimpleValue(((value(Id py))(position((start_p(""7 93 97))(end_p(""7 93 99)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""7 93 102))(end_p(""7 93 108)))))))(position((start_p(""7 93 102))(end_p(""7 93 108))))))((value(Field((value(Variable((value(Id p))(position((start_p(""7 93 111))(end_p(""7 93 112)))))()))(position((start_p(""7 93 111))(end_p(""7 93 112)))))((value(LId y))(position((start_p(""7 93 113))(end_p(""7 93 114)))))()))(position((start_p(""7 93 111))(end_p(""7 93 114)))))))))(position((start_p(""7 93 93))(end_p(""7 93 114)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/24-record-proj.good.typing.hopix.human-readable b/flap/tests/03-Typing/24-record-proj.good.typing.hopix.human-readable new file mode 100644 index 0000000..4432db6 --- /dev/null +++ b/flap/tests/03-Typing/24-record-proj.good.typing.hopix.human-readable @@ -0,0 +1,7 @@ +type p = { x : int, y : string } + +let p : p = { x = 42, y = "Dalek" }<> + +let px : int = p.x + +let py : string = p.y \ No newline at end of file diff --git a/flap/tests/03-Typing/25-polymorphic-record-proj.bad.expected b/flap/tests/03-Typing/25-polymorphic-record-proj.bad.expected new file mode 100644 index 0000000..1c2bdde --- /dev/null +++ b/flap/tests/03-Typing/25-polymorphic-record-proj.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + Unbound label `z'. diff --git a/flap/tests/03-Typing/25-polymorphic-record-proj.bad.typing.hopix b/flap/tests/03-Typing/25-polymorphic-record-proj.bad.typing.hopix new file mode 100644 index 0000000..4324934 --- /dev/null +++ b/flap/tests/03-Typing/25-polymorphic-record-proj.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineRecordType((((value(LId x))(position((start_p(""1 0 19))(end_p(""1 0 20)))))((value(TyVar(TId `a)))(position((start_p(""1 0 23))(end_p(""1 0 25))))))(((value(LId y))(position((start_p(""1 0 27))(end_p(""1 0 28)))))((value(TyVar(TId `b)))(position((start_p(""1 0 31))(end_p(""1 0 33))))))))))(position((start_p(""1 0 0))(end_p(""1 0 35)))))((value(DefineValue(SimpleValue(((value(Id p))(position((start_p(""3 37 41))(end_p(""3 37 42)))))(((value(ForallTy()((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""3 37 47))(end_p(""3 37 50)))))((value(TyCon(TCon string)()))(position((start_p(""3 37 52))(end_p(""3 37 58))))))))(position((start_p(""3 37 45))(end_p(""3 37 59)))))))(position((start_p(""3 37 45))(end_p(""3 37 59))))))((value(Record((((value(LId x))(position((start_p(""3 37 64))(end_p(""3 37 65)))))((value(Literal((value(LInt 0))(position((start_p(""3 37 68))(end_p(""3 37 69)))))))(position((start_p(""3 37 68))(end_p(""3 37 69))))))(((value(LId y))(position((start_p(""3 37 71))(end_p(""3 37 72)))))((value(Literal((value(LString"Rose Tyler"))(position((start_p(""3 37 86))(end_p(""3 37 87)))))))(position((start_p(""3 37 86))(end_p(""3 37 87)))))))((((value(TyCon(TCon int)()))(position((start_p(""3 37 90))(end_p(""3 37 93)))))((value(TyCon(TCon string)()))(position((start_p(""3 37 95))(end_p(""3 37 101)))))))))(position((start_p(""3 37 62))(end_p(""3 37 102)))))))))(position((start_p(""3 37 37))(end_p(""3 37 102)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""5 104 108))(end_p(""5 104 109)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""5 104 112))(end_p(""5 104 115)))))))(position((start_p(""5 104 112))(end_p(""5 104 115))))))((value(Field((value(Variable((value(Id p))(position((start_p(""5 104 118))(end_p(""5 104 119)))))()))(position((start_p(""5 104 118))(end_p(""5 104 119)))))((value(LId x))(position((start_p(""5 104 120))(end_p(""5 104 121)))))((((value(TyCon(TCon int)()))(position((start_p(""5 104 122))(end_p(""5 104 125)))))((value(TyCon(TCon string)()))(position((start_p(""5 104 127))(end_p(""5 104 133)))))))))(position((start_p(""5 104 118))(end_p(""5 104 134)))))))))(position((start_p(""5 104 104))(end_p(""5 104 134)))))((value(DefineValue(SimpleValue(((value(Id y))(position((start_p(""7 136 140))(end_p(""7 136 141)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""7 136 144))(end_p(""7 136 150)))))))(position((start_p(""7 136 144))(end_p(""7 136 150))))))((value(Field((value(Variable((value(Id p))(position((start_p(""7 136 153))(end_p(""7 136 154)))))()))(position((start_p(""7 136 153))(end_p(""7 136 154)))))((value(LId z))(position((start_p(""7 136 155))(end_p(""7 136 156)))))((((value(TyCon(TCon int)()))(position((start_p(""7 136 157))(end_p(""7 136 160)))))((value(TyCon(TCon string)()))(position((start_p(""7 136 162))(end_p(""7 136 168)))))))))(position((start_p(""7 136 153))(end_p(""7 136 169)))))))))(position((start_p(""7 136 136))(end_p(""7 136 169)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/25-polymorphic-record-proj.bad.typing.hopix.human-readable b/flap/tests/03-Typing/25-polymorphic-record-proj.bad.typing.hopix.human-readable new file mode 100644 index 0000000..41a5ebe --- /dev/null +++ b/flap/tests/03-Typing/25-polymorphic-record-proj.bad.typing.hopix.human-readable @@ -0,0 +1,7 @@ +type p<`a, `b> = { x : `a, y : `b } + +let p : p = { x = 0, y = "Rose Tyler" } + +let x : int = p.x + +let y : string = p.z diff --git a/flap/tests/03-Typing/25-polymorphic-record-proj.good.expected b/flap/tests/03-Typing/25-polymorphic-record-proj.good.expected new file mode 100644 index 0000000..632a7ff --- /dev/null +++ b/flap/tests/03-Typing/25-polymorphic-record-proj.good.expected @@ -0,0 +1,3 @@ +p : p +x : int +y : string diff --git a/flap/tests/03-Typing/25-polymorphic-record-proj.good.typing.hopix b/flap/tests/03-Typing/25-polymorphic-record-proj.good.typing.hopix new file mode 100644 index 0000000..a4821a7 --- /dev/null +++ b/flap/tests/03-Typing/25-polymorphic-record-proj.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineRecordType((((value(LId x))(position((start_p(""1 0 19))(end_p(""1 0 20)))))((value(TyVar(TId `a)))(position((start_p(""1 0 23))(end_p(""1 0 25))))))(((value(LId y))(position((start_p(""1 0 27))(end_p(""1 0 28)))))((value(TyVar(TId `b)))(position((start_p(""1 0 31))(end_p(""1 0 33))))))))))(position((start_p(""1 0 0))(end_p(""1 0 35)))))((value(DefineValue(SimpleValue(((value(Id p))(position((start_p(""3 37 41))(end_p(""3 37 42)))))(((value(ForallTy()((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""3 37 47))(end_p(""3 37 50)))))((value(TyCon(TCon string)()))(position((start_p(""3 37 52))(end_p(""3 37 58))))))))(position((start_p(""3 37 45))(end_p(""3 37 59)))))))(position((start_p(""3 37 45))(end_p(""3 37 59))))))((value(Record((((value(LId x))(position((start_p(""3 37 64))(end_p(""3 37 65)))))((value(Literal((value(LInt 0))(position((start_p(""3 37 68))(end_p(""3 37 69)))))))(position((start_p(""3 37 68))(end_p(""3 37 69))))))(((value(LId y))(position((start_p(""3 37 71))(end_p(""3 37 72)))))((value(Literal((value(LString"Rose Tyler"))(position((start_p(""3 37 86))(end_p(""3 37 87)))))))(position((start_p(""3 37 86))(end_p(""3 37 87)))))))((((value(TyCon(TCon int)()))(position((start_p(""3 37 90))(end_p(""3 37 93)))))((value(TyCon(TCon string)()))(position((start_p(""3 37 95))(end_p(""3 37 101)))))))))(position((start_p(""3 37 62))(end_p(""3 37 102)))))))))(position((start_p(""3 37 37))(end_p(""3 37 102)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""5 104 108))(end_p(""5 104 109)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""5 104 112))(end_p(""5 104 115)))))))(position((start_p(""5 104 112))(end_p(""5 104 115))))))((value(Field((value(Variable((value(Id p))(position((start_p(""5 104 118))(end_p(""5 104 119)))))()))(position((start_p(""5 104 118))(end_p(""5 104 119)))))((value(LId x))(position((start_p(""5 104 120))(end_p(""5 104 121)))))((((value(TyCon(TCon int)()))(position((start_p(""5 104 122))(end_p(""5 104 125)))))((value(TyCon(TCon string)()))(position((start_p(""5 104 127))(end_p(""5 104 133)))))))))(position((start_p(""5 104 118))(end_p(""5 104 134)))))))))(position((start_p(""5 104 104))(end_p(""5 104 134)))))((value(DefineValue(SimpleValue(((value(Id y))(position((start_p(""7 136 140))(end_p(""7 136 141)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""7 136 144))(end_p(""7 136 150)))))))(position((start_p(""7 136 144))(end_p(""7 136 150))))))((value(Field((value(Variable((value(Id p))(position((start_p(""7 136 153))(end_p(""7 136 154)))))()))(position((start_p(""7 136 153))(end_p(""7 136 154)))))((value(LId y))(position((start_p(""7 136 155))(end_p(""7 136 156)))))((((value(TyCon(TCon int)()))(position((start_p(""7 136 157))(end_p(""7 136 160)))))((value(TyCon(TCon string)()))(position((start_p(""7 136 162))(end_p(""7 136 168)))))))))(position((start_p(""7 136 153))(end_p(""7 136 169)))))))))(position((start_p(""7 136 136))(end_p(""7 136 169)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/25-polymorphic-record-proj.good.typing.hopix.human-readable b/flap/tests/03-Typing/25-polymorphic-record-proj.good.typing.hopix.human-readable new file mode 100644 index 0000000..20227fa --- /dev/null +++ b/flap/tests/03-Typing/25-polymorphic-record-proj.good.typing.hopix.human-readable @@ -0,0 +1,7 @@ +type p<`a, `b> = { x : `a, y : `b } + +let p : p = { x = 0, y = "Rose Tyler" } + +let x : int = p.x + +let y : string = p.y diff --git a/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.expected b/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.expected new file mode 100644 index 0000000..af772b3 --- /dev/null +++ b/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + `b +Given: + `a diff --git a/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.typing.hopix b/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.typing.hopix new file mode 100644 index 0000000..26f70a2 --- /dev/null +++ b/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineRecordType((((value(LId x))(position((start_p(""1 0 19))(end_p(""1 0 20)))))((value(TyVar(TId `a)))(position((start_p(""1 0 23))(end_p(""1 0 25))))))(((value(LId y))(position((start_p(""1 0 27))(end_p(""1 0 28)))))((value(TyVar(TId `b)))(position((start_p(""1 0 31))(end_p(""1 0 33))))))))))(position((start_p(""1 0 0))(end_p(""1 0 35)))))((value(DefineValue(RecFunctions((((value(Id get_x))(position((start_p(""4 68 72))(end_p(""4 68 77)))))(((value(ForallTy(((value(TId `a))(position((start_p(""3 37 44))(end_p(""3 37 46)))))((value(TId `b))(position((start_p(""3 37 48))(end_p(""3 37 50))))))((value(TyArrow((value(TyCon(TCon p)(((value(TyVar(TId `a)))(position((start_p(""3 37 54))(end_p(""3 37 56)))))((value(TyVar(TId `b)))(position((start_p(""3 37 58))(end_p(""3 37 60))))))))(position((start_p(""3 37 52))(end_p(""3 37 61)))))((value(TyVar(TId `a)))(position((start_p(""3 37 65))(end_p(""3 37 67)))))))(position((start_p(""3 37 52))(end_p(""3 37 67)))))))(position((start_p(""3 37 43))(end_p(""3 37 67))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id p))(position((start_p(""4 68 79))(end_p(""4 68 80)))))))(position((start_p(""4 68 79))(end_p(""4 68 80)))))((value(TyCon(TCon p)(((value(TyVar(TId `a)))(position((start_p(""4 68 85))(end_p(""4 68 87)))))((value(TyVar(TId `b)))(position((start_p(""4 68 89))(end_p(""4 68 91))))))))(position((start_p(""4 68 83))(end_p(""4 68 92)))))))(position((start_p(""4 68 78))(end_p(""4 68 93)))))((value(Field((value(Variable((value(Id p))(position((start_p(""4 68 96))(end_p(""4 68 97)))))()))(position((start_p(""4 68 96))(end_p(""4 68 97)))))((value(LId x))(position((start_p(""4 68 98))(end_p(""4 68 99)))))((((value(TyVar(TId `a)))(position((start_p(""4 68 100))(end_p(""4 68 102)))))((value(TyVar(TId `b)))(position((start_p(""4 68 104))(end_p(""4 68 106)))))))))(position((start_p(""4 68 96))(end_p(""4 68 107)))))))))))(position((start_p(""3 37 37))(end_p(""4 68 107)))))((value(DefineValue(RecFunctions((((value(Id get_y))(position((start_p(""7 140 143))(end_p(""7 140 148)))))(((value(ForallTy(((value(TId `a))(position((start_p(""6 109 116))(end_p(""6 109 118)))))((value(TId `b))(position((start_p(""6 109 120))(end_p(""6 109 122))))))((value(TyArrow((value(TyCon(TCon p)(((value(TyVar(TId `a)))(position((start_p(""6 109 126))(end_p(""6 109 128)))))((value(TyVar(TId `b)))(position((start_p(""6 109 130))(end_p(""6 109 132))))))))(position((start_p(""6 109 124))(end_p(""6 109 133)))))((value(TyVar(TId `b)))(position((start_p(""6 109 137))(end_p(""6 109 139)))))))(position((start_p(""6 109 124))(end_p(""6 109 139)))))))(position((start_p(""6 109 115))(end_p(""6 109 139))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id p))(position((start_p(""7 140 150))(end_p(""7 140 151)))))))(position((start_p(""7 140 150))(end_p(""7 140 151)))))((value(TyCon(TCon p)(((value(TyVar(TId `a)))(position((start_p(""7 140 156))(end_p(""7 140 158)))))((value(TyVar(TId `b)))(position((start_p(""7 140 160))(end_p(""7 140 162))))))))(position((start_p(""7 140 154))(end_p(""7 140 163)))))))(position((start_p(""7 140 149))(end_p(""7 140 164)))))((value(Field((value(Variable((value(Id p))(position((start_p(""7 140 167))(end_p(""7 140 168)))))()))(position((start_p(""7 140 167))(end_p(""7 140 168)))))((value(LId x))(position((start_p(""7 140 169))(end_p(""7 140 170)))))((((value(TyVar(TId `a)))(position((start_p(""7 140 171))(end_p(""7 140 173)))))((value(TyVar(TId `b)))(position((start_p(""7 140 175))(end_p(""7 140 177)))))))))(position((start_p(""7 140 167))(end_p(""7 140 178)))))))))))(position((start_p(""6 109 109))(end_p(""7 140 178)))))((value(DefineValue(SimpleValue(((value(Id p))(position((start_p(""9 180 184))(end_p(""9 180 185)))))(((value(ForallTy()((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""9 180 190))(end_p(""9 180 193)))))((value(TyCon(TCon string)()))(position((start_p(""9 180 195))(end_p(""9 180 201))))))))(position((start_p(""9 180 188))(end_p(""9 180 202)))))))(position((start_p(""9 180 188))(end_p(""9 180 202))))))((value(Record((((value(LId x))(position((start_p(""9 180 207))(end_p(""9 180 208)))))((value(Literal((value(LInt 37))(position((start_p(""9 180 211))(end_p(""9 180 213)))))))(position((start_p(""9 180 211))(end_p(""9 180 213))))))(((value(LId y))(position((start_p(""9 180 215))(end_p(""9 180 216)))))((value(Literal((value(LString"Rory Williams"))(position((start_p(""9 180 233))(end_p(""9 180 234)))))))(position((start_p(""9 180 233))(end_p(""9 180 234)))))))((((value(TyCon(TCon int)()))(position((start_p(""9 180 237))(end_p(""9 180 240)))))((value(TyCon(TCon string)()))(position((start_p(""9 180 242))(end_p(""9 180 248)))))))))(position((start_p(""9 180 205))(end_p(""9 180 249)))))))))(position((start_p(""9 180 180))(end_p(""9 180 249)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""11 251 255))(end_p(""11 251 256)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""11 251 259))(end_p(""11 251 262)))))))(position((start_p(""11 251 259))(end_p(""11 251 262))))))((value(Apply((value(Variable((value(Id get_x))(position((start_p(""11 251 265))(end_p(""11 251 270)))))((((value(TyCon(TCon int)()))(position((start_p(""11 251 271))(end_p(""11 251 274)))))((value(TyCon(TCon string)()))(position((start_p(""11 251 276))(end_p(""11 251 282)))))))))(position((start_p(""11 251 265))(end_p(""11 251 283)))))((value(Variable((value(Id p))(position((start_p(""11 251 284))(end_p(""11 251 285)))))()))(position((start_p(""11 251 283))(end_p(""11 251 286)))))))(position((start_p(""11 251 265))(end_p(""11 251 286)))))))))(position((start_p(""11 251 251))(end_p(""11 251 286)))))((value(DefineValue(SimpleValue(((value(Id y))(position((start_p(""13 288 292))(end_p(""13 288 293)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""13 288 296))(end_p(""13 288 302)))))))(position((start_p(""13 288 296))(end_p(""13 288 302))))))((value(Apply((value(Variable((value(Id get_y))(position((start_p(""13 288 305))(end_p(""13 288 310)))))((((value(TyCon(TCon int)()))(position((start_p(""13 288 311))(end_p(""13 288 314)))))((value(TyCon(TCon string)()))(position((start_p(""13 288 316))(end_p(""13 288 322)))))))))(position((start_p(""13 288 305))(end_p(""13 288 323)))))((value(Variable((value(Id p))(position((start_p(""13 288 324))(end_p(""13 288 325)))))()))(position((start_p(""13 288 323))(end_p(""13 288 326)))))))(position((start_p(""13 288 305))(end_p(""13 288 326)))))))))(position((start_p(""13 288 288))(end_p(""13 288 326)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.typing.hopix.human-readable b/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.typing.hopix.human-readable new file mode 100644 index 0000000..9d3a89f --- /dev/null +++ b/flap/tests/03-Typing/26-function-over-polymorphic-record.bad.typing.hopix.human-readable @@ -0,0 +1,13 @@ +type p<`a, `b> = { x : `a, y : `b } + +fun : [`a, `b] p<`a, `b> -> `a + get_x (p : p<`a, `b>) = p.x<`a, `b> + +fun : [`a, `b] p<`a, `b> -> `b + get_y (p : p<`a, `b>) = p.x<`a, `b> + +let p : p = { x = 37, y = "Rory Williams" } + +let x : int = get_x(p) + +let y : string = get_y(p) \ No newline at end of file diff --git a/flap/tests/03-Typing/26-function-over-polymorphic-record.good.expected b/flap/tests/03-Typing/26-function-over-polymorphic-record.good.expected new file mode 100644 index 0000000..a367408 --- /dev/null +++ b/flap/tests/03-Typing/26-function-over-polymorphic-record.good.expected @@ -0,0 +1,5 @@ +get_x : [`a, `b] p<`a, `b> -> `a +get_y : [`a, `b] p<`a, `b> -> `b +p : p +x : int +y : string diff --git a/flap/tests/03-Typing/26-function-over-polymorphic-record.good.typing.hopix b/flap/tests/03-Typing/26-function-over-polymorphic-record.good.typing.hopix new file mode 100644 index 0000000..5ce8d51 --- /dev/null +++ b/flap/tests/03-Typing/26-function-over-polymorphic-record.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineRecordType((((value(LId x))(position((start_p(""1 0 19))(end_p(""1 0 20)))))((value(TyVar(TId `a)))(position((start_p(""1 0 23))(end_p(""1 0 25))))))(((value(LId y))(position((start_p(""1 0 27))(end_p(""1 0 28)))))((value(TyVar(TId `b)))(position((start_p(""1 0 31))(end_p(""1 0 33))))))))))(position((start_p(""1 0 0))(end_p(""1 0 35)))))((value(DefineValue(RecFunctions((((value(Id get_x))(position((start_p(""4 68 72))(end_p(""4 68 77)))))(((value(ForallTy(((value(TId `a))(position((start_p(""3 37 44))(end_p(""3 37 46)))))((value(TId `b))(position((start_p(""3 37 48))(end_p(""3 37 50))))))((value(TyArrow((value(TyCon(TCon p)(((value(TyVar(TId `a)))(position((start_p(""3 37 54))(end_p(""3 37 56)))))((value(TyVar(TId `b)))(position((start_p(""3 37 58))(end_p(""3 37 60))))))))(position((start_p(""3 37 52))(end_p(""3 37 61)))))((value(TyVar(TId `a)))(position((start_p(""3 37 65))(end_p(""3 37 67)))))))(position((start_p(""3 37 52))(end_p(""3 37 67)))))))(position((start_p(""3 37 43))(end_p(""3 37 67))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id p))(position((start_p(""4 68 79))(end_p(""4 68 80)))))))(position((start_p(""4 68 79))(end_p(""4 68 80)))))((value(TyCon(TCon p)(((value(TyVar(TId `a)))(position((start_p(""4 68 85))(end_p(""4 68 87)))))((value(TyVar(TId `b)))(position((start_p(""4 68 89))(end_p(""4 68 91))))))))(position((start_p(""4 68 83))(end_p(""4 68 92)))))))(position((start_p(""4 68 78))(end_p(""4 68 93)))))((value(Field((value(Variable((value(Id p))(position((start_p(""4 68 96))(end_p(""4 68 97)))))()))(position((start_p(""4 68 96))(end_p(""4 68 97)))))((value(LId x))(position((start_p(""4 68 98))(end_p(""4 68 99)))))((((value(TyVar(TId `a)))(position((start_p(""4 68 100))(end_p(""4 68 102)))))((value(TyVar(TId `b)))(position((start_p(""4 68 104))(end_p(""4 68 106)))))))))(position((start_p(""4 68 96))(end_p(""4 68 107)))))))))))(position((start_p(""3 37 37))(end_p(""4 68 107)))))((value(DefineValue(RecFunctions((((value(Id get_y))(position((start_p(""7 140 143))(end_p(""7 140 148)))))(((value(ForallTy(((value(TId `a))(position((start_p(""6 109 116))(end_p(""6 109 118)))))((value(TId `b))(position((start_p(""6 109 120))(end_p(""6 109 122))))))((value(TyArrow((value(TyCon(TCon p)(((value(TyVar(TId `a)))(position((start_p(""6 109 126))(end_p(""6 109 128)))))((value(TyVar(TId `b)))(position((start_p(""6 109 130))(end_p(""6 109 132))))))))(position((start_p(""6 109 124))(end_p(""6 109 133)))))((value(TyVar(TId `b)))(position((start_p(""6 109 137))(end_p(""6 109 139)))))))(position((start_p(""6 109 124))(end_p(""6 109 139)))))))(position((start_p(""6 109 115))(end_p(""6 109 139))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id p))(position((start_p(""7 140 150))(end_p(""7 140 151)))))))(position((start_p(""7 140 150))(end_p(""7 140 151)))))((value(TyCon(TCon p)(((value(TyVar(TId `a)))(position((start_p(""7 140 156))(end_p(""7 140 158)))))((value(TyVar(TId `b)))(position((start_p(""7 140 160))(end_p(""7 140 162))))))))(position((start_p(""7 140 154))(end_p(""7 140 163)))))))(position((start_p(""7 140 149))(end_p(""7 140 164)))))((value(Field((value(Variable((value(Id p))(position((start_p(""7 140 167))(end_p(""7 140 168)))))()))(position((start_p(""7 140 167))(end_p(""7 140 168)))))((value(LId y))(position((start_p(""7 140 169))(end_p(""7 140 170)))))((((value(TyVar(TId `a)))(position((start_p(""7 140 171))(end_p(""7 140 173)))))((value(TyVar(TId `b)))(position((start_p(""7 140 175))(end_p(""7 140 177)))))))))(position((start_p(""7 140 167))(end_p(""7 140 178)))))))))))(position((start_p(""6 109 109))(end_p(""7 140 178)))))((value(DefineValue(SimpleValue(((value(Id p))(position((start_p(""9 180 184))(end_p(""9 180 185)))))(((value(ForallTy()((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""9 180 190))(end_p(""9 180 193)))))((value(TyCon(TCon string)()))(position((start_p(""9 180 195))(end_p(""9 180 201))))))))(position((start_p(""9 180 188))(end_p(""9 180 202)))))))(position((start_p(""9 180 188))(end_p(""9 180 202))))))((value(Record((((value(LId x))(position((start_p(""9 180 207))(end_p(""9 180 208)))))((value(Literal((value(LInt 37))(position((start_p(""9 180 211))(end_p(""9 180 213)))))))(position((start_p(""9 180 211))(end_p(""9 180 213))))))(((value(LId y))(position((start_p(""9 180 215))(end_p(""9 180 216)))))((value(Literal((value(LString"Rory Williams"))(position((start_p(""9 180 233))(end_p(""9 180 234)))))))(position((start_p(""9 180 233))(end_p(""9 180 234)))))))((((value(TyCon(TCon int)()))(position((start_p(""9 180 237))(end_p(""9 180 240)))))((value(TyCon(TCon string)()))(position((start_p(""9 180 242))(end_p(""9 180 248)))))))))(position((start_p(""9 180 205))(end_p(""9 180 249)))))))))(position((start_p(""9 180 180))(end_p(""9 180 249)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""11 251 255))(end_p(""11 251 256)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""11 251 259))(end_p(""11 251 262)))))))(position((start_p(""11 251 259))(end_p(""11 251 262))))))((value(Apply((value(Variable((value(Id get_x))(position((start_p(""11 251 265))(end_p(""11 251 270)))))((((value(TyCon(TCon int)()))(position((start_p(""11 251 271))(end_p(""11 251 274)))))((value(TyCon(TCon string)()))(position((start_p(""11 251 276))(end_p(""11 251 282)))))))))(position((start_p(""11 251 265))(end_p(""11 251 283)))))((value(Variable((value(Id p))(position((start_p(""11 251 284))(end_p(""11 251 285)))))()))(position((start_p(""11 251 283))(end_p(""11 251 286)))))))(position((start_p(""11 251 265))(end_p(""11 251 286)))))))))(position((start_p(""11 251 251))(end_p(""11 251 286)))))((value(DefineValue(SimpleValue(((value(Id y))(position((start_p(""13 288 292))(end_p(""13 288 293)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""13 288 296))(end_p(""13 288 302)))))))(position((start_p(""13 288 296))(end_p(""13 288 302))))))((value(Apply((value(Variable((value(Id get_y))(position((start_p(""13 288 305))(end_p(""13 288 310)))))((((value(TyCon(TCon int)()))(position((start_p(""13 288 311))(end_p(""13 288 314)))))((value(TyCon(TCon string)()))(position((start_p(""13 288 316))(end_p(""13 288 322)))))))))(position((start_p(""13 288 305))(end_p(""13 288 323)))))((value(Variable((value(Id p))(position((start_p(""13 288 324))(end_p(""13 288 325)))))()))(position((start_p(""13 288 323))(end_p(""13 288 326)))))))(position((start_p(""13 288 305))(end_p(""13 288 326)))))))))(position((start_p(""13 288 288))(end_p(""13 288 326)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/26-function-over-polymorphic-record.good.typing.hopix.human-readable b/flap/tests/03-Typing/26-function-over-polymorphic-record.good.typing.hopix.human-readable new file mode 100644 index 0000000..8295765 --- /dev/null +++ b/flap/tests/03-Typing/26-function-over-polymorphic-record.good.typing.hopix.human-readable @@ -0,0 +1,13 @@ +type p<`a, `b> = { x : `a, y : `b } + +fun : [`a, `b] p<`a, `b> -> `a + get_x (p : p<`a, `b>) = p.x<`a, `b> + +fun : [`a, `b] p<`a, `b> -> `b + get_y (p : p<`a, `b>) = p.y<`a, `b> + +let p : p = { x = 37, y = "Rory Williams" } + +let x : int = get_x(p) + +let y : string = get_y(p) \ No newline at end of file diff --git a/flap/tests/03-Typing/27-function-in-record.bad.expected b/flap/tests/03-Typing/27-function-in-record.bad.expected new file mode 100644 index 0000000..43e21f5 --- /dev/null +++ b/flap/tests/03-Typing/27-function-in-record.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + Invalid number of types in instantiation: 1 given while 2 were expected. diff --git a/flap/tests/03-Typing/27-function-in-record.bad.typing.hopix b/flap/tests/03-Typing/27-function-in-record.bad.typing.hopix new file mode 100644 index 0000000..8f74bbd --- /dev/null +++ b/flap/tests/03-Typing/27-function-in-record.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon f))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineRecordType((((value(LId apply))(position((start_p(""1 0 19))(end_p(""1 0 24)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 27))(end_p(""1 0 29)))))((value(TyVar(TId `b)))(position((start_p(""1 0 33))(end_p(""1 0 35)))))))(position((start_p(""1 0 27))(end_p(""1 0 35))))))))))(position((start_p(""1 0 0))(end_p(""1 0 37)))))((value(DefineValue(RecFunctions((((value(Id f))(position((start_p(""4 56 60))(end_p(""4 56 61)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""3 39 45))(end_p(""3 39 48)))))((value(TyCon(TCon int)()))(position((start_p(""3 39 52))(end_p(""3 39 55)))))))(position((start_p(""3 39 45))(end_p(""3 39 55)))))))(position((start_p(""3 39 45))(end_p(""3 39 55))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 56 63))(end_p(""4 56 64)))))))(position((start_p(""4 56 63))(end_p(""4 56 64)))))((value(TyCon(TCon int)()))(position((start_p(""4 56 67))(end_p(""4 56 70)))))))(position((start_p(""4 56 62))(end_p(""4 56 71)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 56 76))(end_p(""4 56 77)))))()))(position((start_p(""4 56 76))(end_p(""4 56 77)))))((value(Variable((value(Id x))(position((start_p(""4 56 74))(end_p(""4 56 75)))))()))(position((start_p(""4 56 74))(end_p(""4 56 75)))))))(position((start_p(""4 56 74))(end_p(""4 56 75)))))((value(Literal((value(LInt 1))(position((start_p(""4 56 78))(end_p(""4 56 79)))))))(position((start_p(""4 56 78))(end_p(""4 56 79)))))))(position((start_p(""4 56 74))(end_p(""4 56 79)))))))))))(position((start_p(""3 39 39))(end_p(""4 56 79)))))((value(DefineValue(SimpleValue(((value(Id boxed_f))(position((start_p(""6 81 85))(end_p(""6 81 92)))))(((value(ForallTy()((value(TyCon(TCon f)(((value(TyCon(TCon int)()))(position((start_p(""6 81 97))(end_p(""6 81 100)))))((value(TyCon(TCon int)()))(position((start_p(""6 81 102))(end_p(""6 81 105))))))))(position((start_p(""6 81 95))(end_p(""6 81 106)))))))(position((start_p(""6 81 95))(end_p(""6 81 106))))))((value(Record((((value(LId apply))(position((start_p(""6 81 111))(end_p(""6 81 116)))))((value(Variable((value(Id f))(position((start_p(""6 81 119))(end_p(""6 81 120)))))()))(position((start_p(""6 81 119))(end_p(""6 81 120)))))))((((value(TyCon(TCon int)()))(position((start_p(""6 81 123))(end_p(""6 81 126)))))((value(TyCon(TCon int)()))(position((start_p(""6 81 128))(end_p(""6 81 131)))))))))(position((start_p(""6 81 109))(end_p(""6 81 132)))))))))(position((start_p(""6 81 81))(end_p(""6 81 132)))))((value(DefineValue(RecFunctions((((value(Id apply_boxed_f))(position((start_p(""9 170 174))(end_p(""9 170 187)))))(((value(ForallTy(((value(TId `a))(position((start_p(""8 134 141))(end_p(""8 134 143)))))((value(TId `b))(position((start_p(""8 134 145))(end_p(""8 134 147))))))((value(TyArrow((value(TyTuple(((value(TyCon(TCon f)(((value(TyVar(TId `a)))(position((start_p(""8 134 151))(end_p(""8 134 153)))))((value(TyVar(TId `b)))(position((start_p(""8 134 155))(end_p(""8 134 157))))))))(position((start_p(""8 134 149))(end_p(""8 134 158)))))((value(TyVar(TId `a)))(position((start_p(""8 134 161))(end_p(""8 134 163))))))))(position((start_p(""8 134 149))(end_p(""8 134 163)))))((value(TyVar(TId `b)))(position((start_p(""8 134 167))(end_p(""8 134 169)))))))(position((start_p(""8 134 149))(end_p(""8 134 169)))))))(position((start_p(""8 134 140))(end_p(""8 134 169))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id boxed_f))(position((start_p(""9 170 190))(end_p(""9 170 197)))))))(position((start_p(""9 170 190))(end_p(""9 170 197)))))((value(TyCon(TCon f)(((value(TyVar(TId `a)))(position((start_p(""9 170 202))(end_p(""9 170 204)))))((value(TyVar(TId `b)))(position((start_p(""9 170 206))(end_p(""9 170 208))))))))(position((start_p(""9 170 200))(end_p(""9 170 209)))))))(position((start_p(""9 170 189))(end_p(""9 170 210)))))((value(PTypeAnnotation((value(PVariable((value(Id a))(position((start_p(""9 170 213))(end_p(""9 170 214)))))))(position((start_p(""9 170 213))(end_p(""9 170 214)))))((value(TyVar(TId `a)))(position((start_p(""9 170 217))(end_p(""9 170 219)))))))(position((start_p(""9 170 212))(end_p(""9 170 220))))))))(position((start_p(""9 170 188))(end_p(""9 170 221)))))((value(Apply((value(Field((value(Variable((value(Id boxed_f))(position((start_p(""9 170 224))(end_p(""9 170 231)))))()))(position((start_p(""9 170 224))(end_p(""9 170 231)))))((value(LId apply))(position((start_p(""9 170 232))(end_p(""9 170 237)))))((((value(TyVar(TId `a)))(position((start_p(""9 170 238))(end_p(""9 170 240)))))((value(TyVar(TId `b)))(position((start_p(""9 170 242))(end_p(""9 170 244)))))))))(position((start_p(""9 170 224))(end_p(""9 170 245)))))((value(Variable((value(Id a))(position((start_p(""9 170 247))(end_p(""9 170 248)))))()))(position((start_p(""9 170 246))(end_p(""9 170 249)))))))(position((start_p(""9 170 224))(end_p(""9 170 249)))))))))))(position((start_p(""8 134 134))(end_p(""9 170 249)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""11 251 255))(end_p(""11 251 259)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""11 251 262))(end_p(""11 251 265)))))))(position((start_p(""11 251 262))(end_p(""11 251 265))))))((value(Apply((value(Variable((value(Id apply_boxed_f))(position((start_p(""11 251 268))(end_p(""11 251 281)))))((((value(TyCon(TCon int)()))(position((start_p(""11 251 282))(end_p(""11 251 285)))))))))(position((start_p(""11 251 268))(end_p(""11 251 286)))))((value(Tuple(((value(Variable((value(Id boxed_f))(position((start_p(""11 251 287))(end_p(""11 251 294)))))()))(position((start_p(""11 251 287))(end_p(""11 251 294)))))((value(Literal((value(LInt 42))(position((start_p(""11 251 296))(end_p(""11 251 298)))))))(position((start_p(""11 251 296))(end_p(""11 251 298))))))))(position((start_p(""11 251 286))(end_p(""11 251 299)))))))(position((start_p(""11 251 268))(end_p(""11 251 299)))))))))(position((start_p(""11 251 251))(end_p(""11 251 299)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/27-function-in-record.bad.typing.hopix.human-readable b/flap/tests/03-Typing/27-function-in-record.bad.typing.hopix.human-readable new file mode 100644 index 0000000..7142e9c --- /dev/null +++ b/flap/tests/03-Typing/27-function-in-record.bad.typing.hopix.human-readable @@ -0,0 +1,11 @@ +type f<`a, `b> = { apply : `a -> `b } + +fun : int -> int + f (x : int) = x + 1 + +let boxed_f : f = { apply = f } + +fun : [`a, `b] f<`a, `b> * `a -> `b + apply_boxed_f ((boxed_f : f<`a, `b>), (a : `a)) = boxed_f.apply<`a, `b> (a) + +let main : int = apply_boxed_f(boxed_f, 42) \ No newline at end of file diff --git a/flap/tests/03-Typing/27-function-in-record.good.expected b/flap/tests/03-Typing/27-function-in-record.good.expected new file mode 100644 index 0000000..b2bf1d4 --- /dev/null +++ b/flap/tests/03-Typing/27-function-in-record.good.expected @@ -0,0 +1,4 @@ +f : int -> int +boxed_f : f +apply_boxed_f : [`a, `b] f<`a, `b> * `a -> `b +main : int diff --git a/flap/tests/03-Typing/27-function-in-record.good.typing.hopix b/flap/tests/03-Typing/27-function-in-record.good.typing.hopix new file mode 100644 index 0000000..1fb3cbd --- /dev/null +++ b/flap/tests/03-Typing/27-function-in-record.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon f))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineRecordType((((value(LId apply))(position((start_p(""1 0 19))(end_p(""1 0 24)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 27))(end_p(""1 0 29)))))((value(TyVar(TId `b)))(position((start_p(""1 0 33))(end_p(""1 0 35)))))))(position((start_p(""1 0 27))(end_p(""1 0 35))))))))))(position((start_p(""1 0 0))(end_p(""1 0 37)))))((value(DefineValue(RecFunctions((((value(Id f))(position((start_p(""4 56 60))(end_p(""4 56 61)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""3 39 45))(end_p(""3 39 48)))))((value(TyCon(TCon int)()))(position((start_p(""3 39 52))(end_p(""3 39 55)))))))(position((start_p(""3 39 45))(end_p(""3 39 55)))))))(position((start_p(""3 39 45))(end_p(""3 39 55))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 56 63))(end_p(""4 56 64)))))))(position((start_p(""4 56 63))(end_p(""4 56 64)))))((value(TyCon(TCon int)()))(position((start_p(""4 56 67))(end_p(""4 56 70)))))))(position((start_p(""4 56 62))(end_p(""4 56 71)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 56 76))(end_p(""4 56 77)))))()))(position((start_p(""4 56 76))(end_p(""4 56 77)))))((value(Variable((value(Id x))(position((start_p(""4 56 74))(end_p(""4 56 75)))))()))(position((start_p(""4 56 74))(end_p(""4 56 75)))))))(position((start_p(""4 56 74))(end_p(""4 56 75)))))((value(Literal((value(LInt 1))(position((start_p(""4 56 78))(end_p(""4 56 79)))))))(position((start_p(""4 56 78))(end_p(""4 56 79)))))))(position((start_p(""4 56 74))(end_p(""4 56 79)))))))))))(position((start_p(""3 39 39))(end_p(""4 56 79)))))((value(DefineValue(SimpleValue(((value(Id boxed_f))(position((start_p(""6 81 85))(end_p(""6 81 92)))))(((value(ForallTy()((value(TyCon(TCon f)(((value(TyCon(TCon int)()))(position((start_p(""6 81 97))(end_p(""6 81 100)))))((value(TyCon(TCon int)()))(position((start_p(""6 81 102))(end_p(""6 81 105))))))))(position((start_p(""6 81 95))(end_p(""6 81 106)))))))(position((start_p(""6 81 95))(end_p(""6 81 106))))))((value(Record((((value(LId apply))(position((start_p(""6 81 111))(end_p(""6 81 116)))))((value(Variable((value(Id f))(position((start_p(""6 81 119))(end_p(""6 81 120)))))()))(position((start_p(""6 81 119))(end_p(""6 81 120)))))))((((value(TyCon(TCon int)()))(position((start_p(""6 81 123))(end_p(""6 81 126)))))((value(TyCon(TCon int)()))(position((start_p(""6 81 128))(end_p(""6 81 131)))))))))(position((start_p(""6 81 109))(end_p(""6 81 132)))))))))(position((start_p(""6 81 81))(end_p(""6 81 132)))))((value(DefineValue(RecFunctions((((value(Id apply_boxed_f))(position((start_p(""9 170 174))(end_p(""9 170 187)))))(((value(ForallTy(((value(TId `a))(position((start_p(""8 134 141))(end_p(""8 134 143)))))((value(TId `b))(position((start_p(""8 134 145))(end_p(""8 134 147))))))((value(TyArrow((value(TyTuple(((value(TyCon(TCon f)(((value(TyVar(TId `a)))(position((start_p(""8 134 151))(end_p(""8 134 153)))))((value(TyVar(TId `b)))(position((start_p(""8 134 155))(end_p(""8 134 157))))))))(position((start_p(""8 134 149))(end_p(""8 134 158)))))((value(TyVar(TId `a)))(position((start_p(""8 134 161))(end_p(""8 134 163))))))))(position((start_p(""8 134 149))(end_p(""8 134 163)))))((value(TyVar(TId `b)))(position((start_p(""8 134 167))(end_p(""8 134 169)))))))(position((start_p(""8 134 149))(end_p(""8 134 169)))))))(position((start_p(""8 134 140))(end_p(""8 134 169))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id boxed_f))(position((start_p(""9 170 190))(end_p(""9 170 197)))))))(position((start_p(""9 170 190))(end_p(""9 170 197)))))((value(TyCon(TCon f)(((value(TyVar(TId `a)))(position((start_p(""9 170 202))(end_p(""9 170 204)))))((value(TyVar(TId `b)))(position((start_p(""9 170 206))(end_p(""9 170 208))))))))(position((start_p(""9 170 200))(end_p(""9 170 209)))))))(position((start_p(""9 170 189))(end_p(""9 170 210)))))((value(PTypeAnnotation((value(PVariable((value(Id a))(position((start_p(""9 170 213))(end_p(""9 170 214)))))))(position((start_p(""9 170 213))(end_p(""9 170 214)))))((value(TyVar(TId `a)))(position((start_p(""9 170 217))(end_p(""9 170 219)))))))(position((start_p(""9 170 212))(end_p(""9 170 220))))))))(position((start_p(""9 170 188))(end_p(""9 170 221)))))((value(Apply((value(Field((value(Variable((value(Id boxed_f))(position((start_p(""9 170 224))(end_p(""9 170 231)))))()))(position((start_p(""9 170 224))(end_p(""9 170 231)))))((value(LId apply))(position((start_p(""9 170 232))(end_p(""9 170 237)))))((((value(TyVar(TId `a)))(position((start_p(""9 170 238))(end_p(""9 170 240)))))((value(TyVar(TId `b)))(position((start_p(""9 170 242))(end_p(""9 170 244)))))))))(position((start_p(""9 170 224))(end_p(""9 170 245)))))((value(Variable((value(Id a))(position((start_p(""9 170 247))(end_p(""9 170 248)))))()))(position((start_p(""9 170 246))(end_p(""9 170 249)))))))(position((start_p(""9 170 224))(end_p(""9 170 249)))))))))))(position((start_p(""8 134 134))(end_p(""9 170 249)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""11 251 255))(end_p(""11 251 259)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""11 251 262))(end_p(""11 251 265)))))))(position((start_p(""11 251 262))(end_p(""11 251 265))))))((value(Apply((value(Variable((value(Id apply_boxed_f))(position((start_p(""11 251 268))(end_p(""11 251 281)))))((((value(TyCon(TCon int)()))(position((start_p(""11 251 282))(end_p(""11 251 285)))))((value(TyCon(TCon int)()))(position((start_p(""11 251 287))(end_p(""11 251 290)))))))))(position((start_p(""11 251 268))(end_p(""11 251 291)))))((value(Tuple(((value(Variable((value(Id boxed_f))(position((start_p(""11 251 292))(end_p(""11 251 299)))))()))(position((start_p(""11 251 292))(end_p(""11 251 299)))))((value(Literal((value(LInt 42))(position((start_p(""11 251 301))(end_p(""11 251 303)))))))(position((start_p(""11 251 301))(end_p(""11 251 303))))))))(position((start_p(""11 251 291))(end_p(""11 251 304)))))))(position((start_p(""11 251 268))(end_p(""11 251 304)))))))))(position((start_p(""11 251 251))(end_p(""11 251 304)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/27-function-in-record.good.typing.hopix.human-readable b/flap/tests/03-Typing/27-function-in-record.good.typing.hopix.human-readable new file mode 100644 index 0000000..0975509 --- /dev/null +++ b/flap/tests/03-Typing/27-function-in-record.good.typing.hopix.human-readable @@ -0,0 +1,11 @@ +type f<`a, `b> = { apply : `a -> `b } + +fun : int -> int + f (x : int) = x + 1 + +let boxed_f : f = { apply = f } + +fun : [`a, `b] f<`a, `b> * `a -> `b + apply_boxed_f ((boxed_f : f<`a, `b>), (a : `a)) = boxed_f.apply<`a, `b> (a) + +let main : int = apply_boxed_f(boxed_f, 42) \ No newline at end of file diff --git a/flap/tests/03-Typing/28-anonymous-function.bad.expected b/flap/tests/03-Typing/28-anonymous-function.bad.expected new file mode 100644 index 0000000..c091cc2 --- /dev/null +++ b/flap/tests/03-Typing/28-anonymous-function.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + string diff --git a/flap/tests/03-Typing/28-anonymous-function.bad.typing.hopix b/flap/tests/03-Typing/28-anonymous-function.bad.typing.hopix new file mode 100644 index 0000000..cbc412c --- /dev/null +++ b/flap/tests/03-Typing/28-anonymous-function.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id succ))(position((start_p(""1 0 4))(end_p(""1 0 8)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 11))(end_p(""1 0 14)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 18))(end_p(""1 0 21)))))))(position((start_p(""1 0 11))(end_p(""1 0 21)))))))(position((start_p(""1 0 11))(end_p(""1 0 21))))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""1 0 28))(end_p(""1 0 29)))))))(position((start_p(""1 0 28))(end_p(""1 0 29)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 32))(end_p(""1 0 35)))))))(position((start_p(""1 0 27))(end_p(""1 0 36)))))((value(Literal((value(LString bar))(position((start_p(""1 0 44))(end_p(""1 0 45)))))))(position((start_p(""1 0 44))(end_p(""1 0 45))))))))(position((start_p(""1 0 25))(end_p(""1 0 45)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 48))(end_p(""1 0 51)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 55))(end_p(""1 0 58)))))))(position((start_p(""1 0 48))(end_p(""1 0 58)))))))(position((start_p(""1 0 24))(end_p(""1 0 59)))))))))(position((start_p(""1 0 0))(end_p(""1 0 59)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 61 65))(end_p(""3 61 69)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 61 72))(end_p(""3 61 75)))))))(position((start_p(""3 61 72))(end_p(""3 61 75))))))((value(Apply((value(Variable((value(Id succ))(position((start_p(""3 61 78))(end_p(""3 61 82)))))()))(position((start_p(""3 61 78))(end_p(""3 61 82)))))((value(Literal((value(LInt 0))(position((start_p(""3 61 84))(end_p(""3 61 85)))))))(position((start_p(""3 61 83))(end_p(""3 61 86)))))))(position((start_p(""3 61 78))(end_p(""3 61 86)))))))))(position((start_p(""3 61 61))(end_p(""3 61 86)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/28-anonymous-function.bad.typing.hopix.human-readable b/flap/tests/03-Typing/28-anonymous-function.bad.typing.hopix.human-readable new file mode 100644 index 0000000..5df9fe8 --- /dev/null +++ b/flap/tests/03-Typing/28-anonymous-function.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +let succ : int -> int = (\ (x : int) -> "bar" : int -> int) + +let main : int = succ (0) \ No newline at end of file diff --git a/flap/tests/03-Typing/28-anonymous-function.good.expected b/flap/tests/03-Typing/28-anonymous-function.good.expected new file mode 100644 index 0000000..4c85903 --- /dev/null +++ b/flap/tests/03-Typing/28-anonymous-function.good.expected @@ -0,0 +1,2 @@ +succ : int -> int +main : int diff --git a/flap/tests/03-Typing/28-anonymous-function.good.typing.hopix b/flap/tests/03-Typing/28-anonymous-function.good.typing.hopix new file mode 100644 index 0000000..f834ca9 --- /dev/null +++ b/flap/tests/03-Typing/28-anonymous-function.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id succ))(position((start_p(""1 0 4))(end_p(""1 0 8)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 11))(end_p(""1 0 14)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 18))(end_p(""1 0 21)))))))(position((start_p(""1 0 11))(end_p(""1 0 21)))))))(position((start_p(""1 0 11))(end_p(""1 0 21))))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""1 0 28))(end_p(""1 0 29)))))))(position((start_p(""1 0 28))(end_p(""1 0 29)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 32))(end_p(""1 0 35)))))))(position((start_p(""1 0 27))(end_p(""1 0 36)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 42))(end_p(""1 0 43)))))()))(position((start_p(""1 0 42))(end_p(""1 0 43)))))((value(Variable((value(Id x))(position((start_p(""1 0 40))(end_p(""1 0 41)))))()))(position((start_p(""1 0 40))(end_p(""1 0 41)))))))(position((start_p(""1 0 40))(end_p(""1 0 41)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 44))(end_p(""1 0 45)))))))(position((start_p(""1 0 44))(end_p(""1 0 45)))))))(position((start_p(""1 0 40))(end_p(""1 0 45))))))))(position((start_p(""1 0 25))(end_p(""1 0 45)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 48))(end_p(""1 0 51)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 55))(end_p(""1 0 58)))))))(position((start_p(""1 0 48))(end_p(""1 0 58)))))))(position((start_p(""1 0 24))(end_p(""1 0 59)))))))))(position((start_p(""1 0 0))(end_p(""1 0 59)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 61 65))(end_p(""3 61 69)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 61 72))(end_p(""3 61 75)))))))(position((start_p(""3 61 72))(end_p(""3 61 75))))))((value(Apply((value(Variable((value(Id succ))(position((start_p(""3 61 78))(end_p(""3 61 82)))))()))(position((start_p(""3 61 78))(end_p(""3 61 82)))))((value(Literal((value(LInt 0))(position((start_p(""3 61 84))(end_p(""3 61 85)))))))(position((start_p(""3 61 83))(end_p(""3 61 86)))))))(position((start_p(""3 61 78))(end_p(""3 61 86)))))))))(position((start_p(""3 61 61))(end_p(""3 61 86)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/28-anonymous-function.good.typing.hopix.human-readable b/flap/tests/03-Typing/28-anonymous-function.good.typing.hopix.human-readable new file mode 100644 index 0000000..12112b9 --- /dev/null +++ b/flap/tests/03-Typing/28-anonymous-function.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +let succ : int -> int = (\ (x : int) -> x + 1 : int -> int) + +let main : int = succ (0) \ No newline at end of file diff --git a/flap/tests/03-Typing/29-anonymous-nary-functions.bad.expected b/flap/tests/03-Typing/29-anonymous-nary-functions.bad.expected new file mode 100644 index 0000000..cd8098a --- /dev/null +++ b/flap/tests/03-Typing/29-anonymous-nary-functions.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + int -> int diff --git a/flap/tests/03-Typing/29-anonymous-nary-functions.bad.typing.hopix b/flap/tests/03-Typing/29-anonymous-nary-functions.bad.typing.hopix new file mode 100644 index 0000000..4478969 --- /dev/null +++ b/flap/tests/03-Typing/29-anonymous-nary-functions.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id apply))(position((start_p(""2 33 37))(end_p(""2 33 42)))))(((value(ForallTy()((value(TyArrow((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 7))(end_p(""1 0 10)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 6))(end_p(""1 0 18)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 22))(end_p(""1 0 25)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 29))(end_p(""1 0 32)))))))(position((start_p(""1 0 22))(end_p(""1 0 32)))))))(position((start_p(""1 0 6))(end_p(""1 0 32)))))))(position((start_p(""1 0 6))(end_p(""1 0 32))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""2 33 44))(end_p(""2 33 45)))))))(position((start_p(""2 33 44))(end_p(""2 33 45)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""2 33 48))(end_p(""2 33 51)))))((value(TyCon(TCon int)()))(position((start_p(""2 33 55))(end_p(""2 33 58)))))))(position((start_p(""2 33 48))(end_p(""2 33 58)))))))(position((start_p(""2 33 43))(end_p(""2 33 59)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""3 62 69))(end_p(""3 62 70)))))))(position((start_p(""3 62 69))(end_p(""3 62 70)))))((value(TyCon(TCon int)()))(position((start_p(""3 62 73))(end_p(""3 62 76)))))))(position((start_p(""3 62 68))(end_p(""3 62 77)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""3 62 81))(end_p(""3 62 82)))))()))(position((start_p(""3 62 81))(end_p(""3 62 82)))))((value(Variable((value(Id x))(position((start_p(""3 62 84))(end_p(""3 62 85)))))()))(position((start_p(""3 62 83))(end_p(""3 62 86)))))))(position((start_p(""3 62 81))(end_p(""3 62 86))))))))(position((start_p(""3 62 67))(end_p(""3 62 86)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""3 62 89))(end_p(""3 62 92)))))((value(TyCon(TCon int)()))(position((start_p(""3 62 96))(end_p(""3 62 99)))))))(position((start_p(""3 62 89))(end_p(""3 62 99)))))))(position((start_p(""3 62 66))(end_p(""3 62 100)))))))))))(position((start_p(""1 0 0))(end_p(""3 62 100)))))((value(DefineValue(RecFunctions((((value(Id succ))(position((start_p(""6 119 123))(end_p(""6 119 127)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""5 102 108))(end_p(""5 102 111)))))((value(TyCon(TCon int)()))(position((start_p(""5 102 115))(end_p(""5 102 118)))))))(position((start_p(""5 102 108))(end_p(""5 102 118)))))))(position((start_p(""5 102 108))(end_p(""5 102 118))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""6 119 129))(end_p(""6 119 130)))))))(position((start_p(""6 119 129))(end_p(""6 119 130)))))((value(TyCon(TCon int)()))(position((start_p(""6 119 133))(end_p(""6 119 136)))))))(position((start_p(""6 119 128))(end_p(""6 119 137)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""6 119 142))(end_p(""6 119 143)))))()))(position((start_p(""6 119 142))(end_p(""6 119 143)))))((value(Variable((value(Id x))(position((start_p(""6 119 140))(end_p(""6 119 141)))))()))(position((start_p(""6 119 140))(end_p(""6 119 141)))))))(position((start_p(""6 119 140))(end_p(""6 119 141)))))((value(Literal((value(LInt 1))(position((start_p(""6 119 144))(end_p(""6 119 145)))))))(position((start_p(""6 119 144))(end_p(""6 119 145)))))))(position((start_p(""6 119 140))(end_p(""6 119 145)))))))))))(position((start_p(""5 102 102))(end_p(""6 119 145)))))((value(DefineValue(RecFunctions((((value(Id apply2))(position((start_p(""9 194 198))(end_p(""9 194 204)))))(((value(ForallTy()((value(TyArrow((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""8 147 154))(end_p(""8 147 157)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""8 147 161))(end_p(""8 147 164)))))((value(TyCon(TCon int)()))(position((start_p(""8 147 168))(end_p(""8 147 171)))))))(position((start_p(""8 147 161))(end_p(""8 147 171)))))))(position((start_p(""8 147 153))(end_p(""8 147 172)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""8 147 176))(end_p(""8 147 179)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""8 147 183))(end_p(""8 147 186)))))((value(TyCon(TCon int)()))(position((start_p(""8 147 190))(end_p(""8 147 193)))))))(position((start_p(""8 147 183))(end_p(""8 147 193)))))))(position((start_p(""8 147 176))(end_p(""8 147 193)))))))(position((start_p(""8 147 153))(end_p(""8 147 193)))))))(position((start_p(""8 147 153))(end_p(""8 147 193))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""9 194 206))(end_p(""9 194 207)))))))(position((start_p(""9 194 206))(end_p(""9 194 207)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""9 194 210))(end_p(""9 194 213)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""9 194 217))(end_p(""9 194 220)))))((value(TyCon(TCon int)()))(position((start_p(""9 194 224))(end_p(""9 194 227)))))))(position((start_p(""9 194 217))(end_p(""9 194 227)))))))(position((start_p(""9 194 210))(end_p(""9 194 227)))))))(position((start_p(""9 194 205))(end_p(""9 194 228)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""10 231 238))(end_p(""10 231 239)))))))(position((start_p(""10 231 238))(end_p(""10 231 239)))))((value(TyCon(TCon int)()))(position((start_p(""10 231 242))(end_p(""10 231 245)))))))(position((start_p(""10 231 237))(end_p(""10 231 246)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""11 250 258))(end_p(""11 250 259)))))))(position((start_p(""11 250 258))(end_p(""11 250 259)))))((value(TyCon(TCon int)()))(position((start_p(""11 250 262))(end_p(""11 250 265)))))))(position((start_p(""11 250 257))(end_p(""11 250 266)))))((value(Apply((value(Apply((value(Variable((value(Id f))(position((start_p(""11 250 270))(end_p(""11 250 271)))))()))(position((start_p(""11 250 270))(end_p(""11 250 271)))))((value(Variable((value(Id x))(position((start_p(""11 250 272))(end_p(""11 250 273)))))()))(position((start_p(""11 250 272))(end_p(""11 250 273)))))))(position((start_p(""11 250 270))(end_p(""11 250 273)))))((value(Variable((value(Id y))(position((start_p(""11 250 274))(end_p(""11 250 275)))))()))(position((start_p(""11 250 274))(end_p(""11 250 275)))))))(position((start_p(""11 250 270))(end_p(""11 250 275))))))))(position((start_p(""11 250 256))(end_p(""11 250 275)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""11 250 278))(end_p(""11 250 281)))))((value(TyCon(TCon int)()))(position((start_p(""11 250 285))(end_p(""11 250 288)))))))(position((start_p(""11 250 278))(end_p(""11 250 288)))))))(position((start_p(""11 250 255))(end_p(""11 250 289))))))))(position((start_p(""10 231 236))(end_p(""11 250 289)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""11 250 292))(end_p(""11 250 295)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""11 250 299))(end_p(""11 250 302)))))((value(TyCon(TCon int)()))(position((start_p(""11 250 306))(end_p(""11 250 309)))))))(position((start_p(""11 250 299))(end_p(""11 250 309)))))))(position((start_p(""11 250 292))(end_p(""11 250 309)))))))(position((start_p(""10 231 235))(end_p(""11 250 310)))))))))))(position((start_p(""8 147 147))(end_p(""11 250 310)))))((value(DefineValue(RecFunctions((((value(Id addmul))(position((start_p(""14 336 341))(end_p(""14 336 347)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""13 312 318))(end_p(""13 312 321)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""13 312 325))(end_p(""13 312 328)))))((value(TyCon(TCon int)()))(position((start_p(""13 312 332))(end_p(""13 312 335)))))))(position((start_p(""13 312 325))(end_p(""13 312 335)))))))(position((start_p(""13 312 318))(end_p(""13 312 335)))))))(position((start_p(""13 312 318))(end_p(""13 312 335))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""14 336 349))(end_p(""14 336 350)))))))(position((start_p(""14 336 349))(end_p(""14 336 350)))))((value(TyCon(TCon int)()))(position((start_p(""14 336 353))(end_p(""14 336 356)))))))(position((start_p(""14 336 348))(end_p(""14 336 357)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""14 336 363))(end_p(""14 336 364)))))))(position((start_p(""14 336 363))(end_p(""14 336 364)))))((value(TyCon(TCon int)()))(position((start_p(""14 336 367))(end_p(""14 336 370)))))))(position((start_p(""14 336 362))(end_p(""14 336 371)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""14 336 381))(end_p(""14 336 382)))))()))(position((start_p(""14 336 381))(end_p(""14 336 382)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""14 336 377))(end_p(""14 336 378)))))()))(position((start_p(""14 336 377))(end_p(""14 336 378)))))((value(Variable((value(Id x))(position((start_p(""14 336 375))(end_p(""14 336 376)))))()))(position((start_p(""14 336 375))(end_p(""14 336 376)))))))(position((start_p(""14 336 375))(end_p(""14 336 376)))))((value(Variable((value(Id y))(position((start_p(""14 336 379))(end_p(""14 336 380)))))()))(position((start_p(""14 336 379))(end_p(""14 336 380)))))))(position((start_p(""14 336 375))(end_p(""14 336 380)))))))(position((start_p(""14 336 375))(end_p(""14 336 380)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""14 336 385))(end_p(""14 336 386)))))()))(position((start_p(""14 336 385))(end_p(""14 336 386)))))((value(Variable((value(Id y))(position((start_p(""14 336 383))(end_p(""14 336 384)))))()))(position((start_p(""14 336 383))(end_p(""14 336 384)))))))(position((start_p(""14 336 383))(end_p(""14 336 384)))))((value(Variable((value(Id x))(position((start_p(""14 336 387))(end_p(""14 336 388)))))()))(position((start_p(""14 336 387))(end_p(""14 336 388)))))))(position((start_p(""14 336 383))(end_p(""14 336 388)))))))(position((start_p(""14 336 375))(end_p(""14 336 388))))))))(position((start_p(""14 336 361))(end_p(""14 336 388)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""14 336 391))(end_p(""14 336 394)))))((value(TyCon(TCon int)()))(position((start_p(""14 336 398))(end_p(""14 336 401)))))))(position((start_p(""14 336 391))(end_p(""14 336 401)))))))(position((start_p(""14 336 360))(end_p(""14 336 402)))))))))))(position((start_p(""13 312 312))(end_p(""14 336 402)))))((value(DefineValue(RecFunctions((((value(Id apply3))(position((start_p(""17 465 469))(end_p(""17 465 475)))))(((value(ForallTy()((value(TyArrow((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 411))(end_p(""16 404 414)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 418))(end_p(""16 404 421)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 425))(end_p(""16 404 428)))))((value(TyCon(TCon int)()))(position((start_p(""16 404 432))(end_p(""16 404 435)))))))(position((start_p(""16 404 425))(end_p(""16 404 435)))))))(position((start_p(""16 404 418))(end_p(""16 404 435)))))))(position((start_p(""16 404 410))(end_p(""16 404 436)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 440))(end_p(""16 404 443)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 447))(end_p(""16 404 450)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 454))(end_p(""16 404 457)))))((value(TyCon(TCon int)()))(position((start_p(""16 404 461))(end_p(""16 404 464)))))))(position((start_p(""16 404 454))(end_p(""16 404 464)))))))(position((start_p(""16 404 447))(end_p(""16 404 464)))))))(position((start_p(""16 404 440))(end_p(""16 404 464)))))))(position((start_p(""16 404 410))(end_p(""16 404 464)))))))(position((start_p(""16 404 410))(end_p(""16 404 464))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""17 465 477))(end_p(""17 465 478)))))))(position((start_p(""17 465 477))(end_p(""17 465 478)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""17 465 481))(end_p(""17 465 484)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""17 465 488))(end_p(""17 465 491)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""17 465 495))(end_p(""17 465 498)))))((value(TyCon(TCon int)()))(position((start_p(""17 465 502))(end_p(""17 465 505)))))))(position((start_p(""17 465 495))(end_p(""17 465 505)))))))(position((start_p(""17 465 488))(end_p(""17 465 505)))))))(position((start_p(""17 465 481))(end_p(""17 465 505)))))))(position((start_p(""17 465 476))(end_p(""17 465 506)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""18 509 516))(end_p(""18 509 517)))))))(position((start_p(""18 509 516))(end_p(""18 509 517)))))((value(TyCon(TCon int)()))(position((start_p(""18 509 520))(end_p(""18 509 523)))))))(position((start_p(""18 509 515))(end_p(""18 509 524)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""19 528 537))(end_p(""19 528 538)))))))(position((start_p(""19 528 537))(end_p(""19 528 538)))))((value(TyCon(TCon int)()))(position((start_p(""19 528 541))(end_p(""19 528 544)))))))(position((start_p(""19 528 536))(end_p(""19 528 545)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id z))(position((start_p(""20 549 560))(end_p(""20 549 561)))))))(position((start_p(""20 549 560))(end_p(""20 549 561)))))((value(TyCon(TCon int)()))(position((start_p(""20 549 564))(end_p(""20 549 567)))))))(position((start_p(""20 549 559))(end_p(""20 549 568)))))((value(Apply((value(Apply((value(Apply((value(Variable((value(Id f))(position((start_p(""20 549 572))(end_p(""20 549 573)))))()))(position((start_p(""20 549 572))(end_p(""20 549 573)))))((value(Variable((value(Id x))(position((start_p(""20 549 574))(end_p(""20 549 575)))))()))(position((start_p(""20 549 574))(end_p(""20 549 575)))))))(position((start_p(""20 549 572))(end_p(""20 549 575)))))((value(Variable((value(Id y))(position((start_p(""20 549 576))(end_p(""20 549 577)))))()))(position((start_p(""20 549 576))(end_p(""20 549 577)))))))(position((start_p(""20 549 572))(end_p(""20 549 577)))))((value(Variable((value(Id z))(position((start_p(""20 549 578))(end_p(""20 549 579)))))()))(position((start_p(""20 549 578))(end_p(""20 549 579)))))))(position((start_p(""20 549 572))(end_p(""20 549 579))))))))(position((start_p(""20 549 558))(end_p(""20 549 579)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""20 549 582))(end_p(""20 549 585)))))((value(TyCon(TCon int)()))(position((start_p(""20 549 589))(end_p(""20 549 592)))))))(position((start_p(""20 549 582))(end_p(""20 549 592)))))))(position((start_p(""20 549 557))(end_p(""20 549 593))))))))(position((start_p(""19 528 535))(end_p(""20 549 593)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""21 594 602))(end_p(""21 594 605)))))((value(TyCon(TCon int)()))(position((start_p(""21 594 609))(end_p(""21 594 612)))))))(position((start_p(""21 594 602))(end_p(""21 594 612)))))))(position((start_p(""19 528 534))(end_p(""21 594 613))))))))(position((start_p(""18 509 514))(end_p(""21 594 613)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""22 614 620))(end_p(""22 614 623)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""22 614 627))(end_p(""22 614 630)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""22 614 634))(end_p(""22 614 637)))))((value(TyCon(TCon int)()))(position((start_p(""22 614 641))(end_p(""22 614 644)))))))(position((start_p(""22 614 634))(end_p(""22 614 644)))))))(position((start_p(""22 614 627))(end_p(""22 614 644)))))))(position((start_p(""22 614 620))(end_p(""22 614 644)))))))(position((start_p(""18 509 513))(end_p(""22 614 645)))))))))))(position((start_p(""16 404 404))(end_p(""22 614 645)))))((value(DefineValue(SimpleValue(((value(Id conj))(position((start_p(""24 647 651))(end_p(""24 647 655)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""24 647 658))(end_p(""24 647 661)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""24 647 665))(end_p(""24 647 668)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""24 647 672))(end_p(""24 647 675)))))((value(TyCon(TCon int)()))(position((start_p(""24 647 679))(end_p(""24 647 682)))))))(position((start_p(""24 647 672))(end_p(""24 647 682)))))))(position((start_p(""24 647 665))(end_p(""24 647 682)))))))(position((start_p(""24 647 658))(end_p(""24 647 682)))))))(position((start_p(""24 647 658))(end_p(""24 647 682))))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""25 685 692))(end_p(""25 685 693)))))))(position((start_p(""25 685 692))(end_p(""25 685 693)))))((value(TyCon(TCon int)()))(position((start_p(""25 685 696))(end_p(""25 685 699)))))))(position((start_p(""25 685 691))(end_p(""25 685 700)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""26 704 714))(end_p(""26 704 715)))))))(position((start_p(""26 704 714))(end_p(""26 704 715)))))((value(TyCon(TCon int)()))(position((start_p(""26 704 718))(end_p(""26 704 721)))))))(position((start_p(""26 704 713))(end_p(""26 704 722)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id z))(position((start_p(""27 726 738))(end_p(""27 726 739)))))))(position((start_p(""27 726 738))(end_p(""27 726 739)))))((value(TyCon(TCon int)()))(position((start_p(""27 726 742))(end_p(""27 726 745)))))))(position((start_p(""27 726 737))(end_p(""27 726 746)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""27 726 756))(end_p(""27 726 757)))))()))(position((start_p(""27 726 756))(end_p(""27 726 757)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""27 726 752))(end_p(""27 726 753)))))()))(position((start_p(""27 726 752))(end_p(""27 726 753)))))((value(Variable((value(Id x))(position((start_p(""27 726 750))(end_p(""27 726 751)))))()))(position((start_p(""27 726 750))(end_p(""27 726 751)))))))(position((start_p(""27 726 750))(end_p(""27 726 751)))))((value(Variable((value(Id y))(position((start_p(""27 726 754))(end_p(""27 726 755)))))()))(position((start_p(""27 726 754))(end_p(""27 726 755)))))))(position((start_p(""27 726 750))(end_p(""27 726 755)))))))(position((start_p(""27 726 750))(end_p(""27 726 755)))))((value(Variable((value(Id z))(position((start_p(""27 726 758))(end_p(""27 726 759)))))()))(position((start_p(""27 726 758))(end_p(""27 726 759)))))))(position((start_p(""27 726 750))(end_p(""27 726 759))))))))(position((start_p(""27 726 736))(end_p(""27 726 759)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""27 726 762))(end_p(""27 726 765)))))((value(TyCon(TCon int)()))(position((start_p(""27 726 769))(end_p(""27 726 772)))))))(position((start_p(""27 726 762))(end_p(""27 726 772)))))))(position((start_p(""27 726 735))(end_p(""27 726 773))))))))(position((start_p(""26 704 712))(end_p(""27 726 773)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""28 774 783))(end_p(""28 774 786)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""28 774 790))(end_p(""28 774 793)))))((value(TyCon(TCon int)()))(position((start_p(""28 774 797))(end_p(""28 774 800)))))))(position((start_p(""28 774 790))(end_p(""28 774 800)))))))(position((start_p(""28 774 783))(end_p(""28 774 800)))))))(position((start_p(""26 704 711))(end_p(""28 774 801))))))))(position((start_p(""25 685 690))(end_p(""28 774 801)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""29 802 808))(end_p(""29 802 811)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""29 802 815))(end_p(""29 802 818)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""29 802 822))(end_p(""29 802 825)))))((value(TyCon(TCon int)()))(position((start_p(""29 802 829))(end_p(""29 802 832)))))))(position((start_p(""29 802 822))(end_p(""29 802 832)))))))(position((start_p(""29 802 815))(end_p(""29 802 832)))))))(position((start_p(""29 802 808))(end_p(""29 802 832)))))))(position((start_p(""25 685 689))(end_p(""29 802 833)))))))))(position((start_p(""24 647 647))(end_p(""29 802 833)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""31 835 839))(end_p(""31 835 843)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""31 835 846))(end_p(""31 835 849)))))))(position((start_p(""31 835 846))(end_p(""31 835 849))))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""33 874 896))(end_p(""33 874 897)))))()))(position((start_p(""33 874 896))(end_p(""33 874 897)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""32 852 872))(end_p(""32 852 873)))))()))(position((start_p(""32 852 872))(end_p(""32 852 873)))))((value(Apply((value(Apply((value(Variable((value(Id apply))(position((start_p(""32 852 856))(end_p(""32 852 861)))))()))(position((start_p(""32 852 856))(end_p(""32 852 861)))))((value(Variable((value(Id succ))(position((start_p(""32 852 862))(end_p(""32 852 866)))))()))(position((start_p(""32 852 862))(end_p(""32 852 866)))))))(position((start_p(""32 852 856))(end_p(""32 852 866)))))((value(Literal((value(LInt -1))(position((start_p(""32 852 868))(end_p(""32 852 870)))))))(position((start_p(""32 852 867))(end_p(""32 852 871)))))))(position((start_p(""32 852 856))(end_p(""32 852 871)))))))(position((start_p(""32 852 856))(end_p(""32 852 871)))))((value(Apply((value(Apply((value(Apply((value(Variable((value(Id apply2))(position((start_p(""33 874 878))(end_p(""33 874 884)))))()))(position((start_p(""33 874 878))(end_p(""33 874 884)))))((value(Variable((value(Id addmul))(position((start_p(""33 874 885))(end_p(""33 874 891)))))()))(position((start_p(""33 874 885))(end_p(""33 874 891)))))))(position((start_p(""33 874 878))(end_p(""33 874 891)))))((value(Literal((value(LInt 3))(position((start_p(""33 874 892))(end_p(""33 874 893)))))))(position((start_p(""33 874 892))(end_p(""33 874 893)))))))(position((start_p(""33 874 878))(end_p(""33 874 893)))))((value(Literal((value(LInt 7))(position((start_p(""33 874 894))(end_p(""33 874 895)))))))(position((start_p(""33 874 894))(end_p(""33 874 895)))))))(position((start_p(""33 874 878))(end_p(""33 874 895)))))))(position((start_p(""32 852 856))(end_p(""33 874 895)))))))(position((start_p(""32 852 856))(end_p(""33 874 895)))))((value(Apply((value(Apply((value(Apply((value(Apply((value(Variable((value(Id apply3))(position((start_p(""34 898 902))(end_p(""34 898 908)))))()))(position((start_p(""34 898 902))(end_p(""34 898 908)))))((value(Variable((value(Id conj))(position((start_p(""34 898 909))(end_p(""34 898 913)))))()))(position((start_p(""34 898 909))(end_p(""34 898 913)))))))(position((start_p(""34 898 902))(end_p(""34 898 913)))))((value(Literal((value(LInt 0))(position((start_p(""34 898 914))(end_p(""34 898 915)))))))(position((start_p(""34 898 914))(end_p(""34 898 915)))))))(position((start_p(""34 898 902))(end_p(""34 898 915)))))((value(Literal((value(LInt 1))(position((start_p(""34 898 916))(end_p(""34 898 917)))))))(position((start_p(""34 898 916))(end_p(""34 898 917)))))))(position((start_p(""34 898 902))(end_p(""34 898 917)))))((value(Literal((value(LInt 2))(position((start_p(""34 898 918))(end_p(""34 898 919)))))))(position((start_p(""34 898 918))(end_p(""34 898 919)))))))(position((start_p(""34 898 902))(end_p(""34 898 919)))))))(position((start_p(""32 852 856))(end_p(""34 898 919)))))))))(position((start_p(""31 835 835))(end_p(""34 898 919)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/29-anonymous-nary-functions.bad.typing.hopix.human-readable b/flap/tests/03-Typing/29-anonymous-nary-functions.bad.typing.hopix.human-readable new file mode 100644 index 0000000..e22797b --- /dev/null +++ b/flap/tests/03-Typing/29-anonymous-nary-functions.bad.typing.hopix.human-readable @@ -0,0 +1,37 @@ +fun : (int -> int) -> int -> int + apply (f : int -> int) = + (\(x : int) -> f (x) : int -> int) + +fun : int -> int + succ (x : int) = x + 1 + +fun : (int -> int -> int) -> int -> int -> int + apply2 (f : int -> int -> int) = + (\(x : int) -> + (\(y : int) -> f x y : int -> int) : int -> int -> int) + +fun : int -> int -> int + addmul (x : int) = (\(y : int) -> x * y + y * x : int -> int) + +fun : (int -> int -> int -> int) -> int -> int -> int -> int + apply3 (f : int -> int -> int -> int) = + (\(x : int) -> + (\(y : int) -> + (\(z : int) -> f x y z : int -> int) + : int -> int) + : int -> int -> int -> int) + +let conj : int -> int -> int -> int = + (\(x : int) -> + (\(y : int) -> + (\(z : int) -> x * y * z : int -> int) + : int -> int -> int) + : int -> int -> int -> int) + +let main : int = + apply succ (-1) + + apply2 addmul 3 7 + + apply3 conj 0 1 2 + + + diff --git a/flap/tests/03-Typing/29-anonymous-nary-functions.good.expected b/flap/tests/03-Typing/29-anonymous-nary-functions.good.expected new file mode 100644 index 0000000..43e1460 --- /dev/null +++ b/flap/tests/03-Typing/29-anonymous-nary-functions.good.expected @@ -0,0 +1,7 @@ +apply : (int -> int) -> (int -> int) +succ : int -> int +apply2 : (int -> (int -> int)) -> (int -> (int -> int)) +addmul : int -> (int -> int) +apply3 : (int -> (int -> (int -> int))) -> (int -> (int -> (int -> int))) +conj : int -> (int -> (int -> int)) +main : int diff --git a/flap/tests/03-Typing/29-anonymous-nary-functions.good.typing.hopix b/flap/tests/03-Typing/29-anonymous-nary-functions.good.typing.hopix new file mode 100644 index 0000000..e4cce39 --- /dev/null +++ b/flap/tests/03-Typing/29-anonymous-nary-functions.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id apply))(position((start_p(""2 33 37))(end_p(""2 33 42)))))(((value(ForallTy()((value(TyArrow((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 7))(end_p(""1 0 10)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 6))(end_p(""1 0 18)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 22))(end_p(""1 0 25)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 29))(end_p(""1 0 32)))))))(position((start_p(""1 0 22))(end_p(""1 0 32)))))))(position((start_p(""1 0 6))(end_p(""1 0 32)))))))(position((start_p(""1 0 6))(end_p(""1 0 32))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""2 33 44))(end_p(""2 33 45)))))))(position((start_p(""2 33 44))(end_p(""2 33 45)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""2 33 48))(end_p(""2 33 51)))))((value(TyCon(TCon int)()))(position((start_p(""2 33 55))(end_p(""2 33 58)))))))(position((start_p(""2 33 48))(end_p(""2 33 58)))))))(position((start_p(""2 33 43))(end_p(""2 33 59)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""3 62 69))(end_p(""3 62 70)))))))(position((start_p(""3 62 69))(end_p(""3 62 70)))))((value(TyCon(TCon int)()))(position((start_p(""3 62 73))(end_p(""3 62 76)))))))(position((start_p(""3 62 68))(end_p(""3 62 77)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""3 62 81))(end_p(""3 62 82)))))()))(position((start_p(""3 62 81))(end_p(""3 62 82)))))((value(Variable((value(Id x))(position((start_p(""3 62 84))(end_p(""3 62 85)))))()))(position((start_p(""3 62 83))(end_p(""3 62 86)))))))(position((start_p(""3 62 81))(end_p(""3 62 86))))))))(position((start_p(""3 62 67))(end_p(""3 62 86)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""3 62 89))(end_p(""3 62 92)))))((value(TyCon(TCon int)()))(position((start_p(""3 62 96))(end_p(""3 62 99)))))))(position((start_p(""3 62 89))(end_p(""3 62 99)))))))(position((start_p(""3 62 66))(end_p(""3 62 100)))))))))))(position((start_p(""1 0 0))(end_p(""3 62 100)))))((value(DefineValue(RecFunctions((((value(Id succ))(position((start_p(""6 119 123))(end_p(""6 119 127)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""5 102 108))(end_p(""5 102 111)))))((value(TyCon(TCon int)()))(position((start_p(""5 102 115))(end_p(""5 102 118)))))))(position((start_p(""5 102 108))(end_p(""5 102 118)))))))(position((start_p(""5 102 108))(end_p(""5 102 118))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""6 119 129))(end_p(""6 119 130)))))))(position((start_p(""6 119 129))(end_p(""6 119 130)))))((value(TyCon(TCon int)()))(position((start_p(""6 119 133))(end_p(""6 119 136)))))))(position((start_p(""6 119 128))(end_p(""6 119 137)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""6 119 142))(end_p(""6 119 143)))))()))(position((start_p(""6 119 142))(end_p(""6 119 143)))))((value(Variable((value(Id x))(position((start_p(""6 119 140))(end_p(""6 119 141)))))()))(position((start_p(""6 119 140))(end_p(""6 119 141)))))))(position((start_p(""6 119 140))(end_p(""6 119 141)))))((value(Literal((value(LInt 1))(position((start_p(""6 119 144))(end_p(""6 119 145)))))))(position((start_p(""6 119 144))(end_p(""6 119 145)))))))(position((start_p(""6 119 140))(end_p(""6 119 145)))))))))))(position((start_p(""5 102 102))(end_p(""6 119 145)))))((value(DefineValue(RecFunctions((((value(Id apply2))(position((start_p(""9 194 198))(end_p(""9 194 204)))))(((value(ForallTy()((value(TyArrow((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""8 147 154))(end_p(""8 147 157)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""8 147 161))(end_p(""8 147 164)))))((value(TyCon(TCon int)()))(position((start_p(""8 147 168))(end_p(""8 147 171)))))))(position((start_p(""8 147 161))(end_p(""8 147 171)))))))(position((start_p(""8 147 153))(end_p(""8 147 172)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""8 147 176))(end_p(""8 147 179)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""8 147 183))(end_p(""8 147 186)))))((value(TyCon(TCon int)()))(position((start_p(""8 147 190))(end_p(""8 147 193)))))))(position((start_p(""8 147 183))(end_p(""8 147 193)))))))(position((start_p(""8 147 176))(end_p(""8 147 193)))))))(position((start_p(""8 147 153))(end_p(""8 147 193)))))))(position((start_p(""8 147 153))(end_p(""8 147 193))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""9 194 206))(end_p(""9 194 207)))))))(position((start_p(""9 194 206))(end_p(""9 194 207)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""9 194 210))(end_p(""9 194 213)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""9 194 217))(end_p(""9 194 220)))))((value(TyCon(TCon int)()))(position((start_p(""9 194 224))(end_p(""9 194 227)))))))(position((start_p(""9 194 217))(end_p(""9 194 227)))))))(position((start_p(""9 194 210))(end_p(""9 194 227)))))))(position((start_p(""9 194 205))(end_p(""9 194 228)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""10 231 238))(end_p(""10 231 239)))))))(position((start_p(""10 231 238))(end_p(""10 231 239)))))((value(TyCon(TCon int)()))(position((start_p(""10 231 242))(end_p(""10 231 245)))))))(position((start_p(""10 231 237))(end_p(""10 231 246)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""11 250 258))(end_p(""11 250 259)))))))(position((start_p(""11 250 258))(end_p(""11 250 259)))))((value(TyCon(TCon int)()))(position((start_p(""11 250 262))(end_p(""11 250 265)))))))(position((start_p(""11 250 257))(end_p(""11 250 266)))))((value(Apply((value(Apply((value(Variable((value(Id f))(position((start_p(""11 250 270))(end_p(""11 250 271)))))()))(position((start_p(""11 250 270))(end_p(""11 250 271)))))((value(Variable((value(Id x))(position((start_p(""11 250 272))(end_p(""11 250 273)))))()))(position((start_p(""11 250 272))(end_p(""11 250 273)))))))(position((start_p(""11 250 270))(end_p(""11 250 273)))))((value(Variable((value(Id y))(position((start_p(""11 250 274))(end_p(""11 250 275)))))()))(position((start_p(""11 250 274))(end_p(""11 250 275)))))))(position((start_p(""11 250 270))(end_p(""11 250 275))))))))(position((start_p(""11 250 256))(end_p(""11 250 275)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""11 250 278))(end_p(""11 250 281)))))((value(TyCon(TCon int)()))(position((start_p(""11 250 285))(end_p(""11 250 288)))))))(position((start_p(""11 250 278))(end_p(""11 250 288)))))))(position((start_p(""11 250 255))(end_p(""11 250 289))))))))(position((start_p(""10 231 236))(end_p(""11 250 289)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""11 250 292))(end_p(""11 250 295)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""11 250 299))(end_p(""11 250 302)))))((value(TyCon(TCon int)()))(position((start_p(""11 250 306))(end_p(""11 250 309)))))))(position((start_p(""11 250 299))(end_p(""11 250 309)))))))(position((start_p(""11 250 292))(end_p(""11 250 309)))))))(position((start_p(""10 231 235))(end_p(""11 250 310)))))))))))(position((start_p(""8 147 147))(end_p(""11 250 310)))))((value(DefineValue(RecFunctions((((value(Id addmul))(position((start_p(""14 336 341))(end_p(""14 336 347)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""13 312 318))(end_p(""13 312 321)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""13 312 325))(end_p(""13 312 328)))))((value(TyCon(TCon int)()))(position((start_p(""13 312 332))(end_p(""13 312 335)))))))(position((start_p(""13 312 325))(end_p(""13 312 335)))))))(position((start_p(""13 312 318))(end_p(""13 312 335)))))))(position((start_p(""13 312 318))(end_p(""13 312 335))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""14 336 349))(end_p(""14 336 350)))))))(position((start_p(""14 336 349))(end_p(""14 336 350)))))((value(TyCon(TCon int)()))(position((start_p(""14 336 353))(end_p(""14 336 356)))))))(position((start_p(""14 336 348))(end_p(""14 336 357)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""14 336 363))(end_p(""14 336 364)))))))(position((start_p(""14 336 363))(end_p(""14 336 364)))))((value(TyCon(TCon int)()))(position((start_p(""14 336 367))(end_p(""14 336 370)))))))(position((start_p(""14 336 362))(end_p(""14 336 371)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""14 336 381))(end_p(""14 336 382)))))()))(position((start_p(""14 336 381))(end_p(""14 336 382)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""14 336 377))(end_p(""14 336 378)))))()))(position((start_p(""14 336 377))(end_p(""14 336 378)))))((value(Variable((value(Id x))(position((start_p(""14 336 375))(end_p(""14 336 376)))))()))(position((start_p(""14 336 375))(end_p(""14 336 376)))))))(position((start_p(""14 336 375))(end_p(""14 336 376)))))((value(Variable((value(Id y))(position((start_p(""14 336 379))(end_p(""14 336 380)))))()))(position((start_p(""14 336 379))(end_p(""14 336 380)))))))(position((start_p(""14 336 375))(end_p(""14 336 380)))))))(position((start_p(""14 336 375))(end_p(""14 336 380)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""14 336 385))(end_p(""14 336 386)))))()))(position((start_p(""14 336 385))(end_p(""14 336 386)))))((value(Variable((value(Id y))(position((start_p(""14 336 383))(end_p(""14 336 384)))))()))(position((start_p(""14 336 383))(end_p(""14 336 384)))))))(position((start_p(""14 336 383))(end_p(""14 336 384)))))((value(Variable((value(Id x))(position((start_p(""14 336 387))(end_p(""14 336 388)))))()))(position((start_p(""14 336 387))(end_p(""14 336 388)))))))(position((start_p(""14 336 383))(end_p(""14 336 388)))))))(position((start_p(""14 336 375))(end_p(""14 336 388))))))))(position((start_p(""14 336 361))(end_p(""14 336 388)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""14 336 391))(end_p(""14 336 394)))))((value(TyCon(TCon int)()))(position((start_p(""14 336 398))(end_p(""14 336 401)))))))(position((start_p(""14 336 391))(end_p(""14 336 401)))))))(position((start_p(""14 336 360))(end_p(""14 336 402)))))))))))(position((start_p(""13 312 312))(end_p(""14 336 402)))))((value(DefineValue(RecFunctions((((value(Id apply3))(position((start_p(""17 465 469))(end_p(""17 465 475)))))(((value(ForallTy()((value(TyArrow((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 411))(end_p(""16 404 414)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 418))(end_p(""16 404 421)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 425))(end_p(""16 404 428)))))((value(TyCon(TCon int)()))(position((start_p(""16 404 432))(end_p(""16 404 435)))))))(position((start_p(""16 404 425))(end_p(""16 404 435)))))))(position((start_p(""16 404 418))(end_p(""16 404 435)))))))(position((start_p(""16 404 410))(end_p(""16 404 436)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 440))(end_p(""16 404 443)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 447))(end_p(""16 404 450)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""16 404 454))(end_p(""16 404 457)))))((value(TyCon(TCon int)()))(position((start_p(""16 404 461))(end_p(""16 404 464)))))))(position((start_p(""16 404 454))(end_p(""16 404 464)))))))(position((start_p(""16 404 447))(end_p(""16 404 464)))))))(position((start_p(""16 404 440))(end_p(""16 404 464)))))))(position((start_p(""16 404 410))(end_p(""16 404 464)))))))(position((start_p(""16 404 410))(end_p(""16 404 464))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""17 465 477))(end_p(""17 465 478)))))))(position((start_p(""17 465 477))(end_p(""17 465 478)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""17 465 481))(end_p(""17 465 484)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""17 465 488))(end_p(""17 465 491)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""17 465 495))(end_p(""17 465 498)))))((value(TyCon(TCon int)()))(position((start_p(""17 465 502))(end_p(""17 465 505)))))))(position((start_p(""17 465 495))(end_p(""17 465 505)))))))(position((start_p(""17 465 488))(end_p(""17 465 505)))))))(position((start_p(""17 465 481))(end_p(""17 465 505)))))))(position((start_p(""17 465 476))(end_p(""17 465 506)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""18 509 516))(end_p(""18 509 517)))))))(position((start_p(""18 509 516))(end_p(""18 509 517)))))((value(TyCon(TCon int)()))(position((start_p(""18 509 520))(end_p(""18 509 523)))))))(position((start_p(""18 509 515))(end_p(""18 509 524)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""19 528 537))(end_p(""19 528 538)))))))(position((start_p(""19 528 537))(end_p(""19 528 538)))))((value(TyCon(TCon int)()))(position((start_p(""19 528 541))(end_p(""19 528 544)))))))(position((start_p(""19 528 536))(end_p(""19 528 545)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id z))(position((start_p(""20 549 560))(end_p(""20 549 561)))))))(position((start_p(""20 549 560))(end_p(""20 549 561)))))((value(TyCon(TCon int)()))(position((start_p(""20 549 564))(end_p(""20 549 567)))))))(position((start_p(""20 549 559))(end_p(""20 549 568)))))((value(Apply((value(Apply((value(Apply((value(Variable((value(Id f))(position((start_p(""20 549 572))(end_p(""20 549 573)))))()))(position((start_p(""20 549 572))(end_p(""20 549 573)))))((value(Variable((value(Id x))(position((start_p(""20 549 574))(end_p(""20 549 575)))))()))(position((start_p(""20 549 574))(end_p(""20 549 575)))))))(position((start_p(""20 549 572))(end_p(""20 549 575)))))((value(Variable((value(Id y))(position((start_p(""20 549 576))(end_p(""20 549 577)))))()))(position((start_p(""20 549 576))(end_p(""20 549 577)))))))(position((start_p(""20 549 572))(end_p(""20 549 577)))))((value(Variable((value(Id z))(position((start_p(""20 549 578))(end_p(""20 549 579)))))()))(position((start_p(""20 549 578))(end_p(""20 549 579)))))))(position((start_p(""20 549 572))(end_p(""20 549 579))))))))(position((start_p(""20 549 558))(end_p(""20 549 579)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""20 549 582))(end_p(""20 549 585)))))((value(TyCon(TCon int)()))(position((start_p(""20 549 589))(end_p(""20 549 592)))))))(position((start_p(""20 549 582))(end_p(""20 549 592)))))))(position((start_p(""20 549 557))(end_p(""20 549 593))))))))(position((start_p(""19 528 535))(end_p(""20 549 593)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""21 594 602))(end_p(""21 594 605)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""21 594 609))(end_p(""21 594 612)))))((value(TyCon(TCon int)()))(position((start_p(""21 594 616))(end_p(""21 594 619)))))))(position((start_p(""21 594 609))(end_p(""21 594 619)))))))(position((start_p(""21 594 602))(end_p(""21 594 619)))))))(position((start_p(""19 528 534))(end_p(""21 594 620))))))))(position((start_p(""18 509 514))(end_p(""21 594 620)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""22 621 627))(end_p(""22 621 630)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""22 621 634))(end_p(""22 621 637)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""22 621 641))(end_p(""22 621 644)))))((value(TyCon(TCon int)()))(position((start_p(""22 621 648))(end_p(""22 621 651)))))))(position((start_p(""22 621 641))(end_p(""22 621 651)))))))(position((start_p(""22 621 634))(end_p(""22 621 651)))))))(position((start_p(""22 621 627))(end_p(""22 621 651)))))))(position((start_p(""18 509 513))(end_p(""22 621 652)))))))))))(position((start_p(""16 404 404))(end_p(""22 621 652)))))((value(DefineValue(SimpleValue(((value(Id conj))(position((start_p(""24 654 658))(end_p(""24 654 662)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""24 654 665))(end_p(""24 654 668)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""24 654 672))(end_p(""24 654 675)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""24 654 679))(end_p(""24 654 682)))))((value(TyCon(TCon int)()))(position((start_p(""24 654 686))(end_p(""24 654 689)))))))(position((start_p(""24 654 679))(end_p(""24 654 689)))))))(position((start_p(""24 654 672))(end_p(""24 654 689)))))))(position((start_p(""24 654 665))(end_p(""24 654 689)))))))(position((start_p(""24 654 665))(end_p(""24 654 689))))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""25 692 699))(end_p(""25 692 700)))))))(position((start_p(""25 692 699))(end_p(""25 692 700)))))((value(TyCon(TCon int)()))(position((start_p(""25 692 703))(end_p(""25 692 706)))))))(position((start_p(""25 692 698))(end_p(""25 692 707)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""26 711 721))(end_p(""26 711 722)))))))(position((start_p(""26 711 721))(end_p(""26 711 722)))))((value(TyCon(TCon int)()))(position((start_p(""26 711 725))(end_p(""26 711 728)))))))(position((start_p(""26 711 720))(end_p(""26 711 729)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id z))(position((start_p(""27 733 745))(end_p(""27 733 746)))))))(position((start_p(""27 733 745))(end_p(""27 733 746)))))((value(TyCon(TCon int)()))(position((start_p(""27 733 749))(end_p(""27 733 752)))))))(position((start_p(""27 733 744))(end_p(""27 733 753)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""27 733 763))(end_p(""27 733 764)))))()))(position((start_p(""27 733 763))(end_p(""27 733 764)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""27 733 759))(end_p(""27 733 760)))))()))(position((start_p(""27 733 759))(end_p(""27 733 760)))))((value(Variable((value(Id x))(position((start_p(""27 733 757))(end_p(""27 733 758)))))()))(position((start_p(""27 733 757))(end_p(""27 733 758)))))))(position((start_p(""27 733 757))(end_p(""27 733 758)))))((value(Variable((value(Id y))(position((start_p(""27 733 761))(end_p(""27 733 762)))))()))(position((start_p(""27 733 761))(end_p(""27 733 762)))))))(position((start_p(""27 733 757))(end_p(""27 733 762)))))))(position((start_p(""27 733 757))(end_p(""27 733 762)))))((value(Variable((value(Id z))(position((start_p(""27 733 765))(end_p(""27 733 766)))))()))(position((start_p(""27 733 765))(end_p(""27 733 766)))))))(position((start_p(""27 733 757))(end_p(""27 733 766))))))))(position((start_p(""27 733 743))(end_p(""27 733 766)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""27 733 769))(end_p(""27 733 772)))))((value(TyCon(TCon int)()))(position((start_p(""27 733 776))(end_p(""27 733 779)))))))(position((start_p(""27 733 769))(end_p(""27 733 779)))))))(position((start_p(""27 733 742))(end_p(""27 733 780))))))))(position((start_p(""26 711 719))(end_p(""27 733 780)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""28 781 790))(end_p(""28 781 793)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""28 781 797))(end_p(""28 781 800)))))((value(TyCon(TCon int)()))(position((start_p(""28 781 804))(end_p(""28 781 807)))))))(position((start_p(""28 781 797))(end_p(""28 781 807)))))))(position((start_p(""28 781 790))(end_p(""28 781 807)))))))(position((start_p(""26 711 718))(end_p(""28 781 808))))))))(position((start_p(""25 692 697))(end_p(""28 781 808)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""29 809 815))(end_p(""29 809 818)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""29 809 822))(end_p(""29 809 825)))))((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""29 809 829))(end_p(""29 809 832)))))((value(TyCon(TCon int)()))(position((start_p(""29 809 836))(end_p(""29 809 839)))))))(position((start_p(""29 809 829))(end_p(""29 809 839)))))))(position((start_p(""29 809 822))(end_p(""29 809 839)))))))(position((start_p(""29 809 815))(end_p(""29 809 839)))))))(position((start_p(""25 692 696))(end_p(""29 809 840)))))))))(position((start_p(""24 654 654))(end_p(""29 809 840)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""31 842 846))(end_p(""31 842 850)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""31 842 853))(end_p(""31 842 856)))))))(position((start_p(""31 842 853))(end_p(""31 842 856))))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""33 881 903))(end_p(""33 881 904)))))()))(position((start_p(""33 881 903))(end_p(""33 881 904)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""32 859 879))(end_p(""32 859 880)))))()))(position((start_p(""32 859 879))(end_p(""32 859 880)))))((value(Apply((value(Apply((value(Variable((value(Id apply))(position((start_p(""32 859 863))(end_p(""32 859 868)))))()))(position((start_p(""32 859 863))(end_p(""32 859 868)))))((value(Variable((value(Id succ))(position((start_p(""32 859 869))(end_p(""32 859 873)))))()))(position((start_p(""32 859 869))(end_p(""32 859 873)))))))(position((start_p(""32 859 863))(end_p(""32 859 873)))))((value(Literal((value(LInt -1))(position((start_p(""32 859 875))(end_p(""32 859 877)))))))(position((start_p(""32 859 874))(end_p(""32 859 878)))))))(position((start_p(""32 859 863))(end_p(""32 859 878)))))))(position((start_p(""32 859 863))(end_p(""32 859 878)))))((value(Apply((value(Apply((value(Apply((value(Variable((value(Id apply2))(position((start_p(""33 881 885))(end_p(""33 881 891)))))()))(position((start_p(""33 881 885))(end_p(""33 881 891)))))((value(Variable((value(Id addmul))(position((start_p(""33 881 892))(end_p(""33 881 898)))))()))(position((start_p(""33 881 892))(end_p(""33 881 898)))))))(position((start_p(""33 881 885))(end_p(""33 881 898)))))((value(Literal((value(LInt 3))(position((start_p(""33 881 899))(end_p(""33 881 900)))))))(position((start_p(""33 881 899))(end_p(""33 881 900)))))))(position((start_p(""33 881 885))(end_p(""33 881 900)))))((value(Literal((value(LInt 7))(position((start_p(""33 881 901))(end_p(""33 881 902)))))))(position((start_p(""33 881 901))(end_p(""33 881 902)))))))(position((start_p(""33 881 885))(end_p(""33 881 902)))))))(position((start_p(""32 859 863))(end_p(""33 881 902)))))))(position((start_p(""32 859 863))(end_p(""33 881 902)))))((value(Apply((value(Apply((value(Apply((value(Apply((value(Variable((value(Id apply3))(position((start_p(""34 905 909))(end_p(""34 905 915)))))()))(position((start_p(""34 905 909))(end_p(""34 905 915)))))((value(Variable((value(Id conj))(position((start_p(""34 905 916))(end_p(""34 905 920)))))()))(position((start_p(""34 905 916))(end_p(""34 905 920)))))))(position((start_p(""34 905 909))(end_p(""34 905 920)))))((value(Literal((value(LInt 0))(position((start_p(""34 905 921))(end_p(""34 905 922)))))))(position((start_p(""34 905 921))(end_p(""34 905 922)))))))(position((start_p(""34 905 909))(end_p(""34 905 922)))))((value(Literal((value(LInt 1))(position((start_p(""34 905 923))(end_p(""34 905 924)))))))(position((start_p(""34 905 923))(end_p(""34 905 924)))))))(position((start_p(""34 905 909))(end_p(""34 905 924)))))((value(Literal((value(LInt 2))(position((start_p(""34 905 925))(end_p(""34 905 926)))))))(position((start_p(""34 905 925))(end_p(""34 905 926)))))))(position((start_p(""34 905 909))(end_p(""34 905 926)))))))(position((start_p(""32 859 863))(end_p(""34 905 926)))))))))(position((start_p(""31 842 842))(end_p(""34 905 926)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/29-anonymous-nary-functions.good.typing.hopix.human-readable b/flap/tests/03-Typing/29-anonymous-nary-functions.good.typing.hopix.human-readable new file mode 100644 index 0000000..eab6cca --- /dev/null +++ b/flap/tests/03-Typing/29-anonymous-nary-functions.good.typing.hopix.human-readable @@ -0,0 +1,37 @@ +fun : (int -> int) -> int -> int + apply (f : int -> int) = + (\(x : int) -> f (x) : int -> int) + +fun : int -> int + succ (x : int) = x + 1 + +fun : (int -> int -> int) -> int -> int -> int + apply2 (f : int -> int -> int) = + (\(x : int) -> + (\(y : int) -> f x y : int -> int) : int -> int -> int) + +fun : int -> int -> int + addmul (x : int) = (\(y : int) -> x * y + y * x : int -> int) + +fun : (int -> int -> int -> int) -> int -> int -> int -> int + apply3 (f : int -> int -> int -> int) = + (\(x : int) -> + (\(y : int) -> + (\(z : int) -> f x y z : int -> int) + : int -> int -> int) + : int -> int -> int -> int) + +let conj : int -> int -> int -> int = + (\(x : int) -> + (\(y : int) -> + (\(z : int) -> x * y * z : int -> int) + : int -> int -> int) + : int -> int -> int -> int) + +let main : int = + apply succ (-1) + + apply2 addmul 3 7 + + apply3 conj 0 1 2 + + + diff --git a/flap/tests/03-Typing/30-anonymous-third-order.bad.expected b/flap/tests/03-Typing/30-anonymous-third-order.bad.expected new file mode 100644 index 0000000..225abb0 --- /dev/null +++ b/flap/tests/03-Typing/30-anonymous-third-order.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + `a +Given: + `b diff --git a/flap/tests/03-Typing/30-anonymous-third-order.bad.typing.hopix b/flap/tests/03-Typing/30-anonymous-third-order.bad.typing.hopix new file mode 100644 index 0000000..0d94692 --- /dev/null +++ b/flap/tests/03-Typing/30-anonymous-third-order.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fix0))(position((start_p(""2 60 64))(end_p(""2 60 68)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyArrow((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 17))(end_p(""1 0 19)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))(position((start_p(""1 0 16))(end_p(""1 0 26)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 31))(end_p(""1 0 33)))))((value(TyVar(TId `b)))(position((start_p(""1 0 37))(end_p(""1 0 39)))))))(position((start_p(""1 0 30))(end_p(""1 0 40)))))))(position((start_p(""1 0 15))(end_p(""1 0 41)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 45))(end_p(""1 0 47)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""1 0 51))(end_p(""1 0 53)))))((value(TyVar(TId `b)))(position((start_p(""1 0 57))(end_p(""1 0 59)))))))(position((start_p(""1 0 51))(end_p(""1 0 59)))))))(position((start_p(""1 0 45))(end_p(""1 0 59)))))))(position((start_p(""1 0 15))(end_p(""1 0 59)))))))(position((start_p(""1 0 6))(end_p(""1 0 59))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""2 60 70))(end_p(""2 60 71)))))))(position((start_p(""2 60 70))(end_p(""2 60 71)))))((value(TyArrow((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""2 60 75))(end_p(""2 60 77)))))((value(TyVar(TId `b)))(position((start_p(""2 60 81))(end_p(""2 60 83)))))))(position((start_p(""2 60 74))(end_p(""2 60 84)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""2 60 89))(end_p(""2 60 91)))))((value(TyVar(TId `b)))(position((start_p(""2 60 95))(end_p(""2 60 97)))))))(position((start_p(""2 60 88))(end_p(""2 60 98)))))))(position((start_p(""2 60 74))(end_p(""2 60 98)))))))(position((start_p(""2 60 69))(end_p(""2 60 99)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id a))(position((start_p(""3 102 109))(end_p(""3 102 110)))))))(position((start_p(""3 102 109))(end_p(""3 102 110)))))((value(TyVar(TId `b)))(position((start_p(""3 102 113))(end_p(""3 102 115)))))))(position((start_p(""3 102 108))(end_p(""3 102 116)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id b))(position((start_p(""4 120 129))(end_p(""4 120 130)))))))(position((start_p(""4 120 129))(end_p(""4 120 130)))))((value(TyVar(TId `a)))(position((start_p(""4 120 133))(end_p(""4 120 135)))))))(position((start_p(""4 120 128))(end_p(""4 120 136)))))((value(Apply((value(Apply((value(Variable((value(Id f))(position((start_p(""4 120 140))(end_p(""4 120 141)))))()))(position((start_p(""4 120 140))(end_p(""4 120 141)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 120 145))(end_p(""4 120 146)))))))(position((start_p(""4 120 145))(end_p(""4 120 146)))))((value(TyVar(TId `a)))(position((start_p(""4 120 149))(end_p(""4 120 151)))))))(position((start_p(""4 120 144))(end_p(""4 120 152)))))((value(Variable((value(Id b))(position((start_p(""4 120 156))(end_p(""4 120 157)))))()))(position((start_p(""4 120 156))(end_p(""4 120 157))))))))(position((start_p(""4 120 143))(end_p(""4 120 157)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""4 120 160))(end_p(""4 120 162)))))((value(TyVar(TId `b)))(position((start_p(""4 120 166))(end_p(""4 120 168)))))))(position((start_p(""4 120 160))(end_p(""4 120 168)))))))(position((start_p(""4 120 142))(end_p(""4 120 169)))))))(position((start_p(""4 120 140))(end_p(""4 120 169)))))((value(Variable((value(Id a))(position((start_p(""4 120 170))(end_p(""4 120 171)))))()))(position((start_p(""4 120 170))(end_p(""4 120 171)))))))(position((start_p(""4 120 140))(end_p(""4 120 171))))))))(position((start_p(""4 120 127))(end_p(""4 120 171)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""4 120 174))(end_p(""4 120 176)))))((value(TyVar(TId `b)))(position((start_p(""4 120 180))(end_p(""4 120 182)))))))(position((start_p(""4 120 174))(end_p(""4 120 182)))))))(position((start_p(""4 120 126))(end_p(""4 120 183))))))))(position((start_p(""3 102 107))(end_p(""4 120 183)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""5 184 190))(end_p(""5 184 192)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""5 184 196))(end_p(""5 184 198)))))((value(TyVar(TId `b)))(position((start_p(""5 184 202))(end_p(""5 184 204)))))))(position((start_p(""5 184 196))(end_p(""5 184 204)))))))(position((start_p(""5 184 190))(end_p(""5 184 204)))))))(position((start_p(""3 102 106))(end_p(""5 184 205)))))))))))(position((start_p(""1 0 0))(end_p(""5 184 205)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/30-anonymous-third-order.bad.typing.hopix.human-readable b/flap/tests/03-Typing/30-anonymous-third-order.bad.typing.hopix.human-readable new file mode 100644 index 0000000..dfe180a --- /dev/null +++ b/flap/tests/03-Typing/30-anonymous-third-order.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : [`a, `b] ((`a -> `b) -> (`a -> `b)) -> `a -> `b -> `b + fix0 (f : (`a -> `b) -> (`a -> `b)) = + (\(a : `b) -> + (\(b : `a) -> f (\(x : `a) -> b : `a -> `b) a : `b -> `b) + : `a -> `b -> `b) \ No newline at end of file diff --git a/flap/tests/03-Typing/30-anonymous-third-order.good.expected b/flap/tests/03-Typing/30-anonymous-third-order.good.expected new file mode 100644 index 0000000..1369f1a --- /dev/null +++ b/flap/tests/03-Typing/30-anonymous-third-order.good.expected @@ -0,0 +1 @@ +fix0 : [`a, `b] ((`a -> `b) -> (`a -> `b)) -> (`a -> (`b -> `b)) diff --git a/flap/tests/03-Typing/30-anonymous-third-order.good.typing.hopix b/flap/tests/03-Typing/30-anonymous-third-order.good.typing.hopix new file mode 100644 index 0000000..4747083 --- /dev/null +++ b/flap/tests/03-Typing/30-anonymous-third-order.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id fix0))(position((start_p(""2 60 64))(end_p(""2 60 68)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))((value(TyArrow((value(TyArrow((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 17))(end_p(""1 0 19)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))(position((start_p(""1 0 16))(end_p(""1 0 26)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 31))(end_p(""1 0 33)))))((value(TyVar(TId `b)))(position((start_p(""1 0 37))(end_p(""1 0 39)))))))(position((start_p(""1 0 30))(end_p(""1 0 40)))))))(position((start_p(""1 0 15))(end_p(""1 0 41)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 45))(end_p(""1 0 47)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""1 0 51))(end_p(""1 0 53)))))((value(TyVar(TId `b)))(position((start_p(""1 0 57))(end_p(""1 0 59)))))))(position((start_p(""1 0 51))(end_p(""1 0 59)))))))(position((start_p(""1 0 45))(end_p(""1 0 59)))))))(position((start_p(""1 0 15))(end_p(""1 0 59)))))))(position((start_p(""1 0 6))(end_p(""1 0 59))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id f))(position((start_p(""2 60 70))(end_p(""2 60 71)))))))(position((start_p(""2 60 70))(end_p(""2 60 71)))))((value(TyArrow((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""2 60 75))(end_p(""2 60 77)))))((value(TyVar(TId `b)))(position((start_p(""2 60 81))(end_p(""2 60 83)))))))(position((start_p(""2 60 74))(end_p(""2 60 84)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""2 60 89))(end_p(""2 60 91)))))((value(TyVar(TId `b)))(position((start_p(""2 60 95))(end_p(""2 60 97)))))))(position((start_p(""2 60 88))(end_p(""2 60 98)))))))(position((start_p(""2 60 74))(end_p(""2 60 98)))))))(position((start_p(""2 60 69))(end_p(""2 60 99)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id a))(position((start_p(""3 102 109))(end_p(""3 102 110)))))))(position((start_p(""3 102 109))(end_p(""3 102 110)))))((value(TyVar(TId `a)))(position((start_p(""3 102 113))(end_p(""3 102 115)))))))(position((start_p(""3 102 108))(end_p(""3 102 116)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id b))(position((start_p(""4 120 129))(end_p(""4 120 130)))))))(position((start_p(""4 120 129))(end_p(""4 120 130)))))((value(TyVar(TId `b)))(position((start_p(""4 120 133))(end_p(""4 120 135)))))))(position((start_p(""4 120 128))(end_p(""4 120 136)))))((value(Apply((value(Apply((value(Variable((value(Id f))(position((start_p(""4 120 140))(end_p(""4 120 141)))))()))(position((start_p(""4 120 140))(end_p(""4 120 141)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 120 145))(end_p(""4 120 146)))))))(position((start_p(""4 120 145))(end_p(""4 120 146)))))((value(TyVar(TId `a)))(position((start_p(""4 120 149))(end_p(""4 120 151)))))))(position((start_p(""4 120 144))(end_p(""4 120 152)))))((value(Variable((value(Id b))(position((start_p(""4 120 156))(end_p(""4 120 157)))))()))(position((start_p(""4 120 156))(end_p(""4 120 157))))))))(position((start_p(""4 120 143))(end_p(""4 120 157)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""4 120 160))(end_p(""4 120 162)))))((value(TyVar(TId `b)))(position((start_p(""4 120 166))(end_p(""4 120 168)))))))(position((start_p(""4 120 160))(end_p(""4 120 168)))))))(position((start_p(""4 120 142))(end_p(""4 120 169)))))))(position((start_p(""4 120 140))(end_p(""4 120 169)))))((value(Variable((value(Id a))(position((start_p(""4 120 170))(end_p(""4 120 171)))))()))(position((start_p(""4 120 170))(end_p(""4 120 171)))))))(position((start_p(""4 120 140))(end_p(""4 120 171))))))))(position((start_p(""4 120 127))(end_p(""4 120 171)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""4 120 174))(end_p(""4 120 176)))))((value(TyVar(TId `b)))(position((start_p(""4 120 180))(end_p(""4 120 182)))))))(position((start_p(""4 120 174))(end_p(""4 120 182)))))))(position((start_p(""4 120 126))(end_p(""4 120 183))))))))(position((start_p(""3 102 107))(end_p(""4 120 183)))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""5 184 190))(end_p(""5 184 192)))))((value(TyArrow((value(TyVar(TId `b)))(position((start_p(""5 184 196))(end_p(""5 184 198)))))((value(TyVar(TId `b)))(position((start_p(""5 184 202))(end_p(""5 184 204)))))))(position((start_p(""5 184 196))(end_p(""5 184 204)))))))(position((start_p(""5 184 190))(end_p(""5 184 204)))))))(position((start_p(""3 102 106))(end_p(""5 184 205)))))))))))(position((start_p(""1 0 0))(end_p(""5 184 205)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/30-anonymous-third-order.good.typing.hopix.human-readable b/flap/tests/03-Typing/30-anonymous-third-order.good.typing.hopix.human-readable new file mode 100644 index 0000000..c4ea185 --- /dev/null +++ b/flap/tests/03-Typing/30-anonymous-third-order.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +fun : [`a, `b] ((`a -> `b) -> (`a -> `b)) -> `a -> `b -> `b + fix0 (f : (`a -> `b) -> (`a -> `b)) = + (\(a : `a) -> + (\(b : `b) -> f (\(x : `a) -> b : `a -> `b) a : `b -> `b) + : `a -> `b -> `b) \ No newline at end of file diff --git a/flap/tests/03-Typing/31-constructor.bad.expected b/flap/tests/03-Typing/31-constructor.bad.expected new file mode 100644 index 0000000..2849f47 --- /dev/null +++ b/flap/tests/03-Typing/31-constructor.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + Unbound constructor `Green'. diff --git a/flap/tests/03-Typing/31-constructor.bad.typing.hopix b/flap/tests/03-Typing/31-constructor.bad.typing.hopix new file mode 100644 index 0000000..483bbf1 --- /dev/null +++ b/flap/tests/03-Typing/31-constructor.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon color))(position((start_p(""1 0 5))(end_p(""1 0 10)))))()(DefineSumType((((value(KId Red))(position((start_p(""1 0 13))(end_p(""1 0 16)))))())(((value(KId Blue))(position((start_p(""1 0 19))(end_p(""1 0 23)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 23)))))((value(DefineValue(SimpleValue(((value(Id red))(position((start_p(""3 25 29))(end_p(""3 25 32)))))(((value(ForallTy()((value(TyCon(TCon color)()))(position((start_p(""3 25 37))(end_p(""3 25 42)))))))(position((start_p(""3 25 37))(end_p(""3 25 42))))))((value(Tagged((value(KId Red))(position((start_p(""3 25 45))(end_p(""3 25 48)))))(())()))(position((start_p(""3 25 45))(end_p(""3 25 50)))))))))(position((start_p(""3 25 25))(end_p(""3 25 50)))))((value(DefineValue(SimpleValue(((value(Id blue))(position((start_p(""4 51 55))(end_p(""4 51 59)))))(((value(ForallTy()((value(TyCon(TCon color)()))(position((start_p(""4 51 63))(end_p(""4 51 68)))))))(position((start_p(""4 51 63))(end_p(""4 51 68))))))((value(Tagged((value(KId Blue))(position((start_p(""4 51 71))(end_p(""4 51 75)))))(())()))(position((start_p(""4 51 71))(end_p(""4 51 77)))))))))(position((start_p(""4 51 51))(end_p(""4 51 77)))))((value(DefineValue(SimpleValue(((value(Id green))(position((start_p(""5 78 82))(end_p(""5 78 87)))))(((value(ForallTy()((value(TyCon(TCon color)()))(position((start_p(""5 78 90))(end_p(""5 78 95)))))))(position((start_p(""5 78 90))(end_p(""5 78 95))))))((value(Tagged((value(KId Green))(position((start_p(""5 78 98))(end_p(""5 78 103)))))(())()))(position((start_p(""5 78 98))(end_p(""5 78 105)))))))))(position((start_p(""5 78 78))(end_p(""5 78 105)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/31-constructor.bad.typing.hopix.human-readable b/flap/tests/03-Typing/31-constructor.bad.typing.hopix.human-readable new file mode 100644 index 0000000..40754b9 --- /dev/null +++ b/flap/tests/03-Typing/31-constructor.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type color = Red | Blue + +let red : color = Red<> +let blue : color = Blue<> +let green : color = Green<> \ No newline at end of file diff --git a/flap/tests/03-Typing/31-constructor.good.expected b/flap/tests/03-Typing/31-constructor.good.expected new file mode 100644 index 0000000..1dd4c5c --- /dev/null +++ b/flap/tests/03-Typing/31-constructor.good.expected @@ -0,0 +1,3 @@ +red : color +blue : color +green : color diff --git a/flap/tests/03-Typing/31-constructor.good.typing.hopix b/flap/tests/03-Typing/31-constructor.good.typing.hopix new file mode 100644 index 0000000..1c8529e --- /dev/null +++ b/flap/tests/03-Typing/31-constructor.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon color))(position((start_p(""1 0 5))(end_p(""1 0 10)))))()(DefineSumType((((value(KId Red))(position((start_p(""1 0 13))(end_p(""1 0 16)))))())(((value(KId Blue))(position((start_p(""1 0 19))(end_p(""1 0 23)))))())(((value(KId Green))(position((start_p(""1 0 26))(end_p(""1 0 31)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 31)))))((value(DefineValue(SimpleValue(((value(Id red))(position((start_p(""3 33 37))(end_p(""3 33 40)))))(((value(ForallTy()((value(TyCon(TCon color)()))(position((start_p(""3 33 45))(end_p(""3 33 50)))))))(position((start_p(""3 33 45))(end_p(""3 33 50))))))((value(Tagged((value(KId Red))(position((start_p(""3 33 53))(end_p(""3 33 56)))))(())()))(position((start_p(""3 33 53))(end_p(""3 33 58)))))))))(position((start_p(""3 33 33))(end_p(""3 33 58)))))((value(DefineValue(SimpleValue(((value(Id blue))(position((start_p(""4 59 63))(end_p(""4 59 67)))))(((value(ForallTy()((value(TyCon(TCon color)()))(position((start_p(""4 59 71))(end_p(""4 59 76)))))))(position((start_p(""4 59 71))(end_p(""4 59 76))))))((value(Tagged((value(KId Blue))(position((start_p(""4 59 79))(end_p(""4 59 83)))))(())()))(position((start_p(""4 59 79))(end_p(""4 59 85)))))))))(position((start_p(""4 59 59))(end_p(""4 59 85)))))((value(DefineValue(SimpleValue(((value(Id green))(position((start_p(""5 86 90))(end_p(""5 86 95)))))(((value(ForallTy()((value(TyCon(TCon color)()))(position((start_p(""5 86 98))(end_p(""5 86 103)))))))(position((start_p(""5 86 98))(end_p(""5 86 103))))))((value(Tagged((value(KId Green))(position((start_p(""5 86 106))(end_p(""5 86 111)))))(())()))(position((start_p(""5 86 106))(end_p(""5 86 113)))))))))(position((start_p(""5 86 86))(end_p(""5 86 113)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/31-constructor.good.typing.hopix.human-readable b/flap/tests/03-Typing/31-constructor.good.typing.hopix.human-readable new file mode 100644 index 0000000..102ce4f --- /dev/null +++ b/flap/tests/03-Typing/31-constructor.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type color = Red | Blue | Green + +let red : color = Red<> +let blue : color = Blue<> +let green : color = Green<> \ No newline at end of file diff --git a/flap/tests/03-Typing/32-constructor-with-data.bad.expected b/flap/tests/03-Typing/32-constructor-with-data.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/32-constructor-with-data.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/32-constructor-with-data.bad.typing.hopix b/flap/tests/03-Typing/32-constructor-with-data.bad.typing.hopix new file mode 100644 index 0000000..0c433dc --- /dev/null +++ b/flap/tests/03-Typing/32-constructor-with-data.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon option))(position((start_p(""1 0 5))(end_p(""1 0 11)))))()(DefineSumType((((value(KId Some))(position((start_p(""1 0 14))(end_p(""1 0 18)))))(((value(TyCon(TCon string)()))(position((start_p(""1 0 20))(end_p(""1 0 26)))))))(((value(KId None))(position((start_p(""1 0 30))(end_p(""1 0 34)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 34)))))((value(DefineValue(SimpleValue(((value(Id none))(position((start_p(""3 36 40))(end_p(""3 36 44)))))(((value(ForallTy()((value(TyCon(TCon option)()))(position((start_p(""3 36 47))(end_p(""3 36 53)))))))(position((start_p(""3 36 47))(end_p(""3 36 53))))))((value(Tagged((value(KId None))(position((start_p(""3 36 56))(end_p(""3 36 60)))))(())()))(position((start_p(""3 36 56))(end_p(""3 36 62)))))))))(position((start_p(""3 36 36))(end_p(""3 36 62)))))((value(DefineValue(SimpleValue(((value(Id some42))(position((start_p(""5 64 68))(end_p(""5 64 74)))))(((value(ForallTy()((value(TyCon(TCon option)()))(position((start_p(""5 64 77))(end_p(""5 64 83)))))))(position((start_p(""5 64 77))(end_p(""5 64 83))))))((value(Tagged((value(KId Some))(position((start_p(""5 64 86))(end_p(""5 64 90)))))(())(((value(Literal((value(LInt 42))(position((start_p(""5 64 94))(end_p(""5 64 96)))))))(position((start_p(""5 64 94))(end_p(""5 64 96))))))))(position((start_p(""5 64 86))(end_p(""5 64 97)))))))))(position((start_p(""5 64 64))(end_p(""5 64 97)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/32-constructor-with-data.bad.typing.hopix.human-readable b/flap/tests/03-Typing/32-constructor-with-data.bad.typing.hopix.human-readable new file mode 100644 index 0000000..b245fc4 --- /dev/null +++ b/flap/tests/03-Typing/32-constructor-with-data.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type option = Some (string) | None + +let none : option = None<> + +let some42 : option = Some<> (42) \ No newline at end of file diff --git a/flap/tests/03-Typing/32-constructor-with-data.good.expected b/flap/tests/03-Typing/32-constructor-with-data.good.expected new file mode 100644 index 0000000..bca2972 --- /dev/null +++ b/flap/tests/03-Typing/32-constructor-with-data.good.expected @@ -0,0 +1,2 @@ +none : option +some42 : option diff --git a/flap/tests/03-Typing/32-constructor-with-data.good.typing.hopix b/flap/tests/03-Typing/32-constructor-with-data.good.typing.hopix new file mode 100644 index 0000000..c0a5684 --- /dev/null +++ b/flap/tests/03-Typing/32-constructor-with-data.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon option))(position((start_p(""1 0 5))(end_p(""1 0 11)))))()(DefineSumType((((value(KId Some))(position((start_p(""1 0 14))(end_p(""1 0 18)))))(((value(TyCon(TCon int)()))(position((start_p(""1 0 20))(end_p(""1 0 23)))))))(((value(KId None))(position((start_p(""1 0 27))(end_p(""1 0 31)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 31)))))((value(DefineValue(SimpleValue(((value(Id none))(position((start_p(""3 33 37))(end_p(""3 33 41)))))(((value(ForallTy()((value(TyCon(TCon option)()))(position((start_p(""3 33 44))(end_p(""3 33 50)))))))(position((start_p(""3 33 44))(end_p(""3 33 50))))))((value(Tagged((value(KId None))(position((start_p(""3 33 53))(end_p(""3 33 57)))))(())()))(position((start_p(""3 33 53))(end_p(""3 33 59)))))))))(position((start_p(""3 33 33))(end_p(""3 33 59)))))((value(DefineValue(SimpleValue(((value(Id some42))(position((start_p(""5 61 65))(end_p(""5 61 71)))))(((value(ForallTy()((value(TyCon(TCon option)()))(position((start_p(""5 61 74))(end_p(""5 61 80)))))))(position((start_p(""5 61 74))(end_p(""5 61 80))))))((value(Tagged((value(KId Some))(position((start_p(""5 61 83))(end_p(""5 61 87)))))(())(((value(Literal((value(LInt 42))(position((start_p(""5 61 91))(end_p(""5 61 93)))))))(position((start_p(""5 61 91))(end_p(""5 61 93))))))))(position((start_p(""5 61 83))(end_p(""5 61 94)))))))))(position((start_p(""5 61 61))(end_p(""5 61 94)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/32-constructor-with-data.good.typing.hopix.human-readable b/flap/tests/03-Typing/32-constructor-with-data.good.typing.hopix.human-readable new file mode 100644 index 0000000..2ed0c7b --- /dev/null +++ b/flap/tests/03-Typing/32-constructor-with-data.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type option = Some (int) | None + +let none : option = None<> + +let some42 : option = Some<> (42) \ No newline at end of file diff --git a/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.expected b/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.expected new file mode 100644 index 0000000..c091cc2 --- /dev/null +++ b/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + string diff --git a/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.typing.hopix b/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.typing.hopix new file mode 100644 index 0000000..673d349 --- /dev/null +++ b/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon ipair))(position((start_p(""1 0 5))(end_p(""1 0 10)))))()(DefineSumType((((value(KId Pair))(position((start_p(""1 0 13))(end_p(""1 0 17)))))(((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 24))(end_p(""1 0 27)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 28)))))((value(DefineValue(SimpleValue(((value(Id a_pair_of_int))(position((start_p(""3 30 34))(end_p(""3 30 47)))))(((value(ForallTy()((value(TyCon(TCon ipair)()))(position((start_p(""3 30 50))(end_p(""3 30 55)))))))(position((start_p(""3 30 50))(end_p(""3 30 55))))))((value(Tagged((value(KId Pair))(position((start_p(""3 30 58))(end_p(""3 30 62)))))(())(((value(Literal((value(LInt 0))(position((start_p(""3 30 65))(end_p(""3 30 66)))))))(position((start_p(""3 30 65))(end_p(""3 30 66)))))((value(Literal((value(LString yo))(position((start_p(""3 30 71))(end_p(""3 30 72)))))))(position((start_p(""3 30 71))(end_p(""3 30 72))))))))(position((start_p(""3 30 58))(end_p(""3 30 73)))))))))(position((start_p(""3 30 30))(end_p(""3 30 73)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.typing.hopix.human-readable b/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.typing.hopix.human-readable new file mode 100644 index 0000000..ac7226a --- /dev/null +++ b/flap/tests/03-Typing/33-constructor-with-multiple-data.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type ipair = Pair (int, int) + +let a_pair_of_int : ipair = Pair<>(0, "yo") \ No newline at end of file diff --git a/flap/tests/03-Typing/33-constructor-with-multiple-data.good.expected b/flap/tests/03-Typing/33-constructor-with-multiple-data.good.expected new file mode 100644 index 0000000..72204ed --- /dev/null +++ b/flap/tests/03-Typing/33-constructor-with-multiple-data.good.expected @@ -0,0 +1 @@ +a_pair_of_int : ipair diff --git a/flap/tests/03-Typing/33-constructor-with-multiple-data.good.typing.hopix b/flap/tests/03-Typing/33-constructor-with-multiple-data.good.typing.hopix new file mode 100644 index 0000000..b430145 --- /dev/null +++ b/flap/tests/03-Typing/33-constructor-with-multiple-data.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon ipair))(position((start_p(""1 0 5))(end_p(""1 0 10)))))()(DefineSumType((((value(KId Pair))(position((start_p(""1 0 13))(end_p(""1 0 17)))))(((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 24))(end_p(""1 0 27)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 28)))))((value(DefineValue(SimpleValue(((value(Id a_pair_of_int))(position((start_p(""3 30 34))(end_p(""3 30 47)))))(((value(ForallTy()((value(TyCon(TCon ipair)()))(position((start_p(""3 30 50))(end_p(""3 30 55)))))))(position((start_p(""3 30 50))(end_p(""3 30 55))))))((value(Tagged((value(KId Pair))(position((start_p(""3 30 58))(end_p(""3 30 62)))))(())(((value(Literal((value(LInt 0))(position((start_p(""3 30 65))(end_p(""3 30 66)))))))(position((start_p(""3 30 65))(end_p(""3 30 66)))))((value(Literal((value(LInt 1))(position((start_p(""3 30 68))(end_p(""3 30 69)))))))(position((start_p(""3 30 68))(end_p(""3 30 69))))))))(position((start_p(""3 30 58))(end_p(""3 30 70)))))))))(position((start_p(""3 30 30))(end_p(""3 30 70)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/33-constructor-with-multiple-data.good.typing.hopix.human-readable b/flap/tests/03-Typing/33-constructor-with-multiple-data.good.typing.hopix.human-readable new file mode 100644 index 0000000..44a13d5 --- /dev/null +++ b/flap/tests/03-Typing/33-constructor-with-multiple-data.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type ipair = Pair (int, int) + +let a_pair_of_int : ipair = Pair<>(0, 1) \ No newline at end of file diff --git a/flap/tests/03-Typing/34-recursive-datatype.bad.expected b/flap/tests/03-Typing/34-recursive-datatype.bad.expected new file mode 100644 index 0000000..5c80770 --- /dev/null +++ b/flap/tests/03-Typing/34-recursive-datatype.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + l +Given: + int diff --git a/flap/tests/03-Typing/34-recursive-datatype.bad.typing.hopix b/flap/tests/03-Typing/34-recursive-datatype.bad.typing.hopix new file mode 100644 index 0000000..8aad100 --- /dev/null +++ b/flap/tests/03-Typing/34-recursive-datatype.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon l))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId N))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())(((value(KId C))(position((start_p(""1 0 13))(end_p(""1 0 14)))))(((value(TyCon(TCon l)()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 23)))))((value(DefineValue(SimpleValue(((value(Id a_list))(position((start_p(""3 25 29))(end_p(""3 25 35)))))(((value(ForallTy()((value(TyCon(TCon l)()))(position((start_p(""3 25 38))(end_p(""3 25 39)))))))(position((start_p(""3 25 38))(end_p(""3 25 39))))))((value(Tagged((value(KId C))(position((start_p(""3 25 42))(end_p(""3 25 43)))))(())(((value(Literal((value(LInt 1))(position((start_p(""3 25 47))(end_p(""3 25 48)))))))(position((start_p(""3 25 47))(end_p(""3 25 48)))))((value(Tagged((value(KId C))(position((start_p(""3 25 50))(end_p(""3 25 51)))))(())(((value(Literal((value(LInt 2))(position((start_p(""3 25 55))(end_p(""3 25 56)))))))(position((start_p(""3 25 55))(end_p(""3 25 56)))))((value(Tagged((value(KId C))(position((start_p(""3 25 58))(end_p(""3 25 59)))))(())(((value(Literal((value(LInt 3))(position((start_p(""3 25 63))(end_p(""3 25 64)))))))(position((start_p(""3 25 63))(end_p(""3 25 64)))))((value(Tagged((value(KId N))(position((start_p(""3 25 66))(end_p(""3 25 67)))))(())()))(position((start_p(""3 25 66))(end_p(""3 25 69))))))))(position((start_p(""3 25 58))(end_p(""3 25 70))))))))(position((start_p(""3 25 50))(end_p(""3 25 71))))))))(position((start_p(""3 25 42))(end_p(""3 25 72)))))))))(position((start_p(""3 25 25))(end_p(""3 25 72)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/34-recursive-datatype.bad.typing.hopix.human-readable b/flap/tests/03-Typing/34-recursive-datatype.bad.typing.hopix.human-readable new file mode 100644 index 0000000..0c7a40c --- /dev/null +++ b/flap/tests/03-Typing/34-recursive-datatype.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type l = N | C (l, int) + +let a_list : l = C<> (1, C<> (2, C<> (3, N<>))) \ No newline at end of file diff --git a/flap/tests/03-Typing/34-recursive-datatype.good.expected b/flap/tests/03-Typing/34-recursive-datatype.good.expected new file mode 100644 index 0000000..e6a7f0a --- /dev/null +++ b/flap/tests/03-Typing/34-recursive-datatype.good.expected @@ -0,0 +1 @@ +a_list : l diff --git a/flap/tests/03-Typing/34-recursive-datatype.good.typing.hopix b/flap/tests/03-Typing/34-recursive-datatype.good.typing.hopix new file mode 100644 index 0000000..b46c169 --- /dev/null +++ b/flap/tests/03-Typing/34-recursive-datatype.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon l))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId N))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())(((value(KId C))(position((start_p(""1 0 13))(end_p(""1 0 14)))))(((value(TyCon(TCon int)()))(position((start_p(""1 0 16))(end_p(""1 0 19)))))((value(TyCon(TCon l)()))(position((start_p(""1 0 21))(end_p(""1 0 22)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 23)))))((value(DefineValue(SimpleValue(((value(Id a_list))(position((start_p(""3 25 29))(end_p(""3 25 35)))))(((value(ForallTy()((value(TyCon(TCon l)()))(position((start_p(""3 25 38))(end_p(""3 25 39)))))))(position((start_p(""3 25 38))(end_p(""3 25 39))))))((value(Tagged((value(KId C))(position((start_p(""3 25 42))(end_p(""3 25 43)))))(())(((value(Literal((value(LInt 1))(position((start_p(""3 25 47))(end_p(""3 25 48)))))))(position((start_p(""3 25 47))(end_p(""3 25 48)))))((value(Tagged((value(KId C))(position((start_p(""3 25 50))(end_p(""3 25 51)))))(())(((value(Literal((value(LInt 2))(position((start_p(""3 25 55))(end_p(""3 25 56)))))))(position((start_p(""3 25 55))(end_p(""3 25 56)))))((value(Tagged((value(KId C))(position((start_p(""3 25 58))(end_p(""3 25 59)))))(())(((value(Literal((value(LInt 3))(position((start_p(""3 25 63))(end_p(""3 25 64)))))))(position((start_p(""3 25 63))(end_p(""3 25 64)))))((value(Tagged((value(KId N))(position((start_p(""3 25 66))(end_p(""3 25 67)))))(())()))(position((start_p(""3 25 66))(end_p(""3 25 69))))))))(position((start_p(""3 25 58))(end_p(""3 25 70))))))))(position((start_p(""3 25 50))(end_p(""3 25 71))))))))(position((start_p(""3 25 42))(end_p(""3 25 72)))))))))(position((start_p(""3 25 25))(end_p(""3 25 72)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/34-recursive-datatype.good.typing.hopix.human-readable b/flap/tests/03-Typing/34-recursive-datatype.good.typing.hopix.human-readable new file mode 100644 index 0000000..f1751eb --- /dev/null +++ b/flap/tests/03-Typing/34-recursive-datatype.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type l = N | C (int, l) + +let a_list : l = C<> (1, C<> (2, C<> (3, N<>))) \ No newline at end of file diff --git a/flap/tests/03-Typing/35-recursive-datatype-02.bad.expected b/flap/tests/03-Typing/35-recursive-datatype-02.bad.expected new file mode 100644 index 0000000..3e6303b --- /dev/null +++ b/flap/tests/03-Typing/35-recursive-datatype-02.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + t +Given: + t -> t diff --git a/flap/tests/03-Typing/35-recursive-datatype-02.bad.typing.hopix b/flap/tests/03-Typing/35-recursive-datatype-02.bad.typing.hopix new file mode 100644 index 0000000..1b5bb8a --- /dev/null +++ b/flap/tests/03-Typing/35-recursive-datatype-02.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon t))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId N))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())(((value(KId P))(position((start_p(""1 0 13))(end_p(""1 0 14)))))(((value(TyCon(TCon t)()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(TyCon(TCon t)()))(position((start_p(""1 0 19))(end_p(""1 0 20)))))((value(TyCon(TCon t)()))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 24)))))((value(DefineValue(SimpleValue(((value(Id leaf))(position((start_p(""3 26 30))(end_p(""3 26 34)))))(((value(ForallTy()((value(TyCon(TCon t)()))(position((start_p(""3 26 37))(end_p(""3 26 38)))))))(position((start_p(""3 26 37))(end_p(""3 26 38))))))((value(Tagged((value(KId N))(position((start_p(""3 26 41))(end_p(""3 26 42)))))(())()))(position((start_p(""3 26 41))(end_p(""3 26 44)))))))))(position((start_p(""3 26 26))(end_p(""3 26 44)))))((value(DefineValue(SimpleValue(((value(Id a_tree))(position((start_p(""5 46 50))(end_p(""5 46 56)))))(((value(ForallTy()((value(TyCon(TCon t)()))(position((start_p(""5 46 59))(end_p(""5 46 60)))))))(position((start_p(""5 46 59))(end_p(""5 46 60))))))((value(Tagged((value(KId P))(position((start_p(""6 63 65))(end_p(""6 63 66)))))(())(((value(Tagged((value(KId P))(position((start_p(""6 63 70))(end_p(""6 63 71)))))(())(((value(Tagged((value(KId P))(position((start_p(""6 63 75))(end_p(""6 63 76)))))(())(((value(Variable((value(Id leaf))(position((start_p(""6 63 80))(end_p(""6 63 84)))))()))(position((start_p(""6 63 80))(end_p(""6 63 84)))))((value(Variable((value(Id leaf))(position((start_p(""6 63 86))(end_p(""6 63 90)))))()))(position((start_p(""6 63 86))(end_p(""6 63 90))))))))(position((start_p(""6 63 75))(end_p(""6 63 91)))))((value(Tagged((value(KId P))(position((start_p(""6 63 93))(end_p(""6 63 94)))))(())(((value(Variable((value(Id leaf))(position((start_p(""6 63 97))(end_p(""6 63 101)))))()))(position((start_p(""6 63 97))(end_p(""6 63 101)))))((value(Tagged((value(KId P))(position((start_p(""6 63 103))(end_p(""6 63 104)))))(())(((value(Variable((value(Id leaf))(position((start_p(""6 63 107))(end_p(""6 63 111)))))()))(position((start_p(""6 63 107))(end_p(""6 63 111)))))((value(Variable((value(Id leaf))(position((start_p(""6 63 113))(end_p(""6 63 117)))))()))(position((start_p(""6 63 113))(end_p(""6 63 117))))))))(position((start_p(""6 63 103))(end_p(""6 63 118))))))))(position((start_p(""6 63 93))(end_p(""6 63 119))))))))(position((start_p(""6 63 70))(end_p(""6 63 120)))))((value(Variable((value(Id leaf))(position((start_p(""6 63 122))(end_p(""6 63 126)))))()))(position((start_p(""6 63 122))(end_p(""6 63 126))))))))(position((start_p(""6 63 65))(end_p(""6 63 127)))))))))(position((start_p(""5 46 46))(end_p(""6 63 127)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/35-recursive-datatype-02.bad.typing.hopix.human-readable b/flap/tests/03-Typing/35-recursive-datatype-02.bad.typing.hopix.human-readable new file mode 100644 index 0000000..65861ef --- /dev/null +++ b/flap/tests/03-Typing/35-recursive-datatype-02.bad.typing.hopix.human-readable @@ -0,0 +1,6 @@ +type t = N | P (t, t, t) + +let leaf : t = N<> + +let a_tree : t = + P<> (P<> (P<> (leaf, leaf), P<>(leaf, P<>(leaf, leaf))), leaf) \ No newline at end of file diff --git a/flap/tests/03-Typing/35-recursive-datatype-02.good.expected b/flap/tests/03-Typing/35-recursive-datatype-02.good.expected new file mode 100644 index 0000000..c24b879 --- /dev/null +++ b/flap/tests/03-Typing/35-recursive-datatype-02.good.expected @@ -0,0 +1,2 @@ +leaf : t +a_tree : t diff --git a/flap/tests/03-Typing/35-recursive-datatype-02.good.typing.hopix b/flap/tests/03-Typing/35-recursive-datatype-02.good.typing.hopix new file mode 100644 index 0000000..fbfd414 --- /dev/null +++ b/flap/tests/03-Typing/35-recursive-datatype-02.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon t))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId N))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())(((value(KId P))(position((start_p(""1 0 13))(end_p(""1 0 14)))))(((value(TyCon(TCon t)()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(TyCon(TCon t)()))(position((start_p(""1 0 19))(end_p(""1 0 20)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 21)))))((value(DefineValue(SimpleValue(((value(Id leaf))(position((start_p(""3 23 27))(end_p(""3 23 31)))))(((value(ForallTy()((value(TyCon(TCon t)()))(position((start_p(""3 23 34))(end_p(""3 23 35)))))))(position((start_p(""3 23 34))(end_p(""3 23 35))))))((value(Tagged((value(KId N))(position((start_p(""3 23 38))(end_p(""3 23 39)))))(())()))(position((start_p(""3 23 38))(end_p(""3 23 41)))))))))(position((start_p(""3 23 23))(end_p(""3 23 41)))))((value(DefineValue(SimpleValue(((value(Id a_tree))(position((start_p(""5 43 47))(end_p(""5 43 53)))))(((value(ForallTy()((value(TyCon(TCon t)()))(position((start_p(""5 43 56))(end_p(""5 43 57)))))))(position((start_p(""5 43 56))(end_p(""5 43 57))))))((value(Tagged((value(KId P))(position((start_p(""6 60 62))(end_p(""6 60 63)))))(())(((value(Tagged((value(KId P))(position((start_p(""6 60 67))(end_p(""6 60 68)))))(())(((value(Tagged((value(KId P))(position((start_p(""6 60 72))(end_p(""6 60 73)))))(())(((value(Variable((value(Id leaf))(position((start_p(""6 60 77))(end_p(""6 60 81)))))()))(position((start_p(""6 60 77))(end_p(""6 60 81)))))((value(Variable((value(Id leaf))(position((start_p(""6 60 83))(end_p(""6 60 87)))))()))(position((start_p(""6 60 83))(end_p(""6 60 87))))))))(position((start_p(""6 60 72))(end_p(""6 60 88)))))((value(Tagged((value(KId P))(position((start_p(""6 60 90))(end_p(""6 60 91)))))(())(((value(Variable((value(Id leaf))(position((start_p(""6 60 94))(end_p(""6 60 98)))))()))(position((start_p(""6 60 94))(end_p(""6 60 98)))))((value(Tagged((value(KId P))(position((start_p(""6 60 100))(end_p(""6 60 101)))))(())(((value(Variable((value(Id leaf))(position((start_p(""6 60 104))(end_p(""6 60 108)))))()))(position((start_p(""6 60 104))(end_p(""6 60 108)))))((value(Variable((value(Id leaf))(position((start_p(""6 60 110))(end_p(""6 60 114)))))()))(position((start_p(""6 60 110))(end_p(""6 60 114))))))))(position((start_p(""6 60 100))(end_p(""6 60 115))))))))(position((start_p(""6 60 90))(end_p(""6 60 116))))))))(position((start_p(""6 60 67))(end_p(""6 60 117)))))((value(Variable((value(Id leaf))(position((start_p(""6 60 119))(end_p(""6 60 123)))))()))(position((start_p(""6 60 119))(end_p(""6 60 123))))))))(position((start_p(""6 60 62))(end_p(""6 60 124)))))))))(position((start_p(""5 43 43))(end_p(""6 60 124)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/35-recursive-datatype-02.good.typing.hopix.human-readable b/flap/tests/03-Typing/35-recursive-datatype-02.good.typing.hopix.human-readable new file mode 100644 index 0000000..1f4d411 --- /dev/null +++ b/flap/tests/03-Typing/35-recursive-datatype-02.good.typing.hopix.human-readable @@ -0,0 +1,6 @@ +type t = N | P (t, t) + +let leaf : t = N<> + +let a_tree : t = + P<> (P<> (P<> (leaf, leaf), P<>(leaf, P<>(leaf, leaf))), leaf) \ No newline at end of file diff --git a/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.expected b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.expected new file mode 100644 index 0000000..0a39965 --- /dev/null +++ b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + This expression has type s which should be a function type. diff --git a/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.typing.hopix b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.typing.hopix new file mode 100644 index 0000000..48d28fa --- /dev/null +++ b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon s))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId C))(position((start_p(""1 0 9))(end_p(""1 0 10)))))(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(RecFunctions((((value(Id fromr))(position((start_p(""4 33 39))(end_p(""4 33 44)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""3 18 24))(end_p(""3 18 27)))))((value(TyCon(TCon s)()))(position((start_p(""3 18 31))(end_p(""3 18 32)))))))(position((start_p(""3 18 24))(end_p(""3 18 32)))))))(position((start_p(""3 18 24))(end_p(""3 18 32))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id n))(position((start_p(""4 33 46))(end_p(""4 33 47)))))))(position((start_p(""4 33 46))(end_p(""4 33 47)))))((value(TyCon(TCon int)()))(position((start_p(""4 33 50))(end_p(""4 33 53)))))))(position((start_p(""4 33 45))(end_p(""4 33 54)))))((value(Tagged((value(KId C))(position((start_p(""4 33 57))(end_p(""4 33 58)))))(())(((value(Variable((value(Id n))(position((start_p(""4 33 62))(end_p(""4 33 63)))))()))(position((start_p(""4 33 62))(end_p(""4 33 63)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id u))(position((start_p(""4 33 68))(end_p(""4 33 69)))))))(position((start_p(""4 33 68))(end_p(""4 33 69)))))((value(TyCon(TCon unit)()))(position((start_p(""4 33 72))(end_p(""4 33 76)))))))(position((start_p(""4 33 67))(end_p(""4 33 77)))))((value(Apply((value(Variable((value(Id fromr))(position((start_p(""4 33 81))(end_p(""4 33 86)))))()))(position((start_p(""4 33 81))(end_p(""4 33 86)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 33 90))(end_p(""4 33 91)))))()))(position((start_p(""4 33 90))(end_p(""4 33 91)))))((value(Variable((value(Id n))(position((start_p(""4 33 88))(end_p(""4 33 89)))))()))(position((start_p(""4 33 88))(end_p(""4 33 89)))))))(position((start_p(""4 33 88))(end_p(""4 33 89)))))((value(Literal((value(LInt 1))(position((start_p(""4 33 92))(end_p(""4 33 93)))))))(position((start_p(""4 33 92))(end_p(""4 33 93)))))))(position((start_p(""4 33 87))(end_p(""4 33 94)))))))(position((start_p(""4 33 81))(end_p(""4 33 94))))))))(position((start_p(""4 33 66))(end_p(""4 33 94)))))((value(TyArrow((value(TyCon(TCon unit)()))(position((start_p(""4 33 97))(end_p(""4 33 101)))))((value(TyCon(TCon s)()))(position((start_p(""4 33 105))(end_p(""4 33 106)))))))(position((start_p(""4 33 97))(end_p(""4 33 106)))))))(position((start_p(""4 33 65))(end_p(""4 33 107))))))))(position((start_p(""4 33 57))(end_p(""4 33 108)))))))))))(position((start_p(""3 18 18))(end_p(""4 33 108)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.typing.hopix.human-readable b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.typing.hopix.human-readable new file mode 100644 index 0000000..cc0a77e --- /dev/null +++ b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.bad.typing.hopix.human-readable @@ -0,0 +1,4 @@ +type s = C (int) + +fun : int -> s + fromr (n : int) = C<> (n, (\(u : unit) -> fromr (n + 1) : unit -> s)) \ No newline at end of file diff --git a/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.expected b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.expected new file mode 100644 index 0000000..f28eab1 --- /dev/null +++ b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.expected @@ -0,0 +1 @@ +fromr : int -> s diff --git a/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.typing.hopix b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.typing.hopix new file mode 100644 index 0000000..232e093 --- /dev/null +++ b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon s))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId C))(position((start_p(""1 0 9))(end_p(""1 0 10)))))(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15)))))((value(TyArrow((value(TyCon(TCon unit)()))(position((start_p(""1 0 17))(end_p(""1 0 21)))))((value(TyCon(TCon s)()))(position((start_p(""1 0 25))(end_p(""1 0 26)))))))(position((start_p(""1 0 17))(end_p(""1 0 26)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 27)))))((value(DefineValue(RecFunctions((((value(Id fromr))(position((start_p(""4 44 50))(end_p(""4 44 55)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""3 29 35))(end_p(""3 29 38)))))((value(TyCon(TCon s)()))(position((start_p(""3 29 42))(end_p(""3 29 43)))))))(position((start_p(""3 29 35))(end_p(""3 29 43)))))))(position((start_p(""3 29 35))(end_p(""3 29 43))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id n))(position((start_p(""4 44 57))(end_p(""4 44 58)))))))(position((start_p(""4 44 57))(end_p(""4 44 58)))))((value(TyCon(TCon int)()))(position((start_p(""4 44 61))(end_p(""4 44 64)))))))(position((start_p(""4 44 56))(end_p(""4 44 65)))))((value(Tagged((value(KId C))(position((start_p(""4 44 68))(end_p(""4 44 69)))))(())(((value(Variable((value(Id n))(position((start_p(""4 44 73))(end_p(""4 44 74)))))()))(position((start_p(""4 44 73))(end_p(""4 44 74)))))((value(TypeAnnotation((value(Fun(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id u))(position((start_p(""4 44 79))(end_p(""4 44 80)))))))(position((start_p(""4 44 79))(end_p(""4 44 80)))))((value(TyCon(TCon unit)()))(position((start_p(""4 44 83))(end_p(""4 44 87)))))))(position((start_p(""4 44 78))(end_p(""4 44 88)))))((value(Apply((value(Variable((value(Id fromr))(position((start_p(""4 44 92))(end_p(""4 44 97)))))()))(position((start_p(""4 44 92))(end_p(""4 44 97)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 44 101))(end_p(""4 44 102)))))()))(position((start_p(""4 44 101))(end_p(""4 44 102)))))((value(Variable((value(Id n))(position((start_p(""4 44 99))(end_p(""4 44 100)))))()))(position((start_p(""4 44 99))(end_p(""4 44 100)))))))(position((start_p(""4 44 99))(end_p(""4 44 100)))))((value(Literal((value(LInt 1))(position((start_p(""4 44 103))(end_p(""4 44 104)))))))(position((start_p(""4 44 103))(end_p(""4 44 104)))))))(position((start_p(""4 44 98))(end_p(""4 44 105)))))))(position((start_p(""4 44 92))(end_p(""4 44 105))))))))(position((start_p(""4 44 77))(end_p(""4 44 105)))))((value(TyArrow((value(TyCon(TCon unit)()))(position((start_p(""4 44 108))(end_p(""4 44 112)))))((value(TyCon(TCon s)()))(position((start_p(""4 44 116))(end_p(""4 44 117)))))))(position((start_p(""4 44 108))(end_p(""4 44 117)))))))(position((start_p(""4 44 76))(end_p(""4 44 118))))))))(position((start_p(""4 44 68))(end_p(""4 44 119)))))))))))(position((start_p(""3 29 29))(end_p(""4 44 119)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.typing.hopix.human-readable b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.typing.hopix.human-readable new file mode 100644 index 0000000..ce538cc --- /dev/null +++ b/flap/tests/03-Typing/36-recurse-datatype-embedding-functions.good.typing.hopix.human-readable @@ -0,0 +1,4 @@ +type s = C (int, unit -> s) + +fun : int -> s + fromr (n : int) = C<> (n, (\(u : unit) -> fromr (n + 1) : unit -> s)) \ No newline at end of file diff --git a/flap/tests/03-Typing/37-pattern-matching-01.bad.expected b/flap/tests/03-Typing/37-pattern-matching-01.bad.expected new file mode 100644 index 0000000..7451201 --- /dev/null +++ b/flap/tests/03-Typing/37-pattern-matching-01.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + Unbound constructor `U'. diff --git a/flap/tests/03-Typing/37-pattern-matching-01.bad.typing.hopix b/flap/tests/03-Typing/37-pattern-matching-01.bad.typing.hopix new file mode 100644 index 0000000..0096b80 --- /dev/null +++ b/flap/tests/03-Typing/37-pattern-matching-01.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon t))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId T))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 10)))))((value(DefineValue(SimpleValue(((value(Id t))(position((start_p(""3 12 16))(end_p(""3 12 17)))))(((value(ForallTy()((value(TyCon(TCon t)()))(position((start_p(""3 12 20))(end_p(""3 12 21)))))))(position((start_p(""3 12 20))(end_p(""3 12 21))))))((value(Case((value(Tagged((value(KId T))(position((start_p(""3 12 31))(end_p(""3 12 32)))))(())()))(position((start_p(""3 12 31))(end_p(""3 12 34)))))(((value(Branch((value(PTaggedValue((value(KId U))(position((start_p(""3 12 38))(end_p(""3 12 39)))))(())()))(position((start_p(""3 12 38))(end_p(""3 12 41)))))((value(Tagged((value(KId T))(position((start_p(""3 12 45))(end_p(""3 12 46)))))(())()))(position((start_p(""3 12 45))(end_p(""3 12 48)))))))(position((start_p(""3 12 38))(end_p(""3 12 48))))))))(position((start_p(""3 12 24))(end_p(""3 12 50)))))))))(position((start_p(""3 12 12))(end_p(""3 12 50)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/37-pattern-matching-01.bad.typing.hopix.human-readable b/flap/tests/03-Typing/37-pattern-matching-01.bad.typing.hopix.human-readable new file mode 100644 index 0000000..b37187b --- /dev/null +++ b/flap/tests/03-Typing/37-pattern-matching-01.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type t = T + +let t : t = match (T<>) { U<> -> T<> } diff --git a/flap/tests/03-Typing/37-pattern-matching-01.good.expected b/flap/tests/03-Typing/37-pattern-matching-01.good.expected new file mode 100644 index 0000000..70abf19 --- /dev/null +++ b/flap/tests/03-Typing/37-pattern-matching-01.good.expected @@ -0,0 +1 @@ +t : t diff --git a/flap/tests/03-Typing/37-pattern-matching-01.good.typing.hopix b/flap/tests/03-Typing/37-pattern-matching-01.good.typing.hopix new file mode 100644 index 0000000..100a843 --- /dev/null +++ b/flap/tests/03-Typing/37-pattern-matching-01.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon t))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId T))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 10)))))((value(DefineValue(SimpleValue(((value(Id t))(position((start_p(""3 12 16))(end_p(""3 12 17)))))(((value(ForallTy()((value(TyCon(TCon t)()))(position((start_p(""3 12 20))(end_p(""3 12 21)))))))(position((start_p(""3 12 20))(end_p(""3 12 21))))))((value(Case((value(Tagged((value(KId T))(position((start_p(""3 12 31))(end_p(""3 12 32)))))(())()))(position((start_p(""3 12 31))(end_p(""3 12 34)))))(((value(Branch((value(PTaggedValue((value(KId T))(position((start_p(""3 12 38))(end_p(""3 12 39)))))(())()))(position((start_p(""3 12 38))(end_p(""3 12 41)))))((value(Tagged((value(KId T))(position((start_p(""3 12 45))(end_p(""3 12 46)))))(())()))(position((start_p(""3 12 45))(end_p(""3 12 48)))))))(position((start_p(""3 12 38))(end_p(""3 12 48))))))))(position((start_p(""3 12 24))(end_p(""3 12 50)))))))))(position((start_p(""3 12 12))(end_p(""3 12 50)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/37-pattern-matching-01.good.typing.hopix.human-readable b/flap/tests/03-Typing/37-pattern-matching-01.good.typing.hopix.human-readable new file mode 100644 index 0000000..d1ec15f --- /dev/null +++ b/flap/tests/03-Typing/37-pattern-matching-01.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type t = T + +let t : t = match (T<>) { T<> -> T<> } diff --git a/flap/tests/03-Typing/38-pattern-matching-02.bad.expected b/flap/tests/03-Typing/38-pattern-matching-02.bad.expected new file mode 100644 index 0000000..203f784 --- /dev/null +++ b/flap/tests/03-Typing/38-pattern-matching-02.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + t +Given: + int diff --git a/flap/tests/03-Typing/38-pattern-matching-02.bad.typing.hopix b/flap/tests/03-Typing/38-pattern-matching-02.bad.typing.hopix new file mode 100644 index 0000000..daa925e --- /dev/null +++ b/flap/tests/03-Typing/38-pattern-matching-02.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon t))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId T))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 10)))))((value(DefineValue(SimpleValue(((value(Id t))(position((start_p(""3 12 16))(end_p(""3 12 17)))))(((value(ForallTy()((value(TyCon(TCon t)()))(position((start_p(""3 12 20))(end_p(""3 12 21)))))))(position((start_p(""3 12 20))(end_p(""3 12 21))))))((value(Case((value(Tagged((value(KId T))(position((start_p(""3 12 31))(end_p(""3 12 32)))))(())()))(position((start_p(""3 12 31))(end_p(""3 12 34)))))(((value(Branch((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""3 12 39))(end_p(""3 12 40)))))))(position((start_p(""3 12 39))(end_p(""3 12 40)))))((value(TyCon(TCon int)()))(position((start_p(""3 12 43))(end_p(""3 12 46)))))))(position((start_p(""3 12 38))(end_p(""3 12 47)))))((value(Variable((value(Id x))(position((start_p(""3 12 51))(end_p(""3 12 52)))))()))(position((start_p(""3 12 51))(end_p(""3 12 52)))))))(position((start_p(""3 12 38))(end_p(""3 12 52))))))))(position((start_p(""3 12 24))(end_p(""3 12 54)))))))))(position((start_p(""3 12 12))(end_p(""3 12 54)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/38-pattern-matching-02.bad.typing.hopix.human-readable b/flap/tests/03-Typing/38-pattern-matching-02.bad.typing.hopix.human-readable new file mode 100644 index 0000000..dff2202 --- /dev/null +++ b/flap/tests/03-Typing/38-pattern-matching-02.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type t = T + +let t : t = match (T<>) { (x : int) -> x } diff --git a/flap/tests/03-Typing/38-pattern-matching-02.good.expected b/flap/tests/03-Typing/38-pattern-matching-02.good.expected new file mode 100644 index 0000000..70abf19 --- /dev/null +++ b/flap/tests/03-Typing/38-pattern-matching-02.good.expected @@ -0,0 +1 @@ +t : t diff --git a/flap/tests/03-Typing/38-pattern-matching-02.good.typing.hopix b/flap/tests/03-Typing/38-pattern-matching-02.good.typing.hopix new file mode 100644 index 0000000..b3eea14 --- /dev/null +++ b/flap/tests/03-Typing/38-pattern-matching-02.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon t))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId T))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 10)))))((value(DefineValue(SimpleValue(((value(Id t))(position((start_p(""3 12 16))(end_p(""3 12 17)))))(((value(ForallTy()((value(TyCon(TCon t)()))(position((start_p(""3 12 20))(end_p(""3 12 21)))))))(position((start_p(""3 12 20))(end_p(""3 12 21))))))((value(Case((value(Tagged((value(KId T))(position((start_p(""3 12 31))(end_p(""3 12 32)))))(())()))(position((start_p(""3 12 31))(end_p(""3 12 34)))))(((value(Branch((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""3 12 39))(end_p(""3 12 40)))))))(position((start_p(""3 12 39))(end_p(""3 12 40)))))((value(TyCon(TCon t)()))(position((start_p(""3 12 43))(end_p(""3 12 44)))))))(position((start_p(""3 12 38))(end_p(""3 12 45)))))((value(Variable((value(Id x))(position((start_p(""3 12 49))(end_p(""3 12 50)))))()))(position((start_p(""3 12 49))(end_p(""3 12 50)))))))(position((start_p(""3 12 38))(end_p(""3 12 50))))))))(position((start_p(""3 12 24))(end_p(""3 12 52)))))))))(position((start_p(""3 12 12))(end_p(""3 12 52)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/38-pattern-matching-02.good.typing.hopix.human-readable b/flap/tests/03-Typing/38-pattern-matching-02.good.typing.hopix.human-readable new file mode 100644 index 0000000..7aaab55 --- /dev/null +++ b/flap/tests/03-Typing/38-pattern-matching-02.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type t = T + +let t : t = match (T<>) { (x : t) -> x } diff --git a/flap/tests/03-Typing/39-pattern-matching-03.bad.expected b/flap/tests/03-Typing/39-pattern-matching-03.bad.expected new file mode 100644 index 0000000..16b7c5f --- /dev/null +++ b/flap/tests/03-Typing/39-pattern-matching-03.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + Unbound constructor `B'. diff --git a/flap/tests/03-Typing/39-pattern-matching-03.bad.typing.hopix b/flap/tests/03-Typing/39-pattern-matching-03.bad.typing.hopix new file mode 100644 index 0000000..dcd5722 --- /dev/null +++ b/flap/tests/03-Typing/39-pattern-matching-03.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon c))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId A))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 10)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 12 16))(end_p(""3 12 20)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 12 23))(end_p(""3 12 26)))))))(position((start_p(""3 12 23))(end_p(""3 12 26))))))((value(Case((value(Tagged((value(KId A))(position((start_p(""3 12 36))(end_p(""3 12 37)))))(())()))(position((start_p(""3 12 36))(end_p(""3 12 39)))))(((value(Branch((value(PTaggedValue((value(KId A))(position((start_p(""3 12 43))(end_p(""3 12 44)))))(())()))(position((start_p(""3 12 43))(end_p(""3 12 46)))))((value(Literal((value(LInt 0))(position((start_p(""3 12 50))(end_p(""3 12 51)))))))(position((start_p(""3 12 50))(end_p(""3 12 51)))))))(position((start_p(""3 12 43))(end_p(""3 12 51)))))((value(Branch((value(PTaggedValue((value(KId B))(position((start_p(""3 12 54))(end_p(""3 12 55)))))(())()))(position((start_p(""3 12 54))(end_p(""3 12 57)))))((value(Literal((value(LInt 1))(position((start_p(""3 12 61))(end_p(""3 12 62)))))))(position((start_p(""3 12 61))(end_p(""3 12 62)))))))(position((start_p(""3 12 54))(end_p(""3 12 62))))))))(position((start_p(""3 12 29))(end_p(""3 12 64)))))))))(position((start_p(""3 12 12))(end_p(""3 12 64)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/39-pattern-matching-03.bad.typing.hopix.human-readable b/flap/tests/03-Typing/39-pattern-matching-03.bad.typing.hopix.human-readable new file mode 100644 index 0000000..733098b --- /dev/null +++ b/flap/tests/03-Typing/39-pattern-matching-03.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type c = A + +let main : int = match (A<>) { A<> -> 0 | B<> -> 1 } \ No newline at end of file diff --git a/flap/tests/03-Typing/39-pattern-matching-03.good.expected b/flap/tests/03-Typing/39-pattern-matching-03.good.expected new file mode 100644 index 0000000..4b66f6f --- /dev/null +++ b/flap/tests/03-Typing/39-pattern-matching-03.good.expected @@ -0,0 +1 @@ +main : int diff --git a/flap/tests/03-Typing/39-pattern-matching-03.good.typing.hopix b/flap/tests/03-Typing/39-pattern-matching-03.good.typing.hopix new file mode 100644 index 0000000..614e144 --- /dev/null +++ b/flap/tests/03-Typing/39-pattern-matching-03.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon c))(position((start_p(""1 0 5))(end_p(""1 0 6)))))()(DefineSumType((((value(KId A))(position((start_p(""1 0 9))(end_p(""1 0 10)))))())(((value(KId B))(position((start_p(""1 0 13))(end_p(""1 0 14)))))())))))(position((start_p(""1 0 0))(end_p(""1 0 14)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 16 20))(end_p(""3 16 24)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 16 27))(end_p(""3 16 30)))))))(position((start_p(""3 16 27))(end_p(""3 16 30))))))((value(Case((value(Tagged((value(KId A))(position((start_p(""3 16 40))(end_p(""3 16 41)))))(())()))(position((start_p(""3 16 40))(end_p(""3 16 43)))))(((value(Branch((value(PTaggedValue((value(KId A))(position((start_p(""3 16 47))(end_p(""3 16 48)))))(())()))(position((start_p(""3 16 47))(end_p(""3 16 50)))))((value(Literal((value(LInt 0))(position((start_p(""3 16 54))(end_p(""3 16 55)))))))(position((start_p(""3 16 54))(end_p(""3 16 55)))))))(position((start_p(""3 16 47))(end_p(""3 16 55)))))((value(Branch((value(PTaggedValue((value(KId B))(position((start_p(""3 16 58))(end_p(""3 16 59)))))(())()))(position((start_p(""3 16 58))(end_p(""3 16 61)))))((value(Literal((value(LInt 1))(position((start_p(""3 16 65))(end_p(""3 16 66)))))))(position((start_p(""3 16 65))(end_p(""3 16 66)))))))(position((start_p(""3 16 58))(end_p(""3 16 66))))))))(position((start_p(""3 16 33))(end_p(""3 16 68)))))))))(position((start_p(""3 16 16))(end_p(""3 16 68)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/39-pattern-matching-03.good.typing.hopix.human-readable b/flap/tests/03-Typing/39-pattern-matching-03.good.typing.hopix.human-readable new file mode 100644 index 0000000..04987af --- /dev/null +++ b/flap/tests/03-Typing/39-pattern-matching-03.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type c = A | B + +let main : int = match (A<>) { A<> -> 0 | B<> -> 1 } \ No newline at end of file diff --git a/flap/tests/03-Typing/40-pattern-matching-04.bad.expected b/flap/tests/03-Typing/40-pattern-matching-04.bad.expected new file mode 100644 index 0000000..c091cc2 --- /dev/null +++ b/flap/tests/03-Typing/40-pattern-matching-04.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + string diff --git a/flap/tests/03-Typing/40-pattern-matching-04.bad.typing.hopix b/flap/tests/03-Typing/40-pattern-matching-04.bad.typing.hopix new file mode 100644 index 0000000..e728da6 --- /dev/null +++ b/flap/tests/03-Typing/40-pattern-matching-04.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon option))(position((start_p(""1 0 5))(end_p(""1 0 11)))))()(DefineSumType((((value(KId None))(position((start_p(""1 0 14))(end_p(""1 0 18)))))())(((value(KId Some))(position((start_p(""1 0 21))(end_p(""1 0 25)))))(((value(TyCon(TCon int)()))(position((start_p(""1 0 27))(end_p(""1 0 30)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 31)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 33 37))(end_p(""3 33 38)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 33 41))(end_p(""3 33 44)))))))(position((start_p(""3 33 41))(end_p(""3 33 44))))))((value(Case((value(Tagged((value(KId Some))(position((start_p(""3 33 54))(end_p(""3 33 58)))))(())(((value(Literal((value(LInt 42))(position((start_p(""3 33 61))(end_p(""3 33 63)))))))(position((start_p(""3 33 61))(end_p(""3 33 63))))))))(position((start_p(""3 33 54))(end_p(""3 33 64)))))(((value(Branch((value(PTaggedValue((value(KId Some))(position((start_p(""3 33 68))(end_p(""3 33 72)))))(())(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""3 33 76))(end_p(""3 33 77)))))))(position((start_p(""3 33 76))(end_p(""3 33 77)))))((value(TyCon(TCon string)()))(position((start_p(""3 33 80))(end_p(""3 33 86)))))))(position((start_p(""3 33 75))(end_p(""3 33 87))))))))(position((start_p(""3 33 68))(end_p(""3 33 88)))))((value(Variable((value(Id x))(position((start_p(""3 33 92))(end_p(""3 33 93)))))()))(position((start_p(""3 33 92))(end_p(""3 33 93)))))))(position((start_p(""3 33 68))(end_p(""3 33 93)))))((value(Branch((value(PTaggedValue((value(KId None))(position((start_p(""3 33 96))(end_p(""3 33 100)))))(())()))(position((start_p(""3 33 96))(end_p(""3 33 102)))))((value(Literal((value(LInt 0))(position((start_p(""3 33 106))(end_p(""3 33 107)))))))(position((start_p(""3 33 106))(end_p(""3 33 107)))))))(position((start_p(""3 33 96))(end_p(""3 33 107))))))))(position((start_p(""3 33 47))(end_p(""3 33 109)))))))))(position((start_p(""3 33 33))(end_p(""3 33 109)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/40-pattern-matching-04.bad.typing.hopix.human-readable b/flap/tests/03-Typing/40-pattern-matching-04.bad.typing.hopix.human-readable new file mode 100644 index 0000000..78ffc24 --- /dev/null +++ b/flap/tests/03-Typing/40-pattern-matching-04.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type option = None | Some (int) + +let x : int = match (Some<>(42)) { Some<>((x : string)) -> x | None<> -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/40-pattern-matching-04.good.expected b/flap/tests/03-Typing/40-pattern-matching-04.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/40-pattern-matching-04.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/40-pattern-matching-04.good.typing.hopix b/flap/tests/03-Typing/40-pattern-matching-04.good.typing.hopix new file mode 100644 index 0000000..6666bf1 --- /dev/null +++ b/flap/tests/03-Typing/40-pattern-matching-04.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon option))(position((start_p(""1 0 5))(end_p(""1 0 11)))))()(DefineSumType((((value(KId None))(position((start_p(""1 0 14))(end_p(""1 0 18)))))())(((value(KId Some))(position((start_p(""1 0 21))(end_p(""1 0 25)))))(((value(TyCon(TCon int)()))(position((start_p(""1 0 27))(end_p(""1 0 30)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 31)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 33 37))(end_p(""3 33 38)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 33 41))(end_p(""3 33 44)))))))(position((start_p(""3 33 41))(end_p(""3 33 44))))))((value(Case((value(Tagged((value(KId Some))(position((start_p(""3 33 54))(end_p(""3 33 58)))))(())(((value(Literal((value(LInt 42))(position((start_p(""3 33 61))(end_p(""3 33 63)))))))(position((start_p(""3 33 61))(end_p(""3 33 63))))))))(position((start_p(""3 33 54))(end_p(""3 33 64)))))(((value(Branch((value(PTaggedValue((value(KId Some))(position((start_p(""3 33 68))(end_p(""3 33 72)))))(())(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""3 33 76))(end_p(""3 33 77)))))))(position((start_p(""3 33 76))(end_p(""3 33 77)))))((value(TyCon(TCon int)()))(position((start_p(""3 33 80))(end_p(""3 33 83)))))))(position((start_p(""3 33 75))(end_p(""3 33 84))))))))(position((start_p(""3 33 68))(end_p(""3 33 85)))))((value(Variable((value(Id x))(position((start_p(""3 33 89))(end_p(""3 33 90)))))()))(position((start_p(""3 33 89))(end_p(""3 33 90)))))))(position((start_p(""3 33 68))(end_p(""3 33 90)))))((value(Branch((value(PTaggedValue((value(KId None))(position((start_p(""3 33 93))(end_p(""3 33 97)))))(())()))(position((start_p(""3 33 93))(end_p(""3 33 99)))))((value(Literal((value(LInt 0))(position((start_p(""3 33 103))(end_p(""3 33 104)))))))(position((start_p(""3 33 103))(end_p(""3 33 104)))))))(position((start_p(""3 33 93))(end_p(""3 33 104))))))))(position((start_p(""3 33 47))(end_p(""3 33 106)))))))))(position((start_p(""3 33 33))(end_p(""3 33 106)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/40-pattern-matching-04.good.typing.hopix.human-readable b/flap/tests/03-Typing/40-pattern-matching-04.good.typing.hopix.human-readable new file mode 100644 index 0000000..c20b233 --- /dev/null +++ b/flap/tests/03-Typing/40-pattern-matching-04.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type option = None | Some (int) + +let x : int = match (Some<>(42)) { Some<>((x : int)) -> x | None<> -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/41-pattern-matching-05.bad.expected b/flap/tests/03-Typing/41-pattern-matching-05.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/41-pattern-matching-05.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/41-pattern-matching-05.bad.typing.hopix b/flap/tests/03-Typing/41-pattern-matching-05.bad.typing.hopix new file mode 100644 index 0000000..6b8437a --- /dev/null +++ b/flap/tests/03-Typing/41-pattern-matching-05.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon option))(position((start_p(""1 0 5))(end_p(""1 0 11)))))(((value(TId `a))(position((start_p(""1 0 12))(end_p(""1 0 14))))))(DefineSumType((((value(KId None))(position((start_p(""1 0 18))(end_p(""1 0 22)))))())(((value(KId Some))(position((start_p(""1 0 25))(end_p(""1 0 29)))))(((value(TyCon(TCon string)()))(position((start_p(""1 0 31))(end_p(""1 0 37)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 38)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 40 44))(end_p(""3 40 45)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 40 48))(end_p(""3 40 51)))))))(position((start_p(""3 40 48))(end_p(""3 40 51))))))((value(Case((value(Tagged((value(KId Some))(position((start_p(""3 40 61))(end_p(""3 40 65)))))((((value(TyCon(TCon int)()))(position((start_p(""3 40 66))(end_p(""3 40 69)))))))(((value(Literal((value(LInt 42))(position((start_p(""3 40 71))(end_p(""3 40 73)))))))(position((start_p(""3 40 71))(end_p(""3 40 73))))))))(position((start_p(""3 40 61))(end_p(""3 40 74)))))(((value(Branch((value(PTaggedValue((value(KId Some))(position((start_p(""3 40 78))(end_p(""3 40 82)))))((((value(TyCon(TCon int)()))(position((start_p(""3 40 83))(end_p(""3 40 86)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""3 40 89))(end_p(""3 40 90)))))))(position((start_p(""3 40 89))(end_p(""3 40 90)))))((value(TyCon(TCon int)()))(position((start_p(""3 40 93))(end_p(""3 40 96)))))))(position((start_p(""3 40 88))(end_p(""3 40 97))))))))(position((start_p(""3 40 78))(end_p(""3 40 98)))))((value(Variable((value(Id x))(position((start_p(""3 40 102))(end_p(""3 40 103)))))()))(position((start_p(""3 40 102))(end_p(""3 40 103)))))))(position((start_p(""3 40 78))(end_p(""3 40 103)))))((value(Branch((value(PTaggedValue((value(KId None))(position((start_p(""3 40 106))(end_p(""3 40 110)))))((((value(TyCon(TCon int)()))(position((start_p(""3 40 111))(end_p(""3 40 114)))))))()))(position((start_p(""3 40 106))(end_p(""3 40 115)))))((value(Literal((value(LInt 0))(position((start_p(""3 40 119))(end_p(""3 40 120)))))))(position((start_p(""3 40 119))(end_p(""3 40 120)))))))(position((start_p(""3 40 106))(end_p(""3 40 120))))))))(position((start_p(""3 40 54))(end_p(""3 40 122)))))))))(position((start_p(""3 40 40))(end_p(""3 40 122)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/41-pattern-matching-05.bad.typing.hopix.human-readable b/flap/tests/03-Typing/41-pattern-matching-05.bad.typing.hopix.human-readable new file mode 100644 index 0000000..8016496 --- /dev/null +++ b/flap/tests/03-Typing/41-pattern-matching-05.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type option<`a> = None | Some (string) + +let x : int = match (Some(42)) { Some((x : int)) -> x | None -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/41-pattern-matching-05.good.expected b/flap/tests/03-Typing/41-pattern-matching-05.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/41-pattern-matching-05.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/41-pattern-matching-05.good.typing.hopix b/flap/tests/03-Typing/41-pattern-matching-05.good.typing.hopix new file mode 100644 index 0000000..d0592db --- /dev/null +++ b/flap/tests/03-Typing/41-pattern-matching-05.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon option))(position((start_p(""1 0 5))(end_p(""1 0 11)))))(((value(TId `a))(position((start_p(""1 0 12))(end_p(""1 0 14))))))(DefineSumType((((value(KId None))(position((start_p(""1 0 18))(end_p(""1 0 22)))))())(((value(KId Some))(position((start_p(""1 0 25))(end_p(""1 0 29)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 31))(end_p(""1 0 33)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 34)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 36 40))(end_p(""3 36 41)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 36 44))(end_p(""3 36 47)))))))(position((start_p(""3 36 44))(end_p(""3 36 47))))))((value(Case((value(Tagged((value(KId Some))(position((start_p(""3 36 57))(end_p(""3 36 61)))))((((value(TyCon(TCon int)()))(position((start_p(""3 36 62))(end_p(""3 36 65)))))))(((value(Literal((value(LInt 42))(position((start_p(""3 36 67))(end_p(""3 36 69)))))))(position((start_p(""3 36 67))(end_p(""3 36 69))))))))(position((start_p(""3 36 57))(end_p(""3 36 70)))))(((value(Branch((value(PTaggedValue((value(KId Some))(position((start_p(""3 36 74))(end_p(""3 36 78)))))((((value(TyCon(TCon int)()))(position((start_p(""3 36 79))(end_p(""3 36 82)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""3 36 85))(end_p(""3 36 86)))))))(position((start_p(""3 36 85))(end_p(""3 36 86)))))((value(TyCon(TCon int)()))(position((start_p(""3 36 89))(end_p(""3 36 92)))))))(position((start_p(""3 36 84))(end_p(""3 36 93))))))))(position((start_p(""3 36 74))(end_p(""3 36 94)))))((value(Variable((value(Id x))(position((start_p(""3 36 98))(end_p(""3 36 99)))))()))(position((start_p(""3 36 98))(end_p(""3 36 99)))))))(position((start_p(""3 36 74))(end_p(""3 36 99)))))((value(Branch((value(PTaggedValue((value(KId None))(position((start_p(""3 36 102))(end_p(""3 36 106)))))((((value(TyCon(TCon int)()))(position((start_p(""3 36 107))(end_p(""3 36 110)))))))()))(position((start_p(""3 36 102))(end_p(""3 36 111)))))((value(Literal((value(LInt 0))(position((start_p(""3 36 115))(end_p(""3 36 116)))))))(position((start_p(""3 36 115))(end_p(""3 36 116)))))))(position((start_p(""3 36 102))(end_p(""3 36 116))))))))(position((start_p(""3 36 50))(end_p(""3 36 118)))))))))(position((start_p(""3 36 36))(end_p(""3 36 118)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/41-pattern-matching-05.good.typing.hopix.human-readable b/flap/tests/03-Typing/41-pattern-matching-05.good.typing.hopix.human-readable new file mode 100644 index 0000000..8798390 --- /dev/null +++ b/flap/tests/03-Typing/41-pattern-matching-05.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type option<`a> = None | Some (`a) + +let x : int = match (Some(42)) { Some((x : int)) -> x | None -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/42-pattern-matching-06.bad.expected b/flap/tests/03-Typing/42-pattern-matching-06.bad.expected new file mode 100644 index 0000000..ea67129 --- /dev/null +++ b/flap/tests/03-Typing/42-pattern-matching-06.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + option +Given: + option diff --git a/flap/tests/03-Typing/42-pattern-matching-06.bad.typing.hopix b/flap/tests/03-Typing/42-pattern-matching-06.bad.typing.hopix new file mode 100644 index 0000000..0e9a42e --- /dev/null +++ b/flap/tests/03-Typing/42-pattern-matching-06.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon option))(position((start_p(""1 0 5))(end_p(""1 0 11)))))(((value(TId `a))(position((start_p(""1 0 12))(end_p(""1 0 14))))))(DefineSumType((((value(KId None))(position((start_p(""1 0 18))(end_p(""1 0 22)))))())(((value(KId Some))(position((start_p(""1 0 25))(end_p(""1 0 29)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 31))(end_p(""1 0 33)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 34)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 36 40))(end_p(""3 36 41)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 36 44))(end_p(""3 36 47)))))))(position((start_p(""3 36 44))(end_p(""3 36 47))))))((value(Case((value(Tagged((value(KId Some))(position((start_p(""3 36 57))(end_p(""3 36 61)))))((((value(TyCon(TCon int)()))(position((start_p(""3 36 62))(end_p(""3 36 65)))))))(((value(Literal((value(LInt 42))(position((start_p(""3 36 67))(end_p(""3 36 69)))))))(position((start_p(""3 36 67))(end_p(""3 36 69))))))))(position((start_p(""3 36 57))(end_p(""3 36 70)))))(((value(Branch((value(POr(((value(PTaggedValue((value(KId Some))(position((start_p(""3 36 74))(end_p(""3 36 78)))))((((value(TyCon(TCon int)()))(position((start_p(""3 36 79))(end_p(""3 36 82)))))))(((value(PTypeAnnotation((value PWildcard)(position((start_p(""3 36 85))(end_p(""3 36 86)))))((value(TyCon(TCon int)()))(position((start_p(""3 36 89))(end_p(""3 36 92)))))))(position((start_p(""3 36 84))(end_p(""3 36 93))))))))(position((start_p(""3 36 74))(end_p(""3 36 94)))))((value(PTaggedValue((value(KId None))(position((start_p(""3 36 97))(end_p(""3 36 101)))))((((value(TyCon(TCon string)()))(position((start_p(""3 36 102))(end_p(""3 36 108)))))))()))(position((start_p(""3 36 97))(end_p(""3 36 109))))))))(position((start_p(""3 36 74))(end_p(""3 36 109)))))((value(Literal((value(LInt 0))(position((start_p(""3 36 113))(end_p(""3 36 114)))))))(position((start_p(""3 36 113))(end_p(""3 36 114)))))))(position((start_p(""3 36 74))(end_p(""3 36 114))))))))(position((start_p(""3 36 50))(end_p(""3 36 116)))))))))(position((start_p(""3 36 36))(end_p(""3 36 116)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/42-pattern-matching-06.bad.typing.hopix.human-readable b/flap/tests/03-Typing/42-pattern-matching-06.bad.typing.hopix.human-readable new file mode 100644 index 0000000..c05885d --- /dev/null +++ b/flap/tests/03-Typing/42-pattern-matching-06.bad.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type option<`a> = None | Some (`a) + +let x : int = match (Some(42)) { Some((_ : int)) | None -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/42-pattern-matching-06.good.expected b/flap/tests/03-Typing/42-pattern-matching-06.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/42-pattern-matching-06.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/42-pattern-matching-06.good.typing.hopix b/flap/tests/03-Typing/42-pattern-matching-06.good.typing.hopix new file mode 100644 index 0000000..ecb77bf --- /dev/null +++ b/flap/tests/03-Typing/42-pattern-matching-06.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon option))(position((start_p(""1 0 5))(end_p(""1 0 11)))))(((value(TId `a))(position((start_p(""1 0 12))(end_p(""1 0 14))))))(DefineSumType((((value(KId None))(position((start_p(""1 0 18))(end_p(""1 0 22)))))())(((value(KId Some))(position((start_p(""1 0 25))(end_p(""1 0 29)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 31))(end_p(""1 0 33)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 34)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 36 40))(end_p(""3 36 41)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 36 44))(end_p(""3 36 47)))))))(position((start_p(""3 36 44))(end_p(""3 36 47))))))((value(Case((value(Tagged((value(KId Some))(position((start_p(""3 36 57))(end_p(""3 36 61)))))((((value(TyCon(TCon int)()))(position((start_p(""3 36 62))(end_p(""3 36 65)))))))(((value(Literal((value(LInt 42))(position((start_p(""3 36 67))(end_p(""3 36 69)))))))(position((start_p(""3 36 67))(end_p(""3 36 69))))))))(position((start_p(""3 36 57))(end_p(""3 36 70)))))(((value(Branch((value(POr(((value(PTaggedValue((value(KId Some))(position((start_p(""3 36 74))(end_p(""3 36 78)))))((((value(TyCon(TCon int)()))(position((start_p(""3 36 79))(end_p(""3 36 82)))))))(((value(PTypeAnnotation((value PWildcard)(position((start_p(""3 36 85))(end_p(""3 36 86)))))((value(TyCon(TCon int)()))(position((start_p(""3 36 89))(end_p(""3 36 92)))))))(position((start_p(""3 36 84))(end_p(""3 36 93))))))))(position((start_p(""3 36 74))(end_p(""3 36 94)))))((value(PTaggedValue((value(KId None))(position((start_p(""3 36 97))(end_p(""3 36 101)))))((((value(TyCon(TCon int)()))(position((start_p(""3 36 102))(end_p(""3 36 105)))))))()))(position((start_p(""3 36 97))(end_p(""3 36 106))))))))(position((start_p(""3 36 74))(end_p(""3 36 106)))))((value(Literal((value(LInt 0))(position((start_p(""3 36 110))(end_p(""3 36 111)))))))(position((start_p(""3 36 110))(end_p(""3 36 111)))))))(position((start_p(""3 36 74))(end_p(""3 36 111))))))))(position((start_p(""3 36 50))(end_p(""3 36 113)))))))))(position((start_p(""3 36 36))(end_p(""3 36 113)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/42-pattern-matching-06.good.typing.hopix.human-readable b/flap/tests/03-Typing/42-pattern-matching-06.good.typing.hopix.human-readable new file mode 100644 index 0000000..aac9360 --- /dev/null +++ b/flap/tests/03-Typing/42-pattern-matching-06.good.typing.hopix.human-readable @@ -0,0 +1,3 @@ +type option<`a> = None | Some (`a) + +let x : int = match (Some(42)) { Some((_ : int)) | None -> 0 } diff --git a/flap/tests/03-Typing/43-pattern-matching-07.bad.expected b/flap/tests/03-Typing/43-pattern-matching-07.bad.expected new file mode 100644 index 0000000..c42b606 --- /dev/null +++ b/flap/tests/03-Typing/43-pattern-matching-07.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + or +Given: + or diff --git a/flap/tests/03-Typing/43-pattern-matching-07.bad.typing.hopix b/flap/tests/03-Typing/43-pattern-matching-07.bad.typing.hopix new file mode 100644 index 0000000..a0d5091 --- /dev/null +++ b/flap/tests/03-Typing/43-pattern-matching-07.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon or))(position((start_p(""1 0 5))(end_p(""1 0 7)))))(((value(TId `a))(position((start_p(""1 0 8))(end_p(""1 0 10)))))((value(TId `b))(position((start_p(""1 0 12))(end_p(""1 0 14))))))(DefineSumType((((value(KId Left))(position((start_p(""1 0 18))(end_p(""1 0 22)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))(((value(KId Right))(position((start_p(""1 0 29))(end_p(""1 0 34)))))(((value(TyVar(TId `b)))(position((start_p(""1 0 35))(end_p(""1 0 37)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 38)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 40 44))(end_p(""3 40 45)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 40 48))(end_p(""3 40 51)))))))(position((start_p(""3 40 48))(end_p(""3 40 51))))))((value(Case((value(Tagged((value(KId Left))(position((start_p(""3 40 61))(end_p(""3 40 65)))))((((value(TyCon(TCon int)()))(position((start_p(""3 40 66))(end_p(""3 40 69)))))((value(TyCon(TCon int)()))(position((start_p(""3 40 71))(end_p(""3 40 74)))))))(((value(Literal((value(LInt 22))(position((start_p(""3 40 76))(end_p(""3 40 78)))))))(position((start_p(""3 40 76))(end_p(""3 40 78))))))))(position((start_p(""3 40 61))(end_p(""3 40 79)))))(((value(Branch((value(POr(((value(PTaggedValue((value(KId Left))(position((start_p(""4 83 85))(end_p(""4 83 89)))))((((value(TyCon(TCon int)()))(position((start_p(""4 83 90))(end_p(""4 83 93)))))((value(TyCon(TCon string)()))(position((start_p(""4 83 95))(end_p(""4 83 101)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 83 104))(end_p(""4 83 105)))))))(position((start_p(""4 83 104))(end_p(""4 83 105)))))((value(TyCon(TCon int)()))(position((start_p(""4 83 108))(end_p(""4 83 111)))))))(position((start_p(""4 83 103))(end_p(""4 83 112))))))))(position((start_p(""4 83 85))(end_p(""4 83 113)))))((value(PTaggedValue((value(KId Right))(position((start_p(""4 83 116))(end_p(""4 83 121)))))((((value(TyCon(TCon int)()))(position((start_p(""4 83 122))(end_p(""4 83 125)))))((value(TyCon(TCon int)()))(position((start_p(""4 83 127))(end_p(""4 83 130)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 83 133))(end_p(""4 83 134)))))))(position((start_p(""4 83 133))(end_p(""4 83 134)))))((value(TyCon(TCon int)()))(position((start_p(""4 83 137))(end_p(""4 83 140)))))))(position((start_p(""4 83 132))(end_p(""4 83 141))))))))(position((start_p(""4 83 116))(end_p(""4 83 142))))))))(position((start_p(""4 83 85))(end_p(""4 83 142)))))((value(Variable((value(Id x))(position((start_p(""4 83 146))(end_p(""4 83 147)))))()))(position((start_p(""4 83 146))(end_p(""4 83 147)))))))(position((start_p(""4 83 85))(end_p(""4 83 147))))))))(position((start_p(""3 40 54))(end_p(""5 148 149)))))))))(position((start_p(""3 40 40))(end_p(""5 148 149)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/43-pattern-matching-07.bad.typing.hopix.human-readable b/flap/tests/03-Typing/43-pattern-matching-07.bad.typing.hopix.human-readable new file mode 100644 index 0000000..3c77efd --- /dev/null +++ b/flap/tests/03-Typing/43-pattern-matching-07.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type or<`a, `b> = Left(`a) | Right(`b) + +let x : int = match (Left(22)) { + Left((x : int)) | Right((x : int)) -> x +} \ No newline at end of file diff --git a/flap/tests/03-Typing/43-pattern-matching-07.good.expected b/flap/tests/03-Typing/43-pattern-matching-07.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/43-pattern-matching-07.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/43-pattern-matching-07.good.typing.hopix b/flap/tests/03-Typing/43-pattern-matching-07.good.typing.hopix new file mode 100644 index 0000000..1f663cd --- /dev/null +++ b/flap/tests/03-Typing/43-pattern-matching-07.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon or))(position((start_p(""1 0 5))(end_p(""1 0 7)))))(((value(TId `a))(position((start_p(""1 0 8))(end_p(""1 0 10)))))((value(TId `b))(position((start_p(""1 0 12))(end_p(""1 0 14))))))(DefineSumType((((value(KId Left))(position((start_p(""1 0 18))(end_p(""1 0 22)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))(((value(KId Right))(position((start_p(""1 0 29))(end_p(""1 0 34)))))(((value(TyVar(TId `b)))(position((start_p(""1 0 35))(end_p(""1 0 37)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 38)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 40 44))(end_p(""3 40 45)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 40 48))(end_p(""3 40 51)))))))(position((start_p(""3 40 48))(end_p(""3 40 51))))))((value(Case((value(Tagged((value(KId Left))(position((start_p(""3 40 61))(end_p(""3 40 65)))))((((value(TyCon(TCon int)()))(position((start_p(""3 40 66))(end_p(""3 40 69)))))((value(TyCon(TCon int)()))(position((start_p(""3 40 71))(end_p(""3 40 74)))))))(((value(Literal((value(LInt 22))(position((start_p(""3 40 76))(end_p(""3 40 78)))))))(position((start_p(""3 40 76))(end_p(""3 40 78))))))))(position((start_p(""3 40 61))(end_p(""3 40 79)))))(((value(Branch((value(POr(((value(PTaggedValue((value(KId Left))(position((start_p(""4 83 85))(end_p(""4 83 89)))))((((value(TyCon(TCon int)()))(position((start_p(""4 83 90))(end_p(""4 83 93)))))((value(TyCon(TCon int)()))(position((start_p(""4 83 95))(end_p(""4 83 98)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 83 101))(end_p(""4 83 102)))))))(position((start_p(""4 83 101))(end_p(""4 83 102)))))((value(TyCon(TCon int)()))(position((start_p(""4 83 105))(end_p(""4 83 108)))))))(position((start_p(""4 83 100))(end_p(""4 83 109))))))))(position((start_p(""4 83 85))(end_p(""4 83 110)))))((value(PTaggedValue((value(KId Right))(position((start_p(""4 83 113))(end_p(""4 83 118)))))((((value(TyCon(TCon int)()))(position((start_p(""4 83 119))(end_p(""4 83 122)))))((value(TyCon(TCon int)()))(position((start_p(""4 83 124))(end_p(""4 83 127)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 83 130))(end_p(""4 83 131)))))))(position((start_p(""4 83 130))(end_p(""4 83 131)))))((value(TyCon(TCon int)()))(position((start_p(""4 83 134))(end_p(""4 83 137)))))))(position((start_p(""4 83 129))(end_p(""4 83 138))))))))(position((start_p(""4 83 113))(end_p(""4 83 139))))))))(position((start_p(""4 83 85))(end_p(""4 83 139)))))((value(Variable((value(Id x))(position((start_p(""4 83 143))(end_p(""4 83 144)))))()))(position((start_p(""4 83 143))(end_p(""4 83 144)))))))(position((start_p(""4 83 85))(end_p(""4 83 144))))))))(position((start_p(""3 40 54))(end_p(""5 145 146)))))))))(position((start_p(""3 40 40))(end_p(""5 145 146)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/43-pattern-matching-07.good.typing.hopix.human-readable b/flap/tests/03-Typing/43-pattern-matching-07.good.typing.hopix.human-readable new file mode 100644 index 0000000..798f919 --- /dev/null +++ b/flap/tests/03-Typing/43-pattern-matching-07.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type or<`a, `b> = Left(`a) | Right(`b) + +let x : int = match (Left(22)) { + Left((x : int)) | Right((x : int)) -> x +} \ No newline at end of file diff --git a/flap/tests/03-Typing/44-pattern-matching-08.bad.expected b/flap/tests/03-Typing/44-pattern-matching-08.bad.expected new file mode 100644 index 0000000..04c71fb --- /dev/null +++ b/flap/tests/03-Typing/44-pattern-matching-08.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + The variable x has already appeared in this pattern. diff --git a/flap/tests/03-Typing/44-pattern-matching-08.bad.typing.hopix b/flap/tests/03-Typing/44-pattern-matching-08.bad.typing.hopix new file mode 100644 index 0000000..6a6869b --- /dev/null +++ b/flap/tests/03-Typing/44-pattern-matching-08.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineSumType((((value(KId P))(position((start_p(""1 0 17))(end_p(""1 0 18)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 19))(end_p(""1 0 21)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 28 32))(end_p(""3 28 33)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 36))(end_p(""3 28 39)))))))(position((start_p(""3 28 36))(end_p(""3 28 39))))))((value(Case((value(Tagged((value(KId P))(position((start_p(""3 28 49))(end_p(""3 28 50)))))((((value(TyCon(TCon int)()))(position((start_p(""3 28 52))(end_p(""3 28 55)))))((value(TyCon(TCon int)()))(position((start_p(""3 28 57))(end_p(""3 28 60)))))))(((value(Literal((value(LInt 22))(position((start_p(""3 28 63))(end_p(""3 28 65)))))))(position((start_p(""3 28 63))(end_p(""3 28 65)))))((value(Literal((value(LInt 33))(position((start_p(""3 28 67))(end_p(""3 28 69)))))))(position((start_p(""3 28 67))(end_p(""3 28 69))))))))(position((start_p(""3 28 49))(end_p(""3 28 70)))))(((value(Branch((value(PTaggedValue((value(KId P))(position((start_p(""4 74 76))(end_p(""4 74 77)))))((((value(TyCon(TCon int)()))(position((start_p(""4 74 78))(end_p(""4 74 81)))))((value(TyCon(TCon int)()))(position((start_p(""4 74 83))(end_p(""4 74 86)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 74 89))(end_p(""4 74 90)))))))(position((start_p(""4 74 89))(end_p(""4 74 90)))))((value(TyCon(TCon int)()))(position((start_p(""4 74 93))(end_p(""4 74 96)))))))(position((start_p(""4 74 88))(end_p(""4 74 97)))))((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 74 100))(end_p(""4 74 101)))))))(position((start_p(""4 74 100))(end_p(""4 74 101)))))((value(TyCon(TCon int)()))(position((start_p(""4 74 104))(end_p(""4 74 107)))))))(position((start_p(""4 74 99))(end_p(""4 74 108))))))))(position((start_p(""4 74 76))(end_p(""4 74 109)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 74 115))(end_p(""4 74 116)))))()))(position((start_p(""4 74 115))(end_p(""4 74 116)))))((value(Variable((value(Id x))(position((start_p(""4 74 113))(end_p(""4 74 114)))))()))(position((start_p(""4 74 113))(end_p(""4 74 114)))))))(position((start_p(""4 74 113))(end_p(""4 74 114)))))((value(Variable((value(Id x))(position((start_p(""4 74 117))(end_p(""4 74 118)))))()))(position((start_p(""4 74 117))(end_p(""4 74 118)))))))(position((start_p(""4 74 113))(end_p(""4 74 118)))))))(position((start_p(""4 74 76))(end_p(""4 74 118))))))))(position((start_p(""3 28 42))(end_p(""5 119 120)))))))))(position((start_p(""3 28 28))(end_p(""5 119 120)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/44-pattern-matching-08.bad.typing.hopix.human-readable b/flap/tests/03-Typing/44-pattern-matching-08.bad.typing.hopix.human-readable new file mode 100644 index 0000000..4a1502b --- /dev/null +++ b/flap/tests/03-Typing/44-pattern-matching-08.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type p<`a, `b> = P(`a, `b) + +let x : int = match (P (22, 33)) { + P((x : int), (x : int)) -> x + x +} \ No newline at end of file diff --git a/flap/tests/03-Typing/44-pattern-matching-08.good.expected b/flap/tests/03-Typing/44-pattern-matching-08.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/44-pattern-matching-08.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/44-pattern-matching-08.good.typing.hopix b/flap/tests/03-Typing/44-pattern-matching-08.good.typing.hopix new file mode 100644 index 0000000..2d384f5 --- /dev/null +++ b/flap/tests/03-Typing/44-pattern-matching-08.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineSumType((((value(KId P))(position((start_p(""1 0 17))(end_p(""1 0 18)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 19))(end_p(""1 0 21)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 28 32))(end_p(""3 28 33)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 36))(end_p(""3 28 39)))))))(position((start_p(""3 28 36))(end_p(""3 28 39))))))((value(Case((value(Tagged((value(KId P))(position((start_p(""3 28 49))(end_p(""3 28 50)))))((((value(TyCon(TCon int)()))(position((start_p(""3 28 52))(end_p(""3 28 55)))))((value(TyCon(TCon int)()))(position((start_p(""3 28 57))(end_p(""3 28 60)))))))(((value(Literal((value(LInt 22))(position((start_p(""3 28 63))(end_p(""3 28 65)))))))(position((start_p(""3 28 63))(end_p(""3 28 65)))))((value(Literal((value(LInt 33))(position((start_p(""3 28 67))(end_p(""3 28 69)))))))(position((start_p(""3 28 67))(end_p(""3 28 69))))))))(position((start_p(""3 28 49))(end_p(""3 28 70)))))(((value(Branch((value(PTaggedValue((value(KId P))(position((start_p(""4 74 76))(end_p(""4 74 77)))))((((value(TyCon(TCon int)()))(position((start_p(""4 74 78))(end_p(""4 74 81)))))((value(TyCon(TCon int)()))(position((start_p(""4 74 83))(end_p(""4 74 86)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 74 89))(end_p(""4 74 90)))))))(position((start_p(""4 74 89))(end_p(""4 74 90)))))((value(TyCon(TCon int)()))(position((start_p(""4 74 93))(end_p(""4 74 96)))))))(position((start_p(""4 74 88))(end_p(""4 74 97)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""4 74 100))(end_p(""4 74 101)))))))(position((start_p(""4 74 100))(end_p(""4 74 101)))))((value(TyCon(TCon int)()))(position((start_p(""4 74 104))(end_p(""4 74 107)))))))(position((start_p(""4 74 99))(end_p(""4 74 108))))))))(position((start_p(""4 74 76))(end_p(""4 74 109)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 74 115))(end_p(""4 74 116)))))()))(position((start_p(""4 74 115))(end_p(""4 74 116)))))((value(Variable((value(Id x))(position((start_p(""4 74 113))(end_p(""4 74 114)))))()))(position((start_p(""4 74 113))(end_p(""4 74 114)))))))(position((start_p(""4 74 113))(end_p(""4 74 114)))))((value(Variable((value(Id y))(position((start_p(""4 74 117))(end_p(""4 74 118)))))()))(position((start_p(""4 74 117))(end_p(""4 74 118)))))))(position((start_p(""4 74 113))(end_p(""4 74 118)))))))(position((start_p(""4 74 76))(end_p(""4 74 118))))))))(position((start_p(""3 28 42))(end_p(""5 119 120)))))))))(position((start_p(""3 28 28))(end_p(""5 119 120)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/44-pattern-matching-08.good.typing.hopix.human-readable b/flap/tests/03-Typing/44-pattern-matching-08.good.typing.hopix.human-readable new file mode 100644 index 0000000..80b2e18 --- /dev/null +++ b/flap/tests/03-Typing/44-pattern-matching-08.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type p<`a, `b> = P(`a, `b) + +let x : int = match (P (22, 33)) { + P((x : int), (y : int)) -> x + y +} \ No newline at end of file diff --git a/flap/tests/03-Typing/45-pattern-matching-09.bad.expected b/flap/tests/03-Typing/45-pattern-matching-09.bad.expected new file mode 100644 index 0000000..5216c26 --- /dev/null +++ b/flap/tests/03-Typing/45-pattern-matching-09.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + This expression has type p which should be a function type. diff --git a/flap/tests/03-Typing/45-pattern-matching-09.bad.typing.hopix b/flap/tests/03-Typing/45-pattern-matching-09.bad.typing.hopix new file mode 100644 index 0000000..de7aa7a --- /dev/null +++ b/flap/tests/03-Typing/45-pattern-matching-09.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineSumType((((value(KId P))(position((start_p(""1 0 17))(end_p(""1 0 18)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 19))(end_p(""1 0 21)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 22)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 24 28))(end_p(""3 24 29)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 24 32))(end_p(""3 24 35)))))))(position((start_p(""3 24 32))(end_p(""3 24 35))))))((value(Case((value(Tagged((value(KId P))(position((start_p(""3 24 45))(end_p(""3 24 46)))))((((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""3 24 49))(end_p(""3 24 52)))))((value(TyCon(TCon int)()))(position((start_p(""3 24 54))(end_p(""3 24 57))))))))(position((start_p(""3 24 47))(end_p(""3 24 58)))))((value(TyCon(TCon int)()))(position((start_p(""3 24 60))(end_p(""3 24 63)))))))(((value(Tagged((value(KId P))(position((start_p(""3 24 65))(end_p(""3 24 66)))))((((value(TyCon(TCon int)()))(position((start_p(""3 24 67))(end_p(""3 24 70)))))((value(TyCon(TCon int)()))(position((start_p(""3 24 72))(end_p(""3 24 75)))))))(((value(Literal((value(LInt 22))(position((start_p(""3 24 77))(end_p(""3 24 79)))))))(position((start_p(""3 24 77))(end_p(""3 24 79)))))((value(Literal((value(LInt 44))(position((start_p(""3 24 81))(end_p(""3 24 83)))))))(position((start_p(""3 24 81))(end_p(""3 24 83))))))))(position((start_p(""3 24 65))(end_p(""3 24 84)))))((value(Literal((value(LInt 33))(position((start_p(""3 24 86))(end_p(""3 24 88)))))))(position((start_p(""3 24 86))(end_p(""3 24 88))))))))(position((start_p(""3 24 45))(end_p(""3 24 89)))))(((value(Branch((value(PTaggedValue((value(KId P))(position((start_p(""4 93 95))(end_p(""4 93 96)))))((((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""4 93 99))(end_p(""4 93 102)))))((value(TyCon(TCon int)()))(position((start_p(""4 93 104))(end_p(""4 93 107))))))))(position((start_p(""4 93 97))(end_p(""4 93 108)))))((value(TyCon(TCon int)()))(position((start_p(""4 93 110))(end_p(""4 93 113)))))))(((value(PTaggedValue((value(KId P))(position((start_p(""4 93 115))(end_p(""4 93 116)))))((((value(TyCon(TCon int)()))(position((start_p(""4 93 117))(end_p(""4 93 120)))))((value(TyCon(TCon int)()))(position((start_p(""4 93 122))(end_p(""4 93 125)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 93 128))(end_p(""4 93 129)))))))(position((start_p(""4 93 128))(end_p(""4 93 129)))))((value(TyCon(TCon int)()))(position((start_p(""4 93 132))(end_p(""4 93 135)))))))(position((start_p(""4 93 127))(end_p(""4 93 136)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""4 93 139))(end_p(""4 93 140)))))))(position((start_p(""4 93 139))(end_p(""4 93 140)))))((value(TyCon(TCon int)()))(position((start_p(""4 93 143))(end_p(""4 93 146)))))))(position((start_p(""4 93 138))(end_p(""4 93 147))))))))(position((start_p(""4 93 115))(end_p(""4 93 148)))))((value(PTypeAnnotation((value PWildcard)(position((start_p(""4 93 151))(end_p(""4 93 152)))))((value(TyCon(TCon int)()))(position((start_p(""4 93 155))(end_p(""4 93 158)))))))(position((start_p(""4 93 150))(end_p(""4 93 159))))))))(position((start_p(""4 93 95))(end_p(""4 93 160)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 93 166))(end_p(""4 93 167)))))()))(position((start_p(""4 93 166))(end_p(""4 93 167)))))((value(Variable((value(Id x))(position((start_p(""4 93 164))(end_p(""4 93 165)))))()))(position((start_p(""4 93 164))(end_p(""4 93 165)))))))(position((start_p(""4 93 164))(end_p(""4 93 165)))))((value(Variable((value(Id y))(position((start_p(""4 93 168))(end_p(""4 93 169)))))()))(position((start_p(""4 93 168))(end_p(""4 93 169)))))))(position((start_p(""4 93 164))(end_p(""4 93 169)))))))(position((start_p(""4 93 95))(end_p(""4 93 169))))))))(position((start_p(""3 24 38))(end_p(""5 170 171)))))))))(position((start_p(""3 24 24))(end_p(""5 170 171)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/45-pattern-matching-09.bad.typing.hopix.human-readable b/flap/tests/03-Typing/45-pattern-matching-09.bad.typing.hopix.human-readable new file mode 100644 index 0000000..5834ca1 --- /dev/null +++ b/flap/tests/03-Typing/45-pattern-matching-09.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type p<`a, `b> = P(`a) + +let x : int = match (P, int>(P(22, 44), 33)) { + P, int>(P((x : int), (y : int)), (_ : int)) -> x + y +} \ No newline at end of file diff --git a/flap/tests/03-Typing/45-pattern-matching-09.good.expected b/flap/tests/03-Typing/45-pattern-matching-09.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/45-pattern-matching-09.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/45-pattern-matching-09.good.typing.hopix b/flap/tests/03-Typing/45-pattern-matching-09.good.typing.hopix new file mode 100644 index 0000000..6542aeb --- /dev/null +++ b/flap/tests/03-Typing/45-pattern-matching-09.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineSumType((((value(KId P))(position((start_p(""1 0 17))(end_p(""1 0 18)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 19))(end_p(""1 0 21)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 28 32))(end_p(""3 28 33)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 36))(end_p(""3 28 39)))))))(position((start_p(""3 28 36))(end_p(""3 28 39))))))((value(Case((value(Tagged((value(KId P))(position((start_p(""3 28 49))(end_p(""3 28 50)))))((((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""3 28 53))(end_p(""3 28 56)))))((value(TyCon(TCon int)()))(position((start_p(""3 28 58))(end_p(""3 28 61))))))))(position((start_p(""3 28 51))(end_p(""3 28 62)))))((value(TyCon(TCon int)()))(position((start_p(""3 28 64))(end_p(""3 28 67)))))))(((value(Tagged((value(KId P))(position((start_p(""3 28 69))(end_p(""3 28 70)))))((((value(TyCon(TCon int)()))(position((start_p(""3 28 71))(end_p(""3 28 74)))))((value(TyCon(TCon int)()))(position((start_p(""3 28 76))(end_p(""3 28 79)))))))(((value(Literal((value(LInt 22))(position((start_p(""3 28 81))(end_p(""3 28 83)))))))(position((start_p(""3 28 81))(end_p(""3 28 83)))))((value(Literal((value(LInt 44))(position((start_p(""3 28 85))(end_p(""3 28 87)))))))(position((start_p(""3 28 85))(end_p(""3 28 87))))))))(position((start_p(""3 28 69))(end_p(""3 28 88)))))((value(Literal((value(LInt 33))(position((start_p(""3 28 90))(end_p(""3 28 92)))))))(position((start_p(""3 28 90))(end_p(""3 28 92))))))))(position((start_p(""3 28 49))(end_p(""3 28 93)))))(((value(Branch((value(PTaggedValue((value(KId P))(position((start_p(""4 97 99))(end_p(""4 97 100)))))((((value(TyCon(TCon p)(((value(TyCon(TCon int)()))(position((start_p(""4 97 103))(end_p(""4 97 106)))))((value(TyCon(TCon int)()))(position((start_p(""4 97 108))(end_p(""4 97 111))))))))(position((start_p(""4 97 101))(end_p(""4 97 112)))))((value(TyCon(TCon int)()))(position((start_p(""4 97 114))(end_p(""4 97 117)))))))(((value(PTaggedValue((value(KId P))(position((start_p(""4 97 119))(end_p(""4 97 120)))))((((value(TyCon(TCon int)()))(position((start_p(""4 97 121))(end_p(""4 97 124)))))((value(TyCon(TCon int)()))(position((start_p(""4 97 126))(end_p(""4 97 129)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 97 132))(end_p(""4 97 133)))))))(position((start_p(""4 97 132))(end_p(""4 97 133)))))((value(TyCon(TCon int)()))(position((start_p(""4 97 136))(end_p(""4 97 139)))))))(position((start_p(""4 97 131))(end_p(""4 97 140)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""4 97 143))(end_p(""4 97 144)))))))(position((start_p(""4 97 143))(end_p(""4 97 144)))))((value(TyCon(TCon int)()))(position((start_p(""4 97 147))(end_p(""4 97 150)))))))(position((start_p(""4 97 142))(end_p(""4 97 151))))))))(position((start_p(""4 97 119))(end_p(""4 97 152)))))((value(PTypeAnnotation((value PWildcard)(position((start_p(""4 97 155))(end_p(""4 97 156)))))((value(TyCon(TCon int)()))(position((start_p(""4 97 159))(end_p(""4 97 162)))))))(position((start_p(""4 97 154))(end_p(""4 97 163))))))))(position((start_p(""4 97 99))(end_p(""4 97 164)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 97 170))(end_p(""4 97 171)))))()))(position((start_p(""4 97 170))(end_p(""4 97 171)))))((value(Variable((value(Id x))(position((start_p(""4 97 168))(end_p(""4 97 169)))))()))(position((start_p(""4 97 168))(end_p(""4 97 169)))))))(position((start_p(""4 97 168))(end_p(""4 97 169)))))((value(Variable((value(Id y))(position((start_p(""4 97 172))(end_p(""4 97 173)))))()))(position((start_p(""4 97 172))(end_p(""4 97 173)))))))(position((start_p(""4 97 168))(end_p(""4 97 173)))))))(position((start_p(""4 97 99))(end_p(""4 97 173))))))))(position((start_p(""3 28 42))(end_p(""5 174 175)))))))))(position((start_p(""3 28 28))(end_p(""5 174 175)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/45-pattern-matching-09.good.typing.hopix.human-readable b/flap/tests/03-Typing/45-pattern-matching-09.good.typing.hopix.human-readable new file mode 100644 index 0000000..e694b75 --- /dev/null +++ b/flap/tests/03-Typing/45-pattern-matching-09.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type p<`a, `b> = P(`a, `b) + +let x : int = match (P, int>(P(22, 44), 33)) { + P, int>(P((x : int), (y : int)), (_ : int)) -> x + y +} \ No newline at end of file diff --git a/flap/tests/03-Typing/46-pattern-matching-10.bad.expected b/flap/tests/03-Typing/46-pattern-matching-10.bad.expected new file mode 100644 index 0000000..04c71fb --- /dev/null +++ b/flap/tests/03-Typing/46-pattern-matching-10.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + The variable x has already appeared in this pattern. diff --git a/flap/tests/03-Typing/46-pattern-matching-10.bad.typing.hopix b/flap/tests/03-Typing/46-pattern-matching-10.bad.typing.hopix new file mode 100644 index 0000000..011aa88 --- /dev/null +++ b/flap/tests/03-Typing/46-pattern-matching-10.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineSumType((((value(KId P))(position((start_p(""1 0 17))(end_p(""1 0 18)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 19))(end_p(""1 0 21)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 28 32))(end_p(""3 28 33)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 36))(end_p(""3 28 39)))))))(position((start_p(""3 28 36))(end_p(""3 28 39))))))((value(Case((value(Tagged((value(KId P))(position((start_p(""3 28 49))(end_p(""3 28 50)))))((((value(TyCon(TCon int)()))(position((start_p(""3 28 51))(end_p(""3 28 54)))))((value(TyCon(TCon int)()))(position((start_p(""3 28 56))(end_p(""3 28 59)))))))(((value(Literal((value(LInt 22))(position((start_p(""3 28 61))(end_p(""3 28 63)))))))(position((start_p(""3 28 61))(end_p(""3 28 63)))))((value(Literal((value(LInt 33))(position((start_p(""3 28 65))(end_p(""3 28 67)))))))(position((start_p(""3 28 65))(end_p(""3 28 67))))))))(position((start_p(""3 28 49))(end_p(""3 28 68)))))(((value(Branch((value(PAnd(((value(PTaggedValue((value(KId P))(position((start_p(""4 72 74))(end_p(""4 72 75)))))((((value(TyCon(TCon int)()))(position((start_p(""4 72 76))(end_p(""4 72 79)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 81))(end_p(""4 72 84)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 72 87))(end_p(""4 72 88)))))))(position((start_p(""4 72 87))(end_p(""4 72 88)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 91))(end_p(""4 72 94)))))))(position((start_p(""4 72 86))(end_p(""4 72 95)))))((value(PTypeAnnotation((value PWildcard)(position((start_p(""4 72 98))(end_p(""4 72 99)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 102))(end_p(""4 72 105)))))))(position((start_p(""4 72 97))(end_p(""4 72 106))))))))(position((start_p(""4 72 74))(end_p(""4 72 107)))))((value(PTaggedValue((value(KId P))(position((start_p(""4 72 110))(end_p(""4 72 111)))))((((value(TyCon(TCon int)()))(position((start_p(""4 72 112))(end_p(""4 72 115)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 117))(end_p(""4 72 120)))))))(((value(PTypeAnnotation((value PWildcard)(position((start_p(""4 72 123))(end_p(""4 72 124)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 127))(end_p(""4 72 130)))))))(position((start_p(""4 72 122))(end_p(""4 72 131)))))((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 72 134))(end_p(""4 72 135)))))))(position((start_p(""4 72 134))(end_p(""4 72 135)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 138))(end_p(""4 72 141)))))))(position((start_p(""4 72 133))(end_p(""4 72 142))))))))(position((start_p(""4 72 110))(end_p(""4 72 143))))))))(position((start_p(""4 72 74))(end_p(""4 72 143)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 72 149))(end_p(""4 72 150)))))()))(position((start_p(""4 72 149))(end_p(""4 72 150)))))((value(Variable((value(Id x))(position((start_p(""4 72 147))(end_p(""4 72 148)))))()))(position((start_p(""4 72 147))(end_p(""4 72 148)))))))(position((start_p(""4 72 147))(end_p(""4 72 148)))))((value(Variable((value(Id x))(position((start_p(""4 72 151))(end_p(""4 72 152)))))()))(position((start_p(""4 72 151))(end_p(""4 72 152)))))))(position((start_p(""4 72 147))(end_p(""4 72 152)))))))(position((start_p(""4 72 74))(end_p(""4 72 152))))))))(position((start_p(""3 28 42))(end_p(""5 153 154)))))))))(position((start_p(""3 28 28))(end_p(""5 153 154)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/46-pattern-matching-10.bad.typing.hopix.human-readable b/flap/tests/03-Typing/46-pattern-matching-10.bad.typing.hopix.human-readable new file mode 100644 index 0000000..4ac93d3 --- /dev/null +++ b/flap/tests/03-Typing/46-pattern-matching-10.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type p<`a, `b> = P(`a, `b) + +let x : int = match (P(22, 33)) { + P((x : int), (_ : int)) & P((_ : int), (x : int)) -> x + x +} \ No newline at end of file diff --git a/flap/tests/03-Typing/46-pattern-matching-10.good.expected b/flap/tests/03-Typing/46-pattern-matching-10.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/46-pattern-matching-10.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/46-pattern-matching-10.good.typing.hopix b/flap/tests/03-Typing/46-pattern-matching-10.good.typing.hopix new file mode 100644 index 0000000..b1243e7 --- /dev/null +++ b/flap/tests/03-Typing/46-pattern-matching-10.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineSumType((((value(KId P))(position((start_p(""1 0 17))(end_p(""1 0 18)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 19))(end_p(""1 0 21)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""3 28 32))(end_p(""3 28 33)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 36))(end_p(""3 28 39)))))))(position((start_p(""3 28 36))(end_p(""3 28 39))))))((value(Case((value(Tagged((value(KId P))(position((start_p(""3 28 49))(end_p(""3 28 50)))))((((value(TyCon(TCon int)()))(position((start_p(""3 28 51))(end_p(""3 28 54)))))((value(TyCon(TCon int)()))(position((start_p(""3 28 56))(end_p(""3 28 59)))))))(((value(Literal((value(LInt 22))(position((start_p(""3 28 61))(end_p(""3 28 63)))))))(position((start_p(""3 28 61))(end_p(""3 28 63)))))((value(Literal((value(LInt 33))(position((start_p(""3 28 65))(end_p(""3 28 67)))))))(position((start_p(""3 28 65))(end_p(""3 28 67))))))))(position((start_p(""3 28 49))(end_p(""3 28 68)))))(((value(Branch((value(PAnd(((value(PTaggedValue((value(KId P))(position((start_p(""4 72 74))(end_p(""4 72 75)))))((((value(TyCon(TCon int)()))(position((start_p(""4 72 76))(end_p(""4 72 79)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 81))(end_p(""4 72 84)))))))(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""4 72 87))(end_p(""4 72 88)))))))(position((start_p(""4 72 87))(end_p(""4 72 88)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 91))(end_p(""4 72 94)))))))(position((start_p(""4 72 86))(end_p(""4 72 95)))))((value(PTypeAnnotation((value PWildcard)(position((start_p(""4 72 98))(end_p(""4 72 99)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 102))(end_p(""4 72 105)))))))(position((start_p(""4 72 97))(end_p(""4 72 106))))))))(position((start_p(""4 72 74))(end_p(""4 72 107)))))((value(PTaggedValue((value(KId P))(position((start_p(""4 72 110))(end_p(""4 72 111)))))((((value(TyCon(TCon int)()))(position((start_p(""4 72 112))(end_p(""4 72 115)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 117))(end_p(""4 72 120)))))))(((value(PTypeAnnotation((value PWildcard)(position((start_p(""4 72 123))(end_p(""4 72 124)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 127))(end_p(""4 72 130)))))))(position((start_p(""4 72 122))(end_p(""4 72 131)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""4 72 134))(end_p(""4 72 135)))))))(position((start_p(""4 72 134))(end_p(""4 72 135)))))((value(TyCon(TCon int)()))(position((start_p(""4 72 138))(end_p(""4 72 141)))))))(position((start_p(""4 72 133))(end_p(""4 72 142))))))))(position((start_p(""4 72 110))(end_p(""4 72 143))))))))(position((start_p(""4 72 74))(end_p(""4 72 143)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""4 72 149))(end_p(""4 72 150)))))()))(position((start_p(""4 72 149))(end_p(""4 72 150)))))((value(Variable((value(Id x))(position((start_p(""4 72 147))(end_p(""4 72 148)))))()))(position((start_p(""4 72 147))(end_p(""4 72 148)))))))(position((start_p(""4 72 147))(end_p(""4 72 148)))))((value(Variable((value(Id y))(position((start_p(""4 72 151))(end_p(""4 72 152)))))()))(position((start_p(""4 72 151))(end_p(""4 72 152)))))))(position((start_p(""4 72 147))(end_p(""4 72 152)))))))(position((start_p(""4 72 74))(end_p(""4 72 152))))))))(position((start_p(""3 28 42))(end_p(""5 153 154)))))))))(position((start_p(""3 28 28))(end_p(""5 153 154)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/46-pattern-matching-10.good.typing.hopix.human-readable b/flap/tests/03-Typing/46-pattern-matching-10.good.typing.hopix.human-readable new file mode 100644 index 0000000..ff3897b --- /dev/null +++ b/flap/tests/03-Typing/46-pattern-matching-10.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +type p<`a, `b> = P(`a, `b) + +let x : int = match (P(22, 33)) { + P((x : int), (_ : int)) & P((_ : int), (y : int)) -> x + y +} \ No newline at end of file diff --git a/flap/tests/03-Typing/47-pattern-matching-11.bad.expected b/flap/tests/03-Typing/47-pattern-matching-11.bad.expected new file mode 100644 index 0000000..b9db196 --- /dev/null +++ b/flap/tests/03-Typing/47-pattern-matching-11.bad.expected @@ -0,0 +1,2 @@ +Error (typechecking) + There is no type definition for label `u'. diff --git a/flap/tests/03-Typing/47-pattern-matching-11.bad.typing.hopix b/flap/tests/03-Typing/47-pattern-matching-11.bad.typing.hopix new file mode 100644 index 0000000..a13f9fb --- /dev/null +++ b/flap/tests/03-Typing/47-pattern-matching-11.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineSumType((((value(KId P))(position((start_p(""1 0 17))(end_p(""1 0 18)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 19))(end_p(""1 0 21)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineType((value(TCon l))(position((start_p(""2 27 32))(end_p(""2 27 33)))))()(DefineRecordType((((value(LId l))(position((start_p(""2 27 38))(end_p(""2 27 39)))))((value(TyCon(TCon int)()))(position((start_p(""2 27 42))(end_p(""2 27 45))))))))))(position((start_p(""2 27 27))(end_p(""2 27 47)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""4 49 53))(end_p(""4 49 54)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 49 57))(end_p(""4 49 60)))))))(position((start_p(""4 49 57))(end_p(""4 49 60))))))((value(Case((value(Tagged((value(KId P))(position((start_p(""4 49 70))(end_p(""4 49 71)))))((((value(TyCon(TCon l)()))(position((start_p(""4 49 72))(end_p(""4 49 73)))))((value(TyCon(TCon int)()))(position((start_p(""4 49 75))(end_p(""4 49 78)))))))(((value(Record((((value(LId l))(position((start_p(""4 49 82))(end_p(""4 49 83)))))((value(Literal((value(LInt 22))(position((start_p(""4 49 86))(end_p(""4 49 88)))))))(position((start_p(""4 49 86))(end_p(""4 49 88)))))))(())))(position((start_p(""4 49 80))(end_p(""4 49 92)))))((value(Literal((value(LInt 33))(position((start_p(""4 49 94))(end_p(""4 49 96)))))))(position((start_p(""4 49 94))(end_p(""4 49 96))))))))(position((start_p(""4 49 70))(end_p(""4 49 97)))))(((value(Branch((value(PTaggedValue((value(KId P))(position((start_p(""5 101 103))(end_p(""5 101 104)))))((((value(TyCon(TCon l)()))(position((start_p(""5 101 105))(end_p(""5 101 106)))))((value(TyCon(TCon int)()))(position((start_p(""5 101 108))(end_p(""5 101 111)))))))(((value(PRecord((((value(LId u))(position((start_p(""5 101 116))(end_p(""5 101 117)))))((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 101 121))(end_p(""5 101 122)))))))(position((start_p(""5 101 121))(end_p(""5 101 122)))))((value(TyCon(TCon int)()))(position((start_p(""5 101 125))(end_p(""5 101 128)))))))(position((start_p(""5 101 120))(end_p(""5 101 129)))))))(())))(position((start_p(""5 101 114))(end_p(""5 101 133)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""5 101 136))(end_p(""5 101 137)))))))(position((start_p(""5 101 136))(end_p(""5 101 137)))))((value(TyCon(TCon int)()))(position((start_p(""5 101 140))(end_p(""5 101 143)))))))(position((start_p(""5 101 135))(end_p(""5 101 144))))))))(position((start_p(""5 101 103))(end_p(""5 101 145)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""5 101 151))(end_p(""5 101 152)))))()))(position((start_p(""5 101 151))(end_p(""5 101 152)))))((value(Variable((value(Id x))(position((start_p(""5 101 149))(end_p(""5 101 150)))))()))(position((start_p(""5 101 149))(end_p(""5 101 150)))))))(position((start_p(""5 101 149))(end_p(""5 101 150)))))((value(Variable((value(Id y))(position((start_p(""5 101 153))(end_p(""5 101 154)))))()))(position((start_p(""5 101 153))(end_p(""5 101 154)))))))(position((start_p(""5 101 149))(end_p(""5 101 154)))))))(position((start_p(""5 101 103))(end_p(""5 101 154))))))))(position((start_p(""4 49 63))(end_p(""6 155 156)))))))))(position((start_p(""4 49 49))(end_p(""6 155 156)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/47-pattern-matching-11.bad.typing.hopix.human-readable b/flap/tests/03-Typing/47-pattern-matching-11.bad.typing.hopix.human-readable new file mode 100644 index 0000000..c5a8d39 --- /dev/null +++ b/flap/tests/03-Typing/47-pattern-matching-11.bad.typing.hopix.human-readable @@ -0,0 +1,6 @@ +type p<`a, `b> = P(`a, `b) +type l = { l : int } + +let x : int = match (P({ l = 22 }<>, 33)) { + P( { u = (x : int) }<>, (y : int)) -> x + y +} \ No newline at end of file diff --git a/flap/tests/03-Typing/47-pattern-matching-11.good.expected b/flap/tests/03-Typing/47-pattern-matching-11.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/47-pattern-matching-11.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/47-pattern-matching-11.good.typing.hopix b/flap/tests/03-Typing/47-pattern-matching-11.good.typing.hopix new file mode 100644 index 0000000..9ff3cbf --- /dev/null +++ b/flap/tests/03-Typing/47-pattern-matching-11.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineType((value(TCon p))(position((start_p(""1 0 5))(end_p(""1 0 6)))))(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9)))))((value(TId `b))(position((start_p(""1 0 11))(end_p(""1 0 13))))))(DefineSumType((((value(KId P))(position((start_p(""1 0 17))(end_p(""1 0 18)))))(((value(TyVar(TId `a)))(position((start_p(""1 0 19))(end_p(""1 0 21)))))((value(TyVar(TId `b)))(position((start_p(""1 0 23))(end_p(""1 0 25)))))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineType((value(TCon l))(position((start_p(""2 27 32))(end_p(""2 27 33)))))()(DefineRecordType((((value(LId l))(position((start_p(""2 27 38))(end_p(""2 27 39)))))((value(TyCon(TCon int)()))(position((start_p(""2 27 42))(end_p(""2 27 45))))))))))(position((start_p(""2 27 27))(end_p(""2 27 47)))))((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""4 49 53))(end_p(""4 49 54)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 49 57))(end_p(""4 49 60)))))))(position((start_p(""4 49 57))(end_p(""4 49 60))))))((value(Case((value(Tagged((value(KId P))(position((start_p(""4 49 70))(end_p(""4 49 71)))))((((value(TyCon(TCon l)()))(position((start_p(""4 49 72))(end_p(""4 49 73)))))((value(TyCon(TCon int)()))(position((start_p(""4 49 75))(end_p(""4 49 78)))))))(((value(Record((((value(LId l))(position((start_p(""4 49 82))(end_p(""4 49 83)))))((value(Literal((value(LInt 22))(position((start_p(""4 49 86))(end_p(""4 49 88)))))))(position((start_p(""4 49 86))(end_p(""4 49 88)))))))(())))(position((start_p(""4 49 80))(end_p(""4 49 92)))))((value(Literal((value(LInt 33))(position((start_p(""4 49 94))(end_p(""4 49 96)))))))(position((start_p(""4 49 94))(end_p(""4 49 96))))))))(position((start_p(""4 49 70))(end_p(""4 49 97)))))(((value(Branch((value(PTaggedValue((value(KId P))(position((start_p(""5 101 103))(end_p(""5 101 104)))))((((value(TyCon(TCon l)()))(position((start_p(""5 101 105))(end_p(""5 101 106)))))((value(TyCon(TCon int)()))(position((start_p(""5 101 108))(end_p(""5 101 111)))))))(((value(PRecord((((value(LId l))(position((start_p(""5 101 116))(end_p(""5 101 117)))))((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 101 121))(end_p(""5 101 122)))))))(position((start_p(""5 101 121))(end_p(""5 101 122)))))((value(TyCon(TCon int)()))(position((start_p(""5 101 125))(end_p(""5 101 128)))))))(position((start_p(""5 101 120))(end_p(""5 101 129)))))))(())))(position((start_p(""5 101 114))(end_p(""5 101 133)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""5 101 136))(end_p(""5 101 137)))))))(position((start_p(""5 101 136))(end_p(""5 101 137)))))((value(TyCon(TCon int)()))(position((start_p(""5 101 140))(end_p(""5 101 143)))))))(position((start_p(""5 101 135))(end_p(""5 101 144))))))))(position((start_p(""5 101 103))(end_p(""5 101 145)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""5 101 151))(end_p(""5 101 152)))))()))(position((start_p(""5 101 151))(end_p(""5 101 152)))))((value(Variable((value(Id x))(position((start_p(""5 101 149))(end_p(""5 101 150)))))()))(position((start_p(""5 101 149))(end_p(""5 101 150)))))))(position((start_p(""5 101 149))(end_p(""5 101 150)))))((value(Variable((value(Id y))(position((start_p(""5 101 153))(end_p(""5 101 154)))))()))(position((start_p(""5 101 153))(end_p(""5 101 154)))))))(position((start_p(""5 101 149))(end_p(""5 101 154)))))))(position((start_p(""5 101 103))(end_p(""5 101 154))))))))(position((start_p(""4 49 63))(end_p(""6 155 156)))))))))(position((start_p(""4 49 49))(end_p(""6 155 156)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/47-pattern-matching-11.good.typing.hopix.human-readable b/flap/tests/03-Typing/47-pattern-matching-11.good.typing.hopix.human-readable new file mode 100644 index 0000000..f60f667 --- /dev/null +++ b/flap/tests/03-Typing/47-pattern-matching-11.good.typing.hopix.human-readable @@ -0,0 +1,6 @@ +type p<`a, `b> = P(`a, `b) +type l = { l : int } + +let x : int = match (P({ l = 22 }<>, 33)) { + P( { l = (x : int) }<>, (y : int)) -> x + y +} \ No newline at end of file diff --git a/flap/tests/03-Typing/48-pattern-matching-12.bad.expected b/flap/tests/03-Typing/48-pattern-matching-12.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/48-pattern-matching-12.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/48-pattern-matching-12.bad.typing.hopix b/flap/tests/03-Typing/48-pattern-matching-12.bad.typing.hopix new file mode 100644 index 0000000..beaf439 --- /dev/null +++ b/flap/tests/03-Typing/48-pattern-matching-12.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Case((value(Literal((value(LString bar))(position((start_p(""1 0 25))(end_p(""1 0 26)))))))(position((start_p(""1 0 25))(end_p(""1 0 26)))))(((value(Branch((value(PLiteral((value(LInt 0))(position((start_p(""1 0 30))(end_p(""1 0 31)))))))(position((start_p(""1 0 30))(end_p(""1 0 31)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 35))(end_p(""1 0 36)))))))(position((start_p(""1 0 35))(end_p(""1 0 36)))))))(position((start_p(""1 0 30))(end_p(""1 0 36)))))((value(Branch((value(PTypeAnnotation((value PWildcard)(position((start_p(""1 0 40))(end_p(""1 0 41)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 44))(end_p(""1 0 47)))))))(position((start_p(""1 0 39))(end_p(""1 0 48)))))((value(Literal((value(LInt 0))(position((start_p(""1 0 52))(end_p(""1 0 53)))))))(position((start_p(""1 0 52))(end_p(""1 0 53)))))))(position((start_p(""1 0 39))(end_p(""1 0 53))))))))(position((start_p(""1 0 14))(end_p(""1 0 55)))))))))(position((start_p(""1 0 0))(end_p(""1 0 55)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/48-pattern-matching-12.bad.typing.hopix.human-readable b/flap/tests/03-Typing/48-pattern-matching-12.bad.typing.hopix.human-readable new file mode 100644 index 0000000..00a7be5 --- /dev/null +++ b/flap/tests/03-Typing/48-pattern-matching-12.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = match ("bar") { 0 -> 1 | (_ : int) -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/48-pattern-matching-12.good.expected b/flap/tests/03-Typing/48-pattern-matching-12.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/48-pattern-matching-12.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/48-pattern-matching-12.good.typing.hopix b/flap/tests/03-Typing/48-pattern-matching-12.good.typing.hopix new file mode 100644 index 0000000..774181b --- /dev/null +++ b/flap/tests/03-Typing/48-pattern-matching-12.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Case((value(Literal((value(LInt 3))(position((start_p(""1 0 21))(end_p(""1 0 22)))))))(position((start_p(""1 0 21))(end_p(""1 0 22)))))(((value(Branch((value(PLiteral((value(LInt 0))(position((start_p(""1 0 26))(end_p(""1 0 27)))))))(position((start_p(""1 0 26))(end_p(""1 0 27)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 31))(end_p(""1 0 32)))))))(position((start_p(""1 0 31))(end_p(""1 0 32)))))))(position((start_p(""1 0 26))(end_p(""1 0 32)))))((value(Branch((value(PTypeAnnotation((value PWildcard)(position((start_p(""1 0 36))(end_p(""1 0 37)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 40))(end_p(""1 0 43)))))))(position((start_p(""1 0 35))(end_p(""1 0 44)))))((value(Literal((value(LInt 0))(position((start_p(""1 0 48))(end_p(""1 0 49)))))))(position((start_p(""1 0 48))(end_p(""1 0 49)))))))(position((start_p(""1 0 35))(end_p(""1 0 49))))))))(position((start_p(""1 0 14))(end_p(""1 0 51)))))))))(position((start_p(""1 0 0))(end_p(""1 0 51)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/48-pattern-matching-12.good.typing.hopix.human-readable b/flap/tests/03-Typing/48-pattern-matching-12.good.typing.hopix.human-readable new file mode 100644 index 0000000..40e73b7 --- /dev/null +++ b/flap/tests/03-Typing/48-pattern-matching-12.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = match (3) { 0 -> 1 | (_ : int) -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/49-pattern-matching-13.bad.expected b/flap/tests/03-Typing/49-pattern-matching-13.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/49-pattern-matching-13.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/49-pattern-matching-13.bad.typing.hopix b/flap/tests/03-Typing/49-pattern-matching-13.bad.typing.hopix new file mode 100644 index 0000000..db9738a --- /dev/null +++ b/flap/tests/03-Typing/49-pattern-matching-13.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Case((value(Literal((value(LString Doctor))(position((start_p(""1 0 28))(end_p(""1 0 29)))))))(position((start_p(""1 0 28))(end_p(""1 0 29)))))(((value(Branch((value(PLiteral((value(LString Doctor))(position((start_p(""1 0 40))(end_p(""1 0 41)))))))(position((start_p(""1 0 40))(end_p(""1 0 41)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 45))(end_p(""1 0 46)))))))(position((start_p(""1 0 45))(end_p(""1 0 46)))))))(position((start_p(""1 0 40))(end_p(""1 0 46)))))((value(Branch((value(PTypeAnnotation((value PWildcard)(position((start_p(""1 0 50))(end_p(""1 0 51)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 54))(end_p(""1 0 57)))))))(position((start_p(""1 0 49))(end_p(""1 0 58)))))((value(Literal((value(LInt 0))(position((start_p(""1 0 62))(end_p(""1 0 63)))))))(position((start_p(""1 0 62))(end_p(""1 0 63)))))))(position((start_p(""1 0 49))(end_p(""1 0 63))))))))(position((start_p(""1 0 14))(end_p(""1 0 65)))))))))(position((start_p(""1 0 0))(end_p(""1 0 65)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/49-pattern-matching-13.bad.typing.hopix.human-readable b/flap/tests/03-Typing/49-pattern-matching-13.bad.typing.hopix.human-readable new file mode 100644 index 0000000..2f796df --- /dev/null +++ b/flap/tests/03-Typing/49-pattern-matching-13.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = match ("Doctor") { "Doctor" -> 1 | (_ : int) -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/49-pattern-matching-13.good.expected b/flap/tests/03-Typing/49-pattern-matching-13.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/49-pattern-matching-13.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/49-pattern-matching-13.good.typing.hopix b/flap/tests/03-Typing/49-pattern-matching-13.good.typing.hopix new file mode 100644 index 0000000..5b80c4e --- /dev/null +++ b/flap/tests/03-Typing/49-pattern-matching-13.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Case((value(Literal((value(LString Doctor))(position((start_p(""1 0 28))(end_p(""1 0 29)))))))(position((start_p(""1 0 28))(end_p(""1 0 29)))))(((value(Branch((value(PLiteral((value(LString Doctor))(position((start_p(""1 0 40))(end_p(""1 0 41)))))))(position((start_p(""1 0 40))(end_p(""1 0 41)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 45))(end_p(""1 0 46)))))))(position((start_p(""1 0 45))(end_p(""1 0 46)))))))(position((start_p(""1 0 40))(end_p(""1 0 46)))))((value(Branch((value(PTypeAnnotation((value PWildcard)(position((start_p(""1 0 50))(end_p(""1 0 51)))))((value(TyCon(TCon string)()))(position((start_p(""1 0 54))(end_p(""1 0 60)))))))(position((start_p(""1 0 49))(end_p(""1 0 61)))))((value(Literal((value(LInt 0))(position((start_p(""1 0 65))(end_p(""1 0 66)))))))(position((start_p(""1 0 65))(end_p(""1 0 66)))))))(position((start_p(""1 0 49))(end_p(""1 0 66))))))))(position((start_p(""1 0 14))(end_p(""1 0 68)))))))))(position((start_p(""1 0 0))(end_p(""1 0 68)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/49-pattern-matching-13.good.typing.hopix.human-readable b/flap/tests/03-Typing/49-pattern-matching-13.good.typing.hopix.human-readable new file mode 100644 index 0000000..5d859a7 --- /dev/null +++ b/flap/tests/03-Typing/49-pattern-matching-13.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = match ("Doctor") { "Doctor" -> 1 | (_ : string) -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/50-pattern-matching-14.bad.expected b/flap/tests/03-Typing/50-pattern-matching-14.bad.expected new file mode 100644 index 0000000..7f1a149 --- /dev/null +++ b/flap/tests/03-Typing/50-pattern-matching-14.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + char +Given: + int diff --git a/flap/tests/03-Typing/50-pattern-matching-14.bad.typing.hopix b/flap/tests/03-Typing/50-pattern-matching-14.bad.typing.hopix new file mode 100644 index 0000000..098d934 --- /dev/null +++ b/flap/tests/03-Typing/50-pattern-matching-14.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Case((value(Literal((value(LChar x))(position((start_p(""1 0 21))(end_p(""1 0 24)))))))(position((start_p(""1 0 21))(end_p(""1 0 24)))))(((value(Branch((value(PLiteral((value(LInt 0))(position((start_p(""1 0 28))(end_p(""1 0 29)))))))(position((start_p(""1 0 28))(end_p(""1 0 29)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 33))(end_p(""1 0 34)))))))(position((start_p(""1 0 33))(end_p(""1 0 34)))))))(position((start_p(""1 0 28))(end_p(""1 0 34)))))((value(Branch((value(PTypeAnnotation((value PWildcard)(position((start_p(""1 0 38))(end_p(""1 0 39)))))((value(TyCon(TCon char)()))(position((start_p(""1 0 42))(end_p(""1 0 46)))))))(position((start_p(""1 0 37))(end_p(""1 0 47)))))((value(Literal((value(LInt 0))(position((start_p(""1 0 51))(end_p(""1 0 52)))))))(position((start_p(""1 0 51))(end_p(""1 0 52)))))))(position((start_p(""1 0 37))(end_p(""1 0 52))))))))(position((start_p(""1 0 14))(end_p(""1 0 54)))))))))(position((start_p(""1 0 0))(end_p(""1 0 54)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/50-pattern-matching-14.bad.typing.hopix.human-readable b/flap/tests/03-Typing/50-pattern-matching-14.bad.typing.hopix.human-readable new file mode 100644 index 0000000..13cd72f --- /dev/null +++ b/flap/tests/03-Typing/50-pattern-matching-14.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = match ('x') { 0 -> 1 | (_ : char) -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/50-pattern-matching-14.good.expected b/flap/tests/03-Typing/50-pattern-matching-14.good.expected new file mode 100644 index 0000000..c2f1b13 --- /dev/null +++ b/flap/tests/03-Typing/50-pattern-matching-14.good.expected @@ -0,0 +1 @@ +x : int diff --git a/flap/tests/03-Typing/50-pattern-matching-14.good.typing.hopix b/flap/tests/03-Typing/50-pattern-matching-14.good.typing.hopix new file mode 100644 index 0000000..90eea4a --- /dev/null +++ b/flap/tests/03-Typing/50-pattern-matching-14.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Case((value(Literal((value(LChar x))(position((start_p(""1 0 21))(end_p(""1 0 24)))))))(position((start_p(""1 0 21))(end_p(""1 0 24)))))(((value(Branch((value(PLiteral((value(LChar x))(position((start_p(""1 0 28))(end_p(""1 0 31)))))))(position((start_p(""1 0 28))(end_p(""1 0 31)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 35))(end_p(""1 0 36)))))))(position((start_p(""1 0 35))(end_p(""1 0 36)))))))(position((start_p(""1 0 28))(end_p(""1 0 36)))))((value(Branch((value(PTypeAnnotation((value PWildcard)(position((start_p(""1 0 40))(end_p(""1 0 41)))))((value(TyCon(TCon char)()))(position((start_p(""1 0 44))(end_p(""1 0 48)))))))(position((start_p(""1 0 39))(end_p(""1 0 49)))))((value(Literal((value(LInt 0))(position((start_p(""1 0 53))(end_p(""1 0 54)))))))(position((start_p(""1 0 53))(end_p(""1 0 54)))))))(position((start_p(""1 0 39))(end_p(""1 0 54))))))))(position((start_p(""1 0 14))(end_p(""1 0 56)))))))))(position((start_p(""1 0 0))(end_p(""1 0 56)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/50-pattern-matching-14.good.typing.hopix.human-readable b/flap/tests/03-Typing/50-pattern-matching-14.good.typing.hopix.human-readable new file mode 100644 index 0000000..ae0c74b --- /dev/null +++ b/flap/tests/03-Typing/50-pattern-matching-14.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = match ('x') { 'x' -> 1 | (_ : char) -> 0 } \ No newline at end of file diff --git a/flap/tests/03-Typing/51-ref.bad.expected b/flap/tests/03-Typing/51-ref.bad.expected new file mode 100644 index 0000000..6f2052a --- /dev/null +++ b/flap/tests/03-Typing/51-ref.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + mut diff --git a/flap/tests/03-Typing/51-ref.bad.typing.hopix b/flap/tests/03-Typing/51-ref.bad.typing.hopix new file mode 100644 index 0000000..6a4eea2 --- /dev/null +++ b/flap/tests/03-Typing/51-ref.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Ref((value(Literal((value(LInt 0))(position((start_p(""1 0 19))(end_p(""1 0 20)))))))(position((start_p(""1 0 18))(end_p(""1 0 21)))))))(position((start_p(""1 0 14))(end_p(""1 0 21)))))))))(position((start_p(""1 0 0))(end_p(""1 0 21)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/51-ref.bad.typing.hopix.human-readable b/flap/tests/03-Typing/51-ref.bad.typing.hopix.human-readable new file mode 100644 index 0000000..fb16f44 --- /dev/null +++ b/flap/tests/03-Typing/51-ref.bad.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : int = ref (0) \ No newline at end of file diff --git a/flap/tests/03-Typing/51-ref.good.expected b/flap/tests/03-Typing/51-ref.good.expected new file mode 100644 index 0000000..0963344 --- /dev/null +++ b/flap/tests/03-Typing/51-ref.good.expected @@ -0,0 +1 @@ +x : mut diff --git a/flap/tests/03-Typing/51-ref.good.typing.hopix b/flap/tests/03-Typing/51-ref.good.typing.hopix new file mode 100644 index 0000000..49a9b20 --- /dev/null +++ b/flap/tests/03-Typing/51-ref.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LInt 0))(position((start_p(""1 0 24))(end_p(""1 0 25)))))))(position((start_p(""1 0 23))(end_p(""1 0 26)))))))(position((start_p(""1 0 19))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/51-ref.good.typing.hopix.human-readable b/flap/tests/03-Typing/51-ref.good.typing.hopix.human-readable new file mode 100644 index 0000000..039073e --- /dev/null +++ b/flap/tests/03-Typing/51-ref.good.typing.hopix.human-readable @@ -0,0 +1 @@ +let x : mut = ref (0) \ No newline at end of file diff --git a/flap/tests/03-Typing/52-assign.bad.typing.hopix.human-readable b/flap/tests/03-Typing/52-assign.bad.typing.hopix.human-readable new file mode 100644 index 0000000..e95ffdd --- /dev/null +++ b/flap/tests/03-Typing/52-assign.bad.typing.hopix.human-readable @@ -0,0 +1,4 @@ +let x : mut = 0 + +let main : unit = + x := 1 \ No newline at end of file diff --git a/flap/tests/03-Typing/52-assign.good.expected b/flap/tests/03-Typing/52-assign.good.expected new file mode 100644 index 0000000..7c7a984 --- /dev/null +++ b/flap/tests/03-Typing/52-assign.good.expected @@ -0,0 +1,2 @@ +x : mut +main : unit diff --git a/flap/tests/03-Typing/52-assign.good.typing.hopix b/flap/tests/03-Typing/52-assign.good.typing.hopix new file mode 100644 index 0000000..78655e9 --- /dev/null +++ b/flap/tests/03-Typing/52-assign.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LInt 0))(position((start_p(""1 0 24))(end_p(""1 0 25)))))))(position((start_p(""1 0 23))(end_p(""1 0 26)))))))(position((start_p(""1 0 19))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 28 32))(end_p(""3 28 36)))))(((value(ForallTy()((value(TyCon(TCon unit)()))(position((start_p(""3 28 39))(end_p(""3 28 43)))))))(position((start_p(""3 28 39))(end_p(""3 28 43))))))((value(Assign((value(Variable((value(Id x))(position((start_p(""4 46 50))(end_p(""4 46 51)))))()))(position((start_p(""4 46 50))(end_p(""4 46 51)))))((value(Literal((value(LInt 1))(position((start_p(""4 46 55))(end_p(""4 46 56)))))))(position((start_p(""4 46 55))(end_p(""4 46 56)))))))(position((start_p(""4 46 50))(end_p(""4 46 56)))))))))(position((start_p(""3 28 28))(end_p(""4 46 56)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/52-assign.good.typing.hopix.human-readable b/flap/tests/03-Typing/52-assign.good.typing.hopix.human-readable new file mode 100644 index 0000000..44b0071 --- /dev/null +++ b/flap/tests/03-Typing/52-assign.good.typing.hopix.human-readable @@ -0,0 +1,4 @@ +let x : mut = ref (0) + +let main : unit = + x := 1 \ No newline at end of file diff --git a/flap/tests/03-Typing/53-read.bad.expected b/flap/tests/03-Typing/53-read.bad.expected new file mode 100644 index 0000000..cae9c52 --- /dev/null +++ b/flap/tests/03-Typing/53-read.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + string +Given: + int diff --git a/flap/tests/03-Typing/53-read.bad.typing.hopix b/flap/tests/03-Typing/53-read.bad.typing.hopix new file mode 100644 index 0000000..3fc3d6e --- /dev/null +++ b/flap/tests/03-Typing/53-read.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LInt 0))(position((start_p(""1 0 24))(end_p(""1 0 25)))))))(position((start_p(""1 0 23))(end_p(""1 0 26)))))))(position((start_p(""1 0 19))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 28 32))(end_p(""3 28 36)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""3 28 39))(end_p(""3 28 45)))))))(position((start_p(""3 28 39))(end_p(""3 28 45))))))((value(Read((value(Variable((value(Id x))(position((start_p(""4 48 53))(end_p(""4 48 54)))))()))(position((start_p(""4 48 53))(end_p(""4 48 54)))))))(position((start_p(""4 48 52))(end_p(""4 48 54)))))))))(position((start_p(""3 28 28))(end_p(""4 48 54)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/53-read.bad.typing.hopix.human-readable b/flap/tests/03-Typing/53-read.bad.typing.hopix.human-readable new file mode 100644 index 0000000..083c35a --- /dev/null +++ b/flap/tests/03-Typing/53-read.bad.typing.hopix.human-readable @@ -0,0 +1,4 @@ +let x : mut = ref (0) + +let main : string = + !x \ No newline at end of file diff --git a/flap/tests/03-Typing/53-read.good.expected b/flap/tests/03-Typing/53-read.good.expected new file mode 100644 index 0000000..2fab0c6 --- /dev/null +++ b/flap/tests/03-Typing/53-read.good.expected @@ -0,0 +1,2 @@ +x : mut +main : int diff --git a/flap/tests/03-Typing/53-read.good.typing.hopix b/flap/tests/03-Typing/53-read.good.typing.hopix new file mode 100644 index 0000000..bd5d4ae --- /dev/null +++ b/flap/tests/03-Typing/53-read.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LInt 0))(position((start_p(""1 0 24))(end_p(""1 0 25)))))))(position((start_p(""1 0 23))(end_p(""1 0 26)))))))(position((start_p(""1 0 19))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 28 32))(end_p(""3 28 36)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 39))(end_p(""3 28 42)))))))(position((start_p(""3 28 39))(end_p(""3 28 42))))))((value(Read((value(Variable((value(Id x))(position((start_p(""4 45 50))(end_p(""4 45 51)))))()))(position((start_p(""4 45 50))(end_p(""4 45 51)))))))(position((start_p(""4 45 49))(end_p(""4 45 51)))))))))(position((start_p(""3 28 28))(end_p(""4 45 51)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/53-read.good.typing.hopix.human-readable b/flap/tests/03-Typing/53-read.good.typing.hopix.human-readable new file mode 100644 index 0000000..8ee4ccf --- /dev/null +++ b/flap/tests/03-Typing/53-read.good.typing.hopix.human-readable @@ -0,0 +1,4 @@ +let x : mut = ref (0) + +let main : int = + !x \ No newline at end of file diff --git a/flap/tests/03-Typing/54-sequence.bad.expected b/flap/tests/03-Typing/54-sequence.bad.expected new file mode 100644 index 0000000..c091cc2 --- /dev/null +++ b/flap/tests/03-Typing/54-sequence.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + int +Given: + string diff --git a/flap/tests/03-Typing/54-sequence.bad.typing.hopix b/flap/tests/03-Typing/54-sequence.bad.typing.hopix new file mode 100644 index 0000000..ca7b345 --- /dev/null +++ b/flap/tests/03-Typing/54-sequence.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LInt 0))(position((start_p(""1 0 24))(end_p(""1 0 25)))))))(position((start_p(""1 0 23))(end_p(""1 0 26)))))))(position((start_p(""1 0 19))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 28 32))(end_p(""3 28 36)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 39))(end_p(""3 28 42)))))))(position((start_p(""3 28 39))(end_p(""3 28 42))))))((value(Sequence(((value(Assign((value(Variable((value(Id x))(position((start_p(""4 45 49))(end_p(""4 45 50)))))()))(position((start_p(""4 45 49))(end_p(""4 45 50)))))((value(Literal((value(LString bar))(position((start_p(""4 45 58))(end_p(""4 45 59)))))))(position((start_p(""4 45 58))(end_p(""4 45 59)))))))(position((start_p(""4 45 49))(end_p(""4 45 59)))))((value(Read((value(Variable((value(Id x))(position((start_p(""5 61 66))(end_p(""5 61 67)))))()))(position((start_p(""5 61 66))(end_p(""5 61 67)))))))(position((start_p(""5 61 65))(end_p(""5 61 67))))))))(position((start_p(""4 45 49))(end_p(""5 61 67)))))))))(position((start_p(""3 28 28))(end_p(""5 61 67)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/54-sequence.bad.typing.hopix.human-readable b/flap/tests/03-Typing/54-sequence.bad.typing.hopix.human-readable new file mode 100644 index 0000000..d54d0ce --- /dev/null +++ b/flap/tests/03-Typing/54-sequence.bad.typing.hopix.human-readable @@ -0,0 +1,5 @@ +let x : mut = ref (0) + +let main : int = + x := "bar"; + !x \ No newline at end of file diff --git a/flap/tests/03-Typing/54-sequence.good.expected b/flap/tests/03-Typing/54-sequence.good.expected new file mode 100644 index 0000000..2fab0c6 --- /dev/null +++ b/flap/tests/03-Typing/54-sequence.good.expected @@ -0,0 +1,2 @@ +x : mut +main : int diff --git a/flap/tests/03-Typing/54-sequence.good.typing.hopix b/flap/tests/03-Typing/54-sequence.good.typing.hopix new file mode 100644 index 0000000..b96501a --- /dev/null +++ b/flap/tests/03-Typing/54-sequence.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LInt 0))(position((start_p(""1 0 24))(end_p(""1 0 25)))))))(position((start_p(""1 0 23))(end_p(""1 0 26)))))))(position((start_p(""1 0 19))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 28 32))(end_p(""3 28 36)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 39))(end_p(""3 28 42)))))))(position((start_p(""3 28 39))(end_p(""3 28 42))))))((value(Sequence(((value(Assign((value(Variable((value(Id x))(position((start_p(""4 45 49))(end_p(""4 45 50)))))()))(position((start_p(""4 45 49))(end_p(""4 45 50)))))((value(Literal((value(LInt 1))(position((start_p(""4 45 54))(end_p(""4 45 55)))))))(position((start_p(""4 45 54))(end_p(""4 45 55)))))))(position((start_p(""4 45 49))(end_p(""4 45 55)))))((value(Read((value(Variable((value(Id x))(position((start_p(""5 57 62))(end_p(""5 57 63)))))()))(position((start_p(""5 57 62))(end_p(""5 57 63)))))))(position((start_p(""5 57 61))(end_p(""5 57 63))))))))(position((start_p(""4 45 49))(end_p(""5 57 63)))))))))(position((start_p(""3 28 28))(end_p(""5 57 63)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/54-sequence.good.typing.hopix.human-readable b/flap/tests/03-Typing/54-sequence.good.typing.hopix.human-readable new file mode 100644 index 0000000..6761a0d --- /dev/null +++ b/flap/tests/03-Typing/54-sequence.good.typing.hopix.human-readable @@ -0,0 +1,5 @@ +let x : mut = ref (0) + +let main : int = + x := 1; + !x \ No newline at end of file diff --git a/flap/tests/03-Typing/55-while.bad.expected b/flap/tests/03-Typing/55-while.bad.expected new file mode 100644 index 0000000..8eb7e6d --- /dev/null +++ b/flap/tests/03-Typing/55-while.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + mut +Given: + mut diff --git a/flap/tests/03-Typing/55-while.bad.typing.hopix b/flap/tests/03-Typing/55-while.bad.typing.hopix new file mode 100644 index 0000000..50ff717 --- /dev/null +++ b/flap/tests/03-Typing/55-while.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LString foo))(position((start_p(""1 0 28))(end_p(""1 0 29)))))))(position((start_p(""1 0 23))(end_p(""1 0 30)))))))(position((start_p(""1 0 19))(end_p(""1 0 30)))))))))(position((start_p(""1 0 0))(end_p(""1 0 30)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 32 36))(end_p(""3 32 40)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 32 43))(end_p(""3 32 46)))))))(position((start_p(""3 32 43))(end_p(""3 32 46))))))((value(Sequence(((value(While((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""4 49 63))(end_p(""4 49 65)))))()))(position((start_p(""4 49 63))(end_p(""4 49 65)))))((value(Read((value(Variable((value(Id x))(position((start_p(""4 49 61))(end_p(""4 49 62)))))()))(position((start_p(""4 49 61))(end_p(""4 49 62)))))))(position((start_p(""4 49 60))(end_p(""4 49 62)))))))(position((start_p(""4 49 60))(end_p(""4 49 62)))))((value(Literal((value(LInt 0))(position((start_p(""4 49 66))(end_p(""4 49 67)))))))(position((start_p(""4 49 66))(end_p(""4 49 67)))))))(position((start_p(""4 49 60))(end_p(""4 49 67)))))((value(Assign((value(Variable((value(Id x))(position((start_p(""5 71 77))(end_p(""5 71 78)))))()))(position((start_p(""5 71 77))(end_p(""5 71 78)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""5 71 85))(end_p(""5 71 86)))))()))(position((start_p(""5 71 85))(end_p(""5 71 86)))))((value(Read((value(Variable((value(Id x))(position((start_p(""5 71 83))(end_p(""5 71 84)))))()))(position((start_p(""5 71 83))(end_p(""5 71 84)))))))(position((start_p(""5 71 82))(end_p(""5 71 84)))))))(position((start_p(""5 71 82))(end_p(""5 71 84)))))((value(Literal((value(LInt 1))(position((start_p(""5 71 87))(end_p(""5 71 88)))))))(position((start_p(""5 71 87))(end_p(""5 71 88)))))))(position((start_p(""5 71 82))(end_p(""5 71 88)))))))(position((start_p(""5 71 77))(end_p(""5 71 88)))))))(position((start_p(""4 49 53))(end_p(""6 89 94)))))((value(Read((value(Variable((value(Id x))(position((start_p(""7 96 101))(end_p(""7 96 102)))))()))(position((start_p(""7 96 101))(end_p(""7 96 102)))))))(position((start_p(""7 96 100))(end_p(""7 96 102))))))))(position((start_p(""4 49 53))(end_p(""7 96 102)))))))))(position((start_p(""3 32 32))(end_p(""7 96 102)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/55-while.bad.typing.hopix.human-readable b/flap/tests/03-Typing/55-while.bad.typing.hopix.human-readable new file mode 100644 index 0000000..8f5487c --- /dev/null +++ b/flap/tests/03-Typing/55-while.bad.typing.hopix.human-readable @@ -0,0 +1,7 @@ +let x : mut = ref ("foo") + +let main : int = + while (!x >? 0) { + x := !x - 1 + }; + !x \ No newline at end of file diff --git a/flap/tests/03-Typing/55-while.good.expected b/flap/tests/03-Typing/55-while.good.expected new file mode 100644 index 0000000..2fab0c6 --- /dev/null +++ b/flap/tests/03-Typing/55-while.good.expected @@ -0,0 +1,2 @@ +x : mut +main : int diff --git a/flap/tests/03-Typing/55-while.good.typing.hopix b/flap/tests/03-Typing/55-while.good.typing.hopix new file mode 100644 index 0000000..60130cf --- /dev/null +++ b/flap/tests/03-Typing/55-while.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LInt 4))(position((start_p(""1 0 24))(end_p(""1 0 25)))))))(position((start_p(""1 0 23))(end_p(""1 0 26)))))))(position((start_p(""1 0 19))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 28 32))(end_p(""3 28 36)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 39))(end_p(""3 28 42)))))))(position((start_p(""3 28 39))(end_p(""3 28 42))))))((value(Sequence(((value(While((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""4 45 59))(end_p(""4 45 61)))))()))(position((start_p(""4 45 59))(end_p(""4 45 61)))))((value(Read((value(Variable((value(Id x))(position((start_p(""4 45 57))(end_p(""4 45 58)))))()))(position((start_p(""4 45 57))(end_p(""4 45 58)))))))(position((start_p(""4 45 56))(end_p(""4 45 58)))))))(position((start_p(""4 45 56))(end_p(""4 45 58)))))((value(Literal((value(LInt 0))(position((start_p(""4 45 62))(end_p(""4 45 63)))))))(position((start_p(""4 45 62))(end_p(""4 45 63)))))))(position((start_p(""4 45 56))(end_p(""4 45 63)))))((value(Assign((value(Variable((value(Id x))(position((start_p(""5 67 73))(end_p(""5 67 74)))))()))(position((start_p(""5 67 73))(end_p(""5 67 74)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""5 67 81))(end_p(""5 67 82)))))()))(position((start_p(""5 67 81))(end_p(""5 67 82)))))((value(Read((value(Variable((value(Id x))(position((start_p(""5 67 79))(end_p(""5 67 80)))))()))(position((start_p(""5 67 79))(end_p(""5 67 80)))))))(position((start_p(""5 67 78))(end_p(""5 67 80)))))))(position((start_p(""5 67 78))(end_p(""5 67 80)))))((value(Literal((value(LInt 1))(position((start_p(""5 67 83))(end_p(""5 67 84)))))))(position((start_p(""5 67 83))(end_p(""5 67 84)))))))(position((start_p(""5 67 78))(end_p(""5 67 84)))))))(position((start_p(""5 67 73))(end_p(""5 67 84)))))))(position((start_p(""4 45 49))(end_p(""6 85 90)))))((value(Read((value(Variable((value(Id x))(position((start_p(""7 92 97))(end_p(""7 92 98)))))()))(position((start_p(""7 92 97))(end_p(""7 92 98)))))))(position((start_p(""7 92 96))(end_p(""7 92 98))))))))(position((start_p(""4 45 49))(end_p(""7 92 98)))))))))(position((start_p(""3 28 28))(end_p(""7 92 98)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/55-while.good.typing.hopix.human-readable b/flap/tests/03-Typing/55-while.good.typing.hopix.human-readable new file mode 100644 index 0000000..16158a4 --- /dev/null +++ b/flap/tests/03-Typing/55-while.good.typing.hopix.human-readable @@ -0,0 +1,7 @@ +let x : mut = ref (4) + +let main : int = + while (!x >? 0) { + x := !x - 1 + }; + !x \ No newline at end of file diff --git a/flap/tests/03-Typing/56-for.bad.expected b/flap/tests/03-Typing/56-for.bad.expected new file mode 100644 index 0000000..89e0ed1 --- /dev/null +++ b/flap/tests/03-Typing/56-for.bad.expected @@ -0,0 +1,6 @@ +Error (typechecking) + Type mismatch. +Expected: + mut +Given: + mut diff --git a/flap/tests/03-Typing/56-for.bad.typing.hopix b/flap/tests/03-Typing/56-for.bad.typing.hopix new file mode 100644 index 0000000..73dce53 --- /dev/null +++ b/flap/tests/03-Typing/56-for.bad.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon string)()))(position((start_p(""1 0 12))(end_p(""1 0 18))))))))(position((start_p(""1 0 8))(end_p(""1 0 19)))))))(position((start_p(""1 0 8))(end_p(""1 0 19))))))((value(Ref((value(Literal((value(LInt 4))(position((start_p(""1 0 27))(end_p(""1 0 28)))))))(position((start_p(""1 0 26))(end_p(""1 0 29)))))))(position((start_p(""1 0 22))(end_p(""1 0 29)))))))))(position((start_p(""1 0 0))(end_p(""1 0 29)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 31 35))(end_p(""3 31 39)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 31 42))(end_p(""3 31 45)))))))(position((start_p(""3 31 42))(end_p(""3 31 45))))))((value(Sequence(((value(For((value(Id i))(position((start_p(""4 48 56))(end_p(""4 48 57)))))((value(Literal((value(LInt 0))(position((start_p(""4 48 64))(end_p(""4 48 65)))))))(position((start_p(""4 48 64))(end_p(""4 48 65)))))((value(Literal((value(LInt 30))(position((start_p(""4 48 71))(end_p(""4 48 73)))))))(position((start_p(""4 48 71))(end_p(""4 48 73)))))((value(Assign((value(Variable((value(Id x))(position((start_p(""5 77 83))(end_p(""5 77 84)))))()))(position((start_p(""5 77 83))(end_p(""5 77 84)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""5 77 91))(end_p(""5 77 92)))))()))(position((start_p(""5 77 91))(end_p(""5 77 92)))))((value(Read((value(Variable((value(Id x))(position((start_p(""5 77 89))(end_p(""5 77 90)))))()))(position((start_p(""5 77 89))(end_p(""5 77 90)))))))(position((start_p(""5 77 88))(end_p(""5 77 90)))))))(position((start_p(""5 77 88))(end_p(""5 77 90)))))((value(Literal((value(LInt 1))(position((start_p(""5 77 93))(end_p(""5 77 94)))))))(position((start_p(""5 77 93))(end_p(""5 77 94)))))))(position((start_p(""5 77 88))(end_p(""5 77 94)))))))(position((start_p(""5 77 83))(end_p(""5 77 94)))))))(position((start_p(""4 48 52))(end_p(""6 95 100)))))((value(Read((value(Variable((value(Id x))(position((start_p(""7 102 107))(end_p(""7 102 108)))))()))(position((start_p(""7 102 107))(end_p(""7 102 108)))))))(position((start_p(""7 102 106))(end_p(""7 102 108))))))))(position((start_p(""4 48 52))(end_p(""7 102 108)))))))))(position((start_p(""3 31 31))(end_p(""7 102 108)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/56-for.bad.typing.hopix.human-readable b/flap/tests/03-Typing/56-for.bad.typing.hopix.human-readable new file mode 100644 index 0000000..b9e8455 --- /dev/null +++ b/flap/tests/03-Typing/56-for.bad.typing.hopix.human-readable @@ -0,0 +1,7 @@ +let x : mut = ref (4) + +let main : int = + for i from (0) to (30) { + x := !x + 1 + }; + !x \ No newline at end of file diff --git a/flap/tests/03-Typing/56-for.good.expected b/flap/tests/03-Typing/56-for.good.expected new file mode 100644 index 0000000..2fab0c6 --- /dev/null +++ b/flap/tests/03-Typing/56-for.good.expected @@ -0,0 +1,2 @@ +x : mut +main : int diff --git a/flap/tests/03-Typing/56-for.good.typing.hopix b/flap/tests/03-Typing/56-for.good.typing.hopix new file mode 100644 index 0000000..e33948e --- /dev/null +++ b/flap/tests/03-Typing/56-for.good.typing.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon mut)(((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16))))))((value(Ref((value(Literal((value(LInt 4))(position((start_p(""1 0 24))(end_p(""1 0 25)))))))(position((start_p(""1 0 23))(end_p(""1 0 26)))))))(position((start_p(""1 0 19))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""3 28 32))(end_p(""3 28 36)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""3 28 39))(end_p(""3 28 42)))))))(position((start_p(""3 28 39))(end_p(""3 28 42))))))((value(Sequence(((value(For((value(Id i))(position((start_p(""4 45 53))(end_p(""4 45 54)))))((value(Literal((value(LInt 0))(position((start_p(""4 45 61))(end_p(""4 45 62)))))))(position((start_p(""4 45 61))(end_p(""4 45 62)))))((value(Literal((value(LInt 30))(position((start_p(""4 45 68))(end_p(""4 45 70)))))))(position((start_p(""4 45 68))(end_p(""4 45 70)))))((value(Assign((value(Variable((value(Id x))(position((start_p(""5 74 80))(end_p(""5 74 81)))))()))(position((start_p(""5 74 80))(end_p(""5 74 81)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""5 74 88))(end_p(""5 74 89)))))()))(position((start_p(""5 74 88))(end_p(""5 74 89)))))((value(Read((value(Variable((value(Id x))(position((start_p(""5 74 86))(end_p(""5 74 87)))))()))(position((start_p(""5 74 86))(end_p(""5 74 87)))))))(position((start_p(""5 74 85))(end_p(""5 74 87)))))))(position((start_p(""5 74 85))(end_p(""5 74 87)))))((value(Literal((value(LInt 1))(position((start_p(""5 74 90))(end_p(""5 74 91)))))))(position((start_p(""5 74 90))(end_p(""5 74 91)))))))(position((start_p(""5 74 85))(end_p(""5 74 91)))))))(position((start_p(""5 74 80))(end_p(""5 74 91)))))))(position((start_p(""4 45 49))(end_p(""6 92 97)))))((value(Read((value(Variable((value(Id x))(position((start_p(""7 99 104))(end_p(""7 99 105)))))()))(position((start_p(""7 99 104))(end_p(""7 99 105)))))))(position((start_p(""7 99 103))(end_p(""7 99 105))))))))(position((start_p(""4 45 49))(end_p(""7 99 105)))))))))(position((start_p(""3 28 28))(end_p(""7 99 105)))))) \ No newline at end of file diff --git a/flap/tests/03-Typing/56-for.good.typing.hopix.human-readable b/flap/tests/03-Typing/56-for.good.typing.hopix.human-readable new file mode 100644 index 0000000..a645033 --- /dev/null +++ b/flap/tests/03-Typing/56-for.good.typing.hopix.human-readable @@ -0,0 +1,7 @@ +let x : mut = ref (4) + +let main : int = + for i from (0) to (30) { + x := !x + 1 + }; + !x \ No newline at end of file diff --git a/flap/tests/Makefile b/flap/tests/Makefile index 4a5fd80..a1adea0 100644 --- a/flap/tests/Makefile +++ b/flap/tests/Makefile @@ -1,8 +1,10 @@ FLAP?=../_build/default/src/flap.exe JALONS=\ 01-Parsing.results \ - 01-Parsing-no-positions.results -EXTS=parsing.hopix parsing-no-positions.hopix + 01-Parsing-no-positions.results \ + 02-Interpreter.results \ + 03-Typing.results +EXTS=parsing.hopix parsing-no-positions.hopix eval.hopix typing.hopix .PHONY: all clean test FAKE .PRECIOUS: %.output %.expected %.score diff --git a/jalons/jalon-3.pdf b/jalons/jalon-3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3fcbd6e54143bc88ce9437a8166c6c4e20f03cbf GIT binary patch literal 382805 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≤~P>3g-}Trp6FDBBsV*d{MiN`bOer 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 z

    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