@@ -756,17 +756,47 @@ diffAnnotatedExpression l r@(Annot {}) =
756
756
diffAnnotatedExpression l r =
757
757
diffOperatorExpression l r
758
758
759
+ {- Whitespace in diffs of operator expressions:
760
+
761
+ All indentation (whether pretty-printing or diffing) is a multiple of two
762
+ spaces, so if the operator is one character long (like ?) then the diff pads
763
+ the left margin to two space:
764
+
765
+ ␣␣e₀
766
+ ?␣e₁
767
+
768
+ ... but if the operator is two characters long (like ||) then the diff pads
769
+ the left margin to four spaces:
770
+
771
+ ␣␣␣␣e₀
772
+ ||␣␣e₁
773
+ -}
759
774
diffOperatorExpression :: (Eq a , Pretty a ) => Expr Void a -> Expr Void a -> Diff
760
- diffOperatorExpression = diffOrExpression
775
+ diffOperatorExpression = diffImportAltExpression
776
+
777
+ diffImportAltExpression :: (Pretty a , Eq a ) => Expr Void a -> Expr Void a -> Diff
778
+ diffImportAltExpression l@ (ImportAlt {}) r@ (ImportAlt {}) =
779
+ enclosed' " " (operator " ?" <> " " ) (docs l r)
780
+ where
781
+ docs (ImportAlt aL bL) (ImportAlt aR bR) =
782
+ Data.List.NonEmpty. cons (diffOrExpression aL aR) (docs bL bR)
783
+ docs aL aR =
784
+ pure (diffOrExpression aL aR)
785
+ diffImportAltExpression l@ (ImportAlt {}) r =
786
+ mismatch l r
787
+ diffImportAltExpression l r@ (ImportAlt {}) =
788
+ mismatch l r
789
+ diffImportAltExpression l r =
790
+ diffOrExpression l r
761
791
762
792
diffOrExpression :: (Eq a , Pretty a ) => Expr Void a -> Expr Void a -> Diff
763
793
diffOrExpression l@ (BoolOr {}) r@ (BoolOr {}) =
764
794
enclosed' " " (operator " ||" <> " " ) (docs l r)
765
795
where
766
796
docs (BoolOr aL bL) (BoolOr aR bR) =
767
- Data.List.NonEmpty. cons (diffTextAppendExpression aL aR) (docs bL bR)
797
+ Data.List.NonEmpty. cons (diffPlusExpression aL aR) (docs bL bR)
768
798
docs aL aR =
769
- pure (diffTextAppendExpression aL aR)
799
+ pure (diffPlusExpression aL aR)
770
800
diffOrExpression l@ (BoolOr {}) r =
771
801
mismatch l r
772
802
diffOrExpression l r@ (BoolOr {}) =
@@ -779,9 +809,9 @@ diffPlusExpression l@(NaturalPlus {}) r@(NaturalPlus {}) =
779
809
enclosed' " " (operator " +" <> " " ) (docs l r)
780
810
where
781
811
docs (NaturalPlus aL bL) (NaturalPlus aR bR) =
782
- Data.List.NonEmpty. cons (diffListAppendExpression aL aR) (docs bL bR)
812
+ Data.List.NonEmpty. cons (diffTextAppendExpression aL aR) (docs bL bR)
783
813
docs aL aR =
784
- pure (diffListAppendExpression aL aR)
814
+ pure (diffTextAppendExpression aL aR)
785
815
diffPlusExpression l@ (NaturalPlus {}) r =
786
816
mismatch l r
787
817
diffPlusExpression l r@ (NaturalPlus {}) =
@@ -794,9 +824,9 @@ diffTextAppendExpression l@(TextAppend {}) r@(TextAppend {}) =
794
824
enclosed' " " (operator " ++" <> " " ) (docs l r)
795
825
where
796
826
docs (TextAppend aL bL) (TextAppend aR bR) =
797
- Data.List.NonEmpty. cons (diffPlusExpression aL aR) (docs bL bR)
827
+ Data.List.NonEmpty. cons (diffListAppendExpression aL aR) (docs bL bR)
798
828
docs aL aR =
799
- pure (diffPlusExpression aL aR)
829
+ pure (diffListAppendExpression aL aR)
800
830
diffTextAppendExpression l@ (TextAppend {}) r =
801
831
mismatch l r
802
832
diffTextAppendExpression l r@ (TextAppend {}) =
0 commit comments