mirror of
https://github.com/github/semantic.git
synced 2024-12-22 22:31:36 +03:00
Merge pull request #681 from github/improve-error-diff-summaries
Improve error diff summaries
This commit is contained in:
commit
0c8b880aa6
@ -24,7 +24,7 @@ import Source
|
|||||||
|
|
||||||
data DiffInfo = LeafInfo { categoryName :: Text, termName :: Text }
|
data DiffInfo = LeafInfo { categoryName :: Text, termName :: Text }
|
||||||
| BranchInfo { branches :: [ DiffInfo ], categoryName :: Text, branchType :: Branch }
|
| BranchInfo { branches :: [ DiffInfo ], categoryName :: Text, branchType :: Branch }
|
||||||
| ErrorInfo { errorSpan :: SourceSpan, categoryName :: Text }
|
| ErrorInfo { errorSpan :: SourceSpan, termName :: Text }
|
||||||
deriving (Eq, Show)
|
deriving (Eq, Show)
|
||||||
|
|
||||||
data Branch = BIndexed | BFixed | BCommented deriving (Show, Eq, Generic)
|
data Branch = BIndexed | BFixed | BCommented deriving (Show, Eq, Generic)
|
||||||
@ -97,7 +97,7 @@ toTermName source term = case unwrap term of
|
|||||||
S.Object kvs -> "{" <> intercalate ", " (toTermName' <$> kvs) <> "}"
|
S.Object kvs -> "{" <> intercalate ", " (toTermName' <$> kvs) <> "}"
|
||||||
S.Pair a b -> toTermName' a <> ": " <> toTermName' b
|
S.Pair a b -> toTermName' a <> ": " <> toTermName' b
|
||||||
S.Return expr -> maybe "empty" toTermName' expr
|
S.Return expr -> maybe "empty" toTermName' expr
|
||||||
S.Error span _ -> displayStartEndPos span
|
S.Error _ _ -> termNameFromSource term
|
||||||
S.For _ _ -> termNameFromChildren term
|
S.For _ _ -> termNameFromChildren term
|
||||||
S.While expr _ -> toTermName' expr
|
S.While expr _ -> toTermName' expr
|
||||||
S.DoWhile _ expr -> toTermName' expr
|
S.DoWhile _ expr -> toTermName' expr
|
||||||
@ -118,7 +118,7 @@ toTermName source term = case unwrap term of
|
|||||||
maybeParentContext :: Maybe (Category, Text) -> Doc
|
maybeParentContext :: Maybe (Category, Text) -> Doc
|
||||||
maybeParentContext = maybe "" (\annotation ->
|
maybeParentContext = maybe "" (\annotation ->
|
||||||
space <> "in the" <+> (toDoc $ snd annotation) <+> toDoc (toCategoryName $ fst annotation))
|
space <> "in the" <+> (toDoc $ snd annotation) <+> toDoc (toCategoryName $ fst annotation))
|
||||||
|
|
||||||
toDoc :: Text -> Doc
|
toDoc :: Text -> Doc
|
||||||
toDoc = string . toS
|
toDoc = string . toS
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ termToDiffInfo blob term = case unwrap term of
|
|||||||
-- use the term name of the operator identifier when we have that production value. Until then, I'm using a placeholder value
|
-- use the term name of the operator identifier when we have that production value. Until then, I'm using a placeholder value
|
||||||
-- to indicate where that value should be when constructing DiffInfos.
|
-- to indicate where that value should be when constructing DiffInfos.
|
||||||
Commented cs leaf -> BranchInfo (termToDiffInfo' <$> cs <> maybeToList leaf) (toCategoryName term) BCommented
|
Commented cs leaf -> BranchInfo (termToDiffInfo' <$> cs <> maybeToList leaf) (toCategoryName term) BCommented
|
||||||
S.Error sourceSpan _ -> ErrorInfo sourceSpan (toCategoryName term)
|
S.Error sourceSpan _ -> ErrorInfo sourceSpan (toTermName' term)
|
||||||
_ -> LeafInfo (toCategoryName term) (toTermName' term)
|
_ -> LeafInfo (toCategoryName term) (toTermName' term)
|
||||||
where toTermName' = toTermName blob
|
where toTermName' = toTermName blob
|
||||||
termToDiffInfo' = termToDiffInfo blob
|
termToDiffInfo' = termToDiffInfo blob
|
||||||
@ -226,4 +226,4 @@ instance (Eq a, Arbitrary a) => Arbitrary (DiffSummary a) where
|
|||||||
instance P.Pretty DiffInfo where
|
instance P.Pretty DiffInfo where
|
||||||
pretty LeafInfo{..} = squotes (string $ toSL termName) <+> (string $ toSL categoryName)
|
pretty LeafInfo{..} = squotes (string $ toSL termName) <+> (string $ toSL categoryName)
|
||||||
pretty BranchInfo{..} = mconcat $ punctuate (string "," <> space) (pretty <$> branches)
|
pretty BranchInfo{..} = mconcat $ punctuate (string "," <> space) (pretty <$> branches)
|
||||||
pretty ErrorInfo{..} = "syntax error at" <+> (string . toSL $ displayStartEndPos errorSpan) <+> "in" <+> (string . toSL $ spanName errorSpan)
|
pretty ErrorInfo{..} = squotes (string $ toSL termName) <+> "at" <+> (string . toSL $ displayStartEndPos errorSpan) <+> "in" <+> (string . toSL $ spanName errorSpan)
|
||||||
|
Loading…
Reference in New Issue
Block a user