summaryrefslogtreecommitdiff
path: root/testsuite/tests/driver
diff options
context:
space:
mode:
authorAlec Theriault <alec.theriault@gmail.com>2018-12-11 13:47:35 -0500
committerBen Gamari <ben@smart-cactus.org>2018-12-11 14:23:22 -0500
commitf582379de2c4ff7577235c926ad953debdae3cac (patch)
treedf39b7a00d1730be04da120ca452517043478809 /testsuite/tests/driver
parent21339c9f6bfb952a3a0b8de5ee649d46dfbf0d9b (diff)
downloadhaskell-f582379de2c4ff7577235c926ad953debdae3cac.tar.gz
Support generating HIE files
Adds a `-fenable-ide-info` flag which instructs GHC to generate `.hie` files (see the wiki page: https://ghc.haskell.org/trac/ghc/wiki/HIEFiles). This is a rebased version of Zubin Duggal's (@wz1000) GHC changes for his GSOC project, as posted here: https://gist.github.com/wz1000/5ed4ddd0d3e96d6bc75e095cef95363d. Test Plan: ./validate Reviewers: bgamari, gershomb, nomeata, alanz, sjakobi Reviewed By: alanz, sjakobi Subscribers: alanz, hvr, sjakobi, rwbarton, wz1000, carter Differential Revision: https://phabricator.haskell.org/D5239
Diffstat (limited to 'testsuite/tests/driver')
-rw-r--r--testsuite/tests/driver/recomp018/A.hs7
-rw-r--r--testsuite/tests/driver/recomp018/B.hs6
-rw-r--r--testsuite/tests/driver/recomp018/C.hs6
-rw-r--r--testsuite/tests/driver/recomp018/Makefile30
-rw-r--r--testsuite/tests/driver/recomp018/all.T5
-rw-r--r--testsuite/tests/driver/recomp018/recomp018.stdout7
6 files changed, 61 insertions, 0 deletions
diff --git a/testsuite/tests/driver/recomp018/A.hs b/testsuite/tests/driver/recomp018/A.hs
new file mode 100644
index 0000000000..e9c922f03a
--- /dev/null
+++ b/testsuite/tests/driver/recomp018/A.hs
@@ -0,0 +1,7 @@
+module A where
+
+import B
+import C
+
+foo :: Int
+foo = 4
diff --git a/testsuite/tests/driver/recomp018/B.hs b/testsuite/tests/driver/recomp018/B.hs
new file mode 100644
index 0000000000..aa2dfcc38f
--- /dev/null
+++ b/testsuite/tests/driver/recomp018/B.hs
@@ -0,0 +1,6 @@
+module B where
+
+data B a = B a
+
+b :: a -> B a
+b = B
diff --git a/testsuite/tests/driver/recomp018/C.hs b/testsuite/tests/driver/recomp018/C.hs
new file mode 100644
index 0000000000..43bb9dd632
--- /dev/null
+++ b/testsuite/tests/driver/recomp018/C.hs
@@ -0,0 +1,6 @@
+module C where
+
+data C a = C a
+
+c :: a -> C a
+c = C
diff --git a/testsuite/tests/driver/recomp018/Makefile b/testsuite/tests/driver/recomp018/Makefile
new file mode 100644
index 0000000000..fa18a54fe1
--- /dev/null
+++ b/testsuite/tests/driver/recomp018/Makefile
@@ -0,0 +1,30 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+# Recompilation tests for .hie files
+
+clean:
+ rm -f *.o *.hi *.hie
+
+recomp018: clean
+ echo 'first run'
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make -fwrite-ide-info A.hs
+ sleep 1
+
+ # Check the .hie files have been created
+ test -f A.hie
+ test -f B.hie
+ test -f C.hie
+
+ # Remove some of those files
+ rm A.hie B.hie
+
+ # Recompile
+ echo 'second run'
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make -fwrite-ide-info A.hs
+
+ # Check the .hie files have been created
+ test -f A.hie
+ test -f B.hie
+ test -f C.hie
diff --git a/testsuite/tests/driver/recomp018/all.T b/testsuite/tests/driver/recomp018/all.T
new file mode 100644
index 0000000000..0d8faf70ca
--- /dev/null
+++ b/testsuite/tests/driver/recomp018/all.T
@@ -0,0 +1,5 @@
+# Test for regenerating .hie files that are out of date or missing
+
+test('recomp018',
+ [extra_files(['A.hs', 'B.hs', 'C.hs'])],
+ run_command, ['$MAKE -s --no-print-directory recomp018'])
diff --git a/testsuite/tests/driver/recomp018/recomp018.stdout b/testsuite/tests/driver/recomp018/recomp018.stdout
new file mode 100644
index 0000000000..ff1b3c016d
--- /dev/null
+++ b/testsuite/tests/driver/recomp018/recomp018.stdout
@@ -0,0 +1,7 @@
+first run
+[1 of 3] Compiling B ( B.hs, B.o )
+[2 of 3] Compiling C ( C.hs, C.o )
+[3 of 3] Compiling A ( A.hs, A.o )
+second run
+[1 of 3] Compiling B ( B.hs, B.o ) [HIE file is missing]
+[3 of 3] Compiling A ( A.hs, A.o ) [HIE file is missing]