|
1 | 1 | {-# LANGUAGE LambdaCase #-}
|
| 2 | +{-# LANGUAGE RankNTypes #-} |
2 | 3 | {-# LANGUAGE OverloadedStrings #-}
|
3 | 4 | {-# LANGUAGE StandaloneDeriving #-}
|
4 | 5 | {-# LANGUAGE TupleSections #-}
|
@@ -504,25 +505,40 @@ outgoingCallMultiFileTestCase filepath queryX queryY mp =
|
504 | 505 | _ -> liftIO $ assertFailure "Not one element"
|
505 | 506 | closeDoc doc
|
506 | 507 |
|
507 |
| -oneCaseWithCreate :: T.Text -> Int -> Int -> (Uri -> CallHierarchyItem) -> Assertion |
| 508 | +oneCaseWithCreate :: T.Text -> Int -> Int -> (Uri -> CallHierarchyItem -> Assertion) -> Assertion |
508 | 509 | oneCaseWithCreate contents queryX queryY expected = withCanonicalTempDir $ \dir ->
|
509 | 510 | runSessionWithServer plugin dir $ do
|
510 | 511 | doc <- createDoc "A.hs" "haskell" contents
|
511 | 512 | waitForIndex (dir </> "A.hs")
|
512 | 513 | Test.prepareCallHierarchy (mkPrepareCallHierarchyParam doc queryX queryY) >>=
|
513 | 514 | \case
|
514 |
| - [item] -> liftIO $ item @?= expected (doc ^. L.uri) |
| 515 | + [item] -> liftIO $ expected (doc ^. L.uri) item |
515 | 516 | res -> liftIO $ assertFailure "Not one element"
|
516 | 517 | closeDoc doc
|
517 | 518 |
|
518 |
| -mkCallHierarchyItem' :: String -> T.Text -> SymbolKind -> Range -> Range -> Uri -> CallHierarchyItem |
519 |
| -mkCallHierarchyItem' prefix name kind range selRange uri = |
520 |
| - CallHierarchyItem name kind Nothing (Just "Main") uri range selRange (Just v) |
| 519 | +mkCallHierarchyItem' :: String -> T.Text -> SymbolKind -> Range -> Range -> Uri -> CallHierarchyItem -> Assertion |
| 520 | +mkCallHierarchyItem' prefix name kind range selRange uri c@(CallHierarchyItem name' kind' tags' detail' uri' range' selRange' xdata') = do |
| 521 | + assertHierarchyItem name name' |
| 522 | + assertHierarchyItem kind kind' |
| 523 | + assertHierarchyItem tags tags' |
| 524 | + assertHierarchyItem detail detail' |
| 525 | + assertHierarchyItem uri uri' |
| 526 | + assertHierarchyItem range range' |
| 527 | + assertHierarchyItem selRange selRange' |
| 528 | + case xdata' of |
| 529 | + Nothing -> assertFailure ("In " ++ show c ++ ", got Nothing for data but wanted " ++ show xdata) |
| 530 | + Just v -> case fromJSON v of |
| 531 | + Success v -> assertBool ("In " ++ show c ++ " wanted data prefix: " ++ show xdata) (xdata `T.isPrefixOf` v) |
| 532 | + Error err -> assertFailure ("In " ++ show c ++ " wanted data prefix: " ++ show xdata ++ " but json parsing failed with " ++ show err) |
521 | 533 | where
|
522 |
| - v = toJSON $ prefix <> ":" <> T.unpack name <> ":Main:main" |
| 534 | + tags = Nothing |
| 535 | + detail = Just "Main" |
| 536 | + assertHierarchyItem :: forall a. (Eq a, Show a) => a -> a -> Assertion |
| 537 | + assertHierarchyItem = assertEqual ("In " ++ show c ++ ", got unexpected value for field") |
| 538 | + xdata = T.pack prefix <> ":" <> name <> ":Main:main" |
523 | 539 |
|
524 | 540 | mkCallHierarchyItemC, mkCallHierarchyItemT, mkCallHierarchyItemV ::
|
525 |
| - T.Text -> SymbolKind -> Range -> Range -> Uri -> CallHierarchyItem |
| 541 | + T.Text -> SymbolKind -> Range -> Range -> Uri -> CallHierarchyItem -> Assertion |
526 | 542 | mkCallHierarchyItemC = mkCallHierarchyItem' "c"
|
527 | 543 | mkCallHierarchyItemT = mkCallHierarchyItem' "t"
|
528 | 544 | mkCallHierarchyItemV = mkCallHierarchyItem' "v"
|
|
0 commit comments