From a1372040b4212be6af0b52a304de3054ec762619 Mon Sep 17 00:00:00 2001
From: 1Regina <46968488+1Regina@users.noreply.github.com>
Date: Fri, 11 Jun 2021 11:47:03 +0800
Subject: Add RGL dependencies - Prelude and Predef
---
testsuite/compiler/check/lincat-types/Predef.gf | 48 +++++++
testsuite/compiler/check/strMatch/Prelude.gf | 161 ++++++++++++++++++++++++
2 files changed, 209 insertions(+)
create mode 100644 testsuite/compiler/check/lincat-types/Predef.gf
create mode 100644 testsuite/compiler/check/strMatch/Prelude.gf
(limited to 'testsuite/compiler')
diff --git a/testsuite/compiler/check/lincat-types/Predef.gf b/testsuite/compiler/check/lincat-types/Predef.gf
new file mode 100644
index 000000000..fded5ae38
--- /dev/null
+++ b/testsuite/compiler/check/lincat-types/Predef.gf
@@ -0,0 +1,48 @@
+--1 Predefined functions for concrete syntax
+
+-- The definitions of these constants are hard-coded in GF, and defined
+-- in Predef.hs (gf-core/src/compiler/GF/Compile/Compute/Predef.hs).
+-- Applying them to run-time variables leads to compiler errors that are
+-- often only detected at the code generation time.
+
+resource Predef = {
+
+-- This type of booleans is for internal use only.
+
+ param PBool = PTrue | PFalse ;
+
+ oper Error : Type = variants {} ; -- the empty type
+ oper Float : Type = variants {} ; -- the type of floats
+ oper Int : Type = variants {} ; -- the type of integers
+ oper Ints : Int -> PType = variants {} ; -- the type of integers from 0 to n
+
+ oper error : Str -> Error = variants {} ; -- forms error message
+ oper length : Tok -> Int = variants {} ; -- length of string
+ oper drop : Int -> Tok -> Tok = variants {} ; -- drop prefix of length
+ oper take : Int -> Tok -> Tok = variants {} ; -- take prefix of length
+ oper tk : Int -> Tok -> Tok = variants {} ; -- drop suffix of length
+ oper dp : Int -> Tok -> Tok = variants {} ; -- take suffix of length
+ oper eqInt : Int -> Int -> PBool = variants {} ; -- test if equal integers
+ oper lessInt: Int -> Int -> PBool = variants {} ; -- test order of integers
+ oper plus : Int -> Int -> Int = variants {} ; -- add integers
+ oper eqStr : Tok -> Tok -> PBool = variants {} ; -- test if equal strings
+ oper occur : Tok -> Tok -> PBool = variants {} ; -- test if occurs as substring
+ oper occurs : Tok -> Tok -> PBool = variants {} ; -- test if any char occurs
+ oper isUpper : Tok -> PBool = variants {} ; -- test if all chars are upper-case
+ oper toUpper : Tok -> Tok = variants {} ; -- map all chars to upper case
+ oper toLower : Tok -> Tok = variants {} ; -- map all chars to lower case
+ oper show : (P : Type) -> P -> Tok = variants {} ; -- convert param to string
+ oper read : (P : Type) -> Tok -> P = variants {} ; -- convert string to param
+ oper eqVal : (P : Type) -> P -> P -> PBool = variants {} ; -- test if equal values
+ oper toStr : (L : Type) -> L -> Str = variants {} ; -- find the "first" string
+ oper mapStr : (L : Type) -> (Str -> Str) -> L -> L = variants {} ;
+ -- map all strings in a data structure; experimental ---
+
+ oper nonExist : Str = variants {} ; -- a placeholder for non-existant morphological forms
+ oper BIND : Str = variants {} ; -- a token for gluing
+ oper SOFT_BIND : Str = variants {} ; -- a token for soft gluing
+ oper SOFT_SPACE : Str = variants {} ; -- a token for soft space
+ oper CAPIT : Str = variants {} ; -- a token for capitalization
+ oper ALL_CAPIT : Str = variants {} ; -- a token for capitalization of abreviations
+
+} ;
diff --git a/testsuite/compiler/check/strMatch/Prelude.gf b/testsuite/compiler/check/strMatch/Prelude.gf
new file mode 100644
index 000000000..1c5b50354
--- /dev/null
+++ b/testsuite/compiler/check/strMatch/Prelude.gf
@@ -0,0 +1,161 @@
+--1 The GF Prelude
+
+-- This file defines some prelude facilities usable in all grammars.
+
+resource Prelude = Predef[nonExist, BIND, SOFT_BIND, SOFT_SPACE, CAPIT, ALL_CAPIT] ** open (Predef=Predef) in {
+
+oper
+
+--2 Strings, records, and tables
+
+ SS : Type = {s : Str} ;
+ ss : Str -> SS = \s -> {s = s} ;
+ ss2 : (_,_ : Str) -> SS = \x,y -> ss (x ++ y) ;
+ ss3 : (_,_ ,_: Str) -> SS = \x,y,z -> ss (x ++ y ++ z) ;
+
+ cc2 : (_,_ : SS) -> SS = \x,y -> ss (x.s ++ y.s) ;
+ cc3 : (_,_,_ : SS) -> SS = \x,y,z -> ss (x.s ++ y.s ++ z.s) ;
+
+ SS1 : PType -> Type = \P -> {s : P => Str} ;
+ ss1 : (A : PType) -> Str -> SS1 A = \A,s -> {s = table {_ => s}} ;
+
+ SP1 : Type -> Type = \P -> {s : Str ; p : P} ;
+ sp1 : (A : Type) -> Str -> A -> SP1 A = \_,s,a -> {s = s ; p = a} ;
+
+ constTable : (A : PType) -> (B : Type) -> B -> A => B = \u,v,b -> \\_ => b ;
+ constStr : (A : PType) -> Str -> A => Str = \A -> constTable A Str ;
+
+-- Discontinuous constituents.
+
+ SD2 : Type = {s1,s2 : Str} ;
+ sd2 : (_,_ : Str) -> SD2 = \x,y -> {s1 = x ; s2 = y} ;
+
+
+--2 Optional elements
+
+-- Optional string with preference on the string vs. empty.
+
+ optStr : Str -> Str = \s -> variants {s ; []} ;
+ strOpt : Str -> Str = \s -> variants {[] ; s} ;
+
+-- Free order between two strings.
+
+ bothWays : Str -> Str -> Str = \x,y -> variants {x ++ y ; y ++ x} ;
+
+-- Parametric order between two strings.
+
+ preOrPost : Bool -> Str -> Str -> Str = \pr,x,y ->
+ if_then_Str pr (x ++ y) (y ++ x) ;
+
+--2 Infixes. prefixes, and postfixes
+
+-- Fixes with precedences are defined in [Precedence Precedence.html].
+
+ infixSS : Str -> SS -> SS -> SS = \f,x,y -> ss (x.s ++ f ++ y.s) ;
+ prefixSS : Str -> SS -> SS = \f,x -> ss (f ++ x.s) ;
+ postfixSS : Str -> SS -> SS = \f,x -> ss (x.s ++ f) ;
+ embedSS : Str -> Str -> SS -> SS = \f,g,x -> ss (f ++ x.s ++ g) ;
+
+
+--2 Booleans
+
+ param Bool = False | True ;
+
+oper
+ if_then_else : (A : Type) -> Bool -> A -> A -> A = \_,c,d,e ->
+ case c of {
+ True => d ; ---- should not need to qualify
+ False => e
+ } ;
+
+ andB : (_,_ : Bool) -> Bool = \a,b -> if_then_else Bool a b False ;
+ orB : (_,_ : Bool) -> Bool = \a,b -> if_then_else Bool a True b ;
+ notB : Bool -> Bool = \a -> if_then_else Bool a False True ;
+
+ if_then_Str : Bool -> Str -> Str -> Str = if_then_else Str ;
+
+ onlyIf : Bool -> Str -> Str = \b,s -> case b of {
+ True => s ;
+ _ => nonExist
+ } ;
+
+-- Interface to internal booleans
+
+ pbool2bool : Predef.PBool -> Bool = \b -> case b of {
+ Predef.PFalse => False ; Predef.PTrue => True
+ } ;
+
+ init : Tok -> Tok = Predef.tk 1 ;
+ last : Tok -> Tok = Predef.dp 1 ;
+
+--2 High-level acces to Predef operations
+
+ isNil : Tok -> Bool = \b -> pbool2bool (Predef.eqStr [] b) ;
+
+ ifTok : (A : Type) -> Tok -> Tok -> A -> A -> A = \A,t,u,a,b ->
+ case Predef.eqStr t u of {Predef.PTrue => a ; Predef.PFalse => b} ;
+
+--2 Lexer-related operations
+
+-- Bind together two tokens in some lexers, either obligatorily or optionally
+
+ oper
+ glue : Str -> Str -> Str = \x,y -> x ++ BIND ++ y ;
+ glueOpt : Str -> Str -> Str = \x,y -> variants {glue x y ; x ++ y} ;
+ noglueOpt : Str -> Str -> Str = \x,y -> variants {x ++ y ; glue x y} ;
+
+-- Force capitalization of next word in some unlexers
+
+ capitalize : Str -> Str = \s -> CAPIT ++ s ;
+
+-- These should be hidden, and never changed since they are hardcoded in (un)lexers
+
+ PARA : Str = "&-" ;
+
+-- Embed between commas, where the latter one disappears in front of other punctuation
+
+ embedInCommas : Str -> Str = \s -> bindComma ++ s ++ endComma ;
+ endComma : Str = pre {"," | "." => []; "" => bindComma ; _ => []} ;
+
+ bindComma : Str = SOFT_BIND ++ "," ;
+ optComma : Str = bindComma | [] ;
+ optCommaSS : SS -> SS = \s -> ss (s.s ++ optComma) ;
+
+--2 Miscellaneous
+
+-- Identity function
+
+ id : (A : Type) -> A -> A = \_,a -> a ;
+
+-- Parentheses
+
+ paren : Str -> Str = \s -> "(" ++ s ++ ")" ;
+ parenss : SS -> SS = \s -> ss (paren s.s) ;
+
+-- Zero, one, two, or more (elements in a list etc)
+
+param
+ ENumber = E0 | E1 | E2 | Emore ;
+
+oper
+ eNext : ENumber -> ENumber = \e -> case e of {
+ E0 => E1 ; E1 => E2 ; _ => Emore} ;
+
+-- convert initial to upper/lower
+
+ toUpperFirst : Str -> Str = \s -> case s of {
+ x@? + xs => Predef.toUpper x + xs ;
+ _ => s
+ } ;
+
+ toLowerFirst : Str -> Str = \s -> case s of {
+ x@? + xs => Predef.toLower x + xs ;
+ _ => s
+ } ;
+
+-- handling errors caused by temporarily missing definitions
+
+ notYet : Str -> Predef.Error = \s ->
+ Predef.error ("NOT YET IMPLEMENTED:" ++ s) ;
+
+}
--
cgit v1.2.3
From c4165714066eb4fa4ccea0debf2a736930c2a281 Mon Sep 17 00:00:00 2001
From: 1Regina <46968488+1Regina@users.noreply.github.com>
Date: Fri, 11 Jun 2021 12:14:49 +0800
Subject: Rectified gold files
---
.../compiler/check/cyclic/abs-types/test3.gfs.gold | 0
.../compiler/check/lincat-types/test.gfs.gold | 12 +-
testsuite/compiler/check/lins/lins.gfs.gold | 80 ++++----
.../compiler/check/oper-definition/test.gfs.gold | 7 +-
.../compiler/check/strMatch/strMatch.gfs.gold | 1 +
testsuite/compiler/params/params.gfs.gold | 0
.../typecheck/abstract/LetInDefAbs.gfs.gold | 15 ++
.../typecheck/abstract/LetInTypesAbs.gfs.gold | 4 +-
.../compiler/typecheck/abstract/test_A.gfs.gold | 7 +-
.../compiler/typecheck/abstract/test_B.gfs.gold | 7 +-
.../compiler/typecheck/abstract/test_C.gfs.gold | 7 +-
.../compiler/typecheck/concrete/test_A.gfs.gold | 10 +-
testsuite/runtime/linearize/brackets.gfs.gold | 11 +-
testsuite/runtime/linearize/linearize.gfs.gold | 10 -
.../runtime/typecheck/hard-unification.gfs.gold | 14 +-
.../runtime/typecheck/implicit-arguments.gfs.gold | 72 ++++----
testsuite/runtime/typecheck/typecheck.gfs.gold | 204 ++++++++++++---------
17 files changed, 254 insertions(+), 207 deletions(-)
create mode 100644 testsuite/compiler/check/cyclic/abs-types/test3.gfs.gold
create mode 100644 testsuite/compiler/check/strMatch/strMatch.gfs.gold
create mode 100644 testsuite/compiler/params/params.gfs.gold
create mode 100644 testsuite/compiler/typecheck/abstract/LetInDefAbs.gfs.gold
(limited to 'testsuite/compiler')
diff --git a/testsuite/compiler/check/cyclic/abs-types/test3.gfs.gold b/testsuite/compiler/check/cyclic/abs-types/test3.gfs.gold
new file mode 100644
index 000000000..e69de29bb
diff --git a/testsuite/compiler/check/lincat-types/test.gfs.gold b/testsuite/compiler/check/lincat-types/test.gfs.gold
index 7e95ec7af..2e14e89e6 100644
--- a/testsuite/compiler/check/lincat-types/test.gfs.gold
+++ b/testsuite/compiler/check/lincat-types/test.gfs.gold
@@ -1,7 +1,9 @@
-testsuite/compiler/check/lincat-types/TestCnc.gf:3:
- Happened in linearization type of S
- type of PTrue
- expected: Type
- inferred: PBool
+testsuite/compiler/check/lincat-types/TestCnc.gf:
+ testsuite/compiler/check/lincat-types/TestCnc.gf:3:
+ Happened in linearization type of S
+ type of PTrue
+ expected: Type
+ inferred: Predef.PBool
+
diff --git a/testsuite/compiler/check/lins/lins.gfs.gold b/testsuite/compiler/check/lins/lins.gfs.gold
index 149912bde..798c91e43 100644
--- a/testsuite/compiler/check/lins/lins.gfs.gold
+++ b/testsuite/compiler/check/lins/lins.gfs.gold
@@ -1,39 +1,41 @@
-checking module linsCnc
- Warning: no linearization type for C, inserting default {s : Str}
- Warning: no linearization of test
-abstract lins {
- cat C Nat ;
- cat Float ;
- cat Int ;
- cat Nat ;
- cat String ;
- fun test : C zero ;
- fun zero : Nat ;
-}
-concrete linsCnc {
- productions
- C1 -> F2[]
- lindefs
- C0 -> F0
- C1 -> F1
- lin
- F0 := (S0) [lindef C]
- F1 := () [lindef Nat]
- F2 := () [zero]
- sequences
- S0 := {0,0}
- categories
- C := range [C0 .. C0]
- labels ["s"]
- Float := range [CFloat .. CFloat]
- labels ["s"]
- Int := range [CInt .. CInt]
- labels ["s"]
- Nat := range [C1 .. C1]
- labels []
- String := range [CString .. CString]
- labels ["s"]
- __gfVar := range [CVar .. CVar]
- labels [""]
- printnames
-}
+abstract lins {
+ cat C Nat ;
+ cat Float ;
+ cat Int ;
+ cat Nat ;
+ cat String ;
+ fun test : C zero ;
+ fun zero : Nat ;
+}
+concrete linsCnc {
+ productions
+ C1 -> F4[]
+ lindefs
+ C0 -> F0[CVar]
+ C1 -> F2[CVar]
+ linrefs
+ CVar -> F1[C0]
+ CVar -> F3[C1]
+ lin
+ F0 := (S2) ['lindef C']
+ F1 := (S1) ['lindef C']
+ F2 := () ['lindef Nat']
+ F3 := (S0) ['lindef Nat']
+ F4 := () [zero]
+ sequences
+ S0 :=
+ S1 := <0,0>
+ S2 := {0,0}
+ categories
+ C := range [C0 .. C0]
+ labels ["s"]
+ Float := range [CFloat .. CFloat]
+ labels ["s"]
+ Int := range [CInt .. CInt]
+ labels ["s"]
+ Nat := range [C1 .. C1]
+ labels []
+ String := range [CString .. CString]
+ labels ["s"]
+ printnames
+}
diff --git a/testsuite/compiler/check/oper-definition/test.gfs.gold b/testsuite/compiler/check/oper-definition/test.gfs.gold
index 240819c74..373ef17bd 100644
--- a/testsuite/compiler/check/oper-definition/test.gfs.gold
+++ b/testsuite/compiler/check/oper-definition/test.gfs.gold
@@ -1,5 +1,6 @@
-testsuite/compiler/check/oper-definition/Res.gf:3:
- Happened in operation my_oper
- No definition given to the operation
+testsuite/compiler/check/oper-definition/Res.gf:
+ testsuite/compiler/check/oper-definition/Res.gf:3:
+ Happened in operation my_oper
+ No definition given to the operation
diff --git a/testsuite/compiler/check/strMatch/strMatch.gfs.gold b/testsuite/compiler/check/strMatch/strMatch.gfs.gold
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/testsuite/compiler/check/strMatch/strMatch.gfs.gold
@@ -0,0 +1 @@
+
diff --git a/testsuite/compiler/params/params.gfs.gold b/testsuite/compiler/params/params.gfs.gold
new file mode 100644
index 000000000..e69de29bb
diff --git a/testsuite/compiler/typecheck/abstract/LetInDefAbs.gfs.gold b/testsuite/compiler/typecheck/abstract/LetInDefAbs.gfs.gold
new file mode 100644
index 000000000..e4613af56
--- /dev/null
+++ b/testsuite/compiler/typecheck/abstract/LetInDefAbs.gfs.gold
@@ -0,0 +1,15 @@
+fun f : Int -> Int ;
+def f n = ? ;
+000 CHECK_ARGS 1
+ ALLOC 2
+ PUT_CLOSURE 001
+ SET_PAD
+ TUCK hp(0) 1
+ EVAL f tail(0)
+001 ALLOC 2
+ PUT_LIT 0
+ PUSH_FRAME
+ PUSH hp(0)
+ EVAL f update
+Probability: 1.0
+
diff --git a/testsuite/compiler/typecheck/abstract/LetInTypesAbs.gfs.gold b/testsuite/compiler/typecheck/abstract/LetInTypesAbs.gfs.gold
index 588b1643d..bbd381681 100644
--- a/testsuite/compiler/typecheck/abstract/LetInTypesAbs.gfs.gold
+++ b/testsuite/compiler/typecheck/abstract/LetInTypesAbs.gfs.gold
@@ -1 +1,3 @@
-fun f : (Int -> Int) -> Int -> Int
+fun f : (Int -> Int) -> Int -> Int ;
+Probability: 1.0
+
diff --git a/testsuite/compiler/typecheck/abstract/test_A.gfs.gold b/testsuite/compiler/typecheck/abstract/test_A.gfs.gold
index 821a4da2c..d99a5ec08 100644
--- a/testsuite/compiler/typecheck/abstract/test_A.gfs.gold
+++ b/testsuite/compiler/typecheck/abstract/test_A.gfs.gold
@@ -1,5 +1,6 @@
-testsuite/compiler/typecheck/abstract/A.gf:4:
- Happened in the category B
- Prod expected for function A instead of Type
+testsuite/compiler/typecheck/abstract/A.gf:
+ testsuite/compiler/typecheck/abstract/A.gf:4:
+ Happened in the category B
+ Prod expected for function A instead of Type
diff --git a/testsuite/compiler/typecheck/abstract/test_B.gfs.gold b/testsuite/compiler/typecheck/abstract/test_B.gfs.gold
index 1355ff7c5..3c923c6de 100644
--- a/testsuite/compiler/typecheck/abstract/test_B.gfs.gold
+++ b/testsuite/compiler/typecheck/abstract/test_B.gfs.gold
@@ -1,5 +1,6 @@
-testsuite/compiler/typecheck/abstract/B.gf:5:
- Happened in the type of function f
- Prod expected for function S instead of Type
+testsuite/compiler/typecheck/abstract/B.gf:
+ testsuite/compiler/typecheck/abstract/B.gf:5:
+ Happened in the type of function f
+ Prod expected for function S instead of Type
diff --git a/testsuite/compiler/typecheck/abstract/test_C.gfs.gold b/testsuite/compiler/typecheck/abstract/test_C.gfs.gold
index d055b11cd..d86aeda8b 100644
--- a/testsuite/compiler/typecheck/abstract/test_C.gfs.gold
+++ b/testsuite/compiler/typecheck/abstract/test_C.gfs.gold
@@ -1,5 +1,6 @@
-testsuite/compiler/typecheck/abstract/C.gf:6:
- Happened in the definition of function f
- {Int <> S}
+testsuite/compiler/typecheck/abstract/C.gf:
+ testsuite/compiler/typecheck/abstract/C.gf:6:
+ Happened in the definition of function f
+ {Int <> S}
diff --git a/testsuite/compiler/typecheck/concrete/test_A.gfs.gold b/testsuite/compiler/typecheck/concrete/test_A.gfs.gold
index 1bd4dffab..19b66a865 100644
--- a/testsuite/compiler/typecheck/concrete/test_A.gfs.gold
+++ b/testsuite/compiler/typecheck/concrete/test_A.gfs.gold
@@ -1,5 +1,9 @@
-testsuite/compiler/typecheck/concrete/A.gf:5:
- Happened in operation silly
- A function type is expected for a_Det instead of type Str
+testsuite/compiler/typecheck/concrete/A.gf:
+ testsuite/compiler/typecheck/concrete/A.gf:5:
+ Happened in operation silly
+ A function type is expected for a_Det instead of type Str
+
+ ** Maybe you gave too many arguments to a_Det
+
diff --git a/testsuite/runtime/linearize/brackets.gfs.gold b/testsuite/runtime/linearize/brackets.gfs.gold
index e356e6521..7337daa9d 100644
--- a/testsuite/runtime/linearize/brackets.gfs.gold
+++ b/testsuite/runtime/linearize/brackets.gfs.gold
@@ -1,28 +1,19 @@
(S:2 (E:1 (_:0 ?1)) is even)
-
(S:3 exists x such that (S:2 (E:1 (_:0 x)) is even))
-
(S:1 (E:0 a))
-
(S:1 (E:0 aa) a)
-
(S:1 (E:0 a) b)
-
(S:1 (String:0 abcd) is string)
-
(S:1 (Int:0 100) is integer)
-
(S:1 (Float:0 12.4) is float)
-
(S:1 (String:0 xyz) is string)
-
-cannot linearize
+ cannot linearize
diff --git a/testsuite/runtime/linearize/linearize.gfs.gold b/testsuite/runtime/linearize/linearize.gfs.gold
index 8a17ab506..7749644f1 100644
--- a/testsuite/runtime/linearize/linearize.gfs.gold
+++ b/testsuite/runtime/linearize/linearize.gfs.gold
@@ -1,30 +1,20 @@
?1 is even
-
exists x such that x is even
-
a
-
aa a
-
a b
-
abcd is string
-
100 is integer
-
12.4 is float
-
xyz is string
-
-
diff --git a/testsuite/runtime/typecheck/hard-unification.gfs.gold b/testsuite/runtime/typecheck/hard-unification.gfs.gold
index 9ca737384..f21d6c2da 100644
--- a/testsuite/runtime/typecheck/hard-unification.gfs.gold
+++ b/testsuite/runtime/typecheck/hard-unification.gfs.gold
@@ -1,6 +1,8 @@
-Expression: s (\v0 -> v0) (app (\v0 -> v0)) ex
-Type: S
-Probability: 1.0
-
-Meta variable(s) ?2 should be resolved
-in the expression: s ?2 (app ?2) ?4
+Expression: s (\v0 -> v0) (app (\v0 -> v0)) ex
+Type: S
+Probability: 1.0
+
+Meta variable(s) ?2 should be resolved
+in the expression: s ?2 (app ?2) ?4
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
diff --git a/testsuite/runtime/typecheck/implicit-arguments.gfs.gold b/testsuite/runtime/typecheck/implicit-arguments.gfs.gold
index 3292c2ea1..eda2eb4fd 100644
--- a/testsuite/runtime/typecheck/implicit-arguments.gfs.gold
+++ b/testsuite/runtime/typecheck/implicit-arguments.gfs.gold
@@ -1,35 +1,37 @@
-Expression: join {n1} {n2} {n3} l12 (link {n2} {n3} l23)
-Type: Path n1 n3
-Probability: 1.0000000000000002e-2
-
-Expression: join {n1} {n2} {n3} l12 (link {n2} {n3} l23)
-Type: Path n1 n3
-Probability: 1.0000000000000002e-2
-
-Expression: 2 : Label {?1}>
-Type: Label {?1}
-Probability: 1.0
-
-Expression: 2 : Label {n1}>
-Type: Label {n1}
-Probability: 1.0
-
-{n1} is implicit argument but not implicit argument is expected here
-Expression: <\{_1}, x -> x : ({m} : Node) -> (n : Node) -> Node>
-Type: ({m} : Node) -> (n : Node) -> Node
-Probability: 1.0
-
-Expression: <\{_1} -> n1 : ({m} : Node) -> Node>
-Type: ({m} : Node) -> Node
-Probability: 1.0
-
-Expression: <\{_1} -> ?1 : ({m} : Node) -> Node>
-Type: ({m} : Node) -> Node
-Probability: 1.0
-
-Expression:
-Type: Path n1 n1
-Probability: 1.0
-
-n1
-
+Expression: join {n1} {n2} {n3} l12 (link {n2} {n3} l23)
+Type: Path n1 n3
+Probability: 1.0000000000000002e-2
+
+Expression: join {n1} {n2} {n3} l12 (link {n2} {n3} l23)
+Type: Path n1 n3
+Probability: 1.0000000000000002e-2
+
+Expression: 2 : Label {?1}>
+Type: Label {?1}
+Probability: 1.0
+
+Expression: 2 : Label {n1}>
+Type: Label {n1}
+Probability: 1.0
+
+{n1} is implicit argument but not implicit argument is expected here
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Expression: <\{_1}, x -> x : ({m} : Node) -> (n : Node) -> Node>
+Type: ({m} : Node) -> (n : Node) -> Node
+Probability: 1.0
+
+Expression: <\{_1} -> n1 : ({m} : Node) -> Node>
+Type: ({m} : Node) -> Node
+Probability: 1.0
+
+Expression: <\{_1} -> ?1 : ({m} : Node) -> Node>
+Type: ({m} : Node) -> Node
+Probability: 1.0
+
+Expression:
+Type: Path n1 n1
+Probability: 1.0
+
+n1
+
diff --git a/testsuite/runtime/typecheck/typecheck.gfs.gold b/testsuite/runtime/typecheck/typecheck.gfs.gold
index 048b6d892..a6a1b7d2e 100644
--- a/testsuite/runtime/typecheck/typecheck.gfs.gold
+++ b/testsuite/runtime/typecheck/typecheck.gfs.gold
@@ -1,86 +1,118 @@
-Couldn't match expected type Nat
- against inferred type String
-In the expression: "0"
-Category Int should have 0 argument(s), but has been given 1
-In the type: Int 0
-A function type is expected for the expression 1 instead of type Int
-Couldn't match expected type Int -> Int
- against inferred type Int
-In the expression: 1
-unknown category of function identifier unknown_fun
-
-Category unknown_cat is not in scope
-Cannot infer the type of expression \x -> x
-A function type is expected for the expression \x -> x instead of type Int
-Expression: append (succ (succ zero)) (succ zero) (vector (succ (succ zero))) (vector (succ zero))
-Type: Vector (succ (succ (succ zero)))
-Probability: 3.532127097800926e-8
-
-Expression: <\m, n -> vector (plus m n) : (m : Nat) -> (n : Nat) -> Vector (plus m n)>
-Type: (m : Nat) -> (n : Nat) -> Vector (plus m n)
-Probability: 1.0
-
-Expression: mkMorph (\x -> succ zero)
-Type: Morph (\v0 -> succ zero)
-Probability: 0.5
-
-Expression: idMorph (mkMorph (\x -> x))
-Type: Nat
-Probability: 0.125
-
-Couldn't match expected type Morph (\v0 -> v0)
- against inferred type Morph (\v0 -> succ zero)
-In the expression: mkMorph (\x -> succ zero)
-Expression: Vector (succ zero) -> Vector (succ zero)>
-Type: Vector zero -> Vector (succ zero) -> Vector (succ zero)
-Probability: 1.0
-
-Expression: <\n, v1, n1, v2 -> append n n1 v1 v2 : (n : Nat) -> Vector n -> (m : Nat) -> Vector m -> Vector (plus n m)>
-Type: (n : Nat) -> Vector n -> (m : Nat) -> Vector m -> Vector (plus n m)
-Probability: 1.0
-
-Category EQ is not in scope
-Expression: <\v1, v2 -> cmpVector ?7 v1 v2 : Vector ?7 -> Vector ?7 -> Int> (vector ?7)
-Type: Vector ?7 -> Int
-Probability: 0.3333333333333333
-
-Couldn't match expected type (m : Nat) -> Vector ?1
- against inferred type (n : Nat) -> Vector n
-In the expression: vector
-Expression: f1 (\v -> v) vector
-Type: Int
-Probability: 5.555555555555555e-2
-
-Expression: f1 (\v -> succ v) (\x -> vector (succ x))
-Type: Int
-Probability: 0.16666666666666666
-
-Couldn't match expected type Vector x
- against inferred type Vector (succ x)
-In the expression: vector (succ x)
-Couldn't match expected type Vector n
- against inferred type Vector (succ n)
-In the expression: vector (succ n)
-Expression: h ?2 (u0 ?2)
-Type: Int
-Probability: 8.333333333333333e-2
-
-Couldn't match expected type U ?2 ?2
- against inferred type U ?2 (succ ?2)
-In the expression: u1 ?2
-Meta variable(s) ?11 should be resolved
-in the expression: cmpVector (succ (succ zero)) (vector (succ (succ zero))) (append ?11 (succ zero) (vector ?11) (vector (succ zero)))
-Expression: diff (succ (succ (succ zero))) (succ (succ zero)) (vector (succ (succ (succ (succ (succ zero)))))) (vector (succ (succ (succ zero))))
-Type: Vector (succ (succ zero))
-Probability: 2.1558392930913853e-12
-
-Couldn't match expected type Vector (plus (succ (succ (succ zero))) (succ (succ zero)))
- against inferred type Vector (succ (succ (succ (succ zero))))
-In the expression: vector (succ (succ (succ (succ zero))))
-Expression: idMorph (mkMorph2 (\x -> x) (vector zero))
-Type: Nat
-Probability: 1.0416666666666666e-2
-
-Couldn't match expected type Vector zero
- against inferred type Vector n
-In the expression: x
+Couldn't match expected type Nat
+ against inferred type String
+In the expression: "0"
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Category Int should have 0 argument(s), but has been given 1
+In the type: Int 0
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+A function type is expected for the expression 1 instead of type Int
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Couldn't match expected type Int -> Int
+ against inferred type Int
+In the expression: 1
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+unknown category of function identifier unknown_fun
+
+Category unknown_cat is not in scope
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Cannot infer the type of expression \x -> x
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+A function type is expected for the expression \x -> x instead of type Int
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Expression: append (succ (succ zero)) (succ zero) (vector (succ (succ zero))) (vector (succ zero))
+Type: Vector (succ (succ (succ zero)))
+Probability: 3.532127097800926e-8
+
+Expression: <\m, n -> vector (plus m n) : (m : Nat) -> (n : Nat) -> Vector (plus m n)>
+Type: (m : Nat) -> (n : Nat) -> Vector (plus m n)
+Probability: 1.0
+
+Expression: mkMorph (\x -> succ zero)
+Type: Morph (\v0 -> succ zero)
+Probability: 0.5
+
+Expression: idMorph (mkMorph (\x -> x))
+Type: Nat
+Probability: 0.125
+
+Couldn't match expected type Morph (\v0 -> v0)
+ against inferred type Morph (\v0 -> succ zero)
+In the expression: mkMorph (\x -> succ zero)
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Expression: Vector (succ zero) -> Vector (succ zero)>
+Type: Vector zero -> Vector (succ zero) -> Vector (succ zero)
+Probability: 1.0
+
+Expression: <\n, v1, n1, v2 -> append n n1 v1 v2 : (n : Nat) -> Vector n -> (m : Nat) -> Vector m -> Vector (plus n m)>
+Type: (n : Nat) -> Vector n -> (m : Nat) -> Vector m -> Vector (plus n m)
+Probability: 1.0
+
+Category EQ is not in scope
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Expression: <\v1, v2 -> cmpVector ?7 v1 v2 : Vector ?7 -> Vector ?7 -> Int> (vector ?7)
+Type: Vector ?7 -> Int
+Probability: 0.3333333333333333
+
+Couldn't match expected type (m : Nat) -> Vector ?1
+ against inferred type (n : Nat) -> Vector n
+In the expression: vector
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Expression: f1 (\v -> v) vector
+Type: Int
+Probability: 5.555555555555555e-2
+
+Expression: f1 (\v -> succ v) (\x -> vector (succ x))
+Type: Int
+Probability: 0.16666666666666666
+
+Couldn't match expected type Vector x
+ against inferred type Vector (succ x)
+In the expression: vector (succ x)
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Couldn't match expected type Vector n
+ against inferred type Vector (succ n)
+In the expression: vector (succ n)
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Expression: h ?2 (u0 ?2)
+Type: Int
+Probability: 8.333333333333333e-2
+
+Couldn't match expected type U ?2 ?2
+ against inferred type U ?2 (succ ?2)
+In the expression: u1 ?2
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Meta variable(s) ?11 should be resolved
+in the expression: cmpVector (succ (succ zero)) (vector (succ (succ zero))) (append ?11 (succ zero) (vector ?11) (vector (succ zero)))
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Expression: diff (succ (succ (succ zero))) (succ (succ zero)) (vector (succ (succ (succ (succ (succ zero)))))) (vector (succ (succ (succ zero))))
+Type: Vector (succ (succ zero))
+Probability: 2.1558392930913853e-12
+
+Couldn't match expected type Vector (plus (succ (succ (succ zero))) (succ (succ zero)))
+ against inferred type Vector (succ (succ (succ (succ zero))))
+In the expression: vector (succ (succ (succ (succ zero))))
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
+Expression: idMorph (mkMorph2 (\x -> x) (vector zero))
+Type: Nat
+Probability: 1.0416666666666666e-2
+
+Couldn't match expected type Vector zero
+ against inferred type Vector n
+In the expression: x
+CallStack (from HasCallStack):
+ error, called at src/compiler/GF/Command/Commands.hs:744:43 in gf-3.10.4-EdD6fabQUzM4AhRenbxTb3:GF.Command.Commands
--
cgit v1.2.3
From c3153134b73a21a1059dc6896b35097f37dfdd14 Mon Sep 17 00:00:00 2001
From: Inari Listenmaa
Date: Wed, 16 Jun 2021 12:01:28 +0800
Subject: Remove CStr [] which causes error, update gold
---
testsuite/compiler/typecheck/abstract/LitAbs.gf | 2 +-
testsuite/compiler/typecheck/abstract/LitAbs.gfs | 1 -
testsuite/compiler/typecheck/abstract/LitAbs.gfs.gold | 17 ++++++++++++-----
3 files changed, 13 insertions(+), 7 deletions(-)
(limited to 'testsuite/compiler')
diff --git a/testsuite/compiler/typecheck/abstract/LitAbs.gf b/testsuite/compiler/typecheck/abstract/LitAbs.gf
index 03f850232..08230b8cf 100644
--- a/testsuite/compiler/typecheck/abstract/LitAbs.gf
+++ b/testsuite/compiler/typecheck/abstract/LitAbs.gf
@@ -5,7 +5,7 @@ cat CStr String ;
CFloat Float ;
data empty : CStr "" ;
- null : CStr [] ;
+ -- null : CStr [] ; -- Commented out by IL 06/2021: causes parse error
other : CStr "other" ;
data zero : CInt 0 ;
diff --git a/testsuite/compiler/typecheck/abstract/LitAbs.gfs b/testsuite/compiler/typecheck/abstract/LitAbs.gfs
index ce10daa20..71c4cca29 100644
--- a/testsuite/compiler/typecheck/abstract/LitAbs.gfs
+++ b/testsuite/compiler/typecheck/abstract/LitAbs.gfs
@@ -1,5 +1,4 @@
i -src testsuite/compiler/typecheck/abstract/LitAbs.gf
-ai null
ai empty
ai other
ai zero
diff --git a/testsuite/compiler/typecheck/abstract/LitAbs.gfs.gold b/testsuite/compiler/typecheck/abstract/LitAbs.gfs.gold
index 83dda9094..2d1e93979 100644
--- a/testsuite/compiler/typecheck/abstract/LitAbs.gfs.gold
+++ b/testsuite/compiler/typecheck/abstract/LitAbs.gfs.gold
@@ -1,5 +1,12 @@
-data null : CStr ""
-data empty : CStr ""
-data other : CStr "other"
-data zero : CInt 0
-data pi : CFloat 3.14
+data empty : CStr "" ;
+Probability: 0.5
+
+data other : CStr "other" ;
+Probability: 0.5
+
+data zero : CInt 0 ;
+Probability: 1.0
+
+data pi : CFloat 3.14 ;
+Probability: 1.0
+
--
cgit v1.2.3
From f23031ea1d0fc1171d15f115b642adf42ed454fa Mon Sep 17 00:00:00 2001
From: Inari Listenmaa
Date: Wed, 16 Jun 2021 12:23:07 +0800
Subject: Add command `ai f` to trigger error msg
---
testsuite/compiler/typecheck/abstract/non-abstract-terms.gfs | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
(limited to 'testsuite/compiler')
diff --git a/testsuite/compiler/typecheck/abstract/non-abstract-terms.gfs b/testsuite/compiler/typecheck/abstract/non-abstract-terms.gfs
index 0b07b7ed4..1edc94e02 100644
--- a/testsuite/compiler/typecheck/abstract/non-abstract-terms.gfs
+++ b/testsuite/compiler/typecheck/abstract/non-abstract-terms.gfs
@@ -1,2 +1,5 @@
i -src testsuite/compiler/typecheck/abstract/PolyTypes.gf
-i -src testsuite/compiler/typecheck/abstract/RecTypes.gf
\ No newline at end of file
+ai f
+
+i -src testsuite/compiler/typecheck/abstract/RecTypes.gf
+ai f
\ No newline at end of file
--
cgit v1.2.3