testsuite: Add test for #8305
authorTakenobu Tani <takenobu.hs@gmail.com>
Fri, 11 Oct 2019 23:41:16 +0000 (08:41 +0900)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Wed, 16 Oct 2019 11:05:41 +0000 (07:05 -0400)
This is a test for the current algorithm of GHCi command name resolution.

I add this test in preparation for updating GHCi command name resolution.

For the current algorithm, see https://downloads.haskell.org/ghc/latest/docs/html/users_guide/ghci.html#the-ghci-files

testsuite/tests/ghci/scripts/T8305.script [new file with mode: 0644]
testsuite/tests/ghci/scripts/T8305.stdout [new file with mode: 0644]
testsuite/tests/ghci/scripts/all.T

diff --git a/testsuite/tests/ghci/scripts/T8305.script b/testsuite/tests/ghci/scripts/T8305.script
new file mode 100644 (file)
index 0000000..2b5bc80
--- /dev/null
@@ -0,0 +1,39 @@
+-- Testing the current algorithm of command name resolution
+
+-- The current algorithm of command name resolution is:
+--   1. First, look up an exact match on the name from the defined macros.
+--   2. Look for the exact match on the name in the built-in command list.
+--   3. Do a prefix lookup on the list of built-in commands
+--      - if a built-in command matches, but a macro is defined
+--      with the same name as the built-in defined, pick the macro.
+--   4. Do a prefix lookup on the list of built-in commands.
+--   5. Do a prefix lookup on the list of defined macros.
+--
+-- For the current algorithm, see https://downloads.haskell.org/ghc/latest/docs/html/users_guide/ghci.html#the-ghci-files
+
+
+----- Defineing macros for test
+:def! ty    (\e -> putStrLn "called :ty macro" >> return "")
+:def! type  (\e -> putStrLn "called :type macro" >> return "")
+:def  type2 (\e -> putStrLn "called :type2 macro" >> return "")
+:def  time  (\e -> putStrLn "called :time macro" >> return "")
+
+:def! ki    (\e -> putStrLn "called :ki macro" >> return "")
+:def  kind2 (\e -> putStrLn "called :kind2 macro" >> return "")
+
+
+----- Testing
+-- 1.
+:type ()
+
+-- 2.
+:kind ()
+
+-- 3.
+:t ()
+
+-- 4.
+:k ()
+
+-- 5.
+:ti ()
diff --git a/testsuite/tests/ghci/scripts/T8305.stdout b/testsuite/tests/ghci/scripts/T8305.stdout
new file mode 100644 (file)
index 0000000..691ed95
--- /dev/null
@@ -0,0 +1,5 @@
+called :type macro
+() :: *
+called :type macro
+() :: *
+called :time macro
index dedca95..aaefca5 100755 (executable)
@@ -178,6 +178,7 @@ test('T8113', normal, ghci_script, ['T8113.script'])
 test('T8172', when(opsys('mingw32'), normalise_drive_letter),
      ghci_script, ['T8172.script'])
 test('T8215', normal, ghci_script, ['T8215.script'])
+test('T8305', normal, ghci_script, ['T8305.script'])
 test('T8353', extra_files(['Defer03.hs']), ghci_script, ['T8353.script'])
 test('T8357', normal, ghci_script, ['T8357.script'])
 test('T8383', normal, ghci_script, ['T8383.script'])