Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit e0ff53e

Browse files
authored
Merge pull request #180 from github/fix-bad-proto-type
Fix DiffTreeVertexDiffTerm definition to be a valid protobuf object.
2 parents 4629d0c + 72ad90f commit e0ff53e

File tree

2 files changed

+48
-46
lines changed

2 files changed

+48
-46
lines changed

src/Rendering/Graph.hs

+9-9
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ diffStyle name = (defaultStyle (fromString . show . diffVertexId))
5151
{ graphName = fromString (quote name)
5252
, vertexAttributes = vertexAttributes }
5353
where quote a = "\"" <> a <> "\""
54-
vertexAttributes (DiffTreeVertex _ (Just (Deleted (Just DeletedTerm{..})))) = [ "label" := fromString (T.unpack term), "color" := "red" ]
55-
vertexAttributes (DiffTreeVertex _ (Just (Inserted (Just InsertedTerm{..})))) = [ "label" := fromString (T.unpack term), "color" := "green" ]
56-
vertexAttributes (DiffTreeVertex _ (Just (Replaced (Just ReplacedTerm{..})))) = [ "label" := "Replacement", "color" := "orange", "style" := "dashed" ]
57-
vertexAttributes (DiffTreeVertex _ (Just (Merged (Just MergedTerm{..})))) = [ "label" := fromString (T.unpack term) ]
54+
vertexAttributes (DiffTreeVertex _ (Just (Deleted DeletedTerm{..}))) = [ "label" := fromString (T.unpack term), "color" := "red" ]
55+
vertexAttributes (DiffTreeVertex _ (Just (Inserted InsertedTerm{..}))) = [ "label" := fromString (T.unpack term), "color" := "green" ]
56+
vertexAttributes (DiffTreeVertex _ (Just (Replaced ReplacedTerm{..}))) = [ "label" := "Replacement", "color" := "orange", "style" := "dashed" ]
57+
vertexAttributes (DiffTreeVertex _ (Just (Merged MergedTerm{..}))) = [ "label" := fromString (T.unpack term) ]
5858
vertexAttributes _ = []
5959

6060
class ToTreeGraph vertex t | t -> vertex where
@@ -82,16 +82,16 @@ instance (ConstructorName syntax, Foldable syntax) =>
8282
instance (ConstructorName syntax, Foldable syntax) =>
8383
ToTreeGraph DiffTreeVertex (DiffF syntax Location Location) where
8484
toTreeGraph d = case d of
85-
Merge t@(In (a1, a2) syntax) -> diffAlgebra t (Merged (Just (MergedTerm (T.pack (constructorName syntax)) (ann a1) (ann a2))))
86-
Patch (Delete t1@(In a1 syntax)) -> diffAlgebra t1 (Deleted (Just (DeletedTerm (T.pack (constructorName syntax)) (ann a1))))
87-
Patch (Insert t2@(In a2 syntax)) -> diffAlgebra t2 (Inserted (Just (InsertedTerm (T.pack (constructorName syntax)) (ann a2))))
85+
Merge t@(In (a1, a2) syntax) -> diffAlgebra t (Merged (MergedTerm (T.pack (constructorName syntax)) (ann a1) (ann a2)))
86+
Patch (Delete t1@(In a1 syntax)) -> diffAlgebra t1 (Deleted (DeletedTerm (T.pack (constructorName syntax)) (ann a1)))
87+
Patch (Insert t2@(In a2 syntax)) -> diffAlgebra t2 (Inserted (InsertedTerm (T.pack (constructorName syntax)) (ann a2)))
8888
Patch (Replace t1@(In a1 syntax1) t2@(In a2 syntax2)) -> do
8989
i <- fresh
9090
parent <- ask
9191
let (beforeName, beforeSpan) = (T.pack (constructorName syntax1), ann a1)
9292
let (afterName, afterSpan) = (T.pack (constructorName syntax2), ann a2)
93-
let replace = vertex (DiffTreeVertex (fromIntegral i) (Just (Replaced (Just (ReplacedTerm beforeName beforeSpan afterName afterSpan)))))
94-
graph <- local (const replace) (overlay <$> diffAlgebra t1 (Deleted (Just (DeletedTerm beforeName beforeSpan))) <*> diffAlgebra t2 (Inserted (Just (InsertedTerm afterName afterSpan))))
93+
let replace = vertex (DiffTreeVertex (fromIntegral i) (Just (Replaced (ReplacedTerm beforeName beforeSpan afterName afterSpan))))
94+
graph <- local (const replace) (overlay <$> diffAlgebra t1 (Deleted (DeletedTerm beforeName beforeSpan))) <*> diffAlgebra t2 (Inserted (InsertedTerm afterName afterSpan))
9595
pure (parent `connect` replace `overlay` graph)
9696
where
9797
ann a = converting #? locationSpan a

src/Semantic/Api/V1/CodeAnalysisPB.hs

+39-37
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- Code generated by protoc-gen-haskell 0.1.0, DO NOT EDIT.
2-
{-# LANGUAGE DerivingVia, DeriveAnyClass, DuplicateRecordFields #-}
2+
{-# LANGUAGE DerivingVia, DeriveAnyClass, DuplicateRecordFields, PatternSynonyms #-}
33
{-# OPTIONS_GHC -Wno-unused-imports -Wno-missing-export-lists #-}
44
module Semantic.Api.V1.CodeAnalysisPB where
55

@@ -746,32 +746,46 @@ instance Proto3.Message DiffTreeEdge where
746746
<*> at decodeMessageField 2
747747
dotProto = undefined
748748

749-
data DiffTreeVertexDiffTerm
750-
= Deleted (Maybe DeletedTerm)
751-
| Inserted (Maybe InsertedTerm)
752-
| Replaced (Maybe ReplacedTerm)
753-
| Merged (Maybe MergedTerm)
754-
deriving stock (Eq, Ord, Show, Generic)
755-
deriving anyclass (Proto3.Message, Proto3.Named, NFData)
749+
data DiffTreeVertexDiffTerm = DiffTreeVertexDiffTerm
750+
{ deleted :: Maybe DeletedTerm
751+
, inserted :: Maybe InsertedTerm
752+
, replaced :: Maybe ReplacedTerm
753+
, merged :: Maybe MergedTerm
754+
} deriving stock (Eq, Ord, Show, Generic)
755+
deriving anyclass (Proto3.Message, Proto3.Named, NFData)
756+
757+
pattern Deleted :: DeletedTerm -> DiffTreeVertexDiffTerm
758+
pattern Deleted a = DiffTreeVertexDiffTerm (Just a) Nothing Nothing Nothing
759+
760+
pattern Inserted :: InsertedTerm -> DiffTreeVertexDiffTerm
761+
pattern Inserted a = DiffTreeVertexDiffTerm Nothing (Just a) Nothing Nothing
762+
763+
pattern Replaced :: ReplacedTerm -> DiffTreeVertexDiffTerm
764+
pattern Replaced a = DiffTreeVertexDiffTerm Nothing Nothing (Just a) Nothing
765+
766+
pattern Merged :: MergedTerm -> DiffTreeVertexDiffTerm
767+
pattern Merged a = DiffTreeVertexDiffTerm Nothing Nothing Nothing (Just a)
756768

757769
instance FromJSONPB DiffTreeVertexDiffTerm where
758-
parseJSONPB = A.withObject "DiffTreeVertexDiffTerm" $ \obj -> msum
759-
[
760-
Deleted <$> parseField obj "deleted"
761-
, Inserted <$> parseField obj "inserted"
762-
, Replaced <$> parseField obj "replaced"
763-
, Merged <$> parseField obj "merged"
764-
]
770+
parseJSONPB = A.withObject "DiffTreeVertexDiffTerm" $ \obj -> DiffTreeVertexDiffTerm
771+
<$> obj .: "deleted"
772+
<*> obj .: "inserted"
773+
<*> obj .: "replaced"
774+
<*> obj .: "merged"
765775

766776
instance ToJSONPB DiffTreeVertexDiffTerm where
767-
toJSONPB (Deleted x) = object [ "deleted" .= x ]
768-
toJSONPB (Inserted x) = object [ "inserted" .= x ]
769-
toJSONPB (Replaced x) = object [ "replaced" .= x ]
770-
toJSONPB (Merged x) = object [ "merged" .= x ]
771-
toEncodingPB (Deleted x) = pairs [ "deleted" .= x ]
772-
toEncodingPB (Inserted x) = pairs [ "inserted" .= x ]
773-
toEncodingPB (Replaced x) = pairs [ "replaced" .= x ]
774-
toEncodingPB (Merged x) = pairs [ "merged" .= x ]
777+
toJSONPB DiffTreeVertexDiffTerm{..} = object
778+
[ "deleted" .= deleted
779+
, "inserted" .= inserted
780+
, "replaced" .= replaced
781+
, "merged" .= merged
782+
]
783+
toEncodingPB DiffTreeVertexDiffTerm{..} = pairs
784+
[ "deleted" .= deleted
785+
, "inserted" .= inserted
786+
, "replaced" .= replaced
787+
, "merged" .= merged
788+
]
775789

776790
instance FromJSON DiffTreeVertexDiffTerm where
777791
parseJSON = parseJSONPB
@@ -814,23 +828,11 @@ instance Proto3.Message DiffTreeVertex where
814828
encodeMessage _ DiffTreeVertex{..} = mconcat
815829
[
816830
encodeMessageField 1 diffVertexId
817-
, case diffTerm of
818-
Nothing -> mempty
819-
Just (Deleted deleted) -> encodeMessageField 2 deleted
820-
Just (Inserted inserted) -> encodeMessageField 3 inserted
821-
Just (Replaced replaced) -> encodeMessageField 4 replaced
822-
Just (Merged merged) -> encodeMessageField 5 merged
831+
, encodeMessageField 2 (Proto3.Nested diffTerm)
823832
]
824833
decodeMessage _ = DiffTreeVertex
825834
<$> at decodeMessageField 1
826-
<*> oneof
827-
Nothing
828-
[
829-
(2, Just . Deleted <$> decodeMessageField)
830-
, (3, Just . Inserted <$> decodeMessageField)
831-
, (4, Just . Replaced <$> decodeMessageField)
832-
, (5, Just . Merged <$> decodeMessageField)
833-
]
835+
<*> at decodeMessageField 2
834836
dotProto = undefined
835837

836838
data DeletedTerm = DeletedTerm

0 commit comments

Comments
 (0)