From 5f4384e8eff557103d699bf67e19aae83e95d410 Mon Sep 17 00:00:00 2001 From: Jacek Generowicz Date: Wed, 8 Jan 2020 14:27:31 +0100 Subject: [PATCH] Tests for issue 310 (misleading hover on inner signature) (#311) * Tests for issue 310 (misleading hover on inner signature) The most important pair of tests here is the "inner signature" pair. The others serve mainly to document, compare and contrast what is happening in related situations. In summary, hover and gotoDef + on inner signatures: give type and location information for the outer definition; this is misleading, + on outer signatures: give no information at all, + on inner definitions: give correct information for the inner definition, + on outer definitions: give correct information for the outer definition. Should hover and gotoDef do anything at all for signatures? or is the current behaviour for outer signatures (doing nothing at all) what we want? * Require signature hover/gotoDef to point to first clause of definition * Remove perhaps superfluous tests for definitions --- test/data/GotoHover.hs | 6 ++++++ test/exe/Main.hs | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/test/data/GotoHover.hs b/test/data/GotoHover.hs index 0cd41d3d5..91b0f780b 100644 --- a/test/data/GotoHover.hs +++ b/test/data/GotoHover.hs @@ -42,3 +42,9 @@ documented :: Monad m => Either Int (m a) documented = Left 7518 listOfInt = [ 8391 :: Int, 6268 ] + +outer :: Bool +outer = undefined where + + inner :: Char + inner = undefined diff --git a/test/exe/Main.hs b/test/exe/Main.hs index 43a1516bf..b0ef3b054 100644 --- a/test/exe/Main.hs +++ b/test/exe/Main.hs @@ -1098,6 +1098,8 @@ findDefinitionAndHoverTests = let chrL36 = Position 36 25 ; litC = [ExpectHoverText ["'t'"]] txtL8 = Position 8 14 ; litT = [ExpectHoverText ["\"dfgv\""]] lstL43 = Position 43 12 ; litL = [ExpectHoverText ["[ 8391 :: Int, 6268 ]"]] + outL45 = Position 45 3 ; outSig = [ExpectHoverText ["outer", "Bool"], mkR 46 0 46 5] + innL48 = Position 48 5 ; innSig = [ExpectHoverText ["inner", "Char"], mkR 49 2 49 7] in mkFindTests -- def hover look expect @@ -1133,6 +1135,8 @@ findDefinitionAndHoverTests = let , test no broken txtL8 litT "literal Text in hover info #274" , test no broken lstL43 litL "literal List in hover info #274" , test no broken docL41 constr "type constraint in hover info #283" + , test broken broken outL45 outSig "top-level signature #310" + , test broken broken innL48 innSig "inner signature #310" ] where yes, broken :: (TestTree -> Maybe TestTree) yes = Just -- test should run and pass