summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/GF/Compile/Compute/ConcreteNew.hs1
-rw-r--r--testsuite/compiler/compute/Variants.gf7
-rw-r--r--testsuite/compiler/compute/Variants.gfs2
-rw-r--r--testsuite/compiler/compute/Variants.gfs.gold1
4 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler/GF/Compile/Compute/ConcreteNew.hs b/src/compiler/GF/Compile/Compute/ConcreteNew.hs
index 828340279..0519a84bd 100644
--- a/src/compiler/GF/Compile/Compute/ConcreteNew.hs
+++ b/src/compiler/GF/Compile/Compute/ConcreteNew.hs
@@ -267,6 +267,7 @@ vapply v vs =
-- VClosure env (Abs b x t) -> beta gr env b x t vs
VAbs bt _ (Bind f) -> vbeta bt f vs
VS (VV t fs) s -> VS (VV t [vapply f vs|f<-fs]) s
+ VFV fs -> vfv [vapply f vs|f<-fs]
v -> bug $ "vapply "++show v++" "++show vs
vbeta bt f (v:vs) =
diff --git a/testsuite/compiler/compute/Variants.gf b/testsuite/compiler/compute/Variants.gf
new file mode 100644
index 000000000..e77b84469
--- /dev/null
+++ b/testsuite/compiler/compute/Variants.gf
@@ -0,0 +1,7 @@
+resource Variants = {
+ oper
+ hello = r.f "hello";
+ r = { f:Str->Str = (id|dup) };
+ id : Str->Str = \ s -> s;
+ dup : Str->Str = \ s -> s++s;
+}
diff --git a/testsuite/compiler/compute/Variants.gfs b/testsuite/compiler/compute/Variants.gfs
new file mode 100644
index 000000000..1f512694c
--- /dev/null
+++ b/testsuite/compiler/compute/Variants.gfs
@@ -0,0 +1,2 @@
+i -retain testsuite/compiler/compute/Variants.gf
+cc hello
diff --git a/testsuite/compiler/compute/Variants.gfs.gold b/testsuite/compiler/compute/Variants.gfs.gold
new file mode 100644
index 000000000..cd74b1c23
--- /dev/null
+++ b/testsuite/compiler/compute/Variants.gfs.gold
@@ -0,0 +1 @@
+variants {"hello"; "hello" ++ "hello"}