h&D:      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                    !"""""""##################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $   % % % % % & & & & & & & & & & & ' ' ' ' ' ' ( ( ( ( ( ( ( ( ) ) ) ) ) * * * * + + + + + + + + + + + + + + + + + + + , , , , , , - - - - - - - - - - - - - - - - - - - - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       / / / / / / / / / / / 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5                                                                                                              6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 : : ; ; ; ; ; ; ; ; < < < < < < < < < < < < < < < < < < < < < < < < < = = = = = = = = = = = = = = = = = = = = = = = = = = > > > > > > > > > > > > > > > > > > > > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAABBBCCCCCCCCCCCCCCCBBBBBBBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFGGGGGGGGGGGGGHHHHHHHHHHHHHHHIIIIIJJJJJJKKLLLLLLLLLMNNNNNNNNNNOOOOOOOPPPPPQQQQQQRSSSSSSSSTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXX                 YYYYYZZZZZZZZZ[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^____``````````````aaaaaaaaaaaabbbbbbbbbbbbbcccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeefffffffffggggggggghhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrsssssssssssssssssssssssssssst99t9t9t9tttttttttttttttuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBxxxxyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{||||}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~                                                                                                                                !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ $ $ $ $ % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&e&e&e&e&e&e&&&&e&e&e&e&e&e&e&e&e&e&e&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&e&e&e&&&&&e&&&&&&&&&&e&&e&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&e&&e&&&e&e&e&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------------------------------------------------------------------------------------------------------------------------------................................................................................................................................////////////////////////////////////////////////////////////////////////////////////////9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u1u11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555566666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK KKKK KK K K K K K K KKKK KKKKKKKKKKKKKK KKK K K K K K K KKKKK K KKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVRVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_______________A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbebbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                       €ÀĀŀƀǀȀɀʀˀ̀̀΀πЀрҀӀԀՀր׀؀ـڀۀ܀݀ހ߀ÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁԁՁցׁ؁فځہ܁݁ށ߁‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂ނ߂ƒÃăŃƃǃȃɃʃ˃̃̓΃σЃу҃ӃԃՃփ׃؃كڃۃ܃݃ރ߃„ÄĄńƄDŽȄɄʄ˄̄̈́΄τЄф҄ӄԄՄքׄ؄لڄۄ܄݄ބ߄…ÅąŅƅDžȅɅʅ˅̅ͅ΅υЅх҅ӅԅՅօׅ؅مڅۅ܅݅ޅ߅†ÆĆņƆdžȆɆʆˆ̆͆ΆφІц҆ӆԆՆֆ׆؆نچۆ܆݆ކ߆‡ÇćŇƇLJȇɇʇˇ͇̇·χЇч҇ӇԇՇևׇ؇هڇۇ܇݇އ߇ˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈՈֈ׈؈وڈۈ܈݈ވ߈‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщ҉ӉԉՉ։׉؉ىډۉ܉݉މ߉ŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊׊؊يڊۊ܊݊ފߊ‹ËċŋƋNjȋɋʋˋ̋͋΋ϋЋыҋӋԋՋ֋׋؋ًڋۋ܋݋ދߋŒÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌڌی܌݌ތߌÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎÏďŏƏǏȏɏʏˏ̏͏ΏϏЏяҏӏԏՏ֏׏؏ُڏۏ܏ݏޏߏÐĐŐƐǐȐɐʐː̐͐ΐϐАѐҐӐԐՐ֐אِؐڐېܐݐސߐ‘ÑđőƑǑȑɑʑˑ̑͑ΑϑБёґӑԑՑ֑בّؑڑۑܑݑޑߑ’ÒĒŒƒǒȒɒʒ˒̒͒ΒϒВђҒӒԒՒ֒גْؒڒےܒݒޒߒ“ÓēœƓǓȓɓʓ˓͓̓ΓϓГѓғӓԓՓ֓דؓٓړۓܓݓޓߓ”ÔĔŔƔǔȔɔʔ˔͔̔ΔϔДєҔӔԔՔ֔הؔٔڔ۔ܔݔޔߔ•ÕĕŕƕǕȕɕʕ˕͕̕ΕϕЕѕҕӕԕՕ֕וٕؕڕەܕݕޕߕ–ÖĖŖƖǖȖɖʖ˖̖͖ΖϖЖіҖӖԖՖ֖זٖؖږۖܖݖޖߖ—×ėŗƗǗȗɗʗ˗̗͗ΗϗЗїҗӗԗ՗֗חؗٗڗۗܗݗޗߗ˜ØĘŘƘǘȘɘʘ˘̘͘ΘϘИјҘӘԘ՘֘טؘ٘ژۘܘݘޘߘ™ÙęřƙǙșəʙ˙̙͙ΙϙЙљҙәԙՙ֙יؙ)ٙ)ڙ)ۙ)ܙ)ݙ)ޙ)ߙ)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))š)Ú)Ě)Ś)ƚ)ǚ)Ț)ɚ)ʚ)˚)̚)͚)Κ)Ϛ)К)њ)Қ)Ӛ)Ԛ)՚)֚)ך)ؚ)ٚ)ښ)ۚ)ܚ)ݚ)ޚ)ߚ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))›ÛěśƛǛțɛʛ˛̛͛ΛϛЛћқӛԛ՛֛כ؛ٛڛۛܛݛޛߛœÜĜŜƜǜȜɜʜ˜̜͜ΜϜМќҜӜԜ՜֜ל؜ٜڜۜܜݜޜߜÝĝŝƝǝȝɝʝ˝̝͝ΝϝНѝҝӝԝ՝֝ם؝ٝڝ۝ܝݝޝߝžÞĞŞƞǞȞɞʞ˞̞͞ΞϞОўҞӞԞ՞֞מ؞ٞڞ۞ܞݞޞߞŸßğşƟǟȟɟʟ˟̟͟ΟϟПџҟӟԟ՟֟ן؟ٟڟ۟ܟݟޟߟ àĠŠƠǠȠɠʠˠ̠͠ΠϠРѠҠӠԠՠ֠נؠ٠ڠ۠ܠݠޠߠ¡áġšơǡȡɡʡˡ̡͡ΡϡСѡҡӡԡա֡סء١ڡۡܡݡޡߡ¢âĢŢƢǢȢɢʢˢ̢͢΢ϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣߣ¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤߤ¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥߥ¦æĦŦƦǦȦɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צئ٦ڦۦܦݦަߦ§çħŧƧǧȧɧʧ˧̧ͧΧϧЧѧҧӧԧէ֧קا٧ڧۧܧݧާߧ¨èĨŨƨǨȨɨʨ˨̨ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨިߨ©éĩũƩǩȩɩʩ˩̩ͩΩϩЩѩҩөԩթ֩שة٩ک۩ܩݩީߩªêĪŪƪǪȪɪʪ˪̪ͪΪϪЪѪҪӪԪժ֪תت٪ڪ۪ܪݪުߪ«ëīūƫǫȫɫʫ˫̫ͫΫϫЫѫҫӫԫի֫׫ث٫ګ۫ܫݫޫ߫¬ìĬŬƬǬȬɬʬˬ̬ͬάϬЬѬҬӬԬլ֬׬ج٬ڬ۬ܬݬެ߬­íĭŭƭǭȭɭʭ˭̭ͭέϭЭѭҭӭԭխ֭׭ح٭ڭۭܭݭޭ߭®îĮŮƮǮȮɮʮˮ̮ͮήϮЮѮҮӮԮծ֮׮خٮڮۮܮݮޮ߮¯ïįůƯǯȯɯʯ˯̯ͯίϯЯѯүӯԯկ֯ׯدٯگۯܯݯޯ߯[[[[[[[[[[[[°ðİŰưǰȰɰʰ˰̰ͰΰϰаѰҰӰ԰հְװذٰڰ۰ܰݰް߰±ñıűƱDZȱɱʱ˱̱ͱαϱбѱұӱԱձֱױرٱڱ۱ܱݱޱ߱²òIJŲƲDzȲɲʲ˲̲ͲβϲвѲҲӲԲղֲײزٲڲ۲ܲݲ޲߲PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP³PóPijPųPƳPdzPȳPɳPʳP˳P̳PͳPγPϳPгPѳPҳPӳPԳPճPֳP׳PسPٳPڳP۳PܳPݳP޳P߳PPQQQQQQQQQQQQQQQ  Safe-Inferredghc-lib-parserExpand occurrences of the $topdir interpolation in a string.ghc-lib-parser expandPathVar var value str!replaces occurrences of variable $var with value in str.ghc-lib-parser&Calculate the location of the base dir Safe-Inferred -89:jghc-lib-parser7Compute all lists of the given alphabet. For example:  "ab" = ["a", "b", "aa", "ba", "ab", "bb", "aaa", "baa", "aba", ...]5 Safe-Inferred5; Safe-Inferred;pghc-lib-parser/Return the size of the closures header in words Safe-Inferred  Safe-Inferred;!ghc-lib-parserThis is a somewhat faithful representation of an info table. See  https://gitlab.haskell.org/ghc/ghc/blob/master/rts/include/rts/storage/InfoTables.h* for more details on this data structure.   Safe-Inferred#Zghc-lib-parserRead an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field.ghc-lib-parser%Size in bytes of a standard InfoTable Safe-Inferred$ghc-lib-parserRead an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field. Safe-Inferred;(Cghc-lib-parser?This is a somewhat faithful representation of IndexTable. See  https://gitlab.haskell.org/ghc/ghc/blob/master/rts/include/rts/prof/CCS.h* for more details on this data structure.ghc-lib-parser?This is a somewhat faithful representation of CostCentre. See  https://gitlab.haskell.org/ghc/ghc/blob/master/rts/include/rts/prof/CCS.h* for more details on this data structure.ghc-lib-parserThis is a somewhat faithful representation of CostCentreStack. See  https://gitlab.haskell.org/ghc/ghc/blob/master/rts/include/rts/prof/CCS.h* for more details on this data structure.ghc-lib-parserThis is a somewhat faithful representation of StgTSOProfInfo. See  https://gitlab.haskell.org/ghc/ghc/blob/master/rts/include/rts/storage/TSO.h* for more details on this data structure.!! Safe-Inferred;)0ghc-lib-parsercasts a Ptr to an Int Safe-Inferred*ghc-lib-parserThis implementation is used when PROFILING is undefined. It always returns I/, because there is no profiling info available. Safe-Inferred*9None %&89:;=ghc-lib-parserPlease report this as a bugghc-lib-parserPlease report this as a bugghc-lib-parserPlease report this as a bugghc-lib-parserThis is the representation of a Haskell value on the heap. It reflects https://gitlab.haskell.org/ghc/ghc/blob/master/rts/include/rts/storage/Closures.h!The data type is parametrized by b6: the type to store references in. Usually this is a  with the type synonym .All Heap objects have the same basic layout. A header containing a pointer to the info table and a payload with various fields. The info field below always refers to the info table pointed to by the header. The remaining fields are the payload.See  https://gitlab.haskell.org/ghc/ghc/wikis/commentary/rts/storage/heap-objects for more information.ghc-lib-parserA data constructorghc-lib-parser A functionghc-lib-parser8A thunk, an expression not obviously in head normal formghc-lib-parser3A thunk which performs a simple selection operationghc-lib-parser#An unsaturated function applicationghc-lib-parserA function applicationghc-lib-parserA suspended thunk evaluationghc-lib-parserA pointer to another closure, introduced when a thunk is updated to point at its valueghc-lib-parserA byte-code object (BCO) which can be interpreted by GHC's byte-code interpreter (e.g. as used by GHCi)ghc-lib-parser*A thunk under evaluation by another threadghc-lib-parserA  ByteArray#ghc-lib-parserA MutableByteArray# ghc-lib-parserA SmallMutableArray#ghc-lib-parserAn MVar#7, with a queue of thread state objects blocking on themghc-lib-parserAn IOPort#7, with a queue of thread state objects blocking on themghc-lib-parserA MutVar#ghc-lib-parserAn STM blocking queue.ghc-lib-parserRepresentation of StgTSO: A Thread State Object. The values for ,  and  are defined in  Constants.h.ghc-lib-parser1Representation of StgStack: The 'tsoStack ' of a .ghc-lib-parser Primitive Intghc-lib-parserPrimitive Wordghc-lib-parserPrimitive Int64ghc-lib-parserPrimitive Word64ghc-lib-parserPrimitive Addrghc-lib-parserPrimitive Floatghc-lib-parserPrimitive Doubleghc-lib-parserAnother kind of closureghc-lib-parserPointer argumentsghc-lib-parserNon-pointer argumentsghc-lib-parser Package nameghc-lib-parser Module nameghc-lib-parserConstructor nameghc-lib-parser,Pointer to the object being selected fromghc-lib-parser Arity of the partial applicationghc-lib-parserSize of the payload in wordsghc-lib-parser Pointer to a ghc-lib-parser(Sequence of already applied argumentsghc-lib-parserTarget closureghc-lib-parser+A pointer to an ArrWords of instructionsghc-lib-parser'A pointer to an ArrWords of literalsghc-lib-parser0A pointer to an ArrWords of byte code objectsghc-lib-parserThe size of this BCO in wordsghc-lib-parserAn StgLargeBitmap describing the pointerhood of its args/free varsghc-lib-parserSize of array in bytesghc-lib-parser Array payloadghc-lib-parserNumber of pointersghc-lib-parser ?? Closures.h vs ClosureMacros.hghc-lib-parser!Array payload Card table ignoredghc-lib-parserPointer to head of queueghc-lib-parserPointer to tail of queueghc-lib-parserPointer to closureghc-lib-parserPointer to contentsghc-lib-parser?? Here so it looks like an INDghc-lib-parserThe blackhole closureghc-lib-parserThe owning thread state objectghc-lib-parser??ghc-lib-parser$next weak pointer for the capabilityghc-lib-parserstackobj from StgTSOghc-lib-parsernon-zero => dirtyghc-lib-parserstack size in *words*ghc-lib-parsernon-zero => dirtyghc-lib-parserAn arbitrary Haskell value in a safe Box. The point is that even unevaluated thunks can safely be moved around inside the Box, and when required, e.g. in getBoxedClosureData>, the function knows how far it has to evaluate the argument.ghc-lib-parserThis takes an arbitrary value and puts it into a box. Note that calls like asBox (head list)-will put the thunk "head list" into the box, not the element at the head of the list. For that, use careful case expressions: case list of x:_ -> asBox xghc-lib-parserBoxes can be compared, but this is not pure, as different heap objects can, after garbage collection, become the same object.ghc-lib-parserFor generic code, this function returns all referenced closures. ghc-lib-parserGet the size of the top-level closure in words. Includes header and payload. Does not follow pointers. Safe-Inferred@ghc-lib-parserGet non-pointer fields from StgTSO_ (TSO.h)ghc-lib-parserGet non-closure fields from  StgStack_ (TSO.h) Safe-InferredB"ghc-lib-parserGet non-pointer fields from StgTSO_ (TSO.h)ghc-lib-parserGet non-closure fields from  StgStack_ (TSO.h) Safe-InferredB Safe-InferredC(c) 2012 Joachim BreitnerBSD3+Joachim Breitner  Safe-Inferred 01Lghc-lib-parser.Decode a closure to it's heap representation ().ghc-lib-parserGet the heap representation of a closure _at this moment_, even if it is unevaluated or an indirection or other exotic stuff. Beware when passing something to this function, the same caveats as for  apply.For most use cases ! is an easier to use alternative.,Currently TSO and STACK objects will return . This is because it is not memory safe to extract TSO and STACK objects (done via ). Other threads may be mutating those objects and interleave with reads in . This is particularly problematic with STACKs where pointer values may be overwritten by non-pointer values as the corresponding haskell thread runs.ghc-lib-parserConvert an unpacked heap object, to a `GenClosure b`. The inputs to this function can be generated from a heap object using .ghc-lib-parserLike , but taking a , so it is easier to work with.ghc-lib-parserClosure to decode.ghc-lib-parser#Heap representation of the closure.ghc-lib-parserHeap object to decode.ghc-lib-parser#Heap representation of the closure.ghc-lib-parserA continuation used to decode the constructor description field, in ghc-debug this code can lead to segfaults because dataConNames will dereference a random part of memory.ghc-lib-parserA continuation which is used to decode a cost centre stack In ghc-debug, this code will need to call back into the debuggee to fetch the representation of the CCS before decoding it. Using  peekTopCCS for this argument can lead to segfaults in ghc-debug as the CCS argument will point outside the copied closure.ghc-lib-parserThe 9 of the closure, extracted from the heap representation.ghc-lib-parser2Heap representation of the closure as returned by . This includes all of the object including the header, info table pointer, pointer data, and non-pointer data. The ByteArray# may be pinned or unpinned.ghc-lib-parserPointers in the payload of the closure, extracted from the heap representation as returned by `collect_pointers()` in  . The type b* is some representation of a pointer e.g.  or `Ptr Any`.ghc-lib-parser#Heap representation of the closure. Safe-Inferred;R@ghc-lib-parser'Foreign formats supported by GHC via THghc-lib-parserCghc-lib-parserC++ghc-lib-parser Objective Cghc-lib-parser Objective C++ghc-lib-parserAssembly language (.s)ghc-lib-parser JavaScriptghc-lib-parser Object (.o) Safe-InferredR (c) The GHC Teamghc-devs@haskell.orgportableSafe;Thghc-lib-parser%The language extensions known to GHC.Note that there is an orphan Binary) instance for this type supplied by the GHC.LanguageExtensions module provided by ghc-boot. We can't provide here as this would require adding transitive dependencies to the template-haskell3 package, which must have a minimal dependency set.! Safe-InferredV"(c) The GHC Teamghc-devs@haskell.orgportable Safe-InferredXnghc-lib-parserIs this character acceptable in a symbol (after the first char)? See alexGetByte in GHC.Parser.Lexer# Safe-Inferred[d ghc-lib-parserOperating systems.Using OSUnknown to generate code should produce a sensible default, but no promises.ghc-lib-parserPowerPC 64-bit ABIghc-lib-parser PowerPC64ghc-lib-parser PowerPC64 LEghc-lib-parserARM ABIghc-lib-parserARM extensionsghc-lib-parser ARM Instruction Set Architectureghc-lib-parser ArchitecturesTODO: It might be nice to extend these constructors with information about what instruction set extensions an architecture might support.ghc-lib-parserPlatform architecture and OS.ghc-lib-parserSee Note [Platform Syntax].ghc-lib-parserSee Note [Platform Syntax].66$ Safe-Inferred\k     Safe-Inferred^ %&'() *+,- ./012356"#$78]_`^9:! ;HK<=>?@ABIJCPNODEFGMLdefghijklmno  %&'() *+,- ./0123578]_`^9:! ;HK<=>?@ABIJCPNODEFGMLdefghijklmno6"#$ % Safe-Inferredb  & Safe-Inferredca  ghc-lib-parser  ghc-lib-parser  ghc-lib-parser  ghc-lib-parser  ghc-lib-parser  ' Safe-Inferred )*f? ghc-lib-parserRepresents a serialized value of a particular type. Attempts can be made to deserialize it at certain types ghc-lib-parserPut a Typeable value that we are able to actually turn into bytes into a  & value ready for deserialization later ghc-lib-parserIf the   value contains something of the given type, then use the specified deserializer to return Just that. Otherwise return Nothing. ghc-lib-parserUse a > instance to implement a serialization scheme dual to that of  ghc-lib-parserUse a  instance to implement a deserialization scheme dual to that of    ( Safe-Inferredg. ghc-lib-parser%Read target Arch/OS from the settings ghc-lib-parser&Settings filepath (for error messages)ghc-lib-parserRaw settings file contents  * Safe-Inferredg~  + Safe-Inferred j ghc-lib-parserFind the start of the codepoint preceding the codepoint at the given <. This is undefined if there is no previous valid codepoint. ghc-lib-parser-Find the start of the codepoint at the given =. This is undefined if there is no previous valid codepoint. ghc-lib-parser Decode a  containing a UTF-8 string. ghc-lib-parser Encode a < into a .ghc-lib-parserDecode a single codepoint from a byte buffer indexed by the given indexing function. ghc-lib-parser'Decode a single character at the given . ghc-lib-parser0Decode a single codepoint starting at the given . ghc-lib-parserDecode a single codepoint starting at the given byte offset into a .  , Safe-Inferred kghc-lib-parser6Size of a 64-bit word when written as a base-62 string ghc-lib-parser,Converts a 64-bit word into a base-62 string  - Safe-Inferred ?p ghc-lib-parserA   is a modified UTF-8 encoded string meant for short strings like file paths, module descriptions, etc. ghc-lib-parserO(n) Returns the length of the   in characters. ghc-lib-parserO(1) Returns the length of the   in bytes. ghc-lib-parserO(n) Convert a < into a  . ghc-lib-parserCreate a singleton ghc-lib-parserO(n) Convert a   into a <. ghc-lib-parserO(1) Test whether the   is the empty string. ghc-lib-parserO(n) Split a   representing a file path into its components by separating on the file separator characters for this platform. ghc-lib-parserO(1)* Returns the first UTF-8 codepoint in the  . Depending on the string in question, this may or may not be the actual first character in the string due to Unicode non-printable characters. ghc-lib-parserO(n) The   function takes two  s and returns J the remainder of the second iff the first is its prefix, and otherwise Nothing. .6(c) The University of Glasgow 2009, Duncan Coutts 2014ghc-devs@haskell.orgportable Safe-Inferred"%&)*1589:/ ghc-lib-parser  holds a value of type t but only in   mode. So it is like B but with a type argument for the mode to enforce that the mode is used consistently. ghc-lib-parserMode to open a package db in. ghc-lib-parser"Represents a lock of a package db. ghc-lib-parserghc-boot4's instantiated unit id, serialized to the database. ghc-lib-parserInstantiated unit ghc-lib-parserUninstantiated unit ghc-lib-parserghc-boot's Module, serialized to the database. ghc-lib-parserInformation about an unit (a unit is an installed module library).This is a subset of Cabal's InstalledPackageInfo0, with just the bits that GHC is interested in.Some types are left as parameters to be instantiated differently in ghc-pkg and in ghc itself. ghc-lib-parserUnique unit identifier that is used during compilation (e.g. to generate symbols). ghc-lib-parserIdentifier of an indefinite unit (i.e. with module holes) that this unit is an instance of.1For non instantiated units, unitInstanceOf=unitId ghc-lib-parserHow this unit instantiates some of its module holes. Map hole module names to actual module ghc-lib-parserSource package identifier.Cabal instantiates this with Distribution.Types.PackageId.PackageId type which only contains the source package name and version. Notice that it doesn't contain the Hackage revision, nor any kind of hash. ghc-lib-parserSource package name ghc-lib-parserSource package version ghc-lib-parserName of the component.Cabal supports more than one components (libraries, executables, testsuites) in the same package. Each component has a name except the default one (that can only be a library component) for which we use Nothing.GHC only deals with "library" components as they are the only kind of components that can be registered in a database and used by other modules. ghc-lib-parserABI hash used to avoid mixing up units compiled with different dependencies, compiler, options, etc. ghc-lib-parser,Identifiers of the units this one depends on ghc-lib-parserLike  , but each dependency is annotated with the ABI hash we expect the dependency to respect. ghc-lib-parser(Directories containing module interfaces ghc-lib-parser4Names of the Haskell libraries provided by this unit ghc-lib-parserNames of the external system libraries that this unit depends on. See also   field. ghc-lib-parserBecause of slight differences between the GHC dynamic linker (in GHC.Runtime.Linker) and the native system linker, some packages have to link with a different list of libraries when using GHC's. Examples include: libs that are actually gnu ld scripts, and the possibility that the .a libs do not exactly match the .so/.dll equivalents.7If this field is set, then we use that instead of the   field. ghc-lib-parserDirectories containing libraries provided by this unit. See also  .It seems to be used to store paths to external library dependencies too. ghc-lib-parserDirectories containing the dynamic libraries provided by this unit. See also  .It seems to be used to store paths to external dynamic library dependencies too. ghc-lib-parserNames of the external MacOS frameworks that this unit depends on. ghc-lib-parserDirectories containing MacOS frameworks that this unit depends on. ghc-lib-parser%Linker (e.g. ld) command line options ghc-lib-parserC compiler options that needs to be passed to the C compiler when we compile some C code against this unit. ghc-lib-parserC header files that are required by this unit (provided by this unit or external) ghc-lib-parserDirectories containing C header files that this unit depends on. ghc-lib-parser.Paths to Haddock interface files for this unit ghc-lib-parser2Paths to Haddock directories containing HTML files ghc-lib-parserModules exposed by the unit.A module can be re-exported from another package. In this case, we indicate the module origin in the second parameter. ghc-lib-parserHidden modules.These are useful for error reporting (e.g. if a hidden module is imported) ghc-lib-parserTrue if this unit has some module holes that need to be instantiated with real modules to make the unit usable (a.k.a. Backpack). ghc-lib-parserTrue if the unit is exposed. A unit could be installed in a database by "disabled" by not being exposed. ghc-lib-parser-True if the unit is trusted (cf Safe Haskell) ghc-lib-parserghc-boot('s UnitInfo, serialized to the database. ghc-lib-parser)Convert between GenericUnitInfo instancesghc-lib-parserAcquire a lock of given type related to package DB under given location. ghc-lib-parserAcquire an exclusive lock related to package DB under given location. ghc-lib-parser'Release the lock related to package DB. ghc-lib-parser:Read the part of the package DB that GHC is interested in. ghc-lib-parser=Read the part of the package DB that ghc-pkg is interested inNote that the Binary instance for ghc-pkg's representation of packages is not defined in this package. This is because ghc-pkg uses Cabal types (and Binary instances for these) which this package does not depend on.If we open the package db in read only mode, we get its contents. Otherwise we additionally receive a PackageDbLock that represents a lock on the database, so that we can safely update it later. ghc-lib-parser.Write the whole of the package DB, both parts.ghc-lib-parserFeed a & decoder with data chunks from a file. ghc-lib-parserPerform path/URL variable substitution as per the Cabal ${pkgroot} spec (http:/www.haskell.org pipermail libraries2009-May/011772.html) Paths/URLs can be relative to ${pkgroot} or ${pkgrooturl}. The "pkgroot" is the directory containing the package database.Also perform a similar substitution for the older GHC-specific "$topdir" variable. The "topdir" is the location of the ghc installation (obtained from the -B option).9 9  Safe-Inferred/qprsutwvyx{z}|~ qprsutwvyx{z}|~  Safe-Inferred abcQ Qcba/ Safe-Inferred 0 Safe-InferredE  1 Safe-Inferred ghc-lib-parserA colour/style for use with coloured. ghc-lib-parser;Parse the colour scheme from a string (presumably from the  GHC_COLORS environment variable). ghc-lib-parserAllow colours to be combined (e.g. bold + red); In case of conflict, right side takes precedence.  2 Safe-InferredB  3 Safe-Inferred4 ghc-lib-parserA filepath like x86_64-linux-7.6.3 with the platform string to use when constructing platform-version-dependent files that need to co-exist.  4 Safe-Inferredg  5 Safe-Inferred ghc-lib-parserThis type is very similar to E, but it omits the constructors that involve pretty-printing via D . Due to the implementation of  for E , this type can be caught as a E.Note that this should only be used for throwing exceptions, not for catching, as E3 will not be converted to this type when catching. ghc-lib-parser(Some other fatal signal (SIGHUP,SIGTERM) ghc-lib-parser*Prints the short usage msg after the error ghc-lib-parserA problem with the command line arguments, but don't print usage. ghc-lib-parserThe  impossible happened. ghc-lib-parserThe user tickled something that's known not to work yet, but we're not counting it as a bug. ghc-lib-parserAn installation problem. ghc-lib-parser&An error in the user's code, probably.ghc-lib-parserShort usage information to display when we are given the wrong cmd line arguments. ghc-lib-parser;Append a description of the given exception to this string. ghc-lib-parserPanics and asserts. ghc-lib-parserPanics and asserts. ghc-lib-parserPanics and asserts. ghc-lib-parserThrow a failed assertion exception for a given filename and line number.   Safe-Inferred /+ ghc-lib-parser'A call stack constraint, but only when  isDebugOn. ghc-lib-parser+Apply a function iff some condition is met. ghc-lib-parserApply a function n times to a given value. ghc-lib-parser3Like filter, only it reverses the sense of the test ghc-lib-parserUses a function to determine which of two output lists an input element should join ghc-lib-parser  takes a list of Bools and a list of some elements and filters out these elements for which the corresponding value in the list of Bools is False. This function does not check whether the lists have equal length. ghc-lib-parser  takes a list of Bools and two lists as input, and outputs a new list consisting of elements from the last two input lists. For each Bool in the list, if it is K;, then it takes an element from the former list. If it is H, it takes an element from the latter list. The elements taken correspond to the index of the Bool in its list. For example: filterByLists [True, False, True, False] "abcd" "wxyz" = "axcz" This function does not check whether the lists have equal length. ghc-lib-parser  takes a list of Bools and a list of some elements and partitions the list according to the list of Bools. Elements corresponding to K+ go to the left; elements corresponding to H go to the right. For example, ;partitionByList [True, False, True] [1,2,3] == ([1,3], [2]) This function does not check whether the lists have equal length; when one list runs out, the function stops. ghc-lib-parserstretchZipWith p z f xs ys stretches ys by inserting z in the places where p returns True ghc-lib-parserThis has the effect of making the two lists have equal length by dropping the tail of the longer one. ghc-lib-parseratLength atLen atEnd ls n unravels list ls to position n . Precisely:  atLength atLenPred atEndPred ls n | n < 0 = atLenPred ls | length ls < n = atEndPred (n - length ls) | otherwise = atLenPred (drop n ls) ghc-lib-parser &(lengthExceeds xs n) = (length xs > n) ghc-lib-parser '(lengthAtLeast xs n) = (length xs >= n) ghc-lib-parser "(lengthIs xs n) = (length xs == n) ghc-lib-parser %(lengthIsNot xs n) = (length xs /= n) ghc-lib-parser &(lengthAtMost xs n) = (length xs <= n) ghc-lib-parser ((lengthLessThan xs n) == (length xs < n) ghc-lib-parserTrue if length xs == length ys ghc-lib-parserTrue if length xs <= length ys ghc-lib-parserTrue if length xs < length ys ghc-lib-parser=Utility function to go from a singleton list to it's element.Wether or not the argument is a singleton list is only checked in debug builds. ghc-lib-parserExtract the single element of a list and panic with the given message if there are more elements or the list was empty. Like  expectJust, but for lists. ghc-lib-parserSplit a list into chunks of n elements ghc-lib-parser>Compute all the ways of removing a single element from a list. 4holes [1,2,3] = [(1, [2,3]), (2, [1,3]), (3, [1,2])] ghc-lib-parser8Replace the last element of a list with another element. ghc-lib-parser5Apply an effectful function to the last list element. ghc-lib-parser4Merge an unsorted list of sorted lists, for example: mergeListsBy compare [ [2,5,15], [1,10,100] ] = [1,2,5,10,15,100] O(n \log{} k) ghc-lib-parser=Remove duplicates but keep elements in order. O(n * log n) ghc-lib-parser=Remove duplicates but keep elements in order. O(n * log n) ghc-lib-parser;Given two lists xs and ys, return `splitAt (length xs) ys`. ghc-lib-parserdrop from the end of a list ghc-lib-parser+spanEnd p l == reverse (span p (reverse l)). The first list returns actually comes after the second list (when you look at the input list). ghc-lib-parser$Get the last two elements in a list. ghc-lib-parser onJust x m f? applies f to the value inside the Just or returns the default. ghc-lib-parserSplit a list into its last element and the initial part of the list. %snocView xs = Just (init xs, last xs) for non-empty lists. snocView xs = Nothing otherwise. Unless both parts of the result are guaranteed to be used prefer separate calls to last + init. If you are guaranteed to use both, this will be more efficient. ghc-lib-parser=Convert a word to title case by capitalising the first letterghc-lib-parserFind the "restricted" Damerau-Levenshtein edit distance between two strings. See:  9http://en.wikipedia.org/wiki/Damerau-Levenshtein_distance. Based on the algorithm presented in "A Bit-Vector Algorithm for Computing Levenshtein and Damerau Edit Distances" in PSC'02 (Heikki Hyyro). See  *http://www.cs.uta.fi/~helmu/pubs/psc02.pdf and  ,http://www.cs.uta.fi/~helmu/pubs/PSCerr.html for an explanation ghc-lib-parserSearch for possible matches to the users input in the given list, returning a small number of ranked results ghc-lib-parser*Determine the $log_2$ of exact powers of 2 ghc-lib-parserParse a string into a significand and exponent. A trivial example might be: ghci> readSignificandExponentPair "1E2" (1,2) In a more complex case we might return a exponent different than that which the user wrote. This is needed in order to use a Integer significand. ghci> readSignificandExponentPair "-1.11E5" (-111,3) ghc-lib-parserParse a string into a significand and exponent according to the "Hexadecimal Floats in Haskell" proposal. A trivial example might be: ghci> readHexSignificandExponentPair "0x1p+1" (1,1) Behaves similar to readSignificandExponentPair but the base is 16 and numbers are given in hexadecimal: ghci> readHexSignificandExponentPair "0xAp-4" (10,-4) ghci> readHexSignificandExponentPair "0x1.2p3" (18,-1) ghc-lib-parserA sample hash function for Strings. We keep multiplying by the golden ratio and adding. The implementation is: hashString = foldl' f golden where f m c = fromIntegral (ord c) * magic + hashInt32 m magic = 0xdeadbeef2Where hashInt32 works just as hashInt shown above.Knuth argues that repeated multiplication by the golden ratio will minimize gaps in the hash space, and thus it's a good choice for combining together multiple keys to form one.Here we know that individual characters c are often small, and this produces frequent collisions if we use ord c alone. A particular problem are the shorter low ASCII and ISO-8859-1 character strings. We pre-multiply by a magic twiddle factor to obtain a good distribution. In fact, given the following test: testp :: Int32 -> Int testp k = (n - ) . length . group . sort . map hs . take n $ ls where ls = [] : [c : l | l <- ls, c <- ['\0'..'\xff']] hs = foldl' f golden f m c = fromIntegral (ord c) * k + hashInt32 m n = 100000!We discover that testp magic = 0.ghc-lib-parserA sample (and useful) hash function for Int32, implemented by extracting the uppermost 32 bits of the 64-bit result of multiplying by a 33-bit constant. The constant is from Knuth, derived from the golden ratio: $golden = round ((sqrt 5 - 1) * 2^32)We get good key uniqueness on small inputs (a problem with previous versions): (length $ group $ sort $ map hashInt32 [-32767..65536]) == 65536 + 32768RS  R S   3 26 Safe-Inferred  6? ghc-lib-parserA  5 is a pointer to some array of Latin-1 encoded chars. ghc-lib-parserLexical FastStringThis is a simple FastString wrapper with an Ord instance using   (i.e. which compares FastStrings on their String representation). Hence it is deterministic from one run to the other. ghc-lib-parserNon-deterministic FastStringThis is a simple FastString wrapper with an Ord instance using   (i.e. which compares FastStrings on their Uniques). Hence it is not deterministic from one run to the other. ghc-lib-parserA  : is a UTF-8 encoded string together with a unique ID. All  s are stored in a global hashtable to support fast O(1) comparison.It is also associated with a lazy reference to the Z-encoding of this string which is used by the compiler internally. ghc-lib-parserLazily computed Z-encoding of this string. See Note [Z-Encoding] in GHC.Utils.Encoding.Since  s are globally memoized this is computed at most once for any given string. ghc-lib-parser:Gives the Modified UTF-8 encoded bytes corresponding to a  ghc-lib-parser:Gives the Modified UTF-8 encoded bytes corresponding to a  ghc-lib-parserzStringTakeN n =  n .   but is performed in  O(\min(n,l)) rather than O(l) , where l is the length of the  . ghc-lib-parserCompare FastString lexically2If you don't care about the lexical ordering, use   instead. ghc-lib-parser3Compare FastString by their Unique (not lexically).Much cheaper than   but non-deterministic! ghc-lib-parser Create a   by copying an existing  ghc-lib-parser Create a   from an existing  without copying. ghc-lib-parserCreates a UTF-8 encoded   from a < ghc-lib-parser Creates a   from a UTF-8 encoded [Word8]ghc-lib-parserCreates a (lazy) Z-encoded   from a = and account the number of forced z-strings into the passed  . ghc-lib-parserReturns the length of the   in characters ghc-lib-parserReturns True if the   is empty ghc-lib-parser)Lazily unpacks and decodes the FastString ghc-lib-parser!Returns a Z-encoded version of a  . This might be the original, if it was already Z-encoded. The first time this function is applied to a particular  , the results are memoized. ghc-lib-parser Outputs a   with no decoding at all,, that is, you get the actual bytes in the   written to the . ghc-lib-parserWrap an unboxed address into a  . ghc-lib-parser Decode a   back into a < using Latin-1 encoding. This does not free the memory associated with  . ghc-lib-parserunpackPtrStringTakeN n =  n .   but is performed in  O(\min(n,l)) rather than O(l) , where l is the length of the  . ghc-lib-parserReturn the length of a  0 0 7 Safe-Inferred ghc-lib-parserReplicate an 8-bit character 8"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei stableportable Safe-InferredC- ghc-lib-parserRendering mode. ghc-lib-parserNormal ghc-lib-parserWith zig-zag cuts ghc-lib-parser%No indentation, infinitely long lines ghc-lib-parserAll on one line ghc-lib-parserA rendering style. ghc-lib-parserThe rendering mode ghc-lib-parserLength of line, in chars ghc-lib-parser%Ratio of line length to ribbon length ghc-lib-parserThe TextDetails data typeA TextDetails represents a fragment of text that will be output at some point. ghc-lib-parserA single Char fragment ghc-lib-parserA whole String fragmentghc-lib-parserRDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside. ghc-lib-parserThe abstract type of documents. A Doc represents a *set* of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout. ghc-lib-parserA document of height and width 1, containing a literal character. ghc-lib-parser5A document of height 1 containing a literal string.   satisfies the following laws:   s     t =   (st)  ""   x = x, if x non-empty8The side condition on the last law is necessary because   "" has height 1, while   has no height. ghc-lib-parserSome text with any width. (text s = sizedText (length s) s) ghc-lib-parserSome text, but without any width. Use for non-printing text such as a HTML or Latex tags ghc-lib-parser*Empty text (one line high but no width). (emptyText = text "") ghc-lib-parser2The empty document, with no height and no width.   is the identity for  ,  ,   and  ), and anywhere in the argument list for  ,  ,  ,  ,   etc. ghc-lib-parserReturns K if the document is empty ghc-lib-parserGet the first character of a document. We also return a new document, equivalent to the original one but faster to render. Use it to avoid work duplication. ghc-lib-parserApply   to   if boolean is true.ghc-lib-parser*Perform some simplification of a built up GDoc. ghc-lib-parserList version of  . ghc-lib-parserList version of  . ghc-lib-parserList version of  . ghc-lib-parserNest (or indent) a document by a given number of positions (which may also be negative).   satisfies the laws:   0 x = x   k (  k' x) =   (k+k') x   k (x   y) =   k z     k y   k (x   y) =   k x     k y   k   =  x     k y = x   y, if x non-empty6The side condition on the last law is needed because   is a left identity for  . ghc-lib-parser "hang d1 n d2 = sep [d1, nest n d2] ghc-lib-parserApply   to the arguments if the first   is not empty. ghc-lib-parser punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn] ghc-lib-parserAbove, except that if the last line of the first argument stops at least one position before the first line of the second begins, these two lines are overlapped. For example: % text "hi" $$ nest 5 (text "there") lays out as  hi there rather than  hi there  is associative, with identity  , and also satisfies(x   y)   z = x   (y   z), if y non-empty. ghc-lib-parserAbove, with no overlapping.   is associative, with identity  . ghc-lib-parser Beside.   is associative, with identity  . ghc-lib-parser;Beside, separated by space, unless one of the arguments is  .   is associative, with identity  . ghc-lib-parserEither   or  . ghc-lib-parserEither   or  . ghc-lib-parser"Paragraph fill" version of  . ghc-lib-parser"Paragraph fill" version of  .ghc-lib-parserfirst returns its first argument if it is non-empty, otherwise its second. ghc-lib-parserThe default style (7mode=PageMode False, lineLength=100, ribbonsPerLine=1.5).ghc-lib-parserCan we output an ascii space character for spaces? Mostly true, but not for e.g. UTF16 See Note [putSpaces optimizations] for why we bother to track this. ghc-lib-parser Render the Doc to a String using the given Style. ghc-lib-parserDefault TextDetails printer ghc-lib-parser The general rendering interface. ghc-lib-parserA ';' character ghc-lib-parserA ',' character ghc-lib-parserA : character ghc-lib-parserA space character ghc-lib-parserA '=' character ghc-lib-parserA '(' character ghc-lib-parserA ')' character ghc-lib-parserA '[' character ghc-lib-parserA ']' character ghc-lib-parserA '{' character ghc-lib-parserA '}' character ghc-lib-parser int n = text (show n) ghc-lib-parser integer n = text (show n) ghc-lib-parser float n = text (show n) ghc-lib-parser double n = text (show n) ghc-lib-parser rational n = text (show n) ghc-lib-parser%See Note [Print Hexadecimal Literals] ghc-lib-parserWrap document in `...' ghc-lib-parserWrap document in '...' ghc-lib-parserWrap document in "..." ghc-lib-parserWrap document in (...) ghc-lib-parserWrap document in [...] ghc-lib-parserWrap document in {...} ghc-lib-parserRendering modeghc-lib-parser Line lengthghc-lib-parserRibbons per lineghc-lib-parserWhat to do with textghc-lib-parserWhat to do at the endghc-lib-parser The documentghc-lib-parserResult  5 5 6 6: Safe-Inferred E ghc-lib-parserAn efficient serialiser of . ghc-lib-parserAn efficient deserialiser of .  ; Safe-Inferred ݀  < Safe-Inferred ;=  = Safe-Inferred 5 ghc-lib-parserAn HValueRef with a finalizer ghc-lib-parserA reference to a remote value. These are allocated and freed explicitly. ghc-lib-parserMake a reference to a local value that we can send remotely. This reference will keep the value that it refers to alive until   is called. ghc-lib-parserConvert an HValueRef to an HValue. Should only be used if the HValue originated in this process. ghc-lib-parser4Release an HValueRef that originated in this process ghc-lib-parser Create a   from a  ). The finalizer should arrange to call  freeHValueRef on the  . (since this function needs to be called in the process that created the  3, it cannot be called directly from the finalizer). ghc-lib-parserUse a    > Safe-Inferred %&; ghc-lib-parser+reference to the Nth BCO in the current set ghc-lib-parser%reference to a previously created BCO ghc-lib-parserreference to a static ptr ghc-lib-parser a nested BCO ghc-lib-parser3Resolves to the MutableArray# inside the BreakArray ghc-lib-parserA   is one in which all the Name7 references have been resolved to actual addresses or  RemoteHValues.Note, all arrays are zero-indexed (we assume this when serializing/deserializing) ghc-lib-parser%The Binary instance for ResolvedBCOs.Note, that we do encode the endianness, however there is no support for mixed endianness setups. This is primarily to ensure that ghc and iserv share the same endianness.  ? Safe-Inferred6 ghc-lib-parserSource Unpackedness$What unpackedness the user requested ghc-lib-parser{-# UNPACK #-} specified ghc-lib-parser{-# NOUNPACK #-} specified ghc-lib-parserno unpack pragma ghc-lib-parserSource Strictness)What strictness annotation the user wrote ghc-lib-parser Lazy, ie ~ ghc-lib-parser Strict, ie ! ghc-lib-parserno strictness annotation ghc-lib-parser%See Note [Roles] in GHC.Core.CoercionOrder of constructors matters: the Ord instance coincides with the *super*typing relation on roles. ghc-lib-parserField labels are just represented as strings; they are not necessarily unique (even within a module) ghc-lib-parserA *one-index* constructor tagType of the tags associated with each constructor possibility or superclass selectorghc-lib-parserThe width of an unboxed sum  @ Safe-Inferred )*/16 ghc-lib-parserSee Note [NoGhcTc] in GHC.Hs.Extension. It has to be in this module because it is used like an extension point (in the data definitions of types that should be parameter-agnostic.ghc-lib-parser*Maps the "normal" id type for a given passghc-lib-parserThe trivial wrapper that carries no additional information See Note [XRec and SrcSpans in the AST]ghc-lib-parser4We can map over the underlying type contained in an XRec( while preserving the annotation as is.ghc-lib-parserWe can strip off the XRec to access the underlying data. See Note [XRec and SrcSpans in the AST]ghc-lib-parserGHC's L prefixed variants wrap their vanilla variant in this type family, to add SrcLoc info via Located. Other passes than GhcPass= not interested in location information can define this as "type instance XRec NoLocated a = a*. See Note [XRec and SrcSpans in the AST]ghc-lib-parserA placeholder type for TTG extension points that are not currently unused to represent any particular value.!This should not be confused with ', which are found in unused extension  constructors8 and therefore should never be inhabited. In contrast,  is used in extension points (e.g., as the field of some constructor), so it must have an inhabitant to construct AST passes that manipulate fields with that extension point as their type.ghc-lib-parser=Used when constructing a term with an unused extension point.ghc-lib-parser Eliminate a &. See Note [Constructor cannot occur].C Safe-Inferredghc-lib-parser2A ModuleName is essentially a simple string, e.g.  Data.List.ghc-lib-parser6Compares module names lexically, rather than by their Uniquesghc-lib-parserReturns the string version of the module name, with dots replaced by slashes.ghc-lib-parserReturns the string version of the module name, with dots replaced by colons.  "(c) The University of Glasgow 2015/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.org experimentalportableSafelSafe"(c) The University of Glasgow 2003/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.org experimentalportable Trustworthy%&)*0168;<Ǿghc-lib-parserA location at which to attach Haddock documentation. Note that adding documentation to a < defined oustide of the current module will cause an error.ghc-lib-parserAt the current module's header.ghc-lib-parser,At a declaration, not necessarily top level.ghc-lib-parser?At a specific argument of a function, indexed by its position.ghc-lib-parserAt a class or family instance.ghc-lib-parserTo avoid duplication between kinds and types, they are defined to be the same. Naturally, you would never have a type be % and you would never have a kind be ؅, but many of the other constructors are shared. Note that the kind Bool is denoted with څ, not ۅ'. Similarly, tuple kinds are made with , not .ghc-lib-parser&Annotation target for reifyAnnotationsghc-lib-parserRole annotationsghc-lib-parser nominalghc-lib-parser representationalghc-lib-parser phantom…ghc-lib-parser _ąghc-lib-parser 2Ņghc-lib-parser "Hello"ƅghc-lib-parser'C', @since 4.16.0.0Džghc-lib-parserInjectivity annotationɅghc-lib-parserType family result signatureʅghc-lib-parser no signature˅ghc-lib-parser k̅ghc-lib-parser = r, = (r :: k)΅ghc-lib-parser aυghc-lib-parser (a :: k)хghc-lib-parser a҅ghc-lib-parser {a}ԅghc-lib-parser forall . => Յghc-lib-parser forall -> օghc-lib-parser T a bׅghc-lib-parser T @k t؅ghc-lib-parser t :: kمghc-lib-parser aڅghc-lib-parser Tۅghc-lib-parser 'T܅ghc-lib-parser T + T݅ghc-lib-parser T + TSee  Language.Haskell.TH.Syntax#infixޅghc-lib-parser T :+: T߅ghc-lib-parser T :+: TSee  Language.Haskell.TH.Syntax#infixghc-lib-parser (T)ghc-lib-parser(,), (,,), etc.ghc-lib-parser(#,#), (#,,#), etc.ghc-lib-parser(#|#), (#||#), etc.ghc-lib-parser ->ghc-lib-parser %n ->1Generalised arrow type with multiplicity argumentghc-lib-parser ~ghc-lib-parser []ghc-lib-parser'(), '(,), '(,,), etc.ghc-lib-parser '[]ghc-lib-parser '(:)ghc-lib-parser *ghc-lib-parser  Constraintghc-lib-parser0, 1, 2, etc.ghc-lib-parser _ghc-lib-parser ?x :: tghc-lib-parser"A pattern synonym's argument type.ghc-lib-parser pattern P {x y z} = pghc-lib-parser pattern {x P y} = pghc-lib-parser pattern P { {x,y,z} } = pghc-lib-parser#A pattern synonym's directionality.ghc-lib-parser pattern P x {<-} pghc-lib-parser pattern P x {=} pghc-lib-parser  pattern P x {<-} p where P x = eghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parser C { {-# UNPACK #-} !}aghc-lib-parserA single data constructor.The constructors for  can roughly be divided up into two categories: those for constructors with "vanilla" syntax (, , and 0), and those for constructors with GADT syntax ( and ). The  constructor, which quantifies additional type variables and class contexts, can surround either variety of constructor. However, the type variables that it quantifies are different depending on what constructor syntax is used:If a : surrounds a constructor with vanilla syntax, then the  will only quantify  existential type variables. For example: % data Foo a = forall b. MkFoo a b In MkFoo,  will quantify b , but not a.If a 7 surrounds a constructor with GADT syntax, then the  will quantify all8 type variables used in the constructor. For example: > data Bar a b where MkBar :: (a ~ b) => c -> MkBar a b In MkBar,  will quantify a, b, and c.Multiplicity annotations for data types are currently not supported in Template Haskell (i.e. all fields represented by Template Haskell will be linear).ghc-lib-parser C Int aghc-lib-parser C { v :: Int, w :: a }ghc-lib-parser Int :+ aghc-lib-parser forall a. Eq a => C [a]ghc-lib-parser C :: a -> b -> T b Intghc-lib-parser C :: { v :: Int } -> T b Intghc-lib-parserUnlike  and ,  refers to the strictness annotations that the compiler chooses for a data constructor field, which may be different from what is written in source code.2Note that non-unpacked strict fields are assigned  when a bang would be inappropriate, such as the field of a newtype constructor and fields that have an unlifted type.See Ĉ for more information.ghc-lib-parser"Field inferred to not have a bang.ghc-lib-parserField inferred to have a bang.ghc-lib-parserField inferred to be unpacked.ghc-lib-parser corresponds to strictness annotations found in the source code.4This may not agree with the annotations returned by Ĉ. See Ĉ for more information.ghc-lib-parser C aghc-lib-parser C {~}aghc-lib-parser C {!}aghc-lib-parser< corresponds to unpack annotations found in the source code.4This may not agree with the annotations returned by Ĉ. See Ĉ for more information.ghc-lib-parser C aghc-lib-parser C { {-# NOUNPACK #-} } aghc-lib-parser C { {-# UNPACK #-} } aghc-lib-parserSince the advent of ConstraintKinds, constraints are really just types. Equality constraints use the  constructor. Constraints may also be tuples of other constraints.ghc-lib-parser +{ {-# COMPLETE C_1, ..., C_i [ :: T ] #-} }ghc-lib-parserOne equation of a type family instance or closed type family. The arguments are the left-hand-side type and the right-hand-side result.3For instance, if you had the following type family: type family Foo (a :: k) :: k where forall k (a :: k). Foo @k a = a The  Foo @k a = a* equation would be represented as follows:  (J [΅ k, υ a (م k)]) (օ (ׅ (څ ''Foo) (م k)) (م a)) (م a) ghc-lib-parserCommon elements of  and . By analogy with "head" for type classes and type class instances as defined in 0Type classes: an exploration of the design space, the TypeFamilyHead; is defined to be the elements of the declaration between  type family and where.†ghc-lib-parser8A pattern synonym's type. Note that a pattern synonym's fully specified type has a peculiar shape coming with two forall quantifiers and two constraint contexts. For example, consider the pattern synonym 'pattern P x1 x2 ... xn = *P's complete type is of the following form pattern P :: forall universals. required constraints => forall existentials. provided constraints => t1 -> t2 -> ... -> tn -> tconsisting of four parts: the (possibly empty lists of) universally quantified type variables and required constraints on them.the (possibly empty lists of) existentially quantified type variables and the provided constraints on them. the types t1, t2, .., tn of x1, x2, .., xn, respectively the type t of , mentioning only universals.Pattern synonym types interact with TH when (a) reifying a pattern synonym, (b) pretty printing, or (c) specifying a pattern synonym's type signature explicitly:/Reification always returns a pattern synonym's fully( specified type in abstract syntax.Pretty printing via  abbreviates a pattern synonym's type unambiguously in concrete syntax: The rule of thumb is to print initial empty universals and the required context as () =>, if existentials and a provided context follow. If only universals and their required context, but no existentials are specified, only the universals and their required context are printed. If both or none are specified, so both (or none) are printed.>When specifying a pattern synonym's type explicitly with  either one of the universals, the existentials, or their contexts may be left empty.See the GHC user's guide for more information on pattern synonyms and their types:  https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#pattern-synonyms.Æghc-lib-parser T x = A x | B (T x) deriving (Z,W) deriving stock Eq }ӆghc-lib-parser { newtype Cxt x => T x = A (B x) deriving (Z,W Q) deriving stock Eq }Ԇghc-lib-parser { type T x = (x,x) }Նghc-lib-parser  { class Eq a => Ord a where ds }ֆghc-lib-parser { instance {-# OVERLAPS #-} Show w => Show [w] where ds }׆ghc-lib-parser { length :: [a] -> Int }؆ghc-lib-parser { type TypeRep :: k -> Type }نghc-lib-parser -{ foreign import ... } { foreign export ... }چghc-lib-parser { infix 3 foo }ۆghc-lib-parser { default (Integer, Double) }܆ghc-lib-parserpragmas݆ghc-lib-parser+data families (may also appear in [Dec] of Ն and ֆ)ކghc-lib-parser { data instance Cxt x => T [x] = A x | B (T x) deriving (Z,W) deriving stock Eq }߆ghc-lib-parser { newtype instance Cxt x => T [x] = A (B x) deriving (Z,W) deriving stock Eq }ghc-lib-parser { type instance ... }ghc-lib-parser0open type families (may also appear in [Dec] of Ն and ֆ)ghc-lib-parser 3{ type family F a b = (r :: *) | r -> a where ... }ghc-lib-parser ({ type role T nominal representational }ghc-lib-parser 0{ deriving stock instance Ord a => Ord (Foo a) }ghc-lib-parser &{ default size :: Data a => a -> Int }ghc-lib-parserPattern Synonymsghc-lib-parser#A pattern synonym's type signature.ghc-lib-parser  { ?x = expr }Implicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.ghc-lib-parser p <- eghc-lib-parser { let { x=e1; y=e2 } }ghc-lib-parser eghc-lib-parserx <- e1 | s2, s3 | s4 (in )ghc-lib-parser rec { s1; s2 }ghc-lib-parser f x { | odd x } = xghc-lib-parser &f x { | Just y <- x, Just z <- y } = zghc-lib-parser +f p { | e1 = e2 | e3 = e4 } where dsghc-lib-parser f p { = e } where dsghc-lib-parser { x }ghc-lib-parser "data T1 = C1 t1 t2; p = {C1} e1 e2ghc-lib-parser  { 5 or 'c'}ghc-lib-parser { f x }ghc-lib-parser  { f @Int }ghc-lib-parser %{x + y} or {(x+)} or {(+ x)} or {(+)}ghc-lib-parser {x + y}See  Language.Haskell.TH.Syntax#infixghc-lib-parser { (e) }See  Language.Haskell.TH.Syntax#infixghc-lib-parser { \ p1 p2 -> e }ghc-lib-parser { \case m1; m2 }ghc-lib-parser { \cases m1; m2 }ghc-lib-parser  { (e1,e2) }The B+ is necessary for handling tuple sections. (1,) translates to 'TupE [Just (LitE (IntegerL 1)),Nothing]ghc-lib-parser { (# e1,e2 #) }The B+ is necessary for handling tuple sections.  (# 'c', #) translates to -UnboxedTupE [Just (LitE (CharL 'c')),Nothing]ghc-lib-parser  { (#|e|#) }ghc-lib-parser { if e1 then e2 else e3 }ghc-lib-parser { if | g1 -> e1 | g2 -> e2 }ghc-lib-parser { let { x=e1; y=e2 } in e3 }ghc-lib-parser { case e of m1; m2 }ghc-lib-parser{ do { p <- e1; e2 } }1 or a qualified do if the module name is presentghc-lib-parser!{ mdo { x <- e1 y; y <- e2 x; } }2 or a qualified mdo if the module name is presentghc-lib-parser  { [ (x,y) | x <- xs, y <- ys ] }3The result expression of the comprehension is the last of the s, and should be a .E.g. translation: [ f x | x <- xs ] CompE [BindS (VarP x) (VarE xs), NoBindS (AppE (VarE f) (VarE x))]ghc-lib-parser { [ 1 ,2 .. 10 ] }ghc-lib-parser  { [1,2,3] }ghc-lib-parser  { e :: t }ghc-lib-parser { T { x = y, z = w } }ghc-lib-parser { (f x) { z = w } }ghc-lib-parser  { static e }ghc-lib-parser { _x }This is used for holes or unresolved identifiers in AST quotes. Note that it could either have a variable name or constructor name.ghc-lib-parser{ #x } ( Overloaded label )ghc-lib-parser{ ?x } ( Implicit parameter )ghc-lib-parser { exp.field } ( Overloaded Record Dot )ghc-lib-parser(.x) or (.x.y) (Record projections)ghc-lib-parser f { p1 p2 = body where decs }ghc-lib-parser $case e of { pat -> body where decs }ghc-lib-parserPattern in Haskell given in {}ghc-lib-parser  { 5 or 'c' }ghc-lib-parser { x }ghc-lib-parser  { (p1,p2) }ghc-lib-parser { (# p1,p2 #) }ghc-lib-parser  { (#|p|#) }ghc-lib-parser 'data T1 = C1 t1 t2; {C1 @ty1 p1 p2} = eghc-lib-parser foo ({x :+ y}) = eghc-lib-parser foo ({x :+ y}) = eSee  Language.Haskell.TH.Syntax#infixghc-lib-parser {(p)}See  Language.Haskell.TH.Syntax#infixghc-lib-parser { ~p }ghc-lib-parser { !p }ghc-lib-parser  { x @ p }ghc-lib-parser { _ }ghc-lib-parser f (Pt { pointx = x }) = g xghc-lib-parser  { [1,2,3] }ghc-lib-parser  { p :: t }ghc-lib-parser  { e -> p }ghc-lib-parser#Raw bytes embedded into the binary.Avoid using Bytes constructor directly as it is likely to change in the future. Use helpers such as mkBytes$ in Language.Haskell.TH.Lib instead.ghc-lib-parserPointer to the dataghc-lib-parserOffset from the pointerghc-lib-parserNumber of bytesghc-lib-parserUsed for overloaded and non-overloaded literals. We don't have a good way to represent non-overloaded literals at the moment. Maybe that doesn't matter?ghc-lib-parser!A primitive C-style string, type ‡ghc-lib-parserSome raw bytes, type :ʇghc-lib-parserʇ describes a single instance of a class or type function. It is just a φ,, but guaranteed to be one of the following:ֆ (with empty [φ])ކ or ߆ (with empty derived [])ˇghc-lib-parserIn ׇ#, is the type constructor unlifted?̇ghc-lib-parserIn ׇ, arity of the type constructor͇ghc-lib-parserIn , , and , the total number of ·s. For example, (#|#) has a ͇ of 2.·ghc-lib-parserIn  and =, the number associated with a particular data constructor. ·s are one-indexed and should never exceed the value of its corresponding ͇. For example:(#_|#) has · 1 (out of a total ͇ of 2)(#|_#) has · 2 (out of a total ͇ of 2)χghc-lib-parserIn ԇ and ؇", name of the parent class or typeЇghc-lib-parserObtained from È in the  Monad.чghc-lib-parser'Contains the import list of the module.҇ghc-lib-parserObtained from  in the  Monad.Ӈghc-lib-parser-A class, with a list of its visible instancesԇghc-lib-parserA class methodՇghc-lib-parserA "plain" type constructor. "Fancier" type constructors are returned using ׇ or և as appropriate. At present, this reified declaration will never have derived instances attached to it (if you wish to check for an instance, see ).ևghc-lib-parserA type or data family, with a list of its visible instances. A closed type family is returned with 0 instances.ׇghc-lib-parserA "primitive" type constructor, which can't be expressed with a φ . Examples: (->), Int#.؇ghc-lib-parserA data constructorهghc-lib-parserA pattern synonymڇghc-lib-parser7A "value" variable (as opposed to a type variable, see ۇ).The  Maybe Dec field contains Just the declaration which defined the variable - including the RHS of the declaration - or else Nothing, in the case where the RHS is unavailable to the compiler. At present, this value is always Nothing: returning the RHS has not yet been implemented because of lack of interest.ۇghc-lib-parserA type variable.The Type field contains the type which underlies the variable. At present, this is always م theName5, but future changes may permit refinement of this.ghc-lib-parserUniq5 is used by GHC to distinguish names from each other.ghc-lib-parser Variablesghc-lib-parserData constructorsghc-lib-parserType constructors and classes; Haskell has them in the same name space for now.ghc-lib-parser&An unqualified name; dynamically boundghc-lib-parser#A qualified name; dynamically boundghc-lib-parserA unique local nameghc-lib-parser&Local name bound outside of the TH ASTghc-lib-parserGlobal name bound outside of the TH AST: An original name (occurrences only, not binders) Need the namespace too to be sure which thing we are namingghc-lib-parser7An abstract type representing names in the syntax tree.s can be constructed in several ways, which come with different name-capture guarantees (see &Language.Haskell.TH.Syntax#namecapture% for an explanation of name capture):the built-in syntax 'f and ''T4 can be used to construct names, The expression 'f gives a Name which refers to the value f currently in scope, and ''T gives a Name which refers to the type T7 currently in scope. These names can never be captured. and  are similar to 'f and ''T respectively, but the Names are looked up at the point where the current splice is being run. These names can never be captured. monadically generates a new name, which can never be captured. generates a capturable name.Names constructed using newName and mkName" may be used in bindings (such as  let x = ... or x -> ...), but names constructed using lookupValueName, lookupTypeName, 'f, ''T may not.ghc-lib-parserObtained from È and .ghc-lib-parserA  instance can have any of its values turned into a Template Haskell expression. This is needed when a value used within a Template Haskell quotation is bound outside the Oxford brackets ( [| ... |] or  [|| ... ||]*) but not at the top level. As an example: 2add1 :: Int -> Q (TExp Int) add1 x = [|| x + 1 ||]2Template Haskell has no way of knowing what value x: will take on at splice-time, so it requires the type of x to be an instance of .A  instance must satisfy  $(lift x) D x and $$(liftTyped x) D x for all x, where $(...) and $$(...) are Template Haskell splices. It is additionally expected that  x D  ( x).6 instances can be derived automatically by use of the  -XDeriveLift GHC language extension: {-# LANGUAGE DeriveLift #-} module Foo where import Language.Haskell.TH.Syntax data Bar a = Bar1 a (Bar a) | Bar2 String deriving Lift!Representation-polymorphic since template-haskell-2.16.0.0.ghc-lib-parserTurn a value into a Template Haskell expression, suitable for use in a splice.ghc-lib-parserTurn a value into a Template Haskell typed expression, suitable for use in a typed splice.ghc-lib-parserUnderlying monadic valueghc-lib-parser(Represents an expression which has type a. Built on top of 6, typed expressions allow for type-safe splicing via:typed quotes, written as  [|| ... ||] where ...4 is an expression; if that expression has type a#, then the quotation has type  ( a)1typed splices inside of typed quotes, written as $$(...) where ...) is an arbitrary expression of type  ( a)Traditional expression quotes and splices let us construct ill-typed expressions:.fmap ppr $ runQ [| True == $( [| "foo" |] ) |]#GHC.Types.True GHC.Classes.== "foo"#GHC.Types.True GHC.Classes.== "foo" error: @ Couldn't match expected type @Bool@ with actual type @[Char]@6 @ In the second argument of @(==)@, namely @"foo"@& In the expression: True == "foo"1 In an equation for @it@: it = True == "foo"3With typed expressions, the type error occurs when  constructing" the Template Haskell expression:3fmap ppr $ runQ [|| True == $$( [|| "foo" ||] ) ||] error:. @ Couldn't match type @[Char]@ with @Bool@" Expected type: Q (TExp Bool)$ Actual type: Q (TExp [Char])5 @ In the Template Haskell quotation [|| "foo" ||]& In the expression: [|| "foo" ||]6 In the Template Haskell splice $$([|| "foo" ||])!Representation-polymorphic since template-haskell-2.16.0.0.ghc-lib-parser.Underlying untyped Template Haskell expressionghc-lib-parserThe  class implements the minimal interface which is necessary for desugaring quotations.The Monad m superclass is needed to stitch together the different AST fragments. is used when desugaring binding structures such as lambdas to generate fresh names.Therefore the type of an untyped quotation in GHC is `Quote m => m Exp`For many years the type of a quotation was fixed to be `Q Exp` but by more precisely specifying the minimal interface it enables the  to be extracted purely from the quotation without interacting with .ghc-lib-parser0Generate a fresh name, which cannot be captured.For example, this: .f = $(do nm1 <- newName "x" let nm2 =  "x" return ( [ nm1] (LamE [VarP nm2] ( nm1))) )will produce the splice f = \x0 -> \x -> x0In particular, the occurrence VarE nm1 refers to the binding VarP nm1', and is not captured by the binding VarP nm2.Although names generated by newName cannot  be captured , they can capture other names. For example, this: g = $(do nm1 <- newName "x" let nm2 = mkName "x" return (LamE [VarP nm2] (LamE [VarP nm1] (VarE nm2))) )will produce the splice g = \x -> \x0 -> x0since the occurrence VarE nm2+ is captured by the innermost binding of x , namely VarP nm1.ghc-lib-parserDiscard the type annotation and produce a plain Template Haskell expression!Representation-polymorphic since template-haskell-2.16.0.0.ghc-lib-parser4Annotate the Template Haskell expression with a typeThis is unsafe because GHC cannot check for you that the expression really does have the type you claim it has.!Representation-polymorphic since template-haskell-2.16.0.0.ghc-lib-parserUnsafely convert an untyped code representation into a typed code representation.ghc-lib-parser4Lift a monadic action producing code into the typed  representationghc-lib-parserExtract the untyped representation from the typed representationghc-lib-parserModify the ambient monad used during code generation. For example, you can use  to handle a state effect:  handleState :: Code (StateT Int Q) a -> Code Q a handleState = hoistCode (flip runState 0) ghc-lib-parserVariant of (>>=) which allows effectful computations to be injected into code generation.ghc-lib-parserVariant of (>>) which allows effectful computations to be injected into code generation.ghc-lib-parser7A useful combinator for embedding monadic actions into   myCode :: ... => Code m a myCode = joinCode $ do x <- someSideEffect return (makeCodeWith x) ghc-lib-parser>Report an error (True) or warning (False), but carry on; use  to stop.ghc-lib-parserReport an error to the user, but allow the current splice's computation to carry on. To abort the computation, use .ghc-lib-parser+Report a warning to the user, and carry on.ghc-lib-parserRecover from errors raised by  or .ghc-lib-parserLook up the given name in the (type namespace of the) current splice's scope. See %Language.Haskell.TH.Syntax#namelookup for more details.ghc-lib-parserLook up the given name in the (value namespace of the) current splice's scope. See %Language.Haskell.TH.Syntax#namelookup for more details.ghc-lib-parser looks up information about the +. It will fail with a compile error if the  is not visible. A  is visible if it is imported or defined in a prior top-level declaration group. See the documentation for  for more details. Bool, and reifyType ''Bool returns Type. This works even if there's no explicit signature and the type or kind is inferred.ghc-lib-parserTemplate Haskell is capable of reifying information about types and terms defined in previous declaration groups. Top-level declaration splices break up declaration groups.For an example, consider this code block. We define a datatype X and then try to call  on the datatype. module Check where data X = X deriving Eq $(do info <- reify ''X runIO $ print info ) (This code fails to compile, noting that X1 is not available for reification at the site of . We can fix this by creating a new declaration group using an empty top-level splice: data X = X deriving Eq $(pure []) $(do info <- reify ''X runIO $ print info )  We provide  as a means of documenting this behavior and providing a name for the pattern.2Since top level splices infer the presence of the $( ... ) brackets, we can also write: data X = X deriving Eq newDeclarationGroup $(do info <- reify ''X runIO $ print info ) ghc-lib-parserreifyInstances nm tys returns a list of all visible instances (see below for "visible") of nm tys. That is, if nm is the name of a type class, then all instances of this class at the types tys! are returned. Alternatively, if nm is the name of a data family or type family, all instances of this family at the types tys are returned.Note that this is a "shallow" test; the declarations returned merely have instance heads which unify with nm tys(, they need not actually be satisfiable.reifyInstances ''Eq [  2 `օ` څ ''A `օ` څ ''B ] contains the "instance (Eq a, Eq b) => Eq (a, b) regardless of whether A and B themselves implement 'reifyInstances ''Show [ م ( "a") ]* produces every available instance of 'There is one edge case: reifyInstances ''Typeable tys9 currently always produces an empty list (no matter what tys are given).In principle, the *visible* instances are * all instances defined in a prior top-level declaration group (see docs on newDeclarationGroup), or * all instances defined in any module transitively imported by the module being compiledHowever, actually searching all modules transitively below the one being compiled is unreasonably expensive, so reifyInstances will report only the instance for modules that GHC has had some cause to visit during this compilation. This is a shortcoming: reifyInstances might fail to report instances for a type that is otherwise unusued, or instances defined in a different component. You can work around this shortcoming by explicitly importing the modules whose instances you want to be visible. GHC issue  =https://gitlab.haskell.org/ghc/ghc/-/issues/20529#note_388980#20529! has some discussion around this.ghc-lib-parser reifyRoles nm returns the list of roles associated with the parameters (both visible and invisible) of the tycon nm . Fails if nm cannot be found or is not a tycon. The returned list should never contain ….An invisible parameter to a tycon is often a kind parameter. For example, if we have 9type Proxy :: forall k. k -> Type data Proxy a = MkProxy and reifyRoles Proxy, we will get [, ]. The  is the role of the invisible k/ parameter. Kind parameters are always nominal.ˆghc-lib-parserreifyAnnotations target2 returns the list of annotations associated with target. Only the annotations that are appropriately typed is returned. So if you have Int and String annotations for the same target, you have to call this function twice.Èghc-lib-parserreifyModule mod# looks up information about module mod. To look up the current module, call this function with the return value of .Ĉghc-lib-parserreifyConStrictness nm looks up the strictness information for the fields of the constructor with the name nm-. Note that the strictness information that Ĉ returns may not correspond to what is written in the source code. For example, in the following data declaration: data Pair a = Pair a a Ĉ would return [, DecidedLazy]0 under most circumstances, but it would return [, DecidedStrict] if the  -XStrictData language extension was enabled.ňghc-lib-parser%Is the list of instances returned by  nonempty?If you're confused by an instance not being visible despite being defined in the same module and above the splice in question, see the docs for  for a possible explanation.ƈghc-lib-parser2The location at which this computation is spliced.Ljghc-lib-parserThe Lj1 function lets you run an I/O computation in the  monad. Take care: you are guaranteed the ordering of calls to Lj within a single ? computation, but not about the order in which splices are run.Note: for various murky reasons, stdout and stderr handles are not necessarily flushed when the compiler finishes running, so you should flush them yourself.Ȉghc-lib-parserGet the package root for the current package which is being compiled. This can be set explicitly with the -package-root flag but is normally just the current working directory.The motivation for this flag is to provide a principled means to remove the assumption from splices that they will be executed in the directory where the cabal file resides. Projects such as haskell-language-server can't and don't change directory when compiling files but instead set the -package-root flag appropiately.Ɉghc-lib-parserThe input is a filepath, which if relative is offset by the package root.ʈghc-lib-parserRecord external files that runIO is using (dependent upon). The compiler can then recognize that it should re-compile the Haskell file when an external file changes.Expects an absolute file path.Notes:ghc -M does not know about these dependencies - it does not execute TH.The dependency is based on file content, not a modification timeˈghc-lib-parserObtain a temporary file path with the given suffix. The compiler will delete this file after compilation.̈ghc-lib-parserAdd additional top-level declarations. The added declarations will be type checked along with the current declaration group.͈ghc-lib-parserΈghc-lib-parserEmit a foreign file which will be compiled and linked to the object for the current module. Currently only languages that can be compiled with the C compiler are supported, and the flags passed as part of -optc will be also applied to the C compiler invocation that will compile them.0Note that for non-C languages (for example C++) extern C directives must be used to get symbols that we can access from Haskell.To get better errors, it is recommended to use #line pragmas when emitting C files, e.g. {-# LANGUAGE CPP #-} ... addForeignSource LangC $ unlines [ "#line " ++ show (819 + 1) ++ " " ++ show "libraries/template-haskell/Language/Haskell/TH/Syntax.hs" , ... ]ψghc-lib-parserSame as Έ, but expects to receive a path pointing to the foreign file instead of a <; of its contents. Consider using this in conjunction with ˈ.This is a good alternative to Έ9 when you are trying to directly link in an object file.Јghc-lib-parserAdd a finalizer that will run in the Q monad after the current module has been type checked. This only makes sense when run within a top-level splice.The finalizer is given the local type environment at the splice point. Thus  is able to find the local definitions when executed inside the finalizer.шghc-lib-parser/Adds a core plugin to the compilation pipeline.addCorePlugin m' has almost the same effect as passing  -fplugin=m to ghc in the command line. The major difference is that the plugin module m must not belong to the current package. When TH executes, it is too late to tell the compiler that we needed to compile first a plugin module in the current package.҈ghc-lib-parserGet state from the  monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed.ӈghc-lib-parserReplace the state in the  monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed.Ԉghc-lib-parserDetermine whether the given language extension is enabled in the  monad.Ոghc-lib-parser%List all enabled language extensions.ֈghc-lib-parserAdd Haddock documentation to the specified location. This will overwrite any documentation at the location if it already exists. This will reify the specified name, so it must be in scope when you call it. If you want to add documentation to something that you are currently splicing, you can use Ј e.g. do let nm = mkName "x" addModFinalizer $ putDoc (DeclDoc nm) "Hello" [d| $(varP nm) = 42 |]The helper functions  withDecDoc and  withDecsDoc$ will do this for you, as will the funD_doc and other _doc0 combinators. You most likely want to have the -haddock flag turned on when using this. Adding documentation to anything outside of the current module will cause an error.׈ghc-lib-parserRetreives the Haddock documentation at the specified location, if one exists. It can be used to read documentation on things defined outside of the current module, provided that those modules were compiled with the -haddock flag.ghc-lib-parser is an internal utility function for constructing generic conversion functions from types with  instances to various quasi-quoting representations. See the source of  and  for two example usages: mkCon, mkLit and appQ are overloadable to account for different syntax for expressions and patterns; antiQ allows you to override type-specific cases, a common usage is just  const Nothing#, which results in no overloading.ghc-lib-parser converts a value to a  representation of the same value, in the SYB style. It is generalized to take a function override type-specific cases; see # for a more commonly used variant.ghc-lib-parser is a variant of  in the - type class which works for any type with a  instance.ghc-lib-parser converts a value to a  representation of the same value, in the SYB style. It takes a function to handle type-specific cases, alternatively, pass  const Nothing to get default behavior.ghc-lib-parser#The name without its module prefix.ExamplesnameBase ''Data.Either.Either"Either"nameBase (mkName "foo")"foo"nameBase (mkName "Module.foo")"foo"ghc-lib-parser&Module prefix of a name, if it exists.ExamplesnameModule ''Data.Either.EitherJust "Data.Either"nameModule (mkName "foo")Nothing nameModule (mkName "Module.foo") Just "Module"ghc-lib-parserA name's package, if it exists.Examples namePackage ''Data.Either.Either Just "base"namePackage (mkName "foo")Nothing!namePackage (mkName "Module.foo")Nothingghc-lib-parserReturns whether a name represents an occurrence of a top-level variable (), data constructor (%), type constructor, or type class (#). If we can't be sure, it returns I.ExamplesnameSpace 'Prelude.id Just VarNamenameSpace (mkName "id")2Nothing -- only works for top-level variable namesnameSpace 'Data.Maybe.Just Just DataNamenameSpace ''Data.Maybe.MaybeJust TcClsNamenameSpace ''Data.Ord.OrdJust TcClsNameghc-lib-parserGenerate a capturable name. Occurrences of such names will be resolved according to the Haskell scoping rules at the occurrence site. For example: =f = [| pi + $(varE (mkName "pi")) |] ... g = let pi = 3 in $fIn this case, g is desugared to g = Prelude.pi + 3 Note that mkName" may be used with qualified names: mkName "Prelude.pi" See also  for a useful combinator. The above example could be rewritten using  as f = [| pi + $(dyn "pi") |]ghc-lib-parserOnly used internallyghc-lib-parserOnly used internallyghc-lib-parser4Used for 'x etc, but not available to the programmerghc-lib-parserTuple data constructorghc-lib-parserTuple type constructorghc-lib-parserUnboxed tuple data constructorghc-lib-parserUnboxed tuple type constructorghc-lib-parserUnboxed sum data constructorghc-lib-parserUnboxed sum type constructorghc-lib-parser(Highest allowed operator precedence for ȇ constructor (answer: 9)ghc-lib-parserDefault fixity: infixl 9ghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parser Produces an  literal from the NUL-terminated C-string starting at the given memory address.ghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parserghc-lib-parser‰ghc-lib-parserIf the function passed to ; inspects its argument, the resulting action will throw a .Éghc-lib-parserĉghc-lib-parser ghc-lib-parser  (Eq a, Ord b)܆ghc-lib-parser { {-# INLINE [1] foo #-} }݆ghc-lib-parser { data family T a b c :: * }ghc-lib-parser -{ type family T a b c = (r :: *) | r -> a b }ghc-lib-parser{ pattern P v1 v2 .. vn <- p }! unidirectional or { pattern P v1 v2 .. vn = p }! implicit bidirectional or ?{ pattern P v1 v2 .. vn <- p where P v1 v2 .. vn = e } explicit bidirectionalalso, besides prefix pattern synonyms, both infix and record pattern synonyms are supported. See  for details܇ghc-lib-parserLine and character positionghc-lib-parser Fresh namesghc-lib-parserReport an error (True) or warning (False) ...but carry on; use  to stopghc-lib-parserthe error handlerghc-lib-parseraction which may failghc-lib-parserRecover from the monadic ghc-lib-parserhandler to invoke on failureghc-lib-parsercomputation to run…ÅŅƅąDžȅɅ̅˅ʅͅυ΅Ѕ҅хӅ߅ޅم݅؅ۅ܅Յԅڅօׅ†ÆdžĆņƆȆɆʆΆ͆ˆ̆φۆцԆ׆܆߆ӆ؆ֆچІنކ݆҆ՆLJćƇŇLJȇɇʇˇ͇̇·χЇч҇ڇۇՇׇهև؇Ӈԇ܇݇߇އˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈՈֈ׈؈وڈۈ܈݈ވ߈…ÅŅƅąDžȅɅ̅˅ʅͅυ΅Ѕ҅хӅ߅ޅم݅؅ۅ܅Յԅڅօׅ†ÆdžĆņƆȆɆʆΆ͆ˆ̆φۆцԆ׆܆߆ӆ؆ֆچІنކ݆҆ՆLJćƇŇLJȇɇʇˇ͇̇·χЇч҇ڇۇՇׇهև؇Ӈԇ܇݇߇އˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈՈֈ׈؈وڈۈ܈݈ވ߈Safe\"ًghc-lib-parserReturns K if the document is emptyڋghc-lib-parserAn empty documentۋghc-lib-parserA ';' character܋ghc-lib-parserA ',' character݋ghc-lib-parserA : characterދghc-lib-parser A "::" stringߋghc-lib-parserA space characterghc-lib-parserA '=' characterghc-lib-parser A "->" stringghc-lib-parserA '(' characterghc-lib-parserA ')' characterghc-lib-parserA '[' characterghc-lib-parserA ']' characterghc-lib-parserA '{' characterghc-lib-parserA '}' characterghc-lib-parserWrap document in (...)ghc-lib-parserWrap document in [...]ghc-lib-parserWrap document in {...}ghc-lib-parserWrap document in '...'ghc-lib-parserWrap document in "..."ghc-lib-parserBesideghc-lib-parserList version of ghc-lib-parserBeside, separated by spaceghc-lib-parserList version of ghc-lib-parser5Above; if there is no overlap it "dovetails" the twoghc-lib-parserAbove, without dovetailing.ghc-lib-parserList version of ghc-lib-parserEither hcat or vcatghc-lib-parserEither hsep or vcatghc-lib-parser"Paragraph fill" version of catghc-lib-parser"Paragraph fill" version of sepghc-lib-parserNestedghc-lib-parser "hang d1 n d2 = sep [d1, nest n d2]ghc-lib-parser punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]/ԋՋ֋׋؋ًڋۋ܋݋ދߋ/ԋՋڋۋ܋݋ދߋً؋֋׋6655Safeghc-lib-parser.Pretty prints a pattern synonym type signatureghc-lib-parserPretty prints a pattern synonym's type; follows the usual conventions to print a pattern synonym type compactly, yet unambiguously. See the note on † and the section on pattern synonyms in the GHC user's guide for more information.ŒÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌŒÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌ Trustworthy 0ƃghc-lib-parser!Representation-polymorphic since template-haskell-2.17.0.0.ԍghc-lib-parser Use with Սghc-lib-parser Use with ֍ghc-lib-parser*Dynamically binding a variable (unhygenic)ghc-lib-parserSingle-arg lambdaghc-lib-parser Lambda-case (case)ghc-lib-parserLambda-cases (cases)ghc-lib-parser staticE x = [| static x |]ghc-lib-parserPattern synonym declarationghc-lib-parserPattern synonym type signatureghc-lib-parserImplicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.ghc-lib-parserpure the Module at the place of splicing. Can be used as an input for È.ghc-lib-parserAttaches Haddock documentation to the declaration provided. Unlike ֈ, the names do not need to be in scope when calling this function so it can be used for quoted declarations and anything else currently being spliced. Not all declarations can have documentation attached to them. For those that can't, 3 will return it unchanged without any side effects.ghc-lib-parser Variant of  that applies the same documentation to multiple declarations. Useful for documenting quoted declarations.ghc-lib-parser Variant of % that attaches Haddock documentation.ghc-lib-parser Variant of % that attaches Haddock documentation.ghc-lib-parser Variant of % that attaches Haddock documentation.ghc-lib-parser Variant of % that attaches Haddock documentation.ghc-lib-parser Variant of % that attaches Haddock documentation.ghc-lib-parser Variant of % that attaches Haddock documentation.ghc-lib-parser7Document a data/newtype constructor with its arguments.ghc-lib-parser#Documentation to attach to functionghc-lib-parser$Documentation to attach to argumentsghc-lib-parserList of constructors, documentation for the constructor, and documentation for the argumentsghc-lib-parser/Documentation to attach to the data declarationghc-lib-parserThe constructor, documentation for the constructor, and documentation for the argumentsghc-lib-parser2Documentation to attach to the newtype declarationghc-lib-parserList of constructors, documentation for the constructor, and documentation for the argumentsghc-lib-parser3Documentation to attach to the instance declarationghc-lib-parserThe constructor, documentation for the constructor, and documentation for the argumentsghc-lib-parser3Documentation to attach to the instance declarationghc-lib-parser.Documentation to attach to the pattern synonymghc-lib-parser0Documentation to attach to the pattern argumentsÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎSafe"ghc-lib-parserCreate a Bytes datatype representing raw bytes to be embedded into the program/library binary.ghc-lib-parserPointer to the dataghc-lib-parserOffset from the pointerghc-lib-parserNumber of bytesÆņƆĆdžȆɆʆˆ̆͆ΆÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍŽÎĎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎÍč΍ύЍэҍӍԍՍ֍׍؍ٍڍۍݍ܍ލߍʍˍ͍̍ōƍǍȍɍƎŽÎĎǎˎ͎̎ΎȎݎގߎώЎюҎӎԎՎ֎׎؎َڎێ܎ɎʎȆɆÆņƆĆdžʆˆ̆͆ΆSafe…ÅƅąŅDžȅɅ˅ʅ̅ͅυ΅Ѕ҅хӅׅօڅԅՅ܅ۅ؅݅مޅ߅†ÆdžĆņƆȆɆʆΆ͆ˆ̆φՆ݆҆ކنІچֆ؆ӆ߆܆׆Ԇцۆ‡ÇćŇLJƇȇɇʇˇ͇̇·χЇч҇Ӈԇ؇ևهׇՇۇڇ݇އ߇ˆÈĈňƈLjԈՈֈ׈ȍÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍŽÎĎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎƈ݇އ߇LjÈ҇Ӈԇ؇ևهׇՇۇڇЇчʇχ·͇̇ˇՈԈňˆĈφՆ݆҆ކنІچֆ؆ӆ߆܆׆ԆцۆȇɇćŇLJƇ‡ÇӅׅօڅԅՅ܅ۅ؅݅مޅ߅ͅυ΅ÅƅąŅ…Ѕ҅хɅ˅ʅ̅Džȅ†ֈ׈Č Safe-Inferred )*0 Safe-Inferred%&)*5; &ghc-lib-parserThe server-side Template Haskell state. This is created by the StartTH message. A new one is created per module that GHC typechecks.ghc-lib-parser+persistent data between splices in a moduleghc-lib-parser#location for current splice, if anyghc-lib-parserpipe to communicate with GHCghc-lib-parserWe can pass simple expressions to EvalStmt, consisting of values and application. This allows us to wrap the statement to be executed in another function, which is used by GHCi to implement :set args and :set prog. It might be worthwhile to extend this little language in the future.ghc-lib-parserMessages sent back to GHC from GHCi.TH, to implement the methods of Quasi. For an overview of how TH works with Remote GHCi, see Note [Remote Template Haskell] in GHCi.TH.ۢghc-lib-parserIndicates that this RunTH is finished, and the next message will be the result of RunTH (a QResult).ܢghc-lib-parserTemplate Haskell return valuesݢghc-lib-parser1RunTH finished successfully; return value followsޢghc-lib-parserRunTH threw an exceptionߢghc-lib-parser RunTH called ghc-lib-parserA  Message a+ is a message that returns a value of type a2. These are requests sent from GHC to the server.ghc-lib-parserExit the iserv processghc-lib-parserCreate a set of BCO objects, and return HValueRefs to them Note: Each ByteString contains a Binary-encoded [ResolvedBCO], not a ResolvedBCO. The list is to allow us to serialise the ResolvedBCOs in parallel. See  createBCOs in compilerGHCRuntime/Interpreter.hs.ghc-lib-parserRelease  sghc-lib-parser'Add entries to the Static Pointer Tableghc-lib-parserMalloc some data and return a   to itghc-lib-parserCalls <ghc-lib-parser Free data previously created by ghc-lib-parser&Create an info table for a constructorghc-lib-parserEvaluate a statementghc-lib-parser3Resume evaluation of a statement after a breakpointghc-lib-parser4Abandon evaluation of a statement after a breakpointghc-lib-parserEvaluate something of type  IO Stringghc-lib-parserEvaluate something of type String -> IO Stringghc-lib-parserEvaluate something of type IO ()ghc-lib-parser5Create a set of CostCentres with the same module nameghc-lib-parserShow a  as a [String]ghc-lib-parser&Create a new array of breakpoint flagsghc-lib-parserSet how many times a breakpoint should be ignored also used for enable/disableghc-lib-parser'Query the status of a breakpoint (True  = enabled)ghc-lib-parser2Get a reference to a free variable at a breakpointghc-lib-parser:Start a new TH module, return a state token that should beghc-lib-parserEvaluate a TH computation.Returns a ByteString, because we have to force the result before returning it to ensure there are no errors lurking in it. The TH types don't have NFData instances, and even if they did, we have to serialize the value anyway, so we might as well serialize it to force it.ghc-lib-parserRun the given mod finalizers.ghc-lib-parserRemote interface to GHC.Exts.Heap.getClosureData. This is used by the GHCi debugger to inspect values in the heap for :print and type reconstruction.ghc-lib-parser;Evaluate something. This is used to support :force in GHCi.ghc-lib-parser6Resume forcing a free variable in a breakpoint (#2950)¢âĢŢƢǢȢɢʢˢ̢͢΢ϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ¢âĢŢƢǢȢɢʢˢ̢͢΢ϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ Safe-Inferred )*;2Ϥghc-lib-parserAn existential wrapper around _ GhcPs GhcPs body.Ѥghc-lib-parser1The context for an "empty statement group" error.Ҥghc-lib-parser6Empty statement group in a parallel list comprehensionӤghc-lib-parser7Empty statement group in a transform list comprehensionExample: [() | then ()]Ԥghc-lib-parser$Empty statement group in do notationExample: doդghc-lib-parser'Empty statement group in arrow notationExample: proc () -> doܤghc-lib-parserThe phase in which an exception was encountered when dealing with a TH spliceߤghc-lib-parserThe information necessary to report mismatched numbers of arguments in a match group.ghc-lib-parser1Context for a mismatch in the number of argumentsghc-lib-parserName of the functionghc-lib-parserPattern match specificsghc-lib-parserStores the information to be reported in a representation-polymorphism error message.ghc-lib-parserWhat is the original type we checked for representation-polymorphism, and what specific check did we perform?ghc-lib-parserWhich non-concrete type did we try to unify this concrete type variable with?ghc-lib-parser3Whether we ran out of fuel generating the bindings.ghc-lib-parser.A collection of hole fits and refinement fits.ghc-lib-parserA collection of valid hole fits or refinement fits, in which some fits might have been suppressed.ghc-lib-parserWhether we have suppressed any fits because there were too many.ghc-lib-parserThis datatype collates instances that match or unifier, in order to report an error message for an unsolved typeclass constraint.ghc-lib-parser!Explain a problem with an import.ghc-lib-parser/Couldn't find a module with the requested name.ghc-lib-parser9The imported modules don't export what we're looking for.ghc-lib-parserA message that aims to explain why two types couldn't be seen to be representationally equal.ghc-lib-parserNot knowing the role of a type constructor prevents us from concluding that two types are representationally equal.Example:foo :: Applicative m => m (Sum Int) foo = coerce (pure $ 1 :: Int)We don't know what role m2 has, so we can't coerce `m Int` to `m (Sum Int)`.#Test cases: T8984, TcCoercibleFail.ghc-lib-parserThe fact that a %- is abstract prevents us from decomposing a TyConApp: and deducing that two types are representationally equal.Test cases: none.ghc-lib-parser Down Int foo = coerceTest cases: TcCoercibleFail.ghc-lib-parserReport an error involving a .This could be an out of scope data constructor or variable, a typed hole, or a wildcard in a type.ghc-lib-parserReport an out-of-scope data constructor or variable masquerading as an expression hole.Report a typed hole, or wildcard, with additional information.ghc-lib-parser2Configuration for pretty-printing valid hole fits.ghc-lib-parser Some form of "not in scope" error. See also the  constructor of .ghc-lib-parserA run-of-the-mill "not in scope" error.ghc-lib-parser An exact  was not in scope.This usually indicates a problem with a Template Haskell splice.Test cases: T5971, T18263.ghc-lib-parseralways at least 2 elementsghc-lib-parser"Couldn't find a top-level binding.Happens when specifying an annotation for something that is not in scope.,Test cases: annfail01, annfail02, annfail11.ghc-lib-parserA class doesn't have a method with this name, or, a class doesn't have an associated type with this name, or, a record doesn't have a record field with this name.ghc-lib-parser'Explain how a kind equality originated.ghc-lib-parserExpected/actual information.ghc-lib-parser&Display the expected and actual types.ghc-lib-parserDisplay the expected and actual types, after expanding type synonyms.ghc-lib-parser$Add some information about ambiguityghc-lib-parser?Some type variables remained ambiguous: print them to the user.ghc-lib-parser?Remind the user that a particular type family is not injective.ghc-lib-parserTrue  => start the message with "Ambiguous type variable ..." False  =? create a message of the form "The type variable is ambiguous."ghc-lib-parserAmbiguous kind and type variables, respectively. Guaranteed to not both be empty.ghc-lib-parser:Add some information to disambiguate errors in which two Names( would otherwise appear to be identical.)See Note [Disambiguating (X ~ X) errors].¥ghc-lib-parserWhether the two "s also came from the same package.ťghc-lib-parserA cue to print out information about type variables, e.g. where they were bound, when there is a mismatch  tv1 ~ ty2.ʥghc-lib-parser(Additional information to be given in a ܥ& message, which is then passed on to mk_supplementary_ea_msg.ͥghc-lib-parser7A type equality between a type variable and a polytype.(Test cases: T12427a, T2846b, T10194, ...Υghc-lib-parserAn occurs check.ϥghc-lib-parser)A skolem type variable escapes its scope.Example:7data Ex where { MkEx :: a -> MkEx } foo (MkEx x) = x#Test cases: TypeSkolEscape, T11142.Хghc-lib-parserCan't unify the type variable with the other type due to the kind of type variable it is.For example, trying to unify a SkolemTv with the type Int, or with a TyVarTv.ԥghc-lib-parser:Whether to use expected/actual in a type mismatch message.եghc-lib-parserDon't use expected/actual.֥ghc-lib-parserUse expected/actual.ץghc-lib-parser/Whether to also mention type synonym expansion.٥ghc-lib-parser"Couldn't unify two types or kinds.Example:93 + 3# -- can't match a lifted type with an unlifted typeTest cases: T1396, T8263, ...ڥghc-lib-parserA type has an unexpected kind.Test cases: T2994, T7609, ...ۥghc-lib-parser?A mismatch between two types, which arose from a type equality.Test cases: T1470, tcfail212.ܥghc-lib-parserCouldn't solve some Wanted constraints using the Givens. Used for messages such as "No instance for ..." and "Could not deduce ... from".ݥghc-lib-parser6Should this be phrased in terms of expected vs actual?ޥghc-lib-parser0The constraint in which the mismatch originated.ߥghc-lib-parser8First type (the expected type if if mismatch_ea is True)ghc-lib-parser4Second type (the actual type if mismatch_ea is True)ghc-lib-parserWhat thing is  the kind of?ghc-lib-parserThe overall expected typeghc-lib-parserThe overall actual typeghc-lib-parserWhat thing is  the kind of?ghc-lib-parser)The Wanted constraints we couldn't solve. N.B.: the  at the head of the list has been tidied, perhaps not the others.ghc-lib-parser!Some additional info consumed by mk_supplementary_ea_msg.ghc-lib-parserAn error reported after constraint solving. This is usually, some sort of unsolved constraint error, but we try to be specific about the precise problem we encountered.ghc-lib-parser4Quantified variables appear out of dependency order.Example:forall (a :: k) k. ...:Test cases: BadTelescope2, T16418, T16247, T16726, T18451.ghc-lib-parserWe came across a custom type error and we have decided to report it.Example:9type family F a where F a = TypeError (Text "error")err :: F () err = ()1Test cases: CustomTypeErrors0{1,2,3,4,5}, T12104.ghc-lib-parserWe want to report an out of scope variable or a typed hole. See .ghc-lib-parserTrying to unify an untouchable variable, e.g. a variable from an outer scope.Test case: Simple14ghc-lib-parser4Cannot unify a variable, because of a type mismatch.ghc-lib-parserA mismatch between two types.ghc-lib-parser:A violation of the representation-polymorphism invariants.See  and FixedRuntimeRepContext for more information.ghc-lib-parserAn equality between two types is blocked on a kind equality between their kinds.Test cases: none.ghc-lib-parser9Something was not applied to sufficiently many arguments.Example:instance Eq Maybe where {..}Test case: T11563.ghc-lib-parser,Trying to use an unbound implicit parameter.Example:foo :: Int foo = ?paramTest case: tcfail130.ghc-lib-parserA constraint couldn't be solved because it contains ambiguous type variables.Example:!class C a b where f :: (a,b) x = fst fTest case: T4921.ghc-lib-parserCould not solve a constraint; there were several unifying candidate instances but no matching instances. This is used to report as much useful information as possible about why we couldn't choose any instance, e.g. because of ambiguous type variables.ghc-lib-parserCould not solve a constraint using available instances because the instances overlap.,Test cases: tcfail118, tcfail121, tcfail218.ghc-lib-parserCould not solve a constraint from instances because instances declared in a Safe module cannot overlap instances from other modules (with -XSafeHaskell).%Test cases: SH_Overlap{1,2,5,6,7,11}.ghc-lib-parserA predicate with its arising location; used to encapsulate a constraint that will give rise to a diagnostic.ghc-lib-parser Context needed when reporting a , such as the enclosing implication constraints or whether we are deferring type errors.ghc-lib-parserEnclosing implications (innermost first) ic_skols and givens are tidied, rest are notghc-lib-parserWe make some errors (depending on cec_defer) into warnings, and emit evidence bindings into  for unsolved constraintsghc-lib-parser*Whether to defer type errors until runtimeghc-lib-parser*Reason for reporting holes in expressions.ghc-lib-parser$Reason for reporting holes in types.ghc-lib-parser(Reason for reporting out of scope holes.ghc-lib-parserTrue  = -Wredundant-constraintsghc-lib-parserTrue  = -fprint-expanded-synonymsghc-lib-parserTrue  = More important errors have occurred, so create bindings if need be, but don't issue any more errors/warnings See Note [Suppressing error messages]ghc-lib-parserA , together with context (e.g. enclosing implication constraints) that are needed in order to report it.ghc-lib-parserContext for what we wish to report. This can change as we enter implications, so is stored alongside the content.ghc-lib-parser%The content of the message to report.ghc-lib-parser%Additional information to print in a <, after the important messages and after the error context.See Note [Error report].ghc-lib-parserA collection of main error messages and supplementary information.In practice, we will: - display the important messages first, - then the error context (e.g. by way of a call to ), - then the supplementary information (e.g. relevant bindings, valid hole fits), - then the hints ("Possible fix: ...").So this is mostly just a way of making sure that the error context appears early on rather than at the end of the message.$See Note [Error report] for details.ghc-lib-parser2Is the object we are dealing with exported or not?Used for reporting "missing signature" warnings, see .ghc-lib-parser/What kind of thing is missing a type signature?Used for reporting "missing signature" warnings, see tcRnMissingSignature.ghc-lib-parserwhether -XCUSKs is enabledghc-lib-parserIf , the associated type of a typeclass is not parameterized over the last type variable of the classghc-lib-parser'The associated type family of the classghc-lib-parserIf , the associated type of a typeclass contains the last type variable of the class in a kind, which is not (yet) allowed by GHC.ghc-lib-parser'The associated type family of the classghc-lib-parserA type representing whether or not the input type has associated data family instances.Ħghc-lib-parser;Whether a sole extra-constraint wildcard is allowed, e.g. _ => .. as opposed to ( .., _ ) => ...Ǧghc-lib-parser6A context in which we don't allow anonymous wildcards.Ϧghc-lib-parser-The type must not have some datatype context.Цghc-lib-parserThe data constructor must not have exotic unlifted or polymorphic arguments.Ѧghc-lib-parser3The data constructor must be a vanilla constructor.Ҧghc-lib-parserThe type must have some type parameters. check (d) from Note [Requirements for deriving Generic and Rep] in GHC.Tc.Deriv.Generics.Ӧghc-lib-parser9The data constructor must not have existential arguments.Ԧghc-lib-parserThe derivation applies a type to an argument involving the last parameter but the applied type is not of kind * -> *.֦ghc-lib-parser The given . must be truly polymorphic in the last argument of the data type.צghc-lib-parser The given .7 must not use the type variable in a function argument"ئghc-lib-parser The given . must not contain function types٦ghc-lib-parser The given . must use the type variable only as the last argument of a data typeڦghc-lib-parser The given .; is a GADT so we cannot directly derive an istance for it.ۦghc-lib-parser The given .( has existentials type vars in its type.ܦghc-lib-parser The given . has constraints in its type.ݦghc-lib-parser The given . has a higher-rank type.ަghc-lib-parser8Why a particular typeclass instance couldn't be derived.ߦghc-lib-parser*The typeclass instance is not well-kinded.ghc-lib-parser=The instance type | We cannot derive instances in boot filesghc-lib-parser&We cannot use GND on non-newtype typesghc-lib-parser-We cannot derive instances of nullary classesghc-lib-parser,Last arg must be newtype or data applicationghc-lib-parser The given % is not a class.ghc-lib-parser"The given (representation of the) % has no data constructors.ghc-lib-parser/GHC simply doesn't how to how derive the input = for the given %.ghc-lib-parser The given % must be an enumeration. See Note [Enumeration types] in GHC.Core.TyConghc-lib-parser The given % must have  precisely one constructor.ghc-lib-parser.The given data type must have some parameters.ghc-lib-parser2The given data type must not have a class context.ghc-lib-parserWe couldn't derive an instance for a particular data constructor for a variety of reasons.ghc-lib-parserWe couldn't derive a 6 instance for the given type for a variety of reasonsghc-lib-parserWe couldn't derive an instance either because the type was not an enum type or because it did have more than one constructor.ghc-lib-parserA data type to describe why a variable is not closed. See Note [Not-closed error messages] in GHC.Tc.Gen.Exprghc-lib-parserHelper type used in checkDataKindSig.Superficially similar to  ContextKind, but it lacks AnyKind and , and instead of TheKind liftedTypeKind provides 3, which is much simpler to match on and handle in isAllowedDataResKind.ghc-lib-parser'A description of whether something is adata or newtype () data instance or newtype instance () data family ()/At present, this data type is only consumed by checkDataKindSig.ghc-lib-parserWhy the particular injectivity error arose together with more information, if any.ghc-lib-parserWhy the particular illegal newtype error arose together with more information, if any.ghc-lib-parserIn what context did we require a type to have a fixed runtime representation?Used by  for throwing representation polymorphism errors when validity checking.See Note [Representation polymorphism checking] in GHC.Tc.Utils.Concreteghc-lib-parserData constructor fields must have a fixed runtime representation.Tests: T11734, T18534.ghc-lib-parserPattern synonym signature arguments must have a fixed runtime representation.Test: RepPolyPatSynArg.ghc-lib-parserPattern synonym signature scrutinee must have a fixed runtime representation.Test: RepPolyPatSynRes.ghc-lib-parser Where a shadowed name comes fromghc-lib-parser(The shadowed name is local to the moduleghc-lib-parser?The shadowed name is global, typically imported from elsewhere.ghc-lib-parserWhich parts of a record field are affected by a particular error or warning.ghc-lib-parser>Whether the error pertains to a function argument or a result.ghc-lib-parserSpecifies which calling convention is unsupported on the current platformghc-lib-parserSpecifies which back ends can handle a requested foreign import or exportghc-lib-parserLabel for a TH declarationghc-lib-parserThe reason a TH splice could not be converted to a Haskell expressionϧghc-lib-parserSourceקghc-lib-parser3Identifies the TH splice attempting to be convertedާghc-lib-parserThings forbidden in  type data1 declarations. See Note [Type data declarations]ghc-lib-parser8An error which might arise during typechecking/renaming.ghc-lib-parserSimply wraps an unknown T message a. It can be used by plugins to provide custom diagnostic messages originated during typechecking/renaming.ghc-lib-parserTcRnMessageWithInfo is a constructor which is used when extra information is needed to be provided in order to qualify a diagnostic and where it was originated (and why). It carries an extra x which can be used to pretty-print some names and it wraps a , which includes any extra context associated with this diagnostic.ghc-lib-parserTcRnWithHsDocContext annotates an error message with the context in which it originated.ghc-lib-parserTcRnSolverReport is the constructor used to report unsolved constraints after constraint solving, as well as other errors such as hole fit errors.See the documentation of the 8 datatype for an overview of the different errors.ghc-lib-parserTcRnRedundantConstraints is a warning that is emitted when a binding has a user-written type signature which contains superfluous constraints.Example:f :: (Eq a, Ord a) => a -> a -> a f x y = (x < y) || x == y -- `Eq a` is superfluous: the `Ord a` constraint suffices. Bool foo MkFalse = False foo MkTrue = True -- Inaccessible: requires True ~ FalseTest cases: T7293, T7294, T15558, T17646, T18572, T18610, tcfail167.ghc-lib-parserA type which was expected to have a fixed runtime representation does not have a fixed runtime representation.Example:data D (a :: TYPE r) = MkD aTest cases: T11724, T18534, RepPolyPatSynArg, RepPolyPatSynUnliftedNewtype, RepPolyPatSynRes, T20423ghc-lib-parserTcRnImplicitLift is a warning (controlled with -Wimplicit-lift) that occurs when a Template Haskell quote implicitly uses lift.Example: warning1 :: Lift t => t -> Q Exp warning1 x = [| x |]Test cases: th/T17804ghc-lib-parserTcRnUnusedPatternBinds is a warning (controlled with -Wunused-pattern-binds) that occurs if a pattern binding binds no variables at all, unless it is a lone wild-card pattern, or a banged pattern.Example: Just _ = rhs3 -- Warning: unused pattern binding (_, _) = rhs4 -- Warning: unused pattern binding _ = rhs3 -- No warning: lone wild-card pattern !() = rhs4 -- No warning: banged pattern; behaves like seq+Test cases: rename/{T13646,T17c,T17e,T7085}ghc-lib-parserTcRnDodgyImports is a warning (controlled with -Wdodgy-imports) that occurs when a datatype T is imported with all constructors, i.e. 'T(..)', but has been exported abstractly, i.e. T.Test cases: renameshould_compileT7167ghc-lib-parserTcRnDodgyExports is a warning (controlled by -Wdodgy-exports) that occurs when a datatype T is exported with all constructors, i.e. 'T(..)', but is it just a type synonym or a type/data family.Example: module Foo ( T(..) -- Warning: T is a type synonym , A(..) -- Warning: A is a type family , C(..) -- Warning: C is a data family ) wheretype T = Int type family A :: * -> * data family C :: * -> *Test cases: warningsshould_compileDodgyExports01ghc-lib-parserTcRnMissingImportList is a warning (controlled by -Wmissing-import-lists) that occurs when an import declaration does not explicitly list all the names brought into scope.Test cases: renameshould_compileT4489ghc-lib-parserWhen a module marked trustworthy or unsafe (using -XTrustworthy or -XUnsafe) is compiled with a plugin, the TcRnUnsafeDueToPlugin warning (controlled by -Wunsafe) is used as the reason the module was inferred to be unsafe. This warning is not raised if the -fplugin-trustworthy flag is passed.Test cases: plugins/T19926ghc-lib-parserTcRnModMissingRealSrcSpan is an error that occurs when compiling a module that lacks an associated .Test cases: Noneghc-lib-parserTcRnIdNotExportedFromModuleSig is an error pertaining to backpack that occurs when an identifier required by a signature is not exported by the module or signature that is being used as a substitution for that signature.Example(s): NoneTest cases: backpack should_fail bkpfail36ghc-lib-parserTcRnIdNotExportedFromLocalSig is an error pertaining to backpack that occurs when an identifier which is necessary for implementing a module signature is not exported from that signature.Example(s): NoneTest cases: backpack should_fail#bkpfail30 backpack should_fail#bkpfail31 backpack should_fail bkpfail34ghc-lib-parserTcRnShadowedName is a warning (controlled by -Wname-shadowing) that occurs whenever an inner-scope value has the same name as an outer-scope value, i.e. the inner value shadows the outer one. This can catch typographical errors that turn into hard-to-find bugs. The warning is suppressed for names beginning with an underscore.Examples(s): f = ... let f = id in ... f ... -- NOT OK, f is shadowed f x = do { _ignore <- this; _ignore <- that; return (the other) } -- suppressed via underscoreTest cases: typecheckshould_compileT10971a renameshould_compilern039 renameshould_compilern064 renameshould_compileT1972 rename should_failT2723 renameshould_compile$T3262 driver/werrorghc-lib-parserTcRnDuplicateWarningDecls is an error that occurs whenever a warning is declared twice.Examples(s): None.Test cases: None.ghc-lib-parserTcRnDuplicateWarningDecls is an error that occurs whenever the constraint solver in the simplifier hits the iterations' limit.Examples(s): None.Test cases: None.ghc-lib-parserTcRnIllegalPatSynDecl is an error that occurs whenever there is an illegal pattern synonym declaration. Examples(s):varWithLocalPatSyn x = case x of P -> () where pattern P = () -- not valid, it can't be local, it must be defined at top-level.Test cases: patsyn should_faillocalghc-lib-parserTcRnLinearPatSyn is an error that occurs whenever a pattern synonym signature uses a field that is not unrestricted.Example(s): NoneTest cases: linear should_fail LinearPatSyn2ghc-lib-parserTcRnEmptyRecordUpdate is an error that occurs whenever a record is updated without specifying any field. Examples(s):$(deriveJSON defaultOptions{} ''Bad) -- not ok, no fields selected for update of defaultOptionsTest cases: th/T12788ghc-lib-parserTcRnIllegalFieldPunning is an error that occurs whenever field punning is used without the NamedFieldPuns extension enabled. Examples(s):data Foo = Foo { a :: Int }foo :: Foo -> Int foo Foo{a} = a -- Not ok, punning used without extension.Test cases: parser should_failRecordDotSyntaxFail12ghc-lib-parserTcRnIllegalWildcardsInRecord is an error that occurs whenever wildcards (..) are used in a record without the relevant extension being enabled. Examples(s):data Foo = Foo { a :: Int }foo :: Foo -> Int foo Foo{..} = a -- Not ok, wildcards used without extension.Test cases: parser should_failRecordWildCardsFailghc-lib-parserTcRnIllegalWildcardInType is an error that occurs when a wildcard appears in a type in a location in which wildcards aren't allowed. Examples:Type synonyms: type T = _!Class declarations and instances: class C _ instance C _Standalone kind signatures:type D :: _ data DTest cases: ExtraConstraintsWildcardInTypeSplice2 ExtraConstraintsWildcardInTypeSpliceUsed ExtraConstraintsWildcardNotLast ExtraConstraintsWildcardTwice NestedExtraConstraintsWildcard NestedNamedExtraConstraintsWildcard PartialClassMethodSignature PartialClassMethodSignature2 T12039 T13324_fail1 UnnamedConstraintWildcard1 UnnamedConstraintWildcard2 WildcardInADT1 WildcardInADT2 WildcardInADT3 WildcardInADTContext1 WildcardInDefault WildcardInDefaultSignature WildcardInDeriving WildcardInForeignExport WildcardInForeignImport WildcardInGADT1 WildcardInGADT2 WildcardInInstanceHead WildcardInInstanceSig WildcardInNewtype WildcardInPatSynSig WildcardInStandaloneDeriving WildcardInTypeFamilyInstanceRHS WildcardInTypeSynonymRHS saks_fail003 T15433aghc-lib-parserTcRnDuplicateFieldName is an error that occurs whenever there are duplicate field names in a record.Examples(s): None.Test cases: None.ghc-lib-parserTcRnIllegalViewPattern is an error that occurs whenever the ViewPatterns syntax is used but the ViewPatterns language extension is not enabled..Examples(s): data Foo = Foo { a :: Int }8foo :: Foo -> Int foo (a -> l) = l -- not OK, the  ViewPattern extension is not enabled.Test cases: parser should_failViewPatternsFailghc-lib-parserTcRnCharLiteralOutOfRange is an error that occurs whenever a character is out of range.Examples(s): NoneTest cases: Noneghc-lib-parserTcRnIllegalWildcardsInConstructor is an error that occurs whenever the record wildcards '..'6 are used inside a constructor without labeled fields.Examples(s): NoneTest cases: Noneghc-lib-parserTcRnIgnoringAnnotations is a warning that occurs when the source code contains annotation pragmas but the platform in use does not support an external interpreter such as GHCi and therefore the annotations are ignored.Example(s): NoneTest cases: Noneghc-lib-parserTcRnAnnotationInSafeHaskell is an error that occurs if annotation pragmas are used in conjunction with Safe Haskell.Example(s): NoneTest cases: annotations should_failT10826ghc-lib-parserTcRnInvalidTypeApplication is an error that occurs when a visible type application is used with an expression that does not accept "specified" type arguments.Example(s): foo :: forall {a}. a -> a foo x = x bar :: () bar = let x = foo @Int 42 in ()Test cases: overloadedrecflds should_fail1overloadedlabelsfail03 typecheck should_fail/ExplicitSpecificity1 typecheck should_fail0ExplicitSpecificity10 typecheck should_fail/ExplicitSpecificity2 typecheck should_fail!T17173 typecheck should_failVtaFailghc-lib-parserExample(s): foo :: forall a. a foo = tagToEnum# 0#Test cases: typecheck should_fail tcfail164ghc-lib-parser=TcRnTagToEnumResTyNotAnEnum is an error that occurs when the  'tagToEnum#' function is given a result type that is not an enumeration type.Example(s): foo :: Int -- not an enumeration TyCon foo = tagToEnum# 0#Test cases: typecheck should_fail tcfail164ghc-lib-parserTcRnArrowIfThenElsePredDependsOnResultTy is an error that occurs when the predicate type of an ifThenElse expression in arrow notation depends on the type of the result.Example(s): NoneTest cases: Noneghc-lib-parserTcRnIllegalHsBootFileDecl is an error that occurs when an hs-boot file contains declarations that are not allowed, such as bindings.Example(s): NoneTest cases: Noneghc-lib-parserTcRnRecursivePatternSynonym is an error that occurs when a pattern synonym is defined in terms of itself, either directly or indirectly.3Example(s): pattern A = B pattern B = ATest cases: patsyn should_failT16900ghc-lib-parserTcRnPartialTypeSigTyVarMismatch is an error that occurs when a partial type signature attempts to unify two different types.7Example(s): f :: a -> b -> _ f x y = [x, y]Test cases: partial-sigs should_failT14449ghc-lib-parserTcRnPartialTypeSigBadQuantifier is an error that occurs when a type variable being quantified over in the partial type signature of a function gets unified with a type that is free in that function's context.Example(s): foo :: Num a => a -> a foo xxx = g xxx where g :: forall b. Num b => _ -> b g y = xxx + yTest cases: partial-sig should_failT14479ghc-lib-parserTcRnMissingSignature is a warning that occurs when a top-level binding or a pattern synonym does not have a type signature.Controlled by the flags: -Wmissing-signatures -Wmissing-exported-signatures -Wmissing-pattern-synonym-signatures -Wmissing-exported-pattern-synonym-signatures -Wmissing-kind-signaturesTest cases: T11077 (top-level bindings) T12484 (pattern synonyms) T19564 (kind signatures)ghc-lib-parserTcRnPolymorphicBinderMissingSig is a warning controlled by -Wmissing-local-signatures that occurs when a local polymorphic binding lacks a type signature.Example(s): id a = aTest cases: warningsshould_compileT12574ghc-lib-parserTcRnOverloadedSig is an error that occurs when a binding group conflicts with the monomorphism restriction.Example(s): data T a = T a mono = ... where x :: Applicative f => f a T x = ...Test cases: typecheckshould_compileT11339ghc-lib-parserTcRnTupleConstraintInst is an error that occurs whenever an instance for a tuple constraint is specified.Examples(s): class C m a class D m a f :: (forall a. Eq a => (C m a, D m a)) => m a f = undefined)Test cases: quantified-constraints/T15334ghc-lib-parserTcRnAbstractClassInst is an error that occurs whenever an instance of an abstract class is specified.Examples(s): -- A.hs-boot module A where class C a- B.hs module B where import A instance C Int where- A.hs module A where import B class C a where f :: a:- Main.hs import A main = print (f :: Int)Test cases: typecheck should_failT13068ghc-lib-parserTcRnNoClassInstHead is an error that occurs whenever an instance head is not headed by a class.Examples(s): instance cTest cases: typecheckrename!T5513 typecheckrenameT16385ghc-lib-parserTcRnUserTypeError is an error that occurs due to a user's custom type error, which can be triggered by adding a  TypeError< constraint in a type signature or typeclass instance.Examples(s): f :: TypeError (Text "This is a type error") f = undefinedTest cases: typecheck should_fail.CustomTypeErrors02 typecheck should_failCustomTypeErrors03ghc-lib-parserTcRnConstraintInKind is an error that occurs whenever a constraint is specified in a kind.4Examples(s): data Q :: Eq a => Type where {}Test cases: dependent should_failT13895 polykinds/T16263 saks should_fail(saks_fail004 typecheck should_fail#T16059a typecheck should_failT18714ghc-lib-parserTcRnUnboxedTupleTypeFuncArg is an error that occurs whenever an unboxed tuple or unboxed sum type is specified as a function argument, when the appropriate extension (`-XUnboxedTuples` or `-XUnboxedSums`) isn't enabled.Examples(s): -- T15073.hs import T15073a newtype Foo a = MkFoo a deriving P- T15073a.hs class P a where p :: a -> (# a #)Test cases: deriving should_fail$T15073.hs deriving should_fail&T15073a.hs typecheck should_failT16059dghc-lib-parserTcRnLinearFuncInKind is an error that occurs whenever a linear function is specified in a kind.(Examples(s): data A :: * %1 -> *Test cases: linear should_fail#LinearKind linear should_fail$LinearKind2 linear should_fail LinearKind3ghc-lib-parserTcRnForAllEscapeError is an error that occurs whenever a quantified type's kind mentions quantified type variable.Examples(s): type T :: TYPE (BoxedRep l) data T = MkTTest cases: unlifted-datatypes should_failUnlDataNullaryPolyghc-lib-parserTcRnVDQInTermType is an error that occurs whenever a visible dependent quantification is specified in the type of a term.Examples(s): a = (undefined :: forall k -> k -> Type) @IntTest cases: dependent should_fail"T15859 dependent should_fail(T16326_Fail1 dependent should_fail(T16326_Fail2 dependent should_fail(T16326_Fail3 dependent should_fail(T16326_Fail4 dependent should_fail(T16326_Fail5 dependent should_fail(T16326_Fail6 dependent should_fail(T16326_Fail7 dependent should_fail(T16326_Fail8 dependent should_fail(T16326_Fail9 dependent should_fail)T16326_Fail10 dependent should_fail)T16326_Fail11 dependent should_fail)T16326_Fail12 dependent should_fail"T17687 dependent should_failT18271ghc-lib-parserTcRnBadQuantPredHead is an error that occurs whenever a quantified predicate lacks a class or type variable head.Examples(s): class (forall a. A t a => A t [a]) => B t where type A t a :: Constraint)Test cases: quantified-constraints/T16474ghc-lib-parserTcRnIllegalTupleConstraint is an error that occurs whenever an illegal tuple constraint is specified.Examples(s): g :: ((Show a, Num a), Eq a) => a -> a g = undefinedTest cases: typecheck should_fail tcfail209aghc-lib-parserTcRnNonTypeVarArgInConstraint is an error that occurs whenever a non type-variable argument is specified in a constraint.;Examples(s): data T instance Eq Int => Eq TTest cases: ghciscriptsT13202 ghciscriptsT13202a polykinds/T12055a typecheck should_fail"T10351 typecheck should_fail"T19187 typecheck should_fail!T6022 typecheck should_failT8883ghc-lib-parserTcRnIllegalImplicitParam is an error that occurs whenever an illegal implicit parameter is specified.Examples(s): type Bla = ?x::Int data T = T instance Bla => Eq T8Test cases: polykinds/T11466 typecheck should_fail!T8912 typecheck should_fail%tcfail041 typecheck should_fail%tcfail211 typecheck should_failtcrun045ghc-lib-parserTcRnIllegalConstraintSynonymOfKind is an error that occurs whenever an illegal constraint synonym of kind is specified.Examples(s): type Showish = Show f :: (Showish a) => a -> a f = undefinedTest cases: typecheck should_fail tcfail209ghc-lib-parserTcRnIllegalClassInst is an error that occurs whenever a class instance is specified for a non-class.Examples(s): type C1 a = (Show (a -> Bool)) instance C1 Int whereTest cases: polykinds/T13267ghc-lib-parserTcRnOversaturatedVisibleKindArg is an error that occurs whenever an illegal oversaturated visible kind argument is specified.Examples(s): type family F2 :: forall (a :: Type). Type where F2 @a = Maybe aTest cases: typecheck should_fail"T15793 typecheck should_failT16255ghc-lib-parserTcRnBadAssociatedType is an error that occurs whenever a class doesn't have an associated type.=Examples(s): $(do d <- instanceD (cxt []) (conT ''Eq appT conT ''Foo) [tySynInstD $ tySynEqn Nothing (conT ''Rep appT conT ''Foo) (conT ''Maybe)] return [d]) ======> instance Eq Foo where type Rep Foo = MaybeTest cases: th/T12387aghc-lib-parserTcRnForAllRankErr is an error that occurs whenever an illegal ranked type is specified.Examples(s): foo :: (a,b) -> (a~b => t) -> (a,b) foo p x = pTest cases: - ghci should_runT15806 - indexed-types should_fail SimpleFail15 - typecheck should_failT11355 - typecheck should_failT12083a - typecheck should_failT12083b - typecheck should_failT16059c - typecheck should_failT16059e - typecheck should_failT17213 - typecheck should_failT18939_Fail - typecheck should_failT2538 - typecheck should_failT5957 - typecheck should_failT7019 - typecheck should_failT7019a - typecheck should_failT7809 - typecheck should_failT9196 - typecheck should_failtcfail127 - typecheck should_failtcfail184 - typecheck should_failtcfail196 - typecheck should_fail tcfail197ghc-lib-parserTcRnMonomorphicBindings is a warning (controlled by -Wmonomorphism-restriction) that arise when the monomorphism restriction applies to the given bindings. Examples(s):bar = 10foo :: Int foo = bar&main :: IO () main = print foo)The example above emits the warning (for bar), because without monomorphism restriction the inferred type for bar: is 'bar :: Num p => p'. This warning tells us that if= we were to enable '-XMonomorphismRestriction' we would make bar less polymorphic, as its type would become 'bar :: Int', so GHC warns us about that.Test cases: typecheckshould_compileT13785ghc-lib-parserTcRnOrphanInstance is a warning (controlled by -Wwarn-orphans) that arises when a typeclass instance is an "orphan", i.e. if it appears in a module in which neither the class nor the type being instanced are declared in the same module.Examples(s): NoneTest cases: warningsshould_compile!T9178 typecheckshould_compileT4912ghc-lib-parserTcRnFunDepConflict is an error that occurs when there are functional dependencies conflicts between instance declarations.Examples(s): NoneTest cases: typecheck should_fail!T2307 typecheck should_fail%tcfail096 typecheck should_fail tcfail202ghc-lib-parserTcRnDupInstanceDecls is an error that occurs when there are duplicate instance declarations.Examples(s): class Foo a where foo :: a -> Int)instance Foo Int where foo = id/instance Foo Int where foo = const 42Test cases: cabalT12733"T12733 typecheck should_fail%tcfail035 typecheck should_fail$tcfail023 backpack should_fail%bkpfail18 typecheck should_fail+TcNullaryTCFail typecheck should_fail%tcfail036 typecheck should_failtcfail073 module/mod51 module/mod52 module/mod44ghc-lib-parserTcRnConflictingFamInstDecls is an error that occurs when there are conflicting family instance declarations.Examples(s): None.Test cases: indexed-types should_fail4ExplicitForAllFams4b indexed-types should_fail&NoGood indexed-types should_fail$Over indexed-types should_fail1OverDirectThisMod indexed-types should_fail3OverIndirectThisMod indexed-types should_fail-SimpleFail11a indexed-types should_fail-SimpleFail11b indexed-types should_fail-SimpleFail11c indexed-types should_fail-SimpleFail11d indexed-types should_fail,SimpleFail2a indexed-types should_fail,SimpleFail2b indexed-types should_fail-T13092/T13092 indexed-types should_fail/T13092c/T13092c indexed-types should_fail&T14179 indexed-types should_fail&T2334A indexed-types should_fail%T2677 indexed-types should_fail&T3330b indexed-types should_fail%T4246 indexed-types should_fail&T7102a indexed-types should_failT9371 polykinds/T7524 typecheck should_failUnliftedNewtypesOverlapghc-lib-parserTcRnBangOnUnliftedType is a warning (controlled by -Wredundant-strictness-flags) that occurs when a strictness annotation is applied to an unlifted type.Example(s): data T = MkT !Int# -- Strictness flag has no effect on unlifted typesTest cases: typecheckshould_compile"T20187a typecheckshould_compileT20187bghc-lib-parserTcRnLazyBangOnUnliftedType is a warning (controlled by -Wredundant-strictness-flags) that occurs when a lazy annotation is applied to an unlifted type.Example(s): data T = MkT ~Int# -- Lazy flag has no effect on unlifted typesTest cases: typecheckshould_compile"T21951a typecheckshould_compileT21951bghc-lib-parserTcRnMultipleDefaultDeclarations is an error that occurs when a module has more than one default declaration.Example: default (Integer, Int) default (Double, Float) -- 2nd default declaration not allowedText cases: module/mod58ghc-lib-parserTcRnBadDefaultType is an error that occurs when a type used in a default declaration does not have an instance for any of the applicable classes..Example(s): data Foo default (Foo)Test cases: typecheck should_failT11974bghc-lib-parserTcRnPatSynBundledWithNonDataCon is an error that occurs when a module's export list bundles a pattern synonym with a type that is not a proper `data` or  `newtype` construction.Example(s): module Foo (MyClass(.., P)) where pattern P = Nothing class MyClass a where foo :: a -> IntTest cases: patsyn should_fail export-classghc-lib-parserTcRnPatSynBundledWithWrongType is an error that occurs when the export list of a module has a pattern synonym bundled with a type that does not match the type of the pattern synonym.Example(s): module Foo (R(P,x)) where data Q = Q Int data R = R pattern P{x} = Q xText cases: patsyn should_fail)export-ps-rec-sel patsyn should_fail+export-type-synonym patsyn should_fail export-typeghc-lib-parser0TcRnDupeModuleExport is a warning controlled by -Wduplicate-exports that occurs when a module appears more than once in an export list.Example(s): module Foo (module Bar, module Bar) import BarText cases: Noneghc-lib-parserTcRnExportedModNotImported is an error that occurs when an export list contains a module that is not imported.Example(s): NoneText cases: module/mod135 module/mod8 rename should_fail#rnfail028 backpack should_fail bkpfail48ghc-lib-parserTcRnNullExportedModule is a warning controlled by -Wdodgy-exports that occurs when an export list contains a module that has no exports.Example(s): module Foo (module Bar) where import Bar ()Test cases: Noneghc-lib-parserTcRnMissingExportList is a warning controlled by -Wmissing-export-lists that occurs when a module does not have an explicit export list.Example(s): NoneTest cases: typecheck should_failMissingExportList03ghc-lib-parserTcRnExportHiddenComponents is an error that occurs when an export contains constructor or class methods that are not visible.Example(s): NoneTest cases: Noneghc-lib-parserTcRnDuplicateExport is a warning (controlled by -Wduplicate-exports) that occurs when an identifier appears in an export list more than once.Example(s): NoneTest cases: module/MultiExport module/mod128 module/mod14 module/mod5 overloadedrecflds should_fail(DuplicateExports patsynshould_compileT11959ghc-lib-parserTcRnExportedParentChildMismatch is an error that occurs when an export is bundled with a parent that it does not belong toExample(s): module Foo (T(a)) where data T a = TrueTest cases: module/T11970 module/T11970B module/mod17 module/mod3 overloadedrecflds should_failNoParentghc-lib-parserTcRnConflictingExports is an error that occurs when different identifiers that have the same name are being exported by a module.Example(s): module Foo (Bar.f, module Baz) where import qualified Bar (f) import Baz (f)Test cases: module/mod131 module/mod142 module/mod143 module/mod144 module/mod145 module/mod146 module/mod150 module/mod155 overloadedrecflds should_fail)T14953 overloadedrecflds should_fail/overloadedrecfldsfail10 rename should_fail!rnfail029 rename should_fail$rnfail040 typecheck should_fail#T16453E2 typecheck should_fail$tcfail025 typecheck should_fail tcfail026ghc-lib-parserTcRnAmbiguousField is a warning controlled by -Wambiguous-fields occurring when a record update's type cannot be precisely determined. This will not be supported by -XDuplicateRecordFields in future releases.Example(s): data Person = MkPerson { personId :: Int, name :: String } data Address = MkAddress { personId :: Int, address :: String } bad1 x = x { personId = 4 } :: Person -- ambiguous bad2 (x :: Person) = x { personId = 4 } -- ambiguous good x = (x :: Person) { personId = 4 } -- not ambiguousTest cases: overloadedrecflds should_failoverloadedrecfldsfail06ghc-lib-parserTcRnMissingFields is a warning controlled by -Wmissing-fields occurring when the intialisation of a record is missing one or more (lazy) fields.Example(s): data Rec = Rec { a :: Int, b :: String, c :: Bool } x = Rec { a = 1, b = "two" } -- missing field cTest cases: deSugarshould_compileT13870 deSugarshould_compileds041 patsynshould_compileT11283 renameshould_compileT5334 renameshould_compileT12229 renameshould_compile T5892a warnings should_fail WerrorFail2ghc-lib-parserTcRnFieldUpdateInvalidType is an error occurring when an updated field's type mentions something that is outside the universally quantified variables of the data constructor, such as an existentially quantified type.Example(s): data X = forall a. MkX { f :: a } x = (MkX ()) { f = False }Test cases: patsyn should_fail+records-exquant typecheck should_failT3323ghc-lib-parserTcRnNoConstructorHasAllFields is an error that occurs when a record update has fields that no single constructor encompasses.Example(s): data Foo = A { x :: Bool } | B { y :: Int } foo = (A False) { x = True, y = 5 }Test cases: overloadedrecflds should_fail/overloadedrecfldsfail08 patsyn should_fail4mixed-pat-syn-record-sels typecheck should_failT7989ghc-lib-parserTcRnSpecialClassInst is an error that occurs when a user attempts to define an instance for a built-in typeclass such as  Coercible, , or KnownNat, outside of a signature file.Test cases: deriving should_failT9687 deriving should_failT14916 polykinds/T8132 typecheck should_fail+TcCoercibleFail2 typecheck should_fail!T12837 typecheck should_failT14390ghc-lib-parserTcRnUselessTypeable is a warning (controlled by -Wderiving-typeable) that occurs when trying to derive an instance of the  class. Deriving  is no longer necessary (hence the "useless") as all types automatically derive  in modern GHC versions.Example(s): None.Test cases: warningsshould_compileDerivingTypeableghc-lib-parserTcRnDerivingDefaults is a warning (controlled by -Wderiving-defaults) that occurs when both DeriveAnyClass and GeneralizedNewtypeDeriving2 are enabled, and therefore GHC defaults to DeriveAnyClass/, which might not be what the user wants.Example(s): None.Test cases: typecheckshould_compile!T15839a derivingshould_compileT16179ghc-lib-parserTcRnNonUnaryTypeclassConstraint is an error that occurs when GHC encounters a non-unary constraint when trying to derive a typeclass.Example(s): class A deriving instance A data B deriving A -- We cannot derive A, is not unary (i.e. 'class A a').Test cases: deriving should_failT7959 deriving should_fail$drvfail005 deriving should_fail$drvfail009 deriving should_fail drvfail006¨ghc-lib-parserTcRnPartialTypeSignatures is a warning (controlled by -Wpartial-type-signatures) that occurs when a wildcard '_' is found in place of a type in a signature or a type class derivation5Example(s): foo :: _ -> Int foo = ...!deriving instance _ => Eq (Foo a)Test cases: dependentshould_compile!T11241 dependentshould_compile!T15076 dependentshould_compile#T14880-2 typecheckshould_compile!T17024 typecheckshould_compile$T10072 partial-sigs should_fail(TidyClash2 partial-sigs should_fail.Defaulting1MROff partial-sigs should_fail:WildcardsInPatternAndExprSig partial-sigs should_fail$T10615 partial-sigs should_fail%T14584a partial-sigs should_fail'TidyClash partial-sigs should_fail$T11122 partial-sigs should_fail$T14584 partial-sigs should_fail$T10045 partial-sigs should_fail;PartialTypeSignaturesDisabled partial-sigs should_fail$T10999 partial-sigs should_failExtraConstraintsWildcardInExpressionSignature partial-sigs should_failExtraConstraintsWildcardInPatternSplice partial-sigs should_fail4WildcardInstantiations partial-sigs should_run$T15415 partial-sigsshould_compile$T10463 partial-sigsshould_compile%T15039a partial-sigsshould_compile%T16728b partial-sigsshould_compile%T15039c partial-sigsshould_compile$T10438 partial-sigsshould_compile)SplicesUsed partial-sigsshould_compile$T18008 partial-sigsshould_compile*ExprSigLocal partial-sigsshould_compile%T11339a partial-sigsshould_compile$T11670 partial-sigsshould_compile;WarningWildcardInstantiations partial-sigsshould_compile$T16728 partial-sigsshould_compile$T12033 partial-sigsshould_compile%T15039b partial-sigsshould_compile$T10403 partial-sigsshould_compile$T11192 partial-sigsshould_compile%T16728a partial-sigsshould_compile)TypedSplice partial-sigsshould_compile%T15039d partial-sigsshould_compile$T11016 partial-sigsshould_compile'T13324_compile2 linear should_failLinearPartialSig polykinds/T14265 polykinds/T14172èghc-lib-parserTcRnCannotDeriveInstance is an error that occurs every time a typeclass instance can't be derived. The ަ9 will contain the specific reason this error arose.Example(s): None.Test cases: genericsT10604.T10604_no_PolyKinds deriving should_fail%drvfail009 deriving should_fail+drvfail-functor2 deriving should_fail'T10598_fail3 deriving should_fail-deriving-via-fail2 deriving should_fail,deriving-via-fail deriving should_failT16181Ĩghc-lib-parserTcRnLazyGADTPattern is an error that occurs when a user writes a nested GADT pattern match inside a lazy (~) pattern.Test case: gadt/lazypatŨghc-lib-parserTcRnArrowProcGADTPattern is an error that occurs when a user writes a GADT pattern inside arrow proc notation.Test case: arrows should_fail arrowfail004.ƨghc-lib-parserTcRnForallIdentifier is a warning (controlled with -Wforall-identifier) that occurs when a definition uses forall as an identifier.2Example: forall x = () g forall = ()2Test cases: T20609 T20609a T20609b T20609c T20609dǨghc-lib-parserTcRnTypeEqualityOutOfScope is a warning (controlled by -Wtype-equality-out-of-scope) that occurs when the type equality (a ~ b) is not in scope.Test case: T18862bȨghc-lib-parserTcRnTypeEqualityRequiresOperators is a warning (controlled by -Wtype-equality-requires-operators) that occurs when the type equality (a ~ b) is used without the TypeOperators extension.Example:f :: (a ~ b) => a -> bTest case: T18862aɨghc-lib-parserTcRnIllegalTypeOperator is an error that occurs when a type operator is used without the TypeOperators extension.Example:(f :: Vec a n -> Vec a m -> Vec a (n + m)Test case: T12811ʨghc-lib-parserTcRnIllegalTypeOperatorDecl is an error that occurs when a type or class operator is declared without the TypeOperators extension..See Note [Type and class operator definitions]Example:module T3265 wheredata a :+: b = Left a | Right bclass a :*: b where {}Test cases: T3265, tcfail173˨ghc-lib-parserTcRnGADTMonoLocalBinds is a warning controlled by -Wgadt-mono-local-binds that occurs when pattern matching on a GADT when -XMonoLocalBinds is off.Example(s): NoneTest cases: T20485, T20485ąghc-lib-parserThe TcRnNotInScope constructor is used for various not-in-scope errors. See  for more details. ͨghc-lib-parserTcRnUntickedPromotedThing is a warning (controlled with -Wunticked-promoted-constructors) that is triggered by an unticked occurrence of a promoted data constructor. Examples:data A = MkA type family F (a :: A) where { F MkA = Bool }type B = [ Int, Bool ]Test cases: T9778, T19984.Ψghc-lib-parserTcRnIllegalBuiltinSyntax is an error that occurs when built-in syntax appears in an unexpected location, e.g. as a data constructor or in a fixity declaration. Examples: infixl 5 : data P = (,)/Test cases: rnfail042, T14907b, T15124, T15233.Ϩghc-lib-parserTcRnWarnDefaulting is a warning (controlled by -Wtype-defaults) that is triggered whenever a Wanted typeclass constraint is solving through the defaulting of a type variable.Example:one = show 1 -- We get Wanteds Show a0, Num a0, and default a0 to Integer.Test cases: none (which are really specific to defaulting), but see e.g. tcfail204.Шghc-lib-parser6TcRnIncorrectNameSpace is an error that occurs when a  is used in the incorrect  NameSpace, e.g. a type constructor or class used in a term, or a term variable used in a type.Example: f x = IntTest cases: T18740a, T20884.ghc-lib-parserTcRnIllegalHsigDefaultMethods is an error that occurs when a binding for a class default method is provided in a Backpack signature file.Test case: bkpfail40ghc-lib-parserTcRnBadGenericMethod This test ensures that if you provide a "more specific" type signatures for the default method, you must also provide a binding.Example:class C a where meth :: a default meth :: Num a => a meth = 0Test case: testsuitetests typecheck should_failMissingDefaultMethodBinding.hsghc-lib-parserTcRnWarningMinimalDefIncomplete is a warning that one must specify which methods must be implemented by all instances.Example: class Cheater a where -- WARNING LINE cheater :: a -- warning!Test case: testsuitetestswarningsminimalWarnMinimal.hs:ghc-lib-parserTcRnDefaultMethodForPragmaLacksBinding is an error that occurs when a default method pragma is missing an accompanying binding.Test cases: testsuitetests typecheck should_failT5084.hs testsuitetests typecheck should_failT2354.hsghc-lib-parserTcRnIgnoreSpecialisePragmaOnDefMethod is a warning that occurs when a specialise pragma is put on a default method.Test cases: noneghc-lib-parserTcRnBadMethodErr is an error that happens when one attempts to provide a method in a class instance, when the class doesn't have a method by that name.Test case: testsuitetests th/T12387ghc-lib-parserTcRnNoExplicitAssocTypeOrDefaultDeclaration is an error that occurs when a class instance does not provide an expected associated type or default declaration.Test cases: testsuitetestsderivingshould_compileT14094 testsuitetests indexed-typesshould_compileSimple2 testsuitetests typecheckshould_compiletc254ghc-lib-parser:TcRnIllegalNewtype is an error that occurs when a newtype:#Does not have exactly one field, oris non-linear, or is a GADT, or+has a context in its constructor's type, or declaration occurs without the TypeOperators extension.!See Note [Type data declarations]Test case: testsuitetests type-data should_fail TDNoPragmaghc-lib-parser3TcRnTypeDataForbids is an error that occurs when a  type data declaration contains data4 declaration features that are forbidden in a  type data declaration.!See Note [Type data declarations]Test cases: testsuitetests type-data should_failTDDeriving testsuitetests type-data should_failTDRecordsGADT testsuitetests type-data should_failTDRecordsH98 testsuitetests type-data should_fail!TDStrictnessGADT testsuitetests type-data should_failTDStrictnessH98ghc-lib-parserTcRnTypedTHWithPolyType is an error that signifies the illegal use of a polytype in a typed template haskell expression.Example(s): bad :: (forall a. a -> a) -> () bad = $$( [|| _ -> () ||] )Test cases: th/T11452ghc-lib-parserTcRnSpliceThrewException is an error that occurrs when running a template haskell splice throws an exception. Example(s):Test cases: annotations should_failannfail12 perfcompiler.MultiLayerModulesTH_Make perfcompilerMultiLayerModulesTH_OneShot th/T10796b th/T19470 th/T19709d th/T5358 th/T5976 th/T7276a th/T8987 th/TH_exn1 th/TH_exn2 th/TH_runIOghc-lib-parserTcRnInvalidTopDecl is a template haskell error occurring when one of the Decs passed to  addTopDecls is not a function, value, annotation, or foreign import declaration. Example(s): Test cases:ghc-lib-parserTcRnNonExactName is a template haskell error for when a declaration being added is bound to a name that is not fully known. Example(s): Test cases:ghc-lib-parserTcRnAddInvalidCorePlugin is a template haskell error indicating that a core plugin being added has an invalid module due to being in the current package. Example(s): Test cases:ghc-lib-parserTcRnAddDocToNonLocalDefn is a template haskell error for documentation being added to a definition which is not in the current module. Example(s):Test cases: showIface should_failTHPutDocExternalghc-lib-parserTcRnFailedToLookupThInstName is a template haskell error that occurrs when looking up an instance fails. Example(s):Test cases: showIface should_failTHPutDocNonExistentghc-lib-parserTcRnCannotReifyInstance is a template haskell error for when an instance being reified via reifyInstances6 is not a class constraint or type family application. Example(s): Test cases:ghc-lib-parserTcRnCannotReifyOutOfScopeThing is a template haskell error indicating that the given name is not in scope and therefore cannot be reified. Example(s):Test cases: th/T16976fghc-lib-parserTcRnCannotReifyThingNotInTypeEnv is a template haskell error occurring when the given name is not in the type environment and therefore cannot be reified. Example(s): Test cases:ghc-lib-parserTcRnNoRolesAssociatedWithName is a template haskell error for when the user tries to reify the roles of a given name but it is not something that has roles associated with it. Example(s): Test cases:ghc-lib-parserTcRnCannotRepresentThing is a template haskell error indicating that a type cannot be reified because it does not have a representation in template haskell. Example(s): Test cases:ghc-lib-parserTcRnRunSpliceFailure is an error indicating that a template haskell splice failed to be converted into a valid expression. Example(s):Test cases: th/T10828a th/T10828b th/T12478_4 th/T15270A th/T15270B th/T16895a th/T16895b th/T16895c th/T16895d th/T16895e th/T17379a th/T17379b th/T18740d th/T2597b th/T2674 th/T3395 th/T7484 th/T7667a th/TH_implicitParamsErr1 th/TH_implicitParamsErr2 th/TH_implicitParamsErr3 th/TH_invalid_add_top_declghc-lib-parser8TcRnUserErrReported is an error or warning thrown using qReport from the Quasi instance of TcM. Example(s): Test cases:ghc-lib-parserTcRnInterfaceLookupError is an error resulting from looking up a name in an interface file. Example(s): Test cases:ghc-lib-parserTcRnUnsatisfiedMinimalDef is a warning that occurs when a class instance is missing methods that are required by the minimal definition.Example: class C a where foo :: a -> a instance C () -- | foo needs to be defined hereTest cases: testsuitetests typecheckprog001$typecheck.prog001 testsuitetests typecheckshould_compiletc126 testsuitetests typecheckshould_compileT7903 testsuitetests typecheckshould_compiletc116 testsuitetests typecheckshould_compiletc175 testsuitetests typecheckshould_compileHasKey testsuitetests typecheckshould_compiletc125 testsuitetests typecheckshould_compiletc078 testsuitetests typecheckshould_compiletc161 testsuitetests typecheck should_failT5051 testsuitetests typecheck should_failT21583 testsuitetestsbackpackshould_compilebkp47 testsuitetestsbackpack should_failbkpfail25 testsuitetestsparsershould_compileT2245 testsuitetestsparsershould_compileread014 testsuitetests indexed-typesshould_compileClass3 testsuitetests indexed-typesshould_compileSimple2 testsuitetests indexed-types should_failT7862 testsuitetestsderivingshould_compile deriving-1935 testsuitetestsderivingshould_compileT9968a testsuitetestsderivingshould_compiledrv003 testsuitetestsderivingshould_compileT4966 testsuitetestsderivingshould_compileT14094 testsuitetestsperfcompilerT15304 testsuitetestswarningsminimalWarnMinimal testsuitetests simplCoreshould_compilesimpl020 testsuitetestsdeSugarshould_compileT14546d testsuitetestsghciscriptsT5820 testsuitetestsghciscriptsghci019ghc-lib-parser is an error that happens when a method in a class instance is given a type signature, but the user has not enabled the  InstanceSigs extension.Test case: testsuitetests module/mod45ghc-lib-parser is an error that is triggered by a type family instance being declared in an hs-boot file.Test case: testsuitetests indexed-types should_fail HsBootFamghc-lib-parser is an error that occurs when an associated type or data family is given a top-level instance.Test case: testsuitetests indexed-types should_failT3092ghc-lib-parser is an error that occurs when a class instance for a class with an associated type or data family is missing a corresponding family instance declaration.Test case: testsuitetests indexed-types should_fail SimpleFail7ghc-lib-parser is an error that is triggered by a type or data family instance without the  TypeFamilies extension.Test case: testsuitetests indexed-types should_failBadFamInstDeclghc-lib-parser is an error that is triggered by attempting to give a top-level (open) type family instance for a closed type family.Test cases: testsuitetests indexed-types should_failOverlap7 testsuitetests indexed-types should_failOverlap3ghc-lib-parserTcRnNoRebindableSyntaxRecordDot is an error triggered by an overloaded record update without RebindableSyntax enabled. Example(s):Test cases: parser should_failRecordDotSyntaxFail5ghc-lib-parserTcRnNoFieldPunsRecordDot is an error triggered by the use of record field puns in an overloaded record update without enabling NamedFieldPuns./Example(s): print $ a{ foo.bar.baz.quux }Test cases: parser should_failRecordDotSyntaxFail12ghc-lib-parserTcRnIllegalStaticExpression is an error thrown when user creates a static pointer via TemplateHaskell without enabling the StaticPointers extension. Example(s):Test cases: th/T14204ghc-lib-parserTcRnIllegalStaticFormInSplice is an error when a user attempts to define a static pointer in a Template Haskell splice. Example(s):"Test cases: th/TH_StaticPointers02ghc-lib-parserTcRnListComprehensionDuplicateBinding is an error triggered by duplicate let-bindings in a list comprehension.2Example(s): [ () | let a = 13 | let a = 17 ]Test cases: typecheck should_fail tcfail092ghc-lib-parserTcRnEmptyStmtsGroup is an error triggered by an empty list of statements in a statement block. For more information, see Ѥ Example(s):  () | then ()do proc () -> doTest cases: rename should_failRnEmptyStatementGroup1ghc-lib-parserTcRnLastStmtNotExpr is an error caused by the last statement in a statement block not being an expression. Example(s):do x <- pure () do let x = 5Test cases: rename should_failT6060 parser should_failT3811g parser should_fail readFail028ghc-lib-parserTcRnUnexpectedStatementInContext is an error when a statement appears in an unexpected context (e.g. an arrow statement appears in a list comprehension). Example(s):Test cases: parser should_fail#readFail042 parser should_fail#readFail038 parser should_fail readFail043ghc-lib-parserTcRnIllegalTupleSection is an error triggered by usage of a tuple section without enabling the TupleSections extension.Example(s): (5,)Test cases: rename should_fail rnfail056ghc-lib-parserTcRnIllegalImplicitParameterBindings is an error triggered by binding an implicit parameter in an mdo block.,Example(s): mdo { let { ?x = 5 }; () }Test cases: rename should_failRnImplicitBindInMdoNotationghc-lib-parserTcRnSectionWithoutParentheses is an error triggered by attempting to use an operator section without parentheses.Example(s): ( x, ())Test cases: rename should_failT2490 rename should_failT5657ghc-lib-parser* is an "internal" type (used only inside  that wraps a  while also providing any extra info needed to correctly pretty-print this diagnostic later on.ghc-lib-parser&Extra context associated to the error.ghc-lib-parser1Extra supplementary info associated to the error.ghc-lib-parser5Construct a basic mismatch message between two types.See pprMismatchMsg. for how such a message is displayed to users.ghc-lib-parser7Report a mismatch error without any extra information.ghc-lib-parser Create a "not in scope" error message for the given 6.ghc-lib-parserDisplay some relevant bindings.!ghc-lib-parseralways a class constraintghc-lib-parser/ambiguous kind and type variables, respectivelyߦghc-lib-parserThe type constructor that occurs in the typeclass instance declaration.ghc-lib-parserThe typeclass kind.ghc-lib-parserThe number of typeclass arguments that GHC kept. See Note [tc_args and tycon arity] in GHC.Tc.Deriv. | Generic instances can only be derived using the stock strategy in Safe Haskell.ghc-lib-parser5Type constructor for which the instance is requestedghc-lib-parserWhether or not -XDeriveAnyClass is enabled already. | Stock deriving won't work, but perhaps DeriveAnyClass will.ghc-lib-parserThe x will allow us to pretty-print some diagnostics with more detail.ghc-lib-parserThe contextual skolem info. The boolean controls whether we want to show it in the user message. (Nice to keep track of the info in either case, for other users of the GHC API.)ghc-lib-parser+The implication containing a contradiction.ghc-lib-parserThe contradiction.ghc-lib-parser The limit.ghc-lib-parserthe wildcard name, or I for an anonymous wildcardghc-lib-parserfirst type variableghc-lib-parsersecond type variableghc-lib-parser function nameghc-lib-parser3user-written name of type variable being quantifiedghc-lib-parser function nameghc-lib-parser(type the variable unified with, if knownghc-lib-parserpartial type signatureghc-lib-parserTrue: -Wmissing-signatures overrides -Wmissing-exported-signatures, or -Wmissing-pattern-synonym-signatures overrides -Wmissing-exported-pattern-synonym-signaturesghc-lib-parser2whether this is an unboxed tuple or an unboxed sumghc-lib-parser&Occurrence name shared by both exportsghc-lib-parserName of first exportghc-lib-parser.Provenance for definition site of first exportghc-lib-parserExport decl of first exportghc-lib-parserName of second exportghc-lib-parser/Provenance for definition site of second exportghc-lib-parserExport decl of second exportghc-lib-parser Field updateghc-lib-parser Record typeghc-lib-parserRecordghc-lib-parserRecord selectorsghc-lib-parserPattern synonymghc-lib-parserPattern selectorsghc-lib-parser6Whether the error is due to Safe Haskell being enabledèghc-lib-parser6The typeclass we are trying to derive an instance forghc-lib-parser The typeclass arguments, if any.ghc-lib-parser The derivation strategy, if any.ghc-lib-parser*Is '-XGeneralizedNewtypeDeriving' enabled?ghc-lib-parserThe specific reason why we couldn't derive an instance for the class.̨ghc-lib-parserwhat the problem isghc-lib-parserthe name that is not in scopeghc-lib-parserimport errors that are relevantghc-lib-parserhints, e.g. enable DataKinds to refer to a promoted data constructorΨghc-lib-parser?what kind of thing this is (a binding, fixity declaration, ...)Ϩghc-lib-parser/Wanted constraints in which defaulting occurredghc-lib-parser!The type variable being defaultedghc-lib-parserThe default typeШghc-lib-parserwhether the error is happening in a Template Haskell tick (so we should give a Template Haskell hint)ghc-lib-parserThe visible kind argumentghc-lib-parserTarget of the kind applicationghc-lib-parser&classification of thing being returnedghc-lib-parser allowed kindghc-lib-parserthe return kindghc-lib-parsersuggested extensionghc-lib-parserExpected number of argsghc-lib-parserActual number of argsghc-lib-parserTarget of the pragmasghc-lib-parserThe first pragmaghc-lib-parser Other pragmasghc-lib-parser of the classghc-lib-parserdefault methodsghc-lib-parser of the classghc-lib-parserProblematic methodghc-lib-parsermethodghc-lib-parser the pragmaghc-lib-parserTrue if linear types enabledghc-lib-parserResult of showing the exception (cannot be done safely outside IO)ghc-lib-parser Module nameghc-lib-parser+Name of the function used to run the spliceghc-lib-parser&Extra info associated with the messageϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤߤ¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥߥ¦æĦƦŦǦȦɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צئ٦ڦۦܦݦަߦ§çħŧƧǧȧɧʧ˧̧ͧΧϧЧѧҧӧԧէ֧קا٧ڧۧܧݧާߧƨШ¨èĨŨǨȨɨʨ˨̨ͨΨϨѨҨӨԨը֨רب٨ڨۨܨݨިߨ©ƨШ¨èĨŨǨȨɨʨ˨̨ͨΨϨѨҨӨԨը֨רب٨ڨۨܨݨިߨާߧަߦզ֦צئ٦ڦۦܦݦ˦̦ͦǦȦɦʦĦƦŦΦϦЦѦҦӦԦ¦æ̥ͥΥϥХѥҥӥإ٥ڥۥܥݥޥߥԥե֥ץťƥǥȥɥ¥åĥʥ˥©ߤ§çħŧƧǧȧɧʧ˧̧ͧΧϧЧѧҧӧԧէ֧֤פؤ٤ڤۤܤݤޤܧݧקا٧ڧۧѤҤӤԤդϤФD Safe-Inferred 5?i=ghc-lib-parserA class of types that represent a multiline document, with support for vertical composition.See Note [HLine versus HDoc] and Note [The outputable class hierarchy] for more details.ghc-lib-parser Join two docs together vertically. If there is no vertical overlap it "dovetails" the two onto one line.ghc-lib-parser Concatenate docs vertically with dovetailing.ghc-lib-parserPrints as either the given  or the given , depending on which type the result is instantiated to. This should generally be avoided; see Note [dualLine and dualDoc] for details.ghc-lib-parserA class of types that represent a single logical line of text, with support for horizontal composition.See Note [HLine versus HDoc] and Note [The outputable class hierarchy] for more details.ghc-lib-parser Join two doc&s together horizontally without a gap.ghc-lib-parser Join two doc0s together horizontally with a gap between them.ghc-lib-parserSeparate: is either like  or like , depending on what fits.ghc-lib-parser,A paragraph-fill combinator. It's much like , only it keeps fitting things on one line until it can't fit any more.ghc-lib-parser Concatenate docs horizontally without gaps.ghc-lib-parser Concatenate doc-s horizontally with a space between each one.ghc-lib-parserPrints as either the given  or the given , depending on which type the result is instantiated to. This should generally be avoided; see Note [dualLine and dualDoc] for details.ghc-lib-parserA superclass for  and  that provides an identity, #, as well as access to the shared .;See Note [The outputable class hierarchy] for more details.ghc-lib-parserRepresents a (possibly empty) sequence of lines that can be efficiently printed directly to a  (actually a  ). See Note [SDoc versus HDoc] and Note [HLine versus HDoc] for more details.ghc-lib-parserRepresents a single line of output that can be efficiently printed directly to a  (actually a  ). See Note [SDoc versus HDoc] and Note [HLine versus HDoc] for more details.ghc-lib-parserWhen we print a binder, we often want to print its type too. The OutputableBndr class encapsulates this idea.ghc-lib-parser is used to tell the thing that prints binder what language construct is binding the identifier. This can be used to decide how much info to print. Also see Note [Binding-site specific printing] in  GHC.Core.Pprghc-lib-parserThe x in (x. e)ghc-lib-parser+The x in case scrut of x { (y,z) -> ... }ghc-lib-parser+The y,z in case scrut of x { (y,z) -> ... }ghc-lib-parserThe x in (let x = rhs in e)ghc-lib-parserWrapper for types having a Outputable instance when an OutputableP instance is required.ghc-lib-parser5Outputable class with an additional environment value See Note [The OutputableP class]ghc-lib-parser(Class designating that some type has an  representationghc-lib-parser stopghc-lib-parserUse  field as depthghc-lib-parser!Print code; either C or assemblerghc-lib-parser$NB: This won't ever show package IDsghc-lib-parserDefault style for error messages, when we don't know NamePprCtx It's a bit of a hack because it doesn't take into account what's in scope Only used for desugarer warnings, and typechecker errors in interface sigsghc-lib-parser!Style for printing error messagesghc-lib-parserDefault pretty-printing optionsghc-lib-parser6Truncate a list that is longer than the current depth.ghc-lib-parser'Indicate if -dppr-debug mode is enabledghc-lib-parser,Says what to do with and without -dppr-debugghc-lib-parser7Says what to do with -dppr-debug; without, return emptyghc-lib-parserThe analog of   for , which tries to make sure the terminal doesn't get screwed up by the ANSI color codes if an exception is thrown during pretty-printing.ghc-lib-parserLike  but appends an extra newline.ghc-lib-parserAn efficient variant of  specialized for   that outputs to a  .ghc-lib-parserdoublePrec p n shows a floating point number n with p. digits of precision after the decimal point.ghc-lib-parserIndent  some specified amountghc-lib-parser Join two  together verticallyghc-lib-parserA paragraph-fill combinator. It's much like sep, only it keeps fitting things on one line until it can't fit any more.ghc-lib-parserThis behaves like , but it uses ( for horizontal composition rather than ghc-lib-parserThis behaves like , but does not indent the second document when the header is empty.ghc-lib-parser.Apply the given colour/style for the argument.)Only takes effect if colours are enabled.ghc-lib-parser2Special combinator for showing character literals.ghc-lib-parser/Special combinator for showing string literals.ghc-lib-parser3Special combinator for showing bytestring literals.ghc-lib-parser0Special combinator for showing unboxed literals.ghc-lib-parser9Normalise, escape and render a string representing a pathe.g. "c:\whatever"ghc-lib-parserReturns the separated concatenation of the pretty printed things.ghc-lib-parserReturns the comma-separated concatenation of the pretty printed things.ghc-lib-parserReturns the comma-separated concatenation of the quoted pretty printed things. ,y,z] ==> `x', `y', `z'ghc-lib-parser&Converts an integer to a verbal index: speakNth 1 = text "first" speakNth 5 = text "fifth" speakNth 21 = text "21st"ghc-lib-parser-Converts an integer to a verbal multiplicity: speakN 0 = text "none" speakN 5 = text "five" speakN 10 = text "10"ghc-lib-parserConverts an integer and object description to a statement about the multiplicity of those objects: speakNOf 0 (text "melon") = text "no melons" speakNOf 1 (text "melon") = text "one melon" speakNOf 3 (text "melon") = text "three melons"ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a list: plural [] = char 's' plural ["Hello"] = empty plural ["Hello", "World"] = char 's'ghc-lib-parserDetermines the singular verb suffix appropriate for the length of a list: singular [] = empty singular["Hello"] = char 's' singular ["Hello", "World"] = emptyghc-lib-parserDetermines the form of to be appropriate for the length of a list: isOrAre [] = text "are" isOrAre ["Hello"] = text "is" isOrAre ["Hello", "World"] = text "are"ghc-lib-parserDetermines the form of to do appropriate for the length of a list: doOrDoes [] = text "do" doOrDoes ["Hello"] = text "does" doOrDoes ["Hello", "World"] = text "do"ghc-lib-parserDetermines the form of possessive appropriate for the length of a list: itsOrTheir [x] = text "its" itsOrTheir [x,y] = text "their" itsOrTheir [] = text "their" -- probably avoid thisghc-lib-parserDetermines the form of subject appropriate for the length of a list: thisOrThese [x] = text "This" thisOrThese [x,y] = text "These" thisOrThese [] = text "These" -- probably avoid thisghc-lib-parser"has" or "have"# depending on the length of a list.ghc-lib-parser The headerghc-lib-parserAmount to indent the hung bodyghc-lib-parser3The hung body, indented and placed below the headerghc-lib-parserThe punctuationghc-lib-parserThe list that will have punctuation added between every adjacent pair of elementsghc-lib-parserPunctuated listghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parser where the things have been pretty printed, comma-separated and finally packed into a paragraph.ghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parser where the things have been pretty printed, bar-separated and finally packed into a paragraph.B Safe-Inferred'689:?&ghc-lib-parserA Module is a pair of a  and a .ghc-lib-parserA unit identifier identifies a (possibly partially) instantiated library. It is primarily used as part of , which in turn is used in Name=, which is used to give names to entities when typechecking.#There are two possible forms for a :1) It can be a , in which case we just have a  that uniquely identifies some fully compiled, installed library we have on disk.2) It can be an . When we are typechecking a library with missing holes, we may need to instantiate a library on the fly (in which case we don't have any on-disk representation.) In that case, you have an , which explicitly records the instantiation, so that we can substitute over it.ghc-lib-parser6A generic module is a pair of a unit identifier and a .ghc-lib-parserA UnitId identifies a built library in a database and is used to generate unique symbols, etc. It's usually of the form:pkgname-1.2:libname+hash(These UnitId are provided to us via the  -this-unit-id flag.The library in question may be definite or indefinite; if it is indefinite, none of the holes have been filled (we never install partially instantiated libraries as we can cheaply instantiate them on-the-fly, cf VirtUnit). Put another way, an installed unit id is either fully instantiated, or not instantiated at all.ghc-lib-parserUnit the module belongs toghc-lib-parserModule name (e.g. A.B.C)ghc-lib-parser"This data type just pairs a value - with an IsBootInterface flag. In practice,  is usually a Module or  ModuleName'.ghc-lib-parser3A definite unit (i.e. without any free module hole)ghc-lib-parserA  is an  with the invariant that it only refers to a definite library; i.e., one we have generated code for.ghc-lib-parserThe full hashed unit identifier, including the component id and the hash.ghc-lib-parserAn instantiated unit.It identifies an indefinite library (with holes) that has been instantiated.This unit may be indefinite or not (i.e. with remaining holes or not). If it is definite, we don't know if it has already been compiled and installed in a database. Nevertheless, we have a mechanism called "improvement" to try to match a fully instantiated unit with existing compiled and installed units: see Note [VirtUnit to RealUnit improvement].?An indefinite unit identifier pretty-prints to something like p[H= H ,A=aimpl:A>] (p is the 5, and the brackets enclose the module substitution).ghc-lib-parserA private, uniquely identifying representation of an InstantiatedUnit. This string is completely private to GHC and is just used to get a unique.ghc-lib-parserCached unique of .ghc-lib-parser)The (indefinite) unit being instantiated.ghc-lib-parserThe sorted (by ) instantiations of this unit.ghc-lib-parser$A cache of the free module holes of &. This lets us efficiently tell if a  has been fully instantiated (empty set of free module holes) and whether or not a substitution can have any effect.ghc-lib-parserInstalled definite unit (either a fully instantiated unit or a closed unit)ghc-lib-parserVirtual unit instantiated on-the-fly. It may be definite if all the holes are instantiated but we don't have code objects for it.ghc-lib-parserFake hole unitghc-lib-parserA unit key in the databaseghc-lib-parserClass for types that are used as unit identifiers (UnitKey, UnitId, Unit)We need this class because we create new unit ids for virtual units (see VirtUnit) and they have to to be made from units with different kinds of identifiers.ghc-lib-parserAn  is a " whose unit is identified with an .ghc-lib-parserA  is like an  but we expect to find it in one of the home units rather than the package database.ghc-lib-parserA  is a # whose unit is identified with an .ghc-lib-parser2Compares unit ids lexically, rather than by their sghc-lib-parser+Retrieve the set of free module holes of a .ghc-lib-parserCalculate the free holes of a . If this set is non-empty, this module was defined in an indefinite library that had required signatures.If a module has free holes, that means that substitutions can operate on it; if it has no free holes, substituting over a module has no effect.ghc-lib-parser Create a new ' given an explicit module substitution.ghc-lib-parser*Smart constructor for instantiated GenUnitghc-lib-parserGenerate a uniquely identifying hash (internal unit-id) for an instantiated unit.This is a one-way function. If the indefinite unit has not been instantiated at all, we return its unit-id.This hash is completely internal to GHC and is not used for symbol names or file paths. It is different from the hash Cabal would produce for the same instantiated unit.ghc-lib-parser2Generate a hash for a sorted module instantiation.ghc-lib-parser+Create a new simple unit identifier from a  . Internally, this is primarily used to specify wired-in unit identifiers.ghc-lib-parserMap over the unit type of a ghc-lib-parser4Map over the unit identifier of unit instantiations.ghc-lib-parserReturn the UnitId of the Unit. For on-the-fly instantiated units, return the UnitId of the indefinite unit this unit is an instance of.ghc-lib-parser=Return the virtual UnitId of an on-the-fly instantiated unit.ghc-lib-parserA % is definite if it has no free holes.ghc-lib-parserThis is the package Id for the current program. It is the default package Id if you don't specify a package name. We don't add this prefix to symbol names, since there can be only one main package per program. Safe-Inferred 6"ghc-lib-parserIndicates whether a module name is referring to a boot interface (hs-boot file) or regular module (hs file). We need to treat boot modules specially when building compilation graphs, since they break cycles. Regular source files and signature files are treated equivalently.;ghc-lib-parser(Located name with possible adornment - s :  , ;ghc-lib-parserA name in an import or export specification which may have adornments. Used primarily for accurate pretty printing of ParsedSource, and API Annotation placement. The : is the location of the adornment in the original source.;ghc-lib-parserno extra;ghc-lib-parser pattern X;ghc-lib-parser type (:+:);ghc-lib-parser2Wildcard in an import or export sublist, like the .. in import Mod ( T(Mk1, Mk2, ..) ).;ghc-lib-parserno wildcard in this list;ghc-lib-parser6wildcard after the given # of items in this list The Int< is in the range [0..n], where n is the length of the list.;ghc-lib-parserImported or exported entity.;ghc-lib-parserImported or Exported Variable;ghc-lib-parser+Imported or exported Thing with Absent list+The thing is a Class/Type (can't tell) - s : , ,;ghc-lib-parser8Imported or exported Thing with All imported or exportedThe thing is a Class"Type and the All refers to methods constructorss :  , ,#, ;ghc-lib-parser:Imported or exported Thing With given imported or exportedThe thing is a Class/Type and the imported or exported things are methods/constructors and record fields; see Note [IEThingWith] - s : %, %, %, ;ghc-lib-parser$Imported or exported module contents (Export Only)s : ;ghc-lib-parserDoc section heading;ghc-lib-parserSome documentation;ghc-lib-parserReference to named doc;ghc-lib-parserLocated Import or Export;ghc-lib-parser>Whether the import list is exactly what to import, or whether hiding was used, and therefore everything but what was listed should be imported;ghc-lib-parserImport DeclarationA single Haskell import declaration.;ghc-lib-parsers,  for ideclSource,, ,, ,, - attached to location in ideclImportList;ghc-lib-parser Module name.;ghc-lib-parserPackage qualifier.;ghc-lib-parserIsBoot  = {-# SOURCE #-} import;ghc-lib-parserTrue => safe import;ghc-lib-parserIf/how the import is qualified.;ghc-lib-parser as Module;ghc-lib-parser5Explicit import list (EverythingBut => hiding, names);ghc-lib-parserIf/how an import is  qualified.;ghc-lib-parser qualified! appears in prepositive position.;ghc-lib-parser qualified" appears in postpositive position.;ghc-lib-parserNot qualified.;ghc-lib-parserLocated Import Declaration;ghc-lib-parserWhen in a list this may have : ;ghc-lib-parserWhen in a list this may have : *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safe-Inferred 56:ghc-lib-parser4Maps of docs that were added via Template Haskell's putDoc.:ghc-lib-parser4The added module header documentation, if it exists.:ghc-lib-parser(The documentation added to declarations.:ghc-lib-parser.The documentation added to function arguments.:ghc-lib-parser6The documentation added to class and family instances.:ghc-lib-parserModule header.;ghc-lib-parserDocs for declarations: functions, data types, instances, methods etc. A list because sometimes subsequent haddock comments can be combined into one;ghc-lib-parser>Docs for arguments. E.g. function arguments, method arguments.;ghc-lib-parserMap from chunk name to content.This map will be empty unless we have an explicit export list from which we can reference the chunks.;ghc-lib-parserHaddock options from OPTIONS_HADDOCK or from  -haddock-opts.;ghc-lib-parserThe $! used in the module, for example $.;ghc-lib-parser7The full set of language extensions used in the module.;ghc-lib-parserA simplified version of .;ghc-lib-parserAnnotate a value with the probable identifiers found in it These will be used by haddock to generate links.The identifiers are bundled along with their location in the source file. This is useful for tooling to know exactly where they originate.This type is currently used in two places - for regular documentation comments, with a set to  <, and for adding identifier information to warnings, where a is  StringLiteral;ghc-lib-parser8A docstring with the (probable) identifiers found in it.;ghc-lib-parserExtract a mapping from the lexed identifiers to the names they may correspond to.;ghc-lib-parserPretty print a thing with its doc The docstring will include the comment decorators '-- |', '{-|' etc and will come either before or after depending on how it was written i.e it will come after the thing if it is a '-- ^' or '{-^' and before otherwise.;ghc-lib-parserSee  pprWithHsDoc;ghc-lib-parser6Print a doc with its identifiers, useful for debugging;ghc-lib-parserFor compatibility with the existing @-ddump-parsed' output, we only show the docstring.Use pprHsDoc to show ; 's internals.;ghc-lib-parserWe might re-export avails from multiple modules with a single export declaration. E.g. when we have 7module M (module X) where import R0 as X import R1 as X; :::::::::;;;;;;;;;;;;;;;;;;;;;;;;;";;;;;;;;;;::::::;;;;;;;:::;;;;;;;;v Safe-Inferred)*05; ghc-lib-parserInformation we keep around during interface file serialization/deserialization. Namely we keep the functions for serializing and deserializing s and  s. We do this because we actually use serialization in two distinct settings,+When serializing interface files themselvesWhen computing the fingerprint of an IfaceDecl (which we computing by hashing its Binary serialization)These two settings have different needs while serializing Names:Names in interface files are serialized via a symbol table (see Note [Symbol table representation of names] in GHC.Iface.Binary).During fingerprinting a binding Name is serialized as the OccName and a non-binding Name is serialized as the fingerprint of the thing they represent. See Note [Fingerprinting IfaceDecls] for further discussion.ghc-lib-parserserialize a non-binding ( (e.g. a reference to another binding).ghc-lib-parserserialize a binding  (e.g. the name of an IfaceDecl)ghc-lib-parserEncode the argument in it's full length. This is different from many default binary instances which make no guarantee about the actual encoding and might do things use variable length encoding.ghc-lib-parserDo not rely on instance sizes for general types, we use variable length encoding for many of them.ghc-lib-parser$Get access to the underlying buffer.ghc-lib-parser%SeekBin but without calling expandBinghc-lib-parser&Takes a size and action writing up to size bytes. After the action has run advance the index to the buffer by size bytes.ghc-lib-parser"forwardPut put_A put_B" outputs A after B but allows A to be read before B by using a forward referenceghc-lib-parser-Read a value stored using a forward referenceghc-lib-parserSerialize the constructor strictly but lazily serialize a value inside a J.This way we can check for the presence of a value without deserializing the value itself.ghc-lib-parser"Deserialize a value serialized by .ghc-lib-parser;This instance doesn't rely on the determinism of the keys' .! instance, so it works e.g. for s too.ghc-lib-parserhow to deserialize sghc-lib-parserhow to serialize non-binding sghc-lib-parserhow to serialize binding sn Safe-Inferred6ghc-lib-parserA wrapper around  with the sole purpose of informing call sites that the provided 7 and 8 instances are nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM to learn about determinism.ghc-lib-parserA finite map from uniques* of one type to elements in another type.The key is just here to keep us honest. It's always safe to use a single type as key. If two types don't overlap in their uniques it's also safe to index the same map at multiple key types. But this is very much discouraged.ghc-lib-parserAdd an element, returns previous lookup result and new map. If old element doesn't exist, add the passed element directly, otherwise compute the element to add using the passed function.ghc-lib-parserAdd elements to the map, combining existing values with inserted ones using the given function.ghc-lib-parser1`plusUFM_CD f m1 d1 m2 d2` merges the maps using f! as the combinding function and d1 resp. d2/ as the default value if there is no entry in m1 reps. m2-. The domain is the union of the domains of m1 and m2.IMPORTANT NOTE: This function strictly applies the modification function and forces the result unlike most the other functions in this module.Representative example: plusUFM_CD f {A: 1, B: 2} 23 {B: 3, C: 4} 42 == {A: f 1 42, B: f 2 3, C: f 23 4 } ghc-lib-parser,`plusUFM_CD2 f m1 m2` merges the maps using f$ as the combining function. Unlike =, a missing value is not defaulted: it is instead passed as I to f. f' can never have both its arguments be I.IMPORTANT NOTE: This function strictly applies the modification function and forces the result.`plusUFM_CD2 f m1 m2` is the same as `plusUFM_CD f (mapUFM Just m1) Nothing (mapUFM Just m2) Nothing`.ghc-lib-parserminusUFC_C f map1 map2 returns map1, except that every mapping key |-> value1 in map1" that shares a key with a mapping key |-> value2 in map2 is altered by f: value1 is replaced by f value1 value2 , where J& means that the new value is used and I$ means that the mapping is deleted.ghc-lib-parserIn essence foldM See Note [Deterministic UniqFM] to learn about nondeterminism. If you use this please provide a justification why it doesn't introduce nondeterminism.ghc-lib-parser Cast the key domain of a UniqFM.As long as the domains don't overlap in their uniques this is safe.ghc-lib-parserPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetEltsUFM.ghc-lib-parserPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetUFMToList.ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a set in the same way that plural from Outputable does for lists.ghc-lib-parserInherently nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM to learn about determinism.ghc-lib-parserInherently nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM to learn about determinism.ghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printedghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printedl Safe-Inferredghc-lib-parser%Class of things that we can obtain a  fromghc-lib-parserUnique identifier.The type of unique identifiers that are used in many places in GHC for fast ordering and equality tests. You should generate these with the functions from the  UniqSupply moduleThese are sometimes also referred to as "keys" in comments in GHC.ghc-lib-parserHow many bits are devoted to the unique index (as opposed to the class character).ghc-lib-parserThe interface file symbol-table encoding assumes that known-key uniques fit in 30-bits; verify this.3See Note [Symbol table representation of names] in GHC.Iface.Binary for details. Safe-Inferred %&'() *+,- ./012356$"#78]_`^9:! ;HK<=>?@ABIJCPNODEFGMLdefghijklmno   Safe-Inferredghc-lib-parser!If debug output is on, show some  on the screenghc-lib-parserpprTraceWith desc f x is equivalent to pprTrace desc (f x) x. This allows you to print details from the returned value as well as from ambient variables.ghc-lib-parserpprTraceIt desc x is equivalent to pprTrace desc (ppr x) xghc-lib-parserpprTraceException desc x action< runs action, printing a message if it throws an exception.ghc-lib-parser!If debug output is on, show some 7 on the screen along with a call stack when available.ghc-lib-parserJust warn about an assertion failure, recording the given file and line number.ghc-lib-parserFor when we want to show the user a non-fatal WARNING so that they can report a GHC bug, but don't want to panic.  E Safe-Inferredghc-lib-parser=GHC's own exception type error messages all take the form:  : If the location is on the command line, or in GHC itself, then ="ghc". All of the error types below correspond to a of "ghc", except for ProgramError (where the string is assumed to contain a location already, so we don't print one).ghc-lib-parser(Some other fatal signal (SIGHUP,SIGTERM)ghc-lib-parser*Prints the short usage msg after the errorghc-lib-parserA problem with the command line arguments, but don't print usage.ghc-lib-parserThe  impossible happened.ghc-lib-parserThe user tickled something that's known not to work yet, but we're not counting it as a bug.ghc-lib-parserAn installation problem.ghc-lib-parser&An error in the user's code, probably.ghc-lib-parserShow an exception as a string.ghc-lib-parserShow an exception which can possibly throw other exceptions. Used when displaying exception thrown within TH code.ghc-lib-parser;Append a description of the given exception to this string.Note that this uses >, which doesn't use the options set by the user via DynFlags.ghc-lib-parser;Append a description of the given exception to this string.ghc-lib-parser7Throw an exception saying "bug in GHC" with a callstackghc-lib-parser&Throw an exception saying "bug in GHC"ghc-lib-parser3Throw an exception saying "this isn't finished yet"ghc-lib-parserThrow an exception saying "bug in pgm being compiled" (used for unusual program errors)ghc-lib-parserLike try, but pass through UserInterrupt and Panic exceptions. Used when we want soft failures when reading interface files, for example. TODO: I'm not entirely sure if this is catching what we really want to catchghc-lib-parser-We use reference counting for signal handlersghc-lib-parserTemporarily install standard signal handlers for catching ^C, which just throw an exception in the current thread.ghc-lib-parserPanic with an assertion failure, recording the given file and line number. Should typically be accessed with the ASSERT family of macros+ +   d Safe-Inferred%&689:0ghc-lib-parserA location as produced by the parser. Consists of two components:The location in the file, adjusted for #line and {-# LINE ... #-} pragmas (RealSrcLoc)The location in the string buffer (BufPos) with monotonicity guarantees (see #17632)ghc-lib-parserWe attach SrcSpans to lots of things, so let's have a datatype for it.ghc-lib-parser Source SpanA  identifies either a specific portion of a text file or a human-readable description of a location.ghc-lib-parserStringBuffer Source Spanghc-lib-parserA  delimits a portion of a text file. It could be represented by a pair of (line,column) coordinates, but in fact we optimise slightly by using more compact representations for single-line and zero-length spans, both of which are quite common.-The end position is defined to be the column after the end of the span. That is, a span of (1,1)-(1,2) is one character long, and a span of (1,1)-(1,1) is zero characters long.Real Source Spanghc-lib-parserSource Locationghc-lib-parser30-based offset identifying the raw location in the  StringBuffer.The lexer increments the  every time a character (UTF-8 code point) is read from the input buffer. As UTF-8 is a variable-length encoding and  StringBuffer% needs a byte offset for indexing, a  cannot be used for indexing.The parser guarantees that  are monotonic. See #17632. This means that syntactic constructs that appear later in the  StringBuffer" are guaranteed to have a higher . Contrast that with , which does *not* make the analogous guarantee about higher line/column numbers.This is due to #line and {-# LINE ... #-} pragmas that can arbitrarily modify  . Notice how  setSrcLoc and resetAlrLastLoc in GHC.Parser.Lexer update  , modifying  but preserving .Monotonicity makes  useful to determine the order in which syntactic elements appear in the source. Consider this example (haddockA041 in the test suite):haddockA041.hs {-# LANGUAGE CPP #-} -- | Module header documentation module Comments_and_CPP_include where #include "IncludeMe.hs"IncludeMe.hs: -- | Comment on T data T = MkT -- ^ Comment on MkT#After the C preprocessor runs, the  StringBuffer will contain a program that looks like this (unimportant lines at the beginning removed):# 1 "haddockA041.hs" {-# LANGUAGE CPP #-} -- | Module header documentation module Comments_and_CPP_include where # 1 "IncludeMe.hs" 1 -- | Comment on T data T = MkT -- ^ Comment on MkT # 7 "haddockA041.hs" 2The line pragmas inserted by CPP make the error messages more informative. The downside is that we can't use RealSrcLoc to determine the ordering of syntactic elements.With RealSrcLoc, we have the following location information recorded in the AST: * The module name is located at haddockA041.hs:3:8-31 * The Haddock comment "Comment on T" is located at IncludeMe:1:1-17 * The data declaration is located at IncludeMe.hs:2:1-32Is the Haddock comment located between the module name and the data declaration? This is impossible to tell because the locations are not comparable; they even refer to different files.On the other hand, with , we have the following location information: * The module name is located at 846-870 * The Haddock comment "Comment on T" is located at 898-915 * The data declaration is located at 916-928Aside: if you're wondering why the numbers are so high, try running ghc -E haddockA041.hs and see the extra fluff that CPP inserts at the start of the file.For error messages,  is not useful at all. On the other hand, this is exactly what we need to determine the order of syntactic elements: 870 < 898, therefore the Haddock comment appears *after* the module name. 915 < 916, therefore the Haddock comment appears *before* the data declaration.We use  in in GHC.Parser.PostProcess.Haddock to associate Haddock comments with parts of the AST using location information (#17544).ghc-lib-parserReal Source Location'Represents a single point within a fileghc-lib-parserCreate a name which is actually defined by the compiler itself0ghc-lib-parser0Create a name brought into being by the compiler1ghc-lib-parserMake a name for a foreign call1ghc-lib-parser Make the ? into an internal name, regardless of what it was to begin with1ghc-lib-parserCompare Names lexicographically This only works for Names that originate in the source code or have been tidied.1ghc-lib-parserPartition UniqDFM into two UniqDFMs according to the predicateghc-lib-parser(Delete a list of elements from a UniqDFMghc-lib-parser7This allows for lossy conversion from UniqDFM to UniqFMghc-lib-parser(Apply a function to a particular elementghc-lib-parser(Apply a function to a particular elementghc-lib-parserThe expression (alterUDFM f k map) alters value x at k, or absence thereof. alterUDFM can be used to insert, delete, or update a value in UniqDFM. Use addToUDFM, delFromUDFM or adjustUDFM when possible, they are more efficient.ghc-lib-parser,Map a function over every value in a UniqDFMghc-lib-parser Cast the key domain of a UniqFM.As long as the domains don't overlap in their uniques this is safe.ghc-lib-parserDeterministic, in O(n log n).ghc-lib-parserDeterministic, in O(n log n).ghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printed00Y Safe-Inferred s Safe-Inferred6 dq Safe-Inferred6"Xghc-lib-parserWhat's the point you might ask? We might have changed an object without it's key changing. In which case this lookup makes sense.ghc-lib-parser converts a  a into a  a0 assuming, without checking, that it maps each  to a value that has that . See Note [UniqSet invariant].$$} Safe-Inferred3ghc-lib-parserInformation about the home unit (i.e., the until that will contain the modules we are compiling)The unit identifier of the instantiating units is left open to allow switching from UnitKey (what is provided by the user) to UnitId (internal unit identifier) with .TODO: this isn't implemented yet. UnitKeys are still converted too early into UnitIds in GHC.Unit.State.readUnitDataBaseghc-lib-parser.Definite home unit (i.e. that we can compile).Nothing: not an instantiated unit Just (i,insts): made definite by instantiating "i" with "insts"ghc-lib-parser6Indefinite home unit (i.e. that we can only typecheck)All the holes are instantiated with fake modules from the Hole unit. See Note [Representation of module/name variables] in GHC.Unitghc-lib-parserReturn home unit idghc-lib-parserReturn home unit instantiationsghc-lib-parserReturn the unit id of the unit that is instantiated by the home unit.-E.g. if home unit = q[A=p:B,...] we return q.If the home unit is not an instance of another unit, we return its own unit id (it is an instance of itself if you will).ghc-lib-parserReturn the unit id of the unit that is instantiated by the home unit.4E.g. if home unit = q[A=p:B,...] we return (Just q).If the home unit is not an instance of another unit, we return Nothing.ghc-lib-parser&Return the home unit as a normal unit.We infer from the home unit itself the kind of unit we create: 1. If the home unit is definite, we must be compiling so we return a real unit. The definite home unit may be the result of a unit instantiation, say `p = q[A=r:X]`. In this case we could have returned a virtual unit `q[A=r:X]` but it's not what the clients of this function expect, especially because p is lost when we do this. The unit id of a virtual unit is made up internally so `unitId(q[A=r:X])` is not equal to p. If the home unit is indefinite we can only create a virtual unit from it. It's ok because we must be only typechecking the home unit so we won't produce any code object that rely on the unit id of this virtual unit.ghc-lib-parser4Map over the unit identifier for instantiating unitsghc-lib-parser/Test if we are type-checking an indefinite unit7(if it is not, we should never use on-the-fly renaming)ghc-lib-parser(Test if we are compiling a definite unit3(if it is, we should never use on-the-fly renaming)ghc-lib-parser9Test if we are compiling by instantiating a definite unitghc-lib-parser!Test if the unit is the home unitghc-lib-parser'Test if the unit-id is the home unit-idghc-lib-parser+Test if the unit-id is not the home unit-idghc-lib-parser9Test if the home unit is an instance of the given unit-idghc-lib-parser+Test if the module comes from the home unitghc-lib-parser+Test if the module comes from the home unitghc-lib-parser6Test if a module doesn't come from the given home unitghc-lib-parser6Test if a module doesn't come from the given home unitghc-lib-parser6Test if a module doesn't come from the given home unitghc-lib-parser6Test if a module doesn't come from the given home unitghc-lib-parserMake a module in home unitghc-lib-parserMake a module in home unitghc-lib-parserReturn the module that is used to instantiate the given home module name. If the ModuleName doesn't refer to a signature, return the actual home module."E.g., the instantiating module of A in  p[A=q[]:B] is q[]:B%. the instantiating module of A in p is p:A.ghc-lib-parserReturn the module that is used to instantiate the given home module.If the given module isn't a module hole, return the actual home module."E.g., the instantiating module of p:A in  p[A=q[]:B] is q[]:B%. the instantiating module of r:A in  p[A=q[]:B] is r:A%. the instantiating module of p:A in p is p:A%. the instantiating module of r:A in p is r:A. Safe-Inferred 2 v == not (2 v).2ghc-lib-parserIs this a term variable ($ ) that is not! a coercion variable? Satisfies 2 v ==> 2 v == not (2 v).2ghc-lib-parser2 returns True% for type variables as well as local $s These are the variables that we need to pay attention to when finding free variables, or doing dependency analysis.2ghc-lib-parser2 returns True of $s and $s that must have a binding in this module. The converse is not quite right: there are some global $s that must have bindings, such as record selectors. But that doesn't matter, because it's only used for assertions2ghc-lib-parserisExportedIdVar means "don't throw this away"$$$$$$11$1$111$1111$1111%%%1111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222$1$11111111$$111$11111111111111111122222222222222222222222222$111111$11111$111111111111111%%%111111111111$1111$111111111111111111121122111111e Safe-Inferred~3ghc-lib-parserIdentifier DetailsThe  of an Id7 give stable, and necessary, information about the Id.ghc-lib-parserIdentifier InformationAn  gives optional information about an Id. If present it never lies, but it may not be present, in which case there is always a conservative assumption which can be made.Two Id:s may have different info even though they have the same Unique (and are hence the same Id); for example, one might lack the properties attached to the other. Most of the ; gives information about the value, or definition, of the Id4, independent of its usage. Exceptions to this are e, e, e and e.!Performance note: when we update , we have to reallocate this entire record, so it is a good idea not to let this data structure get too big.ghc-lib-parser Check if an  says e.ghc-lib-parserJust a synonym for e. Written separately so it can be exported in the hs-boot file.ghc-lib-parserBasic . that carries no useful information whatsoevereghc-lib-parserTick box for Hpc-style coverageeghc-lib-parser%Constant applicative form InformationRecords whether an Id+ makes Constant Applicative Form referenceseghc-lib-parserIndicates that the Id is for either: A function or static constructor that refers to one or more CAFs, orA real live CAFeghc-lib-parser9A function or static constructor that refers to no CAFs.eghc-lib-parserRule Information$Records the specializations of this Id, that we know about in the form of rewrite cs that target themeghc-lib-parserInline Pragma InformationTells when the inlining is active. When it is active the thing may be inlined, depending on how big it is.If there was an INLINE pragma, then as a separate matter, the RHS will have been made to look small with a Core inline Note The default e is %, so the info serves entirely as a way to inhibit inlining until we want iteghc-lib-parserArity InformationAn e of n, tells us that partial application of this Id to up to n-1* value arguments does essentially no work.7That is not necessarily the same as saying that it has n6 leading lambdas, because coerces may get in the way.The arity might increase later in the compilation process, if an extra lambda floats up to the binding site. Invariant: the & of an Id must never exceed the number of value arguments that appear in the type of the Id'. See Note [Arity and function types].ghc-lib-parserEncodes arities, OneShotInfo, CafInfo. From least-significant to most-significant bits:Bit 0 (1): OneShotInfoBit 1 (1): CafInfoBit 2 (1): unusedBits 3-32(30): Call Arity infoBits 33-62(30): Arity infoeghc-lib-parserSpecialisations of the Ids function which exist. See Note [Specialisations and RULES in IdInfo]eghc-lib-parserThe Id s unfoldingeghc-lib-parser"Any inline pragma attached to the Ideghc-lib-parserHow the Id occurs in the programeghc-lib-parserA strictness signature. Describes how a function uses its arguments See Note [idArity varies independently of dmdTypeDepth] in GHC.Core.Opt.DmdAnaleghc-lib-parserInformation on whether the function will ultimately return a freshly allocated constructor.eghc-lib-parserID demand informationghc-lib-parserBitfield packs CafInfo, OneShotInfo, arity info, and call arity info in one 64-bit word. Packing these fields reduces size of  from 12 words to 7 words and reduces residency by almost 4% in some programs. See #17497 and associated MR.See documentation of the getters for what these packed fields mean.eghc-lib-parserRecursive Selector Parenteghc-lib-parserThe Id for a record selectoreghc-lib-parserThe Id is for a data constructor workereghc-lib-parserThe Id is for a data constructor wrappereghc-lib-parserThe Id9 is a superclass selector, or class operation of a classeghc-lib-parserThe Id# is for a primitive operator True  = is representation-polymorphic, and hence has no binding This lev-poly flag is used only in GHC.Types.Id.hasNoBindingeghc-lib-parserThe Id is for a foreign call. Type will be simple: no type families, newtypes, etceghc-lib-parserThe Id4 is for a HPC tick box (both traditional and binary)eghc-lib-parser$A dictionary function. Bool = True  = the class has only one method, so may be implemented with a newtype, so it might be bad to be strict on this dictionaryeghc-lib-parser&A coercion variable This only covers  un-lifted coercions, of type (t1 ~# t2) or (t1 ~R# t2), not their lifted variantseghc-lib-parserAn Id< for a join point taking n arguments Note [Join points] in GHC.Core+ Can also work as a WorkerLikeId if given &s. See Note [CBV Function Ids] The [CbvMark] is always empty (and ignored) until after Tidy.eghc-lib-parserAn Id for a worker like function, which might expect some arguments to be passed both evaluated and tagged. Worker like functions are create by W/W and SpecConstr and we can expect that they aren't used unapplied. See Note [CBV Function Ids] See Note [Tag Inference] The [CbvMark] is always empty (and ignored) until after Tidy for ids from the current module.eghc-lib-parser+Info about a lambda-bound variable, if the Id is oneeghc-lib-parserId arity, as computed by GHC.Core.Opt.Arity%. Specifies how many arguments this Id: has to be applied to before it doesn any meaningful work.eghc-lib-parserId CAF infoeghc-lib-parserHow this is called. This is the number of arguments to which a binding can be eta-expanded without losing any sharing. n  =% all calls have at least n argumentseghc-lib-parserEssentially returns the e field, but does not expose the unfolding of a strong loop breaker.This is the right thing to call if you plan to decide whether an unfolding will inline.eghc-lib-parser True of a non-loop-breaker Id that has a stable; unfolding that is (a) always inlined; that is, with an c guidance, or (b) a DFunUnfolding which never needs to be inlinedeghc-lib-parserMore informative  we can use when we know the Id has no CAF referenceseghc-lib-parser$It is always safe to assume that an Id has an arity of 0eghc-lib-parser1Assume that no specializations exist: always safeeghc-lib-parserRetrieve the locally-defined free variables of both the left and right hand sides of the specialization ruleseghc-lib-parserChange the name of the function the rule is keyed on all of the csghc-lib-parserAssumes that the Id$ has CAF references: definitely safeeghc-lib-parserThis is used to remove information on lambda binders that we have setup as part of a lambda group, assuming they will be applied all at once, but turn out to be part of an unsaturated lambda as in e.g: (\x1. \x2. e) arg1eghc-lib-parserRemove all demand info on the eghc-lib-parser.Remove usage (but not strictness) info on the eghc-lib-parserRemove usage environment info from the strictness signature on the eghc-lib-parser'Zap info that depends on free variablesghc-lib-parserZaps any core unfolding, but  preserves/ evaluated-ness, i.e. an unfolding of OtherConeeeeeeeeeeeeeeeeeeeeeee&&&&&&&&&&&&&&&&&&&&&&&&&&&&beeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&eeeee&&&e&&eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&&&&&&&&&&&&&ee&&&&&&&&&eeeeeeeeeeeeeeeeebeeeeeee e1e1e1e1e1e1e1e1e1e1 Safe-Inferred6ghc-lib-parser A C type, used in CAPI FFI calls :   '{-# CTYPE' , , ,  '#-}',ghc-lib-parser,How to call a particular function in C-land.ghc-lib-parserMight invoke Haskell GC, or do a call back, or switch threads, etc. So make sure things are tidy before the call. Additionally, in the threaded RTS we arrange for the external call to be executed by a separate OS thread, i.e., _concurrently_ to the execution of other Haskell threads.ghc-lib-parserLike PlaySafe, but additionally the worker thread running this foreign call may be unceremoniously killed, so it must be scheduled on an unbound thread.ghc-lib-parserNone of the above can happen; the call will return without interacting with the runtime system at all. Specifically:No GC No call backs No blockingNo precise exceptions! !      Safe-Inferred6` ghc-lib-parserA String Literal in the source, including its original raw format for use by source to source manipulation tools.ghc-lib-parserFractional LiteralUsed (instead of Rational) to represent exactly the floating point literal that we encountered in the user's source program. This allows us to pretty-print exactly what the user wrote, which is important e.g. for floating point numbers that can't represented as Doubles (we used to via Double for pretty-printing). See also #2245. Note [FractionalLit representation] in GHC.HsToCore.Match.Literal The actual value then is: sign * fl_signi * (fl_exp_base^fl_exp) where sign = if fl_neg then (-1) else 1For example FL { fl_neg = True, fl_signi = 5.3, fl_exp = 4, fl_exp_base = Base10 } denotes -5300ghc-lib-parser'How the value was written in the sourceghc-lib-parserIntegral LiteralUsed (instead of Integer) to represent negative zegative zero which is required for NegativeLiterals extension to correctly parse `-0::Double` as negative zero. See also #13211.ghc-lib-parserFor when code is generated, e.g. TH, deriving. The pretty printer will then make its own representation of the item.ghc-lib-parser/Special combinator for showing string literals.ghc-lib-parser7The integer should already be negated if it's negative.ghc-lib-parser=The arguments should already be negated if they are negative.ghc-lib-parserCompare fractional lits with small exponents for value equality but large values for syntactic equality.ghc-lib-parserBe wary of using this instance to compare for equal *values* when exponents are large. The same value expressed in different syntactic form won't compare as equal when any of the exponents is >= 100.ghc-lib-parserBe wary of using this instance to compare for equal *values* when exponents are large. The same value expressed in different syntactic form won't compare as equal when any of the exponents is >= 100.!! Safe-Inferred (gaghc-lib-parserA demand transformer> is a monotone function from an incoming evaluation context (a) to a a, describing how the denoted thing (i.e. expression, function) uses its arguments and free variables, and whether it diverges.See Note [Understanding DmdType and DmdSig] and Note [What are demand signatures?].aghc-lib-parserThe depth of the wrapped a encodes the arity at which it is safe to unleash. Better construct this through b.. See Note [Understanding DmdType and DmdSig]aghc-lib-parserCharacterises how an expressionEvaluates its free variables (a)Evaluates its arguments (a)$Diverges on every code path or not (a)Equality is defined modulo s in a#. See Note [Demand type Equality].aghc-lib-parser-Demand on explicitly-mentioned free variablesaghc-lib-parserDemand on argumentsaghc-lib-parser?Whether evaluation diverges. See Note [Demand type Divergence]aghc-lib-parsera characterises whether something surely diverges. Models a subset lattice of the following exhaustive set of divergence results: nnontermination (e.g. loops)ithrows imprecise exceptionpthrows precise exceTtioncconverges (reduces to WHNF).The different lattice elements correspond to different subsets, indicated by juxtaposition of indicators (e.g. nc definitely doesn't throw an exception, and may or may not reduce to WHNF).  Dunno (nipc) | ExnOrDiv (nip) | Diverges (ni) %As you can see, we don't distinguish n and i. See Note [Precise exceptions and strictness analysis] for why p is so special compared to i.aghc-lib-parser5Definitely throws an imprecise exception or diverges.aghc-lib-parserDefinitely throws a *precise* exception, an imprecise exception or diverges. Never converges, hence b! See scenario 1 in Note [Precise exceptions and strictness analysis].aghc-lib-parser7Might diverge, throw any kind of exception or converge.aghc-lib-parserA sub-demand describes an evaluation context (in the sense of an operational semantics), e.g. how deep the denoted thing is going to be evaluated. See a for examples.See Note [SubDemand denotes at least one evaluation] for a more detailed description of what a sub-demand means.See Note [Demand notation] for the extensively used short-hand notation. See also Note [Why Boxity in SubDemand and not in Demand?].aghc-lib-parserPolymorphic demand, the denoted thing is evaluated arbitrarily deep, with the specified cardinality at every level. The  applies only to the outer evaluation context as well as all inner evaluation context. See Note [Boxity in Poly] for why we want it to carry . Expands to  via  and to a via a.Poly b n is semantically equivalent to  Prod b [n :* Poly b n, ...] or Call n (Poly Boxed n)@.  and a do these rewrites.In Note [Demand notation]: L === P(L,L,...) and  L === C(L), B === P(B,B,...) and  B === C(B), !A === !P(A,A,...) and  !A === C(A)(, and so on.We'll only see a with a (B), a (A), a (L) and sometimes a (S) through a, never a (M) or a$ (1) (grep the source code). Hence a, which is closed under lub and plus.,Why doesn't this constructor simply carry a a instead of its fields? See Note [Call SubDemand vs. evaluation Demand].ghc-lib-parser Call n sd% describes the evaluation context of n function applications (with one argument), where the result of each call is evaluated according to sd. sd describes program traces in which the denoted thing was called at all, see Note [SubDemand denotes at least one evaluation]. That Note also explains why it doesn't make sense for n( to be absent, hence we forbid it with a3. Absent call demands can still be expressed with a. Used only for values of function type. Use the smart constructor  whenever possible!aghc-lib-parser Prod b ds describes the evaluation context of a case scrutinisation on an expression of product type, where the product components are evaluated according to ds. The  b6 says whether or not the box of the product was used.aghc-lib-parserA demand describes.How many times a variable is evaluated, via a a inality, and0How deep its value was evaluated in turn, via a a.(Examples (using Note [Demand notation]): puts demand 1A on its first argument: It evaluates the argument strictly (1), but not any deeper (A). puts demand 1P(1L,A) on its argument: It evaluates the argument pair strictly and the first component strictly, but no nested info beyond that (L*). Its second argument is not used at all.  puts demand 1C(1,L)" on its first argument: It calls (C>) the argument function with one argument, exactly once (1=). No info on how the result of that call is evaluated (L). puts demand MC(M,L) on its second argument: It evaluates the argument function at most once ((M)aybe) and calls it once when it is evaluated. fst p + fst p puts demand SP(SL,A) on p: It's 1P(1L,A)# multiplied by two, so we get S4 (used at least once, possibly multiple times).#This data type is quite similar to Scaled a, but it's scaled by a, which is an interval on  Multiplicity, the upper bound of which could be used to infer uniqueness types. Also we treat a and a specially, as the concept of a a doesn't apply when there isn't any evaluation at all. If you don't care, simply use a.aghc-lib-parser6A bottoming demand, produced by a diverging function (a), hence there is no a% that describes how it was evaluated.aghc-lib-parser-An absent demand: Evaluated exactly 0 times (a), hence there is no a% that describes how it was evaluated.ghc-lib-parser.Don't use this internal data constructor; use a# instead. Since BotDmd deals with a and AbsDmd deals with a*, the cardinality component is CardNonAbsaghc-lib-parser A subtype of a* for which the upper bound is never 1 (no a or a!). The only four inhabitants are a, a, a, a!. Membership can be tested with . See a for use sites and explanation.aghc-lib-parser A subtype of a* for which the upper bound is never 0 (no a or a!). The only four inhabitants are a, a, a, a!. Membership can be tested with . See  and  for use sites and explanation.aghc-lib-parserDescribes an interval of evaluation cardinalities. See Note [Evaluation cardinalities] See Note [Bit vector representation for Card]aghc-lib-parserc :* sd" is a demand that says "evaluated c times, and any trace in which it is evaluated will evaluate at least as deep as sd".Matching on this pattern synonym is a complete match. If the matched demand was a, it will match as C_00 :* seqSubDmd. If the matched demand was a, it will match as C_10 :* botSubDmd.. The builder of this pattern synonym simply discards the a if the a was absent and returns a or a< instead. It will assert that the discarded sub-demand was  and , respectively.Call sites should consider whether they really want to look at the a" of an absent demand and match on a and/or a otherwise. Really, any other a? would be allowed and might work better, depending on context.aghc-lib-parserEvery possible cardinality; the top element, {0,1,n}. Pretty-printed as L.aghc-lib-parserStrict and used (possibly) many times, {1,n}. Pretty-printed as S.aghc-lib-parser.Used at most once, {0,1}. Pretty-printed as M.aghc-lib-parser/Strict and used once, {1}. Pretty-printed as 1.aghc-lib-parser Bottom, {}. Pretty-printed as A.aghc-lib-parser!Absent, {0}. Pretty-printed as A.aghc-lib-parserTrue  = lower bound is 1.aghc-lib-parserTrue  = upper bound is 0.aghc-lib-parserTrue  = upper bound is 1.ghc-lib-parser Is this a a?ghc-lib-parser Is this a a?aghc-lib-parserIntersect with [0,1].ghc-lib-parser"Intersect with [1,n]. The same as a a.aghc-lib-parserDenotes D on a.ghc-lib-parserDenotes D on a.aghc-lib-parserDenotes  on lower and upper bounds of a.aghc-lib-parserDenotes  on lower and upper bounds of a.´ghc-lib-parser3Only meant to be used in the pattern synonym below!ôghc-lib-parser(The uniform field demand when viewing a a as a a , as in a.aghc-lib-parserA smart constructor for a6, applying rewrite rules along the semantic equality ,Prod b [n :* Poly Boxed n, ...] === Poly b n, simplifying to a as when possible. Examples: Rewrites P(L,L) (e.g., arguments Boxed, [L,L]) to L Rewrites  !P(L!L,L!L) (e.g., arguments Unboxed,  [L!L,L!L]) to !LDoes not rewrite P(1L), P(L!L), !P(L) or P(L,A)aghc-lib-parser viewProd n sd interprets sd as a a of arity n , expanding a demands as necessary.ghc-lib-parserA smart constructor for 6, applying rewrite rules along the semantic equality #Call C_0N (Poly C_0N) === Poly C_0N, simplifying to a as when possible.ghc-lib-parser viewCall sd interprets sd as a  , expanding a subdemands as necessary.Ĵghc-lib-parserSets  to  for non- sub-demands and recurses into a.aghc-lib-parserSets  to  for the a, recursing into as. Don't recurse into lazy arguments; see GHC.Core.Opt.DmdAnal Note [No lazy, Unboxed demands in demand signature]aghc-lib-parserDenotes D on a.aghc-lib-parserDenotes  on a.aghc-lib-parser;Used to suppress pretty-printing of an uninformative demandaghc-lib-parser8Contrast with isStrictUsedDmd. See Note [Strict demands]aghc-lib-parser7Not absent and used strictly. See Note [Strict demands]aghc-lib-parserIs the value used at most once?aghc-lib-parserWe try to avoid tracking weak free variable demands in strictness signatures for analysis performance reasons. See Note [Lazy and unleashable free variables] in GHC.Core.Opt.DmdAnal.aghc-lib-parserFirst argument of 'GHC.Exts.maskAsyncExceptions#': 1C(1,L). Called exactly once.aghc-lib-parserFirst argument of 'GHC.Exts.atomically#': SC(S,L)-. Called at least once, possibly many times.aghc-lib-parserFirst argument of catch#: MC(M,L). Evaluates its arg lazily, but then applies it exactly once to one argument.aghc-lib-parserSecond argument of catch#:  MC(M,C(1,L)). Calls its arg lazily, but then applies it exactly once to an additional argument.aghc-lib-parserMake a a evaluated at-most-once.aghc-lib-parserMake a a' evaluated at-least-once (e.g. strict).aghc-lib-parserIf the argument is a used non-newtype dictionary, give it strict demand. Also split the product type & demand and recur in order to similarly strictify the argument's contained used non-newtype superclass dictionaries. We use the demand as our recursive measure to guarantee termination.aghc-lib-parserMake a a lazy.aghc-lib-parser Wraps the a with a one-shot call demand: d -> C(1,d).aghc-lib-parsermkCalledOnceDmds n d returns C(1,C1...C(1,d)) where there are n C1's.aghc-lib-parserPeels one call level from the sub-demand, and also returns how many times we entered the lambda body.aghc-lib-parser Extract the a of a a. PRECONDITION: The SubDemand must be used in a context where the expression denoted by the Demand is under evaluation.aghc-lib-parser"See Note [Computing one-shot info]aghc-lib-parser"See Note [Computing one-shot info]aghc-lib-parser*saturatedByOneShots n C(M,C(M,...)) = True  = There are at least n nested C(M,..) calls. See Note [Demand on the worker] in GHC.Core.Opt.WorkWrapŴghc-lib-parser6See Note [Asymmetry of 'plus*'], which concludes that Ŵ< needs to be symmetric. Strictly speaking, we should have (plusDivergence Dunno Diverges = ExnOrDiv. But that regresses in too many places (every infinite loop, basically) to be worth it and is only relevant in higher-order scenarios (e.g. Divergence of f (throwIO blah)). So Ŵ currently is  glbDivergence , really.ƴghc-lib-parserIn a non-strict scenario, we might not force the Divergence, in which case we might converge, hence Dunno.bghc-lib-parser True if the a indicates that evaluation will not return. See Note [Dead ends].bghc-lib-parserkeepAliveDmdType dt vs makes sure that the Ids in vs have some usage in the returned demand types -- they are not Absent. See Note [Absence analysis for stable unfoldings and RULES] in GHC.Core.Opt.DmdAnal.bghc-lib-parser%Compute the least upper bound of two a*s elicited /by the same incoming demand/!bghc-lib-parserThe demand type of doing nothing (lazy, absent, no Divergence information). Note that it is 'not' the top of the lattice (which would be "may use everything"), so it is (no longer) called topDmdType.Ǵghc-lib-parserThe demand type of an unspecified expression that is guaranteed to throw a (precise or imprecise) exception or diverge.ȴghc-lib-parserThis makes sure we can use the demand type with n arguments after eta expansion, where n must not be lower than the demand types depth. It appends the argument list with the correct ɴ.ʴghc-lib-parser)A conservative approximation for a given a in case of an arity decrease. Currently, it's just nopDmdType.bghc-lib-parserWhen e is evaluated after executing an IO action that may throw a precise exception, we act as if there is an additional control flow path that is taken if e throws a precise exception. The demand type of this control flow path * is lazy and absent (a9) and boxed in all free variables and arguments * has b a> result See Note [Precise exceptions and strictness analysis]#So we can simply take a variant of b, Ǵ . Why not b? Because then the result of e can never be b4! That means failure to drop dead-ends, see #18086.bghc-lib-parserSee b.bghc-lib-parserTurns a a computed for the particular & into a a unleashable at that arity. See Note [Understanding DmdType and DmdSig].bghc-lib-parserTrue if the signature diverges or throws an exception in a saturated call. See Note [Dead ends].bghc-lib-parserTrue if the signature diverges or throws an imprecise exception in a saturated call. NB: In constrast to b this returns False for b. See Note [Dead ends] and Note [Precise vs imprecise exceptions].bghc-lib-parser9True when the signature indicates all arguments are boxedbghc-lib-parserReturns true if an application to n value args would diverge or throw an exception.If a function having b is applied to a less number of arguments than its syntactic arity, we cannot say for sure that it is going to diverge. Hence this function conservatively returns False in that case. See Note [Dead ends].˴ghc-lib-parserTransfers the boxity of the left arg to the demand structure of the right arg. This only makes sense if applied to new and old demands of the same value.bghc-lib-parser Add extra (a7) arguments to a strictness signature. In contrast to b, this prepends8 additional argument demands. This is used by FloatOut.bghc-lib-parserWe are expanding (x y. e) to (x y z. e z) or reducing from the latter to the former (when the Simplifier identifies a new join points, for example). In contrast to b, this appends extra arg demands if necessary. This works by looking at the a (which was produced under a call demand for the old arity) and trying to transfer as many facts as we can to the call demand of new arity. An arity increase (resulting in a stronger incoming demand) can retain much of the info, while an arity decrease (a weakening of the incoming demand) must fall back to a conservative default.bghc-lib-parser Extrapolate a demand signature (a ) into a a.Given a function's a and a a for the evaluation context, return how the function evaluates its free variables and arguments.bghc-lib-parser A special a for data constructors that feeds product demands into the constructor arguments.bghc-lib-parser A special a for dictionary selectors that feeds the demand on the result into the indicated dictionary component (if saturated). See Note [Demand transformer for a dictionary selector].bghc-lib-parser1Remove the demand environment from the signature.bghc-lib-parser#Remove all `C_01 :*` info (but not CM sub-demands) from the demandbghc-lib-parser#Remove all `C_01 :*` info (but not CM. sub-demands) from the strictness signaturebghc-lib-parserDrop all boxitybghc-lib-parserSee Note [Demand notation] Current syntax was discussed in #19016.bghc-lib-parserSee Note [Demand notation]bghc-lib-parserSee Note [Demand notation]bghc-lib-parser)We have to respect Poly rewrites through  and a.bghc-lib-parser See Note [Demand type Equality].aghc-lib-parserdepending on saturationaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabbbaaaabbbbbaaaaabbbbbbabbbbbbbbaabbbbbbbbbbbbbbbbabbbaaaabbbbbbbbbb Safe-Inferred"3ghc-lib-parser'Deterministic Type Variable Environment3ghc-lib-parserDeterministic Identifier Environment Sadly not always indexed by Id, but it is in the common case.3ghc-lib-parser"Deterministic Variable Environment3ghc-lib-parserCoercion Variable Environment3ghc-lib-parser%Type or Coercion Variable Environment3ghc-lib-parserType Variable Environment3ghc-lib-parserIdentifier Environment3ghc-lib-parserVariable Environment3ghc-lib-parserTidy EnvironmentWhen tidying up print names, we keep a mapping of in-scope occ-names (the /+) and a Var-to-Var of the current renamings3ghc-lib-parserRename Environment 2When we are comparing (or matching) types or terms, we are faced with "going under" corresponding binders. E.g. when comparing: \x. e1 ~ \y. e2Basically we want to rename [x -> y] or [y -> x], but there are lots of things we must be careful of. In particular, x might be free in e2 , or y in e1. So the idea is that we come up with a fresh binder that is free in neither, and rename x and y, respectively. That means we must maintain: 'A renaming for the left-hand expression)A renaming for the right-hand expressionsAn in-scope setFurthermore, when matching, we want to be able to have an 'occurs check', to prevent: \x. f ~ \y. ymatching with [f -> y]. So for each expression we want to know that set of locally-bound variables. That is precisely the domain of the mappings 1. and 2., but we must ensure that we always extend the mappings as we go in.-All of this information is bundled up in the 33ghc-lib-parser3A set of variables that are in scope at some point.Note that this is a superset of the variables that are currently in scope. See Note [The InScopeSet invariant]."Secrets of the Glasgow Haskell Compiler inliner" Section 3.2 provides the motivation for this abstraction.3ghc-lib-parserLook up a variable the 3. This lets you map from the variable's identity (unique) to its full value.3ghc-lib-parseruniqAway in_scope v finds a unique that is not used in the in-scope set, and gives that to v. See Note [Local uniques] and Note [The InScopeSet invariant].3ghc-lib-parserunsafeGetFreshUnique in_scope3 finds a unique that is not in-scope in the given 3. This must be used very carefully since one can very easily introduce non-unique %s this way. See Note [Local uniques].3ghc-lib-parserRetrieve the left mapping3ghc-lib-parserRetrieve the right mapping3ghc-lib-parserApplies 3 to several variables: the two variable lists must be of equal length3ghc-lib-parserrnBndr2 env bL bR goes under a binder bL5 in the Left term, and binder bR, in the Right term. It finds a new binder, new_b&, and returns an environment mapping  bL -> new_b and  bR -> new_b3ghc-lib-parser Similar to 3= but returns the new variable as well as the new environment3ghc-lib-parser Similar to 37 but used when there's a binder on the left side only.3ghc-lib-parser Similar to 38 but used when there's a binder on the right side only.3ghc-lib-parser Similar to 35 but used for eta expansion See Note [Eta expansion]3ghc-lib-parser Similar to 35 but used for eta expansion See Note [Eta expansion]3ghc-lib-parser?Look up the renaming of an occurrence in the left or right term3ghc-lib-parser?Look up the renaming of an occurrence in the left or right term3ghc-lib-parser?Look up the renaming of an occurrence in the left or right term3ghc-lib-parser?Look up the renaming of an occurrence in the left or right term3ghc-lib-parser)Tells whether a variable is locally bound3ghc-lib-parser)Tells whether a variable is locally bound3ghc-lib-parser`anyInRnEnvR env set` == `any (inRnEnvR rn_env) (toList set)` but lazy in the second argument if the right side of the env is empty.3ghc-lib-parser$Wipe the left or right side renaming3ghc-lib-parser$Wipe the left or right side renaming3ghc-lib-parser"swap the meaning of left and right4ghc-lib-parser+Only keep variables contained in the VarSet333333333333333333333333333333333333333333333333333333333333333333333334444444444444444444444444444444444444444444433333444433433334333433344444444443444433344444444444444444444444333333333333333333333333333333333333333333333333339 Safe-Inferred"6 ghc-lib-parserOther names in the compiler add additional information to an OccName. This class provides a consistent way to access the underlying OccName. ghc-lib-parserOccurrence NameIn this context that means: "classified (i.e. as a type name, value name, etc) but not qualified and not yet resolved"0ghc-lib-parserAlters (replaces or removes) those elements of the map that are mentioned in the second map0ghc-lib-parser fib x has representation arity 1 (# x, y #) -> fib (x + y) has representation arity 2&ghc-lib-parserThe number of value arguments that can be applied to a value before it does "real work". So: fib 100 has arity 0 x -> fib x has arity 1 See also Note [Definition of arity] in GHC.Core.Opt.Arity&ghc-lib-parserTags are allocated from here for real constructors or for superclass selectors&ghc-lib-parser$It is always safe to assume that an Id) has no lambda-bound variable information&ghc-lib-parser=Pretty print an alternative in an unboxed sum e.g. "| a | |".'ghc-lib-parser0Outputs string for pragma name for any of INLINE INLINABLENOINLINE. This differs from the Outputable instance for the InlineSpec type where the pragma name string as well as the accompanying SourceText (if any) is printed.'ghc-lib-parser3Pretty-print without displaying the user-specified %.'ghc-lib-parser*Pretty-print including the user-specified %.'ghc-lib-parserA representation of infinityghc-lib-parserAdd two %sghc-lib-parser Multiply two %s'ghc-lib-parser Subtract an % from an %'ghc-lib-parserTurn a positive number into an %, where 0 represents infinity'ghc-lib-parserInject any integer into an %'ghc-lib-parserIf there is any  interesting identifier occurrence, then the aggregated occurrence info of that identifier is considered interesting.'ghc-lib-parserIf any occurrence of an identifier is inside a lambda, then the occurrence info of that identifier marks it as occurring inside a lambda&ghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parserAlternative (one-based)ghc-lib-parserArityghc-lib-parser where the alternative havs been pretty printed and finally packed into a paragraph. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&& &&&&&&&&&&%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'&&&&&&&&&&&&&&&&&&&&&&&&&&%%&&&&&&&%%%%%'''%%%%%%''''''''%%%''%%%%%%'%%%%%%%''''''''''''''''''''''%%%%%''''%%%'''%'''''%%%''%%%''%%%%%%%%%' Safe-Inferred/156u%ghc-lib-parserIs a TyCon a promoted data constructor or just a normal type constructor?Zghc-lib-parserAmbiguous Field OccurrenceRepresents an *occurrence* of a field that is potentially ambiguous after the renamer, with the ambiguity resolved by the typechecker. We always store the 6 that the user originally wrote, and store the selector function after the renamer (for unambiguous occurrences) or the typechecker (for ambiguous occurrences).+See Note [HsRecField and HsRecUpdField] in  GHC.Hs.Pat". See Note [Located RdrNames] in  GHC.Hs.Expr.Zghc-lib-parser!Located Ambiguous Field OccurenceZghc-lib-parserField OccurrenceRepresents an *occurrence* of a field. This may or may not be a binding occurrence (e.g. this type is used in Z and RecordPatSynField' which bind their fields, but also in  HsRecField5 for record construction and patterns, which do not).We store both the 6 the user originally wrote, and after the renamer we use the extension field to store the selector function.Zghc-lib-parserLocated Field OccurrenceZghc-lib-parser/Arguments in an expression/type after splittingZghc-lib-parserDescribes the arguments to a data constructor. This is a common representation for several constructor-related concepts, including:The arguments in a Haskell98-style constructor declaration (see HsConDeclH98Details in  GHC.Hs.Decls).)The arguments in constructor patterns in case/function definitions (see HsConPatDetails in  GHC.Hs.Pat).The left-hand side arguments in a pattern synonym binding (see HsPatSynDetails in  GHC.Hs.Binds).One notable exception is the arguments in a GADT constructor, which uses a separate data type entirely (see HsConDeclGADTDetails in  GHC.Hs.Decls). This is because GADT constructors cannot be declared with infix syntax, unlike the concepts above (#18844).Zghc-lib-parserConstructor Declaration FieldZghc-lib-parserSee Note [ConDeclField pass]Zghc-lib-parser : Zghc-lib-parser%Located Constructor Declaration FieldZghc-lib-parserHaskell Tuple SortZghc-lib-parserThis is used in the syntax. In constructor declaration. It must keep the arrow representation.Zghc-lib-parser2Denotes the type of arrows in the surface languageZghc-lib-parsera -> b or a C bZghc-lib-parsera %1 -> b or a %1 C b, or a E bZghc-lib-parsera %m -> b or a %m C b (very much including `a %Many -> b`! This is how the programmer wrote it). It is stored as an Z9 so as to preserve the syntax as written in the program.Zghc-lib-parserHaskell Type LiteralZghc-lib-parser Haskell TypeZghc-lib-parser :  , ,= For details on above see Note [exact print annotations] in GHC.Parser.AnnotationZghc-lib-parser : NoneZghc-lib-parser : NoneZghc-lib-parser : ,Zghc-lib-parser :  '[' ,  ']'Zghc-lib-parser :   '(' or '(#' ,   ')' or '#)'Zghc-lib-parser :  '(#' ,  '#)'@Zghc-lib-parser : NoneZghc-lib-parser :  '(' ,  ')'Zghc-lib-parser  (?x :: ty) : Zghc-lib-parser : NoneZghc-lib-parser  (ty :: kind) :  '(' , , ')'Zghc-lib-parser :  '$(' ,  ')'Zghc-lib-parser : NoneZghc-lib-parser :  '{-# UNPACK' or '{-# NOUNPACK' ,  '#-}'  '!'Zghc-lib-parser :  '{' ,  '}'Zghc-lib-parser :  "'[" ,  ']'Zghc-lib-parser :  "'(" ,  ')'Zghc-lib-parser : NoneZghc-lib-parser : NoneZghc-lib-parserHaskell Type Variable Binder The flag annotates the binder. It is $ in places where explicit specificity is allowed (e.g. x :: forall {a} b. ...) or () in other places.[ghc-lib-parser :  , , [ghc-lib-parserThese names are used early on to store the names of implicit parameters. They completely disappear after type-checking.[ghc-lib-parser A type signature that obeys the forall&-or-nothing rule. In other words, an [ that uses an [ to represent its outermost type variable quantification. See #Note [Representing type signatures].[ghc-lib-parser'Located Haskell Signature Wildcard Type[ghc-lib-parserLocated Haskell Wildcard Type[ghc-lib-parserLocated Haskell Signature Type[ghc-lib-parserTypes that can appear in pattern signatures, as well as the signatures for term-level binders in RULES. See ,Note [Pattern signature binders and scoping].This is very similar to  HsSigWcType., but with slightly different semantics: see Note [HsType binders] . See also #Note [The wildcard story for types].[ghc-lib-parserAfter renamer: HsPSRn[ghc-lib-parserMain payload (the type itself)[ghc-lib-parserHaskell Wildcard Binders[ghc-lib-parser.Used for type-family instance equations, e.g., 'type instance forall a. F [a] = Tree a The notion of specificity is irrelevant in type family equations, so we use () for the [ flag.[ghc-lib-parserUsed for signatures, e.g., f :: forall a {b}. blah We use $ for the [ flag to allow distinguishing between specified and inferred type variables.[ghc-lib-parser6The outermost type variables in a type that obeys the forall-or-nothing rule. See Note [forall-or-nothing rule].[ghc-lib-parserImplicit forall, e.g., f :: a -> b -> b[ghc-lib-parserExplicit forall, e.g., f :: forall a b. a -> b -> b[ghc-lib-parser)Located Haskell Quantified Type Variables[ghc-lib-parser$Located Haskell Type Variable Binder[ghc-lib-parser The type variable binders in an Z . See also 1Note [Variable Specificity and Forall Visibility] in GHC.Tc.Gen.HsType.[ghc-lib-parser A visible forall (e.g., forall a -> {...}). These do not have any notion of specificity, so we use () as a placeholder value.[ghc-lib-parser An invisible forall (e.g., forall a {b} c. {...}), where each binder has a $.[ghc-lib-parserLocated Haskell Kind[ghc-lib-parser Haskell Kind[ghc-lib-parserLocated Haskell Type[ghc-lib-parserHaskell Context[ghc-lib-parserLocated Haskell Context[ghc-lib-parser Bang TypeIn the parser, strictness and packedness annotations bind more tightly than docstrings. This means that when consuming a [ (and looking for Z8) we must be ready to peer behind a potential layer of Z . See #15206 for motivation and  getBangType for an example.[ghc-lib-parserLocated Bang Type[ghc-lib-parser Does this Z' come with an explicit kind annotation?[ghc-lib-parserAn empty list that can be used to indicate that there are no type arguments allowed in cases where HsConDetails is applied to Void.Zghc-lib-parser May have  :  when in a list[ghc-lib-parser : [ghc-lib-parser May have  :  when in a list[ghc-lib-parser :  For details on above see Note [exact print annotations] in GHC.Parser.Annotation%%%%YYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZ[[ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[ZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZZ[[ZZZZZ[[[ZZZZZ[[YY%%%%ZZZZZZZZZZZZ[ZZZZZZZZZZZ[[[[A Safe-Inferred /16Pghc-lib-parserLocated Haskell Expressionghc-lib-parserSyntax ExpressionSyntaxExpr is represents the function used in interpreting rebindable syntax. In the parser, we have no information to supply; in the renamer, we have the name of the function (but see Note [Monad fail : Rebindable syntax, overloaded strings] for a wrinkle) and in the type-checker we have a more elaborate structure  SyntaxExprTc.In some contexts, rebindable syntax is not implemented, and so we have constructors to represent that possibility in both the renamer and typechecker instantiations.E.g. (>>=)4 is filled in before the renamer by the appropriate Name for (>>=), and then instantiated by the type checker with its type args etcghc-lib-parserGuarded Right-Hand Sides8GRHSs are used both for pattern bindings and for Matches :  , , , , ,ghc-lib-parserHaskell Spliceghc-lib-parserA Haskell expression._ghc-lib-parser  ModuleName. do { ... }_ghc-lib-parser  ModuleName.'mdo { ... } ie recursive do-expression_ghc-lib-parser&A command-line Stmt in GHCi pat <- rhs_ghc-lib-parserHaskell arrow match context._ghc-lib-parserA proc expression_ghc-lib-parser(A case alternative inside arrow notation_ghc-lib-parser1A case or cases alternative inside arrow notation_ghc-lib-parserAn arrow kappa abstraction_ghc-lib-parserHaskell Statement Context._ghc-lib-parser1Context for HsDo (do-notation and comprehensions)_ghc-lib-parser!Pattern guard for specified thing_ghc-lib-parserA branch of a parallel stmt_ghc-lib-parserA branch of a transform stmt_ghc-lib-parser'do-notation in an arrow-command context_ghc-lib-parserHaskell Match ContextContext of a pattern match. This is more subtle than it would seem. See Note [FunBind vs PatBind]._ghc-lib-parser8A pattern matching on an argument of a function binding_ghc-lib-parserPatterns of a lambda_ghc-lib-parser)Patterns and guards in a case alternative_ghc-lib-parserPatterns and guards in case and cases_ghc-lib-parser$Guards of a multi-way if alternative_ghc-lib-parser%A pattern match inside arrow notation_ghc-lib-parser"A pattern binding eg [y] <- e = e_ghc-lib-parserGuards of pattern bindings, e.g., (Just b) | Just _ <- x = e | otherwise = e'_ghc-lib-parserRecord update [used only in GHC.HsToCore.Expr to tell matchWrapper what sort of runtime error message to generate]_ghc-lib-parser=Pattern of a do-stmt, list comprehension, pattern guard, etc_ghc-lib-parser!A Template Haskell pattern splice_ghc-lib-parser1A Template Haskell pattern quotation [p| (a,b) |]_ghc-lib-parserA pattern synonym declaration_ghc-lib-parserfunction binder of f_ghc-lib-parser fixing of f_ghc-lib-parserwas f' banged? See Note [FunBind vs PatBind]_ghc-lib-parserArithmetic Sequence Information_ghc-lib-parser1Haskell (Untyped) Quote = Expr + Pat + Type + Var_ghc-lib-parserApplicative Argument_ghc-lib-parser!The fail operator, after renamingThe fail operator is needed if this is a BindStmt where the pattern can fail. E.g.: (Just a) <- stmt The fail operator will be invoked if the pattern match fails. It is also used for guards in MonadComprehensions. The fail operator is Nothing if the pattern match can't fail_ghc-lib-parserTrue  = was a BodyStmt, False  =1 was a BindStmt. See Note [Applicative BodyStmt]_ghc-lib-parser,context of the do expression, used in pprArg_ghc-lib-parserThe fail operatorThis is used for `.. <-` "bind statements" in do notation, including non-monadic "binds" in applicative.The fail operator is 'Just expr' if it potentially fail monadically. if the pattern match cannot fail, or shouldn't fail monadically (regular incomplete pattern exception), it is I.See Note [Monad fail : Rebindable syntax, overloaded strings] for the type of expression in the J case, and why it is so.See Note [Failing pattern matches in Stmts] for which contexts for 'BindStmt3's should use the monadic fail and which shouldn't._ghc-lib-parserParenthesised Statement Block_ghc-lib-parser>Exact print annotations when in qualifier lists or guards -  :  , , , , , ,_ghc-lib-parser_2 represents an applicative expression built with <$> and <*>. It is generated by the renamer, and is desugared into the appropriate applicative expression by the desugarer, but it is intended to be invisible in error messages..For full details, see Note [ApplicativeDo] in GHC.Rename.Expr_ghc-lib-parser :   '{', '}',_ghc-lib-parser : _ghc-lib-parserGhci Statement_ghc-lib-parserGhci Located Statement_ghc-lib-parserGuard Statement_ghc-lib-parserGuard Located Statement_ghc-lib-parserExpression Statement_ghc-lib-parserExpression Located Statement_ghc-lib-parserCommand Statement_ghc-lib-parserCommand Located Statement_ghc-lib-parserdo block Statement_ghc-lib-parser3Located Statement with separate Left and Right id's_ghc-lib-parserLocated do block Statement_ghc-lib-parserGuarded Right Hand Side._ghc-lib-parserLocated Guarded Right-Hand Side`ghc-lib-parser Guarded RHSs`ghc-lib-parserThe where clause`ghc-lib-parser Located Match May have  :  when in a list`ghc-lib-parserHaskell Record Bindings`ghc-lib-parserHaskell Top-level Command`ghc-lib-parserTop-level command, introducing a new arrow. This may occur inside a proc (where the stack is empty) or as an argument of a command-forming operator.!Located Haskell Top-level Command`ghc-lib-parserHaskell arrow application type.`ghc-lib-parserFirst order arrow application -<`ghc-lib-parserHigher order arrow application -<<`ghc-lib-parser;Haskell Command (e.g. a "statement" in an Arrow proc block)`ghc-lib-parser :  , , , `ghc-lib-parser :  '(|' ,  '|)'`ghc-lib-parser :  , ,`ghc-lib-parser :  '(',  ')'`ghc-lib-parser :  , , '{' ,  '}'`ghc-lib-parser Lambda-case : , , '{',  '}' : , , '{',  '}'`ghc-lib-parser :  ,  , , , ,`ghc-lib-parser :  ,  '{' ,  '}',`ghc-lib-parser : , , , , `ghc-lib-parser*Located Haskell Command (for arrow syntax)`ghc-lib-parser.Which kind of lambda case are we dealing with?`ghc-lib-parser`case``ghc-lib-parser`cases``ghc-lib-parser : Haskell Tuple Argument`ghc-lib-parser The argument`ghc-lib-parser-The argument is missing, but this is its type`ghc-lib-parserExtension point; see Note [Trees That Grow] in Language.Haskell.Syntax.Extension`ghc-lib-parserLocated Haskell Tuple Argument` is used for tuple sections (,a,) is represented by 3ExplicitTuple [Missing ty1, Present a, Missing ty3] Which in turn stands for (x:ty1 y:ty2. (x,a,y))`ghc-lib-parserA pragma, written as {-# ... #-}, that may appear within an expression.`ghc-lib-parser :  ,  '{-# GENERATED' , , , , ,  , , ,  ,  '#-}'`ghc-lib-parser%Variable See Note [Located RdrNames]`ghc-lib-parserUnbound variable; also used for "holes" (_ or _x). Turned from HsVar to HsUnboundVar by the renamer, when it finds an out-of-scope variable or hole. The (XUnboundVar p) field becomes an HoleExprRef after typechecking; this is where the erroring expression will be written after solving. See Note [Holes] in GHC.Tc.Types.Constraint.`ghc-lib-parserVariable pointing to record selector See Note [Non-overloaded record field selectors] and Note [Record selectors in the AST]`ghc-lib-parserOverloaded label (Note [Overloaded labels] in GHC.OverloadedLabels)`ghc-lib-parser2Implicit parameter (not in use after typechecking)`ghc-lib-parserOverloaded literals`ghc-lib-parser Simple (non-overloaded) literals`ghc-lib-parser3Lambda abstraction. Currently always a single match :  , ,`ghc-lib-parser Lambda-case :  , , ,  :  , , , `ghc-lib-parser Application`ghc-lib-parserVisible type applicationExplicit type argument; e.g f @Int x y NB: Has wildcards, but no implicit quantification : ,`ghc-lib-parserOperator applications: NB Bracketed ops such as (+) come out as Vars.`ghc-lib-parserNegation operator. Contains the negated expression and the name of negate : `ghc-lib-parser :  '(',  ')'`ghc-lib-parser-Used for explicit tuples and sections thereof :  , `ghc-lib-parserUsed for unboxed sum types :  '(#' , ,  '#)',There will be multiple , (1 - alternative) before the expression, (arity - alternative) after it`ghc-lib-parser :  , , '{' ,  '}'`ghc-lib-parser :  ,  , , , ,`ghc-lib-parser Multi-way if :  ,,`ghc-lib-parserlet(rec) :  ,  '{' ,  '}',`ghc-lib-parser : , , , , `ghc-lib-parserSyntactic list: [a,b,c,...] :  '[',  ']'`ghc-lib-parserRecord construction :  '{' , , '}'`ghc-lib-parser Record update :  '{' , , '}'+ 'GHC.Parser.Annotation.AnnComma,  ,  '}'`ghc-lib-parserRecord field selection e.g z.x. : `ghc-lib-parserRecord field selector. e.g. (.x) or (.x.y)This case only arises when the OverloadedRecordDot langauge extensions is enabled. See Note [Record selectors in the AST].`ghc-lib-parser,Expression with an explicit type signature.  e :: type : `ghc-lib-parserArithmetic sequence :  '[', ,,  ']'`ghc-lib-parser :  , , , ,`ghc-lib-parser :  , `ghc-lib-parserproc notation for Arrows :  , `ghc-lib-parser : ,`ghc-lib-parserRecordDotSyntax field updates`ghc-lib-parserIs this a monadic context?ghc-lib-parser May have  :  when in a list_ghc-lib-parserPost renaming has optional fail and bind / (>>=) operator. Post typechecking, also has multiplicity of the argument and the result type of the function passed to bind; that is, (P, S) in (>>=) :: Q -> (R % P -> S) -> T See Note [The type of bind in Stmts]`ghc-lib-parser.Parenthesised expr; see Note [Parens in HsSyn]``___````___`````````````````````````````````````````````````____________________________________________________________________________________________________________`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````_________________________________________________________________________________________________`_________________``````` Safe-Inferred/1689:%ghc-lib-parserPattern : [ghc-lib-parserHaskell Field Binding : ,For details on above see Note [exact print annotations] in GHC.Parser.Annotation[ghc-lib-parser!Filled in by renamer when punning[ghc-lib-parserNote [Punning][ghc-lib-parserHaskell Record Update Field[ghc-lib-parserHaskell Record Field[ghc-lib-parser#Located Haskell Record Update Field[ghc-lib-parserLocated Haskell Record Field[ghc-lib-parserLocated Haskell Record Field[ghc-lib-parserNewtype to be able to have a specific XRec instance for the Int in [[ghc-lib-parserHaskell Record FieldsHsRecFields is used only for patterns and expressions (not data type declarations)[ghc-lib-parser#Haskell Constructor Pattern Details[ghc-lib-parser9Type argument in a data constructor pattern, e.g. the @a in f (Just @a x) = ....[ghc-lib-parserWildcard Pattern The sole reason for a type on a WildPat is to support hsPatType :: Pat Id -> Type[ghc-lib-parserVariable Pattern[ghc-lib-parserLazy Pattern ^ -  : [ghc-lib-parserAs pattern ^ -  : [ghc-lib-parserBang pattern ^ -  : [ghc-lib-parserSyntactic List :  '['&,  ']'[ghc-lib-parserTuple sub-patterns :  '(' or '(#',  ')' or '#)'[ghc-lib-parserAnonymous sum pattern :  '(#',  '#)'[ghc-lib-parserConstructor Pattern[ghc-lib-parser : [ghc-lib-parser :  '$('  ')'[ghc-lib-parserLiteral Pattern Used for *non-overloaded* literal patterns: Int#, Char#, Int, Char, String, etc.[ghc-lib-parserNatural Pattern :  +[ghc-lib-parser n+k pattern[ghc-lib-parser : [ghc-lib-parserParenthesised patternghc-lib-parser :  '('&,  ')'[ghc-lib-parser View Pattern[ghc-lib-parser&Splice Pattern (Includes quasi-quotes)[ghc-lib-parserPattern with a type signature0%%[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0%[[[[[[[[[[[[[[[[[[[[%[[[[[[[[[[[[[[[[[[[[[[[[[[ Safe-Inferred/6Mghc-lib-parserOverloaded Literal ValueMghc-lib-parserInteger-looking literals;Mghc-lib-parserFrac-looking literalsMghc-lib-parserString-looking literalsMghc-lib-parserHaskell Overloaded LiteralMghc-lib-parserHaskell LiteralMghc-lib-parser CharacterMghc-lib-parserUnboxed characterMghc-lib-parserStringNghc-lib-parser Packed bytesNghc-lib-parserGenuinely an Int; arises from GHC.Tc.Deriv.Generate, and from TRANSLATIONNghc-lib-parserliteral Int#Nghc-lib-parserliteral Word#Nghc-lib-parserliteral Int64#Nghc-lib-parserliteral Word64#Nghc-lib-parserGenuinely an integer; arises only from TRANSLATION (overloaded literals are done with HsOverLit)Nghc-lib-parserGenuinely a rational; arises only from TRANSLATION (overloaded literals are done with HsOverLit)Nghc-lib-parser Unboxed FloatNghc-lib-parserUnboxed DoubleMMMMMMMMMMNNNNNNNNNNNMMMNMNNNNNNNNNNNMMMMMMMMMMMMN Safe-Inferred (#4ghc-lib-parser"See GHC.Types.Var Note [FunTyFlag]4ghc-lib-parserGiven a %= and a list of argument types, partition the arguments into: 1 or 1 (i.e., invisible) arguments and1 (i.e., visible) arguments4ghc-lib-parser Extract the F of a type. For example, getLevity Int = Lifted, or !getLevity (Array# Int) = Unlifted.Panics if this is not possible. Does not look through type family applications.4ghc-lib-parser2Attempts to obtain the type variable underlying a %4ghc-lib-parser The same as fst . splitTyConApp! We can short-cut the FunTy case4ghc-lib-parserAttempts to tease a type apart into a type constructor and the application of a number of arguments to that constructor4ghc-lib-parserReturns True if the argument is (lifted) Type or Constraint See Note [TYPE and CONSTRAINT] in GHC.Builtin.Types.Prim4ghc-lib-parserIs this the type  Multiplicity?4ghc-lib-parserIs this the type F?4ghc-lib-parserIs this the type F?4ghc-lib-parserThis function strips off the top layer only of a type synonym application (if any) its underlying representation type. Returns I% if there is nothing to look through.=This function does not look through type family applications.By being non-recursive and inlined, this case analysis gets efficiently joined onto the case analysis that the caller is already doing4ghc-lib-parserA key function: builds a I or I as appropriate to its arguments. Applies its arguments to the constructor from left to right.4ghc-lib-parserMake a I. The Coercion must be nominal. Checks the Coercion for reflexivity, dropping it if it's reflexive. See 'Note [Respecting definitional equality] in GHC.Core.TyCo.Rep4ghc-lib-parser&Applies a type to another, as in e.g. k aLghc-lib-parserThis describes how a "map" operation over a type/coercion should behaveLghc-lib-parser>What to do with coercion holes. See Note [Coercion holes] in GHC.Core.TyCo.Rep.Lghc-lib-parser.The returned env is used in the extended scopeLghc-lib-parserThis is used only for TcTyCons a) To zonk TcTyCons b) To turn TcTyCons into TyCons. See Note [Type checking recursive type and class declarations] in  GHC.Tc.TyClghc-lib-parser Iterates 4 until there is no more to synonym to expand. NB: coreFullView is non-recursive and can be inlined; core_full_view is the recursive one See Note [Inlining coreView].ghc-lib-parser Iterates 4 until there is no more to synonym to expand. NB: coreFullView is non-recursive and can be inlined; core_full_view is the recursive one See Note [Inlining coreView].ghc-lib-parserexpandSynTyConApp_maybe tc tys! expands the RHS of type synonym tc instantiated at arguments tys , or returns I if tc is not a synonym.ghc-lib-parser A helper for 3 to avoid inlining this cold path into call-sites.Precondition: the call is saturated or over-saturated; i.e. length tvs <= length arg_tysLghc-lib-parserExpand out all type synonyms. Actually, it'd suffice to expand out just the ones that discard type variables (e.g. type Funny a = Int) But we don't know which those are currently, so we just expand all.L only expands out type synonyms mentioned in the type, not in the kinds of any TyCon or TyVar mentioned in the type.Keep this synchronized with synonymTyConsOfTypeghc-lib-parser&An INLINE helper for function such as L below.isTyConKeyApp_maybe key ty returns Just tys iff the type  ty = T tys*, where T's unique = key key must not be B; to test for functions, use M:. Thanks to this fact, we don't have to pattern match on I here.Lghc-lib-parserExtract the RuntimeRep classifier of a type from its kind. For example, kindRep * = LiftedRep; Panics if this is not possible. Treats * and Constraint as the sameLghc-lib-parserGiven a kind (TYPE rr) or (CONSTRAINT rr), extract its RuntimeRep classifier rr. For example,  kindRep_maybe * = Just LiftedRep Returns I% if the kind is not of form (TYPE rr)Lghc-lib-parser9Returns True if the kind classifies unlifted types (like 'Int#') and False otherwise. Note that this returns False for representation-polymorphic kinds, which may be specialized to a kind that classifies unlifted types.Lghc-lib-parserCheck whether a kind is of the form `TYPE (BoxedRep Lifted)` or `TYPE (BoxedRep Unlifted)`.Returns:/`Just Lifted` for `TYPE (BoxedRep Lifted)` and %,3`Just Unlifted` for `TYPE (BoxedRep Unlifted)` and  UnliftedType,I for anything else, e.g. `TYPE IntRep`, `TYPE (BoxedRep l)`, etc.Lghc-lib-parserCheck whether a type of kind F is lifted.L is:True of LiftedRep :: RuntimeRepFalse of type variables, type family applications, and of other reps such as IntRep :: RuntimeRep.Lghc-lib-parserCheck whether a type of kind F is unlifted.True of definitely unlifted Fs such as F, F, F, ... False of F,6False for type variables and type family applications.ghc-lib-parser'An INLINE helper for functions such as L and L.%Checks whether the type is a nullary % application, for a % with the given .Lghc-lib-parserIs a tyvar of type F?Lghc-lib-parserIs a tyvar of type F?Lghc-lib-parserIs a tyvar of type  Multiplicity?Lghc-lib-parser(splitRuntimeRep_maybe rr) takes a Type rr :: RuntimeRep, and returns the (TyCon,[Type]) for the RuntimeRep, if possible, where the TyCon is one of the promoted DataCons of RuntimeRep. Remember: the unique on TyCon that is a a promoted DataCon is the same as the unique on the DataCon See Note [Promoted data constructors] in GHC.Core.TyCon May not be possible if rr1 is a type variable or type family applicationLghc-lib-parserSee .ghc-lib-parser`isBoxedRuntimeRep_maybe (rep :: RuntimeRep)` returns `Just lev` if rep% expands to `Boxed lev` and returns I otherwise.Types with this runtime rep are represented by pointers on the GC'd heap.Lghc-lib-parserCheck whether a type of kind F! is lifted, unlifted, or unknown. `isLiftedRuntimeRep rr` returns:`Just Lifted` if rr is `LiftedRep :: RuntimeRep``Just Unlifted` if rr is definitely unlifted, e.g. FI if not known (e.g. it's a type variable or a type family application).Lghc-lib-parser levity_maybe takes a Type of kind Levity, and returns its levity May not be possible for a type variable or type family applicationLghc-lib-parser2Attempts to obtain the type variable underlying a %, and panics with the given message if this is not a type variable type. See also 4Lghc-lib-parser2Attempts to obtain the type variable underlying a %, without any expansionLghc-lib-parserIf the type is a tyvar, possibly under a cast, returns it, along with the coercion. Thus, the co is :: kind tv ~N kind tyLghc-lib-parserAttempt to take a type application apart, whether it is a function, type constructor, or plain type application. Note that type family applications are NEVER unsaturated by this!Lghc-lib-parser1Attempts to take a type application apart, as in L%, and panics if this is not possibleLghc-lib-parserDoes the AppTy split as in L6, but assumes that any coreView stuff is already doneLghc-lib-parserJust like splitAppTyNoView_maybe, but does not split (c => t) See Note [Decomposing fat arrow c=>t]Lghc-lib-parserRecursively splits a type as far as is possible, leaving a residual type being applied to and the type arguments applied to it. Never fails, even if that means returning an empty list of type applications.Lghc-lib-parserLike L(, but doesn't look through type synonymsLghc-lib-parser>Is this a numeric literal. We also look through type synonyms.Lghc-lib-parser=Is this a symbol literal. We also look through type synonyms.Lghc-lib-parser;Is this a char literal? We also look through type synonyms.Mghc-lib-parser2Is this a type literal (symbol, numeric, or char)?Mghc-lib-parserIs this type a custom user error? If so, give us the kind and the error message.Mghc-lib-parser=Render a type corresponding to a user type error into a SDoc.Mghc-lib-parserGiven the components of a FunTy figure out the corresponding TyConApp.Mghc-lib-parser=Return Just if this TyConApp should be represented as a FunTyMghc-lib-parser?Return Just if this TyConAppCo should be represented as a FunCoMghc-lib-parserThis one works out the FunTyFlag from the argument type See GHC.Types.Var Note [FunTyFlag]Mghc-lib-parser=Like mkFunctionType, compute the FunTyFlag from the argumentsMghc-lib-parserAttempts to extract the multiplicity, argument and result types from a type, and panics if that is not possible. See also MMghc-lib-parserAttempts to extract the multiplicity, argument and result types from a typeMghc-lib-parserExtract the function result type and panic if that is not possibleMghc-lib-parser Just like M/ but for a single argument Try not to iterate 4, because it's inefficient to substitute one variable at a time; instead use 'piResultTys"Extract the function argument type and panic if that is not possibleMghc-lib-parser(piResultTys f_ty [ty1, .., tyn]) gives the type of (f ty1 .. tyn) where f :: f_ty M" is interesting because: 1. f_ty may have more for-alls than there are args 2. Less obviously, it may have fewer for-alls For case 2. think of: piResultTys (forall a.a) [forall b.b, Int] This really can happen, but only (I think) in situations involving undefined. For example: undefined :: forall a. a Term: undefined (forall b. b->b) Int This term should have type (Int -> Int), but notice that there are more type args than foralls in s type.Mghc-lib-parser), as that's not a TyCon in the type-checker.Note that this may fail (in funTyConAppTy_maybe) in the case of a I" with an argument of unknown kind I0 (e.g. `FunTy (a :: k) Int`, since the kind of a isn't of the form `TYPE rep`. This isn't usually a problem but may be temporarily the cas during canonicalization: see Note [Decomposing FunTy] in GHC.Tc.Solver.Canonical and Note [The Purely Kinded Type Invariant (PKTI)] in GHC.Tc.Gen.HsType, Wrinkle around FunTyConsequently, you may need to zonk your type before using this function.Mghc-lib-parser Unwrap one layer of newtype on a type constructor and its arguments, using an eta-reduced version of the newtype2 if possible. This requires tys to have at least newTyConInstArity tycon elements.ghc-lib-parserLike 4, but avoids checking the coercion for reflexivity, as that can be expensive.Mghc-lib-parser Make a dependent forall over an 1 variableMghc-lib-parserLike M, but tv should be a tyvarMghc-lib-parserLike I/, but assumes all variables are dependent and 1, a common caseMghc-lib-parserLike M#, but tvs should be a list of tyvarMghc-lib-parserLike %,, but assumes the variable is dependent and 1, a common caseMghc-lib-parserLike I/, but assumes all variables are dependent and 1, a common caseMghc-lib-parserLike mkForAllTys, but assumes all variables are dependent and visibleMghc-lib-parserGiven a list of type-level vars and the free vars of a result kind, makes PiTyBinders, preferring anonymous binders if the variable is, in fact, not dependent. e.g. mkTyConBindersPreferAnon  k->k(k:*),(b:k),(c:k)- We want (k:*) Named, (b:k) Anon, (c:k) AnonAll non-coercion binders are visible.Mghc-lib-parser Bool -> Double) == [(Int, FTF_T_T), (Bool, FTF_T_T)] getRuntimeArgTys (Identity Int -> Bool -> Double) == [(Identity Int, FTF_T_T), (Bool, FTF_T_T)] getRuntimeArgTys (Int -> Identity (Bool -> Identity Double)) == [(Int, FTF_T_T), (Bool, FTF_T_T)] getRuntimeArgTys (forall a. Show a => Identity a -> a -> Int -> Bool) == [(Show a, FTF_C_T), (Identity a, FTF_T_T),(a, FTF_T_T),(Int, FTF_T_T)] Note that, in the last case, the returned types might mention an out-of-scope type variable. This function is used only when we really care about the kinds' of the returned types, so this is OK.*Warning**: this function can return an infinite list. For example:  newtype N a = MkN (a -> N a) getRuntimeArgTys (N a) == repeat (a, FTF_T_T) Mghc-lib-parserLike M, but returns only *invisible* binders, including constraints. Stops at the first visible binder.Mghc-lib-parserSame as M$, but stop when - you have found n 1+s, - or you run out of invisible bindersMghc-lib-parserGiven a % and a list of argument types, filter out any invisible (i.e., 1 or 1 ) arguments.Mghc-lib-parserGiven a %. and a list of argument types, filter out any 1 arguments.Mghc-lib-parserGiven a list of things paired with their visibilities, partition the things into (invisible things, visible things).Mghc-lib-parserGiven a %+ and a list of argument types to which the %5 is applied, determine each argument's visibility (1, 1, or 1).)Wrinkle: consider the following scenario: T :: forall k. k -> k tyConForAllTyFlags T [forall m. m -> m -> m, S, R, Q]After substituting, we get T (forall m. m -> m -> m) :: (forall m. m -> m -> m) -> forall n. n -> n -> n'Thus, the first argument is invisible, S is visible, R is invisible again, and Q is visible.Mghc-lib-parserGiven a %+ and a list of argument types to which the %5 is applied, determine each argument's visibility (1, 1, or 1).(Most of the time, the arguments will be 1, but not always. Consider f :: forall a. a -> Type. In  f Type Bool, the first argument (Type) is 1 and the second argument (Bool) is 1?. It is precisely this sort of higher-rank situation in which M comes in handy, since  f Type Bool$ would be represented in Core using Is. (See also #15792).ghc-lib-parserGiven a function kind and a list of argument types (where each argument's kind aligns with the corresponding position in the argument kind), determine each argument's visibility (1, 1, or 1).Mghc-lib-parserGiven a family instance TyCon and its arg types, return the corresponding family type. E.g: 1data family T a data instance T (Maybe b) = MkT b%Where the instance tycon is :RTL, so: +mkFamilyTyConApp :RTL Int = T (Maybe Int)Mghc-lib-parserGet the type on the LHS of a coercion induced by a type/data family instance.Mghc-lib-parserDoes this type classify a core (unlifted) Coercion? At either role nominal or representational (t1 ~# t2) or (t1 ~R# t2) See Note [Types for coercions, predicates, and evidence] in GHC.Core.TyCo.RepMghc-lib-parserTries to compute the F/ of the given type. Returns either a definite F, or I if we aren't sure (e.g. the type is representation-polymorphic).+Panics if the kind does not have the shape TYPE r.Mghc-lib-parser,Is the given type definitely unlifted? See Type#type_classification for what an unlifted type is.0Panics on representation-polymorphic types; See M for a more approximate predicate that behaves better in the presence of representation polymorphism.Mghc-lib-parserReturns:H if the type is  guaranteed unlifted orK if it lifted, OR we aren't sure (e.g. in a representation-polymorphic case)Mghc-lib-parserReturns:H if the type is  guaranteed lifted orK if it is unlifted, OR we aren't sure (e.g. in a representation-polymorphic case)Mghc-lib-parserSee Type#type_classification for what a boxed type is. Panics on representation-polymorphic types; See M for a more approximate predicate that behaves better in the presence of representation polymorphism.Mghc-lib-parser3Is this a type of kind RuntimeRep? (e.g. LiftedRep)Mghc-lib-parser+Drops prefix of RuntimeRep constructors in Is. Useful for e.g. dropping 'LiftedRep arguments of unboxed tuple TyCon applications:dropRuntimeRepArgs [ 'LiftedRep, 'IntRep , String, Int# ] == [String, Int#]ghc-lib-parser Int then j could be a binary join point returning an Int, but it could *not* be a unary join point returning a -> Int.4TODO: See Note [Excess polymorphism and join points]Mghc-lib-parserDoes this classify a type allowed to have values? Responds True to things like *, TYPE Lifted, TYPE IntRep, TYPE v, Constraint.)True of a kind `TYPE _` or `CONSTRAINT _`Mghc-lib-parserIs this kind equivalent to % i.e. TYPE LiftedRep?Mghc-lib-parserIs this kind equivalent to TYPE (BoxedRep l) for some  l :: Levity?Mghc-lib-parserIs this kind equivalent to TYPE r (for some unknown r)?This considers  Constraint to be distinct from *.Mghc-lib-parserReturns True if a type has a syntactically fixed runtime rep, as per Note [Fixed RuntimeRep] in GHC.Tc.Utils.Concrete.This function is equivalent to `isFixedRuntimeRepKind . typeKind` but much faster. Precondition: The type has kind (TYPE blah)Mghc-lib-parserTrue if the argument types of this function type all have a fixed-runtime-repMghc-lib-parserChecks that a kind of the form %,  Constraint or 'TYPE r is concrete. See M. Precondition:3 The type has kind `TYPE blah` or `CONSTRAINT blah`Mghc-lib-parserTests whether the given type is concrete, i.e. it whether it consists only of concrete type constructors, concrete type variables, and applications.3See Note [Concrete types] in GHC.Tc.Utils.Concrete.Mghc-lib-parserDoes a % (that is applied to some number of arguments) need to be ascribed with an explicit kind signature to resolve ambiguity if rendered as a source-syntax type? (See Note [When does a tycon application need an explicit kind signature?]; for a full explanation of what this function checks for.)Mghc-lib-parserScale a payload by ManyMghc-lib-parserScale a payload by OneMghc-lib-parser8Scale a payload by Many; used for type arguments in coreMghc-lib-parser isLinear t returns True of a if t is a type of (curried) function where at least one argument is linear (or otherwise non-unrestricted). We use this function to check whether it is safe to eta reduce an Id in CorePrep. It is always safe to return K , because K deactivates the optimisation.Mghc-lib-parserGiven a  RuntimeRep , applies TYPE to it. On the fly it rewrites TYPE LiftedRep --> liftedTypeKind (a synonym) TYPE UnliftedRep --> unliftedTypeKind (ditto) TYPE ZeroBitRep --> zeroBitTypeKind (ditto) NB: no need to check for TYPE (BoxedRep Lifted), TYPE (BoxedRep Unlifted) because those inner types should already have been rewritten to LiftedRep and UnliftedRep respectively, by mkTyConAppsee Note [TYPE and CONSTRAINT] in GHC.Builtin.Types.Prim. See Note [Using synonyms to compress types] in GHC.Core.TypeMghc-lib-parserJust like mkTYPEappMghc-lib-parserJust like mkTYPEapp_maybeMghc-lib-parserGiven a F, apply BoxedRep to it On the fly, rewrite BoxedRep Lifted --> liftedRepTy (a synonym) BoxedRep Unlifted --> unliftedRepTy (ditto) See Note [TYPE and CONSTRAINT] in GHC.Builtin.Types.Prim. See Note [Using synonyms to compress types] in GHC.Core.TypeMghc-lib-parserGiven a `[RuntimeRep]`, apply TupleRep to it On the fly, rewrite TupleRep [] -> zeroBitRepTy (a synonym) See Note [TYPE and CONSTRAINT] in GHC.Builtin.Types.Prim. See Note [Using synonyms to compress types] in GHC.Core.Typeghc-lib-parser"the variables bound by the synonymghc-lib-parserthe RHS of the synonymghc-lib-parser2the type arguments the synonym is instantiated at.Mghc-lib-parserbindersghc-lib-parserfree variables of resultMghc-lib-parserresult kindMghc-lib-parserShould specified binders count towards injective positions in the kind of the TyCon? (If you're using visible kind applications, then you want True here.ghc-lib-parserThe number of args the % is applied to.ghc-lib-parserDoes  T t_1 ... t_n need a kind signature? (Where n is the number of arguments)$$$11$1$1111$1111%%%%%%%%//11111111111111111111111244444444444444444444GHHHHHHHIIIIIIIIIIIIIIIIIIIIIIJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM%$111111$1111$11I%%I$$2$111%%I%IIL4LL114LLLLLLLIIIIIIIIIIMMMMMMJMMMM44G4MMMM4MMMM%IIMMMMMMMMMMMMMMMMMMMMII4MMMMMLLLLLLM4MLLL4L44MMMMMMMMMM4MMMLLLLLLLLLHHHHHHHIIM1111111111111111111MLM4MMMMMMMMMMMMMMMMMMM4M4LLLLLLLLMMMMLMMMMMM4L4LMM4LMMMMMMLLMMM%4MMMMMMMM//KKKKKKKKKKKKLIKKKKKKKMM4KKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKKKKKKKKKKMMM Safe-Inferred/3ghc-lib-parser.Predicate on possible free variables: returns True! iff the variable is interestingghc-lib-parserRun a free variable computation, returning a list of distinct free variables in deterministic order and a non-deterministic set containing those variables.3ghc-lib-parserRun a free variable computation, returning a list of distinct free variables in deterministic order.3ghc-lib-parserRun a free variable computation, returning a deterministic set of free variables. Note that this is just a wrapper around the version that returns a deterministic list. If you need a list you should use 3.3ghc-lib-parserRun a free variable computation, returning a non-deterministic set of free variables. Don't use if the set will be later converted to a list and the order of that list will impact the generated code.3ghc-lib-parserAdd a variable - when free, to the returned free variables. Ignores duplicates and respects the filtering function.3ghc-lib-parserReturn no free variables.3ghc-lib-parser%Union two free variable computations.3ghc-lib-parser5Mark the variable as not free by putting it in scope.3ghc-lib-parser%Mark many free variables as not free.3ghc-lib-parser#Filter a free variable computation.3ghc-lib-parserMap a free variable computation over a list and union the results.3ghc-lib-parser&Union many free variable computations.3ghc-lib-parserAdd multiple variables - when free, to the returned free variables. Ignores duplicates and respects the filtering function.3333333333333333333333333333 Safe-Inferred ;X;$ghc-lib-parserIs this type variable a concrete type variable, i.e. it is a metavariable with z z?zghc-lib-parser7Reason why a type cannot be marshalled through the FFI.zghc-lib-parser0Reason why a type in an FFI signature is invalidzghc-lib-parserWhat caused us to create a z? metavariable? See Note [ConcreteTv] in GHC.Tc.Utils.Concrete.zghc-lib-parserA z< used to enforce the representation-polymorphism invariants.See   for more information.zghc-lib-parserWhat restrictions are on this metavariable around unification? These are checked in GHC.Tc.Utils.Unify.startSolvingByUnification.zghc-lib-parserThis MetaTv is an ordinary unification variable A TauTv is always filled in with a tau-type, which never contains any ForAlls.zghc-lib-parserA variant of TauTv, except that it should not be unified with a type, only with a type variable See Note [TyVarTv] in GHC.Tc.Utils.TcMTypezghc-lib-parser6A unification variable used in the GHCi debugger. It is/ allowed to unify with a polytype, unlike TauTvzghc-lib-parserA unification variable that can only be unified with a concrete type, in the sense of Note [Concrete types] in GHC.Tc.Utils.Concrete. See Note [ConcreteTv] in GHC.Tc.Utils.Concrete. See also Note [The Concrete mechanism] in GHC.Tc.Utils.Concrete for an overview of how this works in context.zghc-lib-parserWhat to expect for an argument to a rebindable-syntax operator. Quite like %, but allows for holes to be filled in by tcSyntaxOp. The callback called from tcSyntaxOp gets a list of types; the meaning of these types is determined by a left-to-right depth-first traversal of the z tree. So if you pass in >SynAny `SynFun` (SynList `SynFun` SynType Int) `SynFun` SynAny/you'll get three types back: one for the first z, the element) type of the list, and one for the last z". You don't get anything for the z, because you've said positively that it should be an Int, and so it shall be.You'll also get three multiplicities back: one for each function arrow. See also Note [Linear types] in Multiplicity.-This is defined here to avoid defining it in GHC.Tc.Gen.Expr boot file.zghc-lib-parserAny typezghc-lib-parser5A rho type, skolemised or instantiated as appropriatezghc-lib-parser6A list type. You get back the element type of the listzghc-lib-parser A function.zghc-lib-parser A known type.zghc-lib-parserLike z, but for an expected type.See z.zghc-lib-parserAn z which has a fixed RuntimeRep.For a z z , the stored z' must have a fixed RuntimeRep. For an z z, the z field must be of the form  Just frr_orig.zghc-lib-parserThis  is for debugging onlyzghc-lib-parser5See Note [TcLevel of ExpType] in GHC.Tc.Utils.TcMTypezghc-lib-parserSee Note [FixedRuntimeRep context in ExpType] in GHC.Tc.Utils.TcMTypezghc-lib-parser-The type that fills in this hole should be a Type, that is, its kind should be TYPE rr for some rr :: RuntimeRep.Additionally, if the z field is  Just frr_orig then rr must be concrete, in the sense of Note [Concrete types] in GHC.Tc.Utils.Concrete.zghc-lib-parserAn expected type to check against during type-checking. See Note [ExpType] in GHC.Tc.Utils.TcMType&, where you'll also find manipulators.zghc-lib-parserA z is a z# which has a syntactically fixed F in the sense of Note [Fixed RuntimeRep] in GHC.Tc.Utils.Concrete.In particular, this means that:a does not panic, does not return I.0This property is important in functions such as matchExpectedFunTys, where we want to provide argument types which have a known runtime representation. See Note [Return arguments with a fixed RuntimeRep.zghc-lib-parserA type which has a syntactically fixed RuntimeRep as per Note [Fixed RuntimeRep] in GHC.Tc.Utils.Concrete.zghc-lib-parserMake an z suitable for checking.zghc-lib-parserLike z but accepts a regular TcTypezghc-lib-parserLike mkFunTys but for zzghc-lib-parserFinds outermost type-family applications occurring in a type, after expanding synonyms. In the list (F, tys) that is returned we guarantee that tys matches F's arity. For example, given type family F a :: * -> * (arity 1) calling tcTyFamInsts on (Maybe (F Int Bool) will return (F, [Int]), not (F, [Int,Bool])This is important for its use in deciding termination of type instances (see #11581). E.g. type instance G [Int] = ...(F Int )... we don't need to take into account when asking if the calls on the RHS are smaller than the LHSzghc-lib-parserLike z, except that the output records whether the type family and its arguments occur as an  invisible argument in some type application. This information is useful because it helps GHC know when to turn on -fprint-explicit-kinds during error reporting so that users can actually see the type family being mentioned.As an example, consider: class C a data T (a :: k) type family F a :: k instance C (T @(F Int) (F Bool)) -There are two occurrences of the type family F in that C instance, so z (C (T @(F Int) (F Bool))) will return: [ (K, F, [Int]) , (H, F, [Bool]) ] F Int is paired with K since it appears as an  invisible argument to C , whereas F Bool is paired with H since it appears an a visible argument to C. See also 'Note [Kind arguments in error messages] in  GHC.Tc.Errors.zghc-lib-parserIn an application of a % to some arguments, find the outermost occurrences of type family applications within the arguments. This function will not consider the %4 itself when checking for type family applications.See z for more details on how this works (as this function is called inside of z).zghc-lib-parserCheck that a type does not contain any type family applications.zghc-lib-parserIs this type variable a concrete type variable, i.e. it is a metavariable with z z? Returns the z( stored in the type variable if so, or I otherwise.zghc-lib-parser?Is this type concrete type variable, i.e. a metavariable with z z?{ghc-lib-parserIs this type a concrete type variable? If so, return the associated $ and z.{ghc-lib-parserReturns the (kind, type) variables in a type that are as-yet-unknown: metavariables and RuntimeUnks{ghc-lib-parser-Make a sigma ty where all type variables are 1>. That is, they cannot be used with visible type application.{ghc-lib-parserMake a sigma ty where all type variables are "specified". That is, they can be used with visible type application{ghc-lib-parser$Splits a forall type into a list of 1s and the inner type. Always succeeds, even if it returns an empty list.{ghc-lib-parser;Splits a type into a PiTyVarBinder and a body, if possible.{ghc-lib-parserLike {, but splits off only named binders, returning just the tyvars.{ghc-lib-parserLike {, but only splits Is with 1 type variable binders.{ghc-lib-parserLike {, but only splits a I if argf_pred argf is K, where argf is the visibility of the ForAllTy's binder and  argf_pred is a predicate over visibilities provided as an argument to this function.{ghc-lib-parserLike {, but only splits Is with 1= type variable binders. All split tyvars are annotated with ().{ghc-lib-parserLike {, but only splits Is with 1 type variable binders. All split tyvars are annotated with their $.{ghc-lib-parserLike {$, but splits off only named binders.{ghc-lib-parser4Split a sigma type into its parts. This only splits  invisible type variable binders, as these are the only forms of binder that the typechecker will implicitly instantiate.{ghc-lib-parserSplit a sigma type into its parts, going underneath as many arrows and foralls as possible. See Note [tcSplitNestedSigmaTys]{ghc-lib-parserLike tcRepSplitTyConApp_maybe, but only returns the %.{ghc-lib-parserSplit off exactly the specified number argument types Returns (Left m) if there are m missing arrows in the type (Right (tys,res)) if the type looks like t1 -> ... -> tn -> res{ghc-lib-parser?Strips off n *visible* arguments and returns the resulting type{ghc-lib-parserLike {, but also says K for z typesghc-lib-parser&Check whether the type is of the form Any :: k, returning the kind k.{ghc-lib-parser8Is the type inhabited by machine floating-point numbers?Used to check that we don't use floating-point literal patterns in Core.See #9238 and Note [Rules for floating-point comparisons] in GHC.Core.Opt.ConstantFold.{ghc-lib-parser Is a type <?ghc-lib-parser&Check validity for a type of the form Any :: k.This function returns: Just IsValid for  Any :: Type and Any :: UnliftedType,Just (NotValid ..) for Any :: k if k is not a kind of boxed types,Nothing if the type is not Any.{ghc-lib-parserFor every arg a tycon can take, the returned list says True if the argument is taken visibly, and False otherwise. Ends with an infinite tail of Trues to allow for oversaturation.{ghc-lib-parserIf the tycon is applied to the types, is the next argument visible?{ghc-lib-parser2Should this type be applied to a visible argument?zghc-lib-parser Expected typeghc-lib-parser Actual typeghc-lib-parser7Is this an invisible argument to some type application?ghc-lib-parser7Is this an invisible argument to some type application?$$1111$1111$zzzzzz$zz$$$$$%%%%%%%//111444444GGIIIIIIIIIIIIIKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMNNNNNNNNNNNNNQQQQQQQQQQWWWWWXllllzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzz$zzzzzzzzzzzzzzIzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz$zzzzzz$$$zzzzzzzzzzz${Lz{z$zzz$z{zz{{{{{{{{zz{{{{{{{{{L4L{{{{{{{{{{{{{{{{{MM{{{{{{L{{{{{{{{{{{{{{{{{MG{4{{{{NNNNNNNNNNNNN{llll{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{%//4LM%%%1$111111$1111%IIMMMMMIIIIII44LGIIIIWWXWWW{{{LM11KKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMM4KKKKKKKKKKK%QQ%QQQQQQQQz{{K{{{z0 Safe-Inferred (8pUghc-lib-parserMonomorphic version of  Validity' specialised for s.Ughc-lib-parserEverything is fineUghc-lib-parser%A problem, and some indication of whyUghc-lib-parserEnabled warningsUghc-lib-parserFatal warningsUghc-lib-parserTreat warnings as errorsUghc-lib-parserReverse error reporting orderUghc-lib-parserMax reported error countUghc-lib-parserError printing contextUghc-lib-parser Computes the right T for the input T& out of the 'DiagOpts. This function has to be called when a diagnostic is constructed, i.e. with a 'DiagOpts "snapshot" taken as close as possible to where a particular diagnostic message is built, otherwise the computed T9 might not be correct, due to the mutable nature of the DynFlags in GHC.Ughc-lib-parserMake a T for a given T, consulting the 'DiagOpts.Ughc-lib-parser Varation of U which can be used when we are sure the input T is T! and there is no diagnostic code.Ughc-lib-parserWrap a T in a T,, recording its location. If you know your T is an error, consider using U), which does not require looking at the UUghc-lib-parserWrap a T in a T, recording its location. Precondition: the diagnostic is, in fact, an error. That is, (diagnosticReason msg == ErrorWithoutFlag.Ughc-lib-parser= 2 or -ddump-timings).See Note [withTiming] for more.ghc-lib-parser Worker for U and U.Ughc-lib-parserLike U but with  SevOutput rather then SevInfoUghc-lib-parser+Trace a command (when verbosity level >= 3)Ughc-lib-parserRecord in the eventlog when the given tool command starts and finishes, prepending the given < with "systool:", to easily be able to collect and process all the systool events.For those events to show up in the eventlog, you need to run GHC with -v2 or -ddump-timings.Ughc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parser!The body of the phase to be timedUghc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parser!The body of the phase to be timedghc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parserWhether to print the timingsghc-lib-parser!The body of the phase to be timedTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUTTTUUUUUUUTTTTTTUUUUUUUUUUUUUUUUU Safe-Inferredghc-lib-parserLog hooks stackghc-lib-parserDump hooks stackghc-lib-parserTrace hooks stackghc-lib-parser= to the given valueUghc-lib-parserUpdate LogFlagsUghc-lib-parser Set LogFlagsUghc-lib-parserSet the trace flushing functionThe currently set trace flushing function is passed to the updating functionUghc-lib-parser!Calls the trace flushing functionghc-lib-parser.Default trace flushing function (flush stderr)Ughc-lib-parser Log somethingUghc-lib-parserDump somethingUghc-lib-parserTrace somethingUghc-lib-parserPush a log hookUghc-lib-parserPop a log hookUghc-lib-parserPush a dump hookUghc-lib-parserPop a dump hookUghc-lib-parserPush a trace hookUghc-lib-parserPop a trace hookUghc-lib-parserMake the logger thread-safeUghc-lib-parserLike U but appends an extra newline.Ughc-lib-parserThe boolean arguments let's the pretty printer know if it can optimize indent by writing ascii ' ' characters without going through decoding.Ughc-lib-parserDefault action for  dumpAction hookghc-lib-parserWrite out a dump.If --dump-to-file is set then this goes to a file. otherwise emit to stdout (via the LogAction parameter).When hdr is empty, we print in a more compact format (no separators and blank lines)Ughc-lib-parser#Run an action with the handle of a #, if we are outputting to a file, otherwise I.ghc-lib-parser>Choose where to put a dump file based on LogFlags and DumpFlagUghc-lib-parserDefault action for  traceAction hookUghc-lib-parser Log somethingUghc-lib-parserDump somethingUghc-lib-parserLog a trace messageUghc-lib-parser$Log a dump message (not a dump file)Ughc-lib-parser!Dump if the given DumpFlag is setUghc-lib-parser!Dump if the given DumpFlag is setUnlike U, has a NamePprCtx argumentUghc-lib-parser9Ensure that a dump file is created even if it stays emptyTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTUTTTTTTTTTTTTTTUUUUUUUTTTTTTTTUUUUUUUUUUUUUTUUUUUUUUUUUUUUUUUUUUU Safe-Inferred)*89:?k,Tghc-lib-parserA diagnostic code is a namespaced numeric identifier unique to the given diagnostic (error or warning).All diagnostic codes defined within GHC are given the GHC namespace.5See Note [Diagnostic codes] in GHC.Types.Error.Codes.Tghc-lib-parserdiagnostic code prefix (e.g. GHC)Tghc-lib-parserthe actual diagnostic codeTghc-lib-parserUsed to describe warnings and errors o The message has a file/line/column heading, plus "warning:" or "error:", added by mkLocMessage o With T the message is suppressed o Output is intended for end usersTghc-lib-parserIgnore this message, for example in case of suppression of warnings users don't want to see. See Note [Suppressing Messages]Tghc-lib-parserThe class for a diagnostic message. The main purpose is to classify a message within GHC, to distinguish it from a debug/dump message vs a proper diagnostic, for which we include a T.Tghc-lib-parserLog message intended for compiler developers No file/line/column stuffTghc-lib-parserLog messages intended for end users. No file/line/column stuff.Tghc-lib-parserDiagnostics from the compiler. This constructor is very powerful as it allows the construction of a T- with a completely arbitrary permutation of T and T,. As such, users are encouraged to use the mkMCDiagnostic smart constructor instead. Use this constructor directly only if you need to construct and manipulate diagnostic messages directly, for example inside ". In all the other circumstances,  especially when emitting compiler diagnostics, use the smart constructor.The Maybe T field carries a code (if available) for this diagnostic. If you are creating a message not tied to any error-message type, then use Nothing. In the long run, this really should always have a T. See Note [Diagnostic codes].Tghc-lib-parserAn envelope for GHC's facts about a running program, parameterised over the domain-specific5 (i.e. parsing, typecheck-renaming, etc) diagnostics.%To say things differently, GHC emits  diagnostics= about the running program, each of which is wrapped into a T that carries specific information like where the error happened, etc. Finally, multiple Ts are aggregated into T that are returned to the user.Tghc-lib-parser=The SrcSpan is used for sorting errors into line-number orderTghc-lib-parser The reason why a T was emitted in the first place. Diagnostic messages are born within GHC with a very precise reason, which can be completely statically-computed (i.e. this is an error or a warning no matter what), or influenced by the specific state of the DynFlags) at the moment of the creation of a new T#. For example, a parsing error is always going to be an error, whereas a 'WarningWithoutFlag Opt_WarnUnusedImports' might turn into an error due to '-Werror' or '-Werror=warn-unused-imports'. Interpreting a T together with its associated T gives us the full picture.Tghc-lib-parserBorn as a warning.Tghc-lib-parser"Warning was enabled with the flag.Tghc-lib-parserBorn as an error.Tghc-lib-parser A generic T message, without any further classification or provenance: By looking at a T we don't know neither where it was generated nor how to intepret its payload (as it's just a structured document). All we can do is to print it out and look at its T.Tghc-lib-parser A generic Hint message, to be used with T.Tghc-lib-parser4An existential wrapper around an unknown diagnostic.Tghc-lib-parserA class identifying a diagnostic. Dictionary.com defines a diagnostic as:"a message output by a computer diagnosing an error in a computer program, computer system, or component device".A T carries the actual description of the message (which, in GHC's case, it can be an error or a warning) and the reason4 why such message was generated in the first place.Tghc-lib-parser1Type of configuration options for the diagnostic.Tghc-lib-parser&Extract the error message text from a T.Tghc-lib-parser9Extract the reason for this diagnostic. For warnings, a T includes the warning flag.Tghc-lib-parserExtract any hints a user might use to repair their code to avoid this diagnostic.Tghc-lib-parserGet the T associated with this T. This can return I for at least two reasons: >The message might be from a plugin that does not supply codes.The message might not yet have been assigned a code. See the T instance for T.Ideally, case (2) would not happen, but because some errors in GHC still use the old system of just writing the error message in-place (instead of using a dedicated error type and constructor), we do not have error codes for all errors. #18516 tracks our progress toward this goal.Tghc-lib-parserA T is isomorphic to a '[SDoc]' but it carries the invariant that the input '[SDoc]' needs to be rendered  decorated into its final form, where the typical case would be adding bullets between each elements of the list. The type of decoration depends on the formatting function used, but in practice GHC uses the formatBulleted.Tghc-lib-parserA collection of messages emitted by GHC during error reporting. A diagnostic message is typically a warning or an error. See Note [Messages]. INVARIANT: All the messages in this collection must be relevant, i.e. their T should not be T. The smart constructor T# will filter out any message which T is T.Tghc-lib-parserAdds a Message to the input collection of messages. See Note [Discarding Messages].Tghc-lib-parserJoins two collections of messages together. See Note [Discarding Messages].Tghc-lib-parser Joins many T s togetherTghc-lib-parserCreates a new T out of a list of .Tghc-lib-parserCreates a new T out of a single Tghc-lib-parser Joins two T together. The resulting T will have a number of entries which is the sum of the lengths of the input.Tghc-lib-parser5Apply a transformation function to all elements of a T.Tghc-lib-parserHelper function to use when no hints can be provided. Currently this function can be used to construct plain T and add hints to them, but once #18516 will be fully executed, the main usage of this function would be in the implementation of the T9 typeclass method, to report the fact that a particular T has no hints.Tghc-lib-parserCreate an error T holding just a single Tghc-lib-parser Create a T% from a list of bulleted SDocs and a TTghc-lib-parserCreate an error T from a list of bulleted SDocsghc-lib-parser Shows an T. Only use this for debugging.Tghc-lib-parserMake an error message with location info, specifying whether to show warning groups (if applicable).Tghc-lib-parserReturns K if this is, intrinsically, a failure. See Note [Intrinsic And Extrinsic Failures].Tghc-lib-parser5Are there any hard errors here? -Werror warnings are not; detected. If you want to check for -Werror warnings, use T.Tghc-lib-parserReturns K if the envelope contains a message that will stop compilation: either an intrinsic error or a fatal (-Werror) warningTghc-lib-parser.Are there any errors or -Werror warnings here?Tghc-lib-parserPartitions the T and returns a tuple which first element are the warnings, and the second the errors.Tghc-lib-parserWhat kind of message?ghc-lib-parserlocationghc-lib-parsermessageTghc-lib-parser%Print warning groups (if applicable)?ghc-lib-parserWhat kind of message?ghc-lib-parserlocationghc-lib-parsermessageSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTT Safe-InferredڼExample: main = do _ <- getCurrentTimeSghc-lib-parserSuggests adding an identifier to the export list of a signature.Sghc-lib-parserSuggests increasing the limit for the number of iterations in the simplifier.Sghc-lib-parserSuggests to explicitly import Type from the + module, because using "*" to mean  relies on the StarIsType extension, which will become deprecated in the future.Triggered by:  Example: None Test case(s): wcompat-warnings/WCompatWarningsOn.hsSghc-lib-parserSuggests placing the  qualified keyword after the module name.Triggered by: = Example: None Test case(s): module/mod184.hsSghc-lib-parser0Suggests using TemplateHaskell quotation syntax.Triggered by:  only if TemplateHaskell is enabled. Example: None Test case(s): parser should_fail T13450TH.hsSghc-lib-parser;Suggests alternative roles in case we found an illegal one.Triggered by: 2 Example: None Test case(s): roles should_fail Roles7.hsSghc-lib-parserSuggests qualifying the 1 operator in modules where StarIsType is enabled.Triggered by:  Test case(s): warningsshould_compile StarBinder.hsSghc-lib-parser0Suggests that a type signature should have form  variable ::  type( in order to be accepted by GHC.Triggered by:  Test case(s): parser should_failT3811Sghc-lib-parser:Suggests to move an orphan instance or to newtype-wrap it.Triggered by:  Test cases(s): warningsshould_compile&T9178 typecheckshould_compileT4912Sghc-lib-parserSuggests to use a standalone deriving declaration when GHC can't derive a typeclass instance in a trivial way.Triggered by: ! Test cases(s): typecheck should_fail tcfail086Sghc-lib-parserSuggests the user to fill in the wildcard constraint to disambiguate which constraint that is.6Example: deriving instance _ => Eq (Foo f a)Triggered by: $ Test cases(s): partial-sigs should_fail T13324_fail2Sghc-lib-parser)Suggests to use an identifier other than forall Triggered by: Sghc-lib-parserSuggests to use the appropriate Template Haskell tick: a single tick for a term-level /,, or a double tick for a type-level /.Triggered by: .Sghc-lib-parserSuggests enabling -ddump-splices to help debug an issue when a  is not in scope or is used in multiple different namespaces (e.g. both as a data constructor and a type constructor).Concomitant with  NoExactName or SameName errors, see e.g. "GHC.Rename.Env.lookupExactOcc_either". Test cases: T5971, T7241, T13937.Sghc-lib-parserSuggests adding a tick to refer to something which has been promoted to the type level, e.g. a data constructor.Test cases: T9778, T19984.Sghc-lib-parserSomething is split off from its corresponding declaration. For example, a datatype is given a role declaration in a different module.&Test cases: T495, T8485, T2713, T5533.Sghc-lib-parserSuggest a similar name that the user might have meant, e.g. suggest ] when the user has written travrese.Test case: mod73.Sghc-lib-parserRemind the user that the field selector has been suppressed because of -XNoFieldSelectors.4Test cases: NFSSuppressed, records-nofieldselectors.Sghc-lib-parser,Suggest importing from a module, removing a hiding clause, or explain to the user that we couldn't find a module with the given .,Test cases: mod28, mod36, mod87, mod114, ...Sghc-lib-parserSuggest importing a data constructor to bring it into scope Triggered by: Test cases: ccfail004Sghc-lib-parserSuggest using pattern matching syntax for a non-bidirectional pattern synonymTest cases: patsyn should_fail,record-exquant typecheck should_failT3176Sghc-lib-parserSuggest tips for making a definition visible for the purpose of writing a SPECIALISE pragma for it in a different module.Test cases: noneSghc-lib-parserSuggest to enable the input extension. This is the hint that GHC emits if this is not a "known" fix, i.e. this is GHC giving its best guess on what extension might be necessary to make a certain program compile. For example, GHC might suggests to enable BlockArguments when the user simply formatted incorrectly the input program, so GHC here is trying to be as helpful as possible. If the input  is not empty, it will contain some extra information about the why the extension is required, but it's totally irrelevant/redundant for IDEs and other tools.Sghc-lib-parserSuggest to enable the input extensions. The list is to be intended as  disjunctive' i.e. the user is suggested to enable any) of the extensions listed. If the input  is not empty, it will contain some extra information about the why the extensions are required, but it's totally irrelevant/redundant for IDEs and other tools.Sghc-lib-parserSuggest to enable the input extensions. The list is to be intended as  conjunctive' i.e. the user is suggested to enable all& the extensions listed. If the input  is not empty, it will contain some extra information about the why the extensions are required, but it's totally irrelevant/redundant for IDEs and other tools.Sghc-lib-parserSuggest to enable the input extension in order to fix a certain problem. This is the suggestion that GHC emits when is more-or-less clear "what's going on". For example, if both DeriveAnyClass and GeneralizedNewtypeDeriving5 are turned on, the right thing to do is to enabled DerivingStrategies, so in contrast to S GHC will be a bit more "imperative" (i.e. "Use X Y Z in order to ... "). If the input  is not empty, it will contain some extra information about the why the extensions are required, but it's totally irrelevant/redundant for IDEs and other tools.Sghc-lib-parserThe bindings we have available in scope when suggesting an explicit type signature.Sghc-lib-parser8An unknown binding (i.e. too complicated to turn into a )Sghc-lib-parser4Suggests a single extension without extra user info.Sghc-lib-parserLike S. but allows supplying extra info for the user.Sghc-lib-parserSuggests to enable every extension in the list.Sghc-lib-parserLike S. but allows supplying extra info for the user.Sghc-lib-parserSuggests to enable any extension in the list.Sghc-lib-parserLike S. but allows supplying extra info for the user.Tghc-lib-parserWhether a constructor name is printed out as a bare symbol, e.g. :.*True for symbolic names in infix position.Used for pretty-printing.Tghc-lib-parser$Display info about the treatment of  under NoStarIsType.%With StarIsType, three properties of  hold:(a) it is not an infix operator (b) it is always in scope (c) it is a synonym for Data.Kind.TypeHowever, the user might not know that they are working on a module with NoStarIsType and write code that still assumes (a), (b), and (c), which actually do not hold in that module.Violation of (a) shows up in the parser. For instance, in the following examples, we have ! not applied to enough arguments:data A :: * data F :: * -> *Violation of (b) or (c) show up in the renamer and the typechecker respectively. For instance:type K = Either * BoolThis will parse differently depending on whether StarIsType is enabled, but it will parse nonetheless. With NoStarIsType it is parsed as a type operator, thus we have ((*) Either Bool). Now there are two cases to consider: There is no definition of (*) in scope. In this case the renamer will fail to look it up. This is a violation of assumption (b).There is a definition of the (*) type operator in scope (for example coming from GHC.TypeNats). In this case the user will get a kind mismatch error. This is a violation of assumption (c).The user might unknowingly be working on a module with NoStarIsType or use  as  out of habit. So it is important to give a hint whenever an assumption about  is violated. Unfortunately, it is somewhat difficult to deal with (c), so we limit ourselves to (a) and (b).T returns appropriate hints to the user depending on the extensions enabled in the module and the name that triggered the error. That is, if we have NoStarIsType and the error is related to 0 or its Unicode variant, we will suggest using '; otherwise we won't suggest anything.Sghc-lib-parser8fixity declaration, role annotation, type signature, ...ghc-lib-parserthe 6 for the declaration siteSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTSSSSSSST Safe-Inferred 7ghc-lib-parser$The name the module is imported with7ghc-lib-parser#the source span of the whole import7ghc-lib-parserwhether this is a safe import7ghc-lib-parser"whether this is an "hiding" import7ghc-lib-parser(all the things the module could provide.4NB. BangPattern here: otherwise this leaks. (#15111)7ghc-lib-parser"whether this is a qualified import7ghc-lib-parserIf a module was "imported" by the user, we associate it with more detailed usage information 7; a module imported by the system only gets used for usage information.7ghc-lib-parserRecords the modules directly imported by a module for extracting e.g. usage information, and also to give better error message 7777777777777 7777777777777 Safe-InferredU ghc-lib-parserSafe Haskell information for ModIface Simply a wrapper around SafeHaskellMode to separate iface and flagsghc-lib-parserThe various Safe Haskell modesghc-lib-parserinferred unsafeghc-lib-parserdeclared and checkedghc-lib-parserdeclared and checkedghc-lib-parserdeclared and checkedghc-lib-parserinferred as safeghc-lib-parser-fno-safe-haskell stateghc-lib-parserIs an import a safe import?   Safe-Inferred6 16ghc-lib-parserImport Item Specification'Describes import info a particular Name6ghc-lib-parser4The import had no import list, or had a hiding list6ghc-lib-parser$The import had an import list. The 6 field is True iff the thing was named  explicitly in the import specs rather than being imported as part of a "..." group. Consider: import C( T(..) )Here the constructors of T! are not named explicitly; only T is named explicitly.6ghc-lib-parser Import Declaration SpecificationDescribes a particular import declaration and is shared among all the  Provenances for that decl6ghc-lib-parserModule imported, e.g.  import Muggle Note the Muggle5 may well not be the defining module for this thing!6ghc-lib-parserImport alias, e.g. from as M (or Muggle if there is no as clause)6ghc-lib-parserWas this import qualified?6ghc-lib-parser-The location of the entire import declaration6ghc-lib-parserImport SpecificationThe 6 of something says how it came to be imported It's quite elaborate so that we can give accurate unused-name warnings.6ghc-lib-parserSee Note [Parents]6ghc-lib-parserGlobal Reader ElementAn element of the 66ghc-lib-parserSee Note [GreNames]6ghc-lib-parserSee Note [Parents]6ghc-lib-parserTrue  = the thing was defined locally6ghc-lib-parserIn scope through these imports6ghc-lib-parserGlobal Reader Environment Keyed by  3; when looking up a qualified name we look up the   part, and then check the  Provenance to see if the appropriate qualification is valid. This saves routinely doubling the size of the env by adding both qualified and unqualified names to the domain.The list in the codomain is required because there may be name clashes These only get reported on lookup, not on constructionINVARIANT 1: All the members of the list have distinct 6$ fields; that is, no duplicate NamesINVARIANT 2: Imported provenance => Name is an ExternalName However LocalDefs can have an InternalName. This happens only when type-checking a [d| ... |] Template Haskell quotation; see this note in GHC.Rename.Names Note [Top-level Names in Template Haskell decl quotes]INVARIANT 3: If the GlobalRdrEnv maps [occ -> gre], then greOccName gre = occNB: greOccName gre is usually the same as nameOccName (greMangledName gre), but not always in the case of record selectors; see Note [GreNames]6ghc-lib-parser0Local Reader Environment See Note [LocalRdrEnv]6ghc-lib-parser Reader NameDo not use the data constructors of RdrName directly: prefer the family of functions that creates them, such as 6Note: A Located RdrName will only have API Annotations if it is a compound one, e.g.  `bar` ( ~ ) :  ,  '(' or '[' or '[:' ,  ')' or ']' or ':]',,  '`' ,  ,6ghc-lib-parserUnqualified name1Used for ordinary, unqualified occurrences, e.g. x, y or Foo. Create such a 6 with 66ghc-lib-parserQualified name)A qualified name written by the user in source code. The module isn't necessarily the module where the thing is defined; just the one from which it is imported. Examples are Bar.x, Bar.y or Bar.Foo. Create such a 6 with 66ghc-lib-parser Original name$An original name; the module is the defining module. This is used when GHC generates code that will be fed into the renamer (e.g. from deriving clauses), but where we want to say "Use Prelude.map dammit". One of these can be created with 66ghc-lib-parser Exact nameWe know exactly the . This is used: ,When the parser parses built-in syntax like [] and (,), but wants a 6 from it8By Template Haskell, when TH has generated a unique nameSuch a 6 can be created by using 6 on a 6ghc-lib-parserMake a qualified 6& in the given namespace and where the  and the   are taken from the first and second elements of the tuple respectively6ghc-lib-parsermake a 6 where all the elements point to the same Provenance (useful for "hiding" imports, or imports with no details).6ghc-lib-parserSee Note [GreNames]6ghc-lib-parserA - for the GRE for internal use. Careful: the   of this $ is not necessarily the same as the 6 (see Note [GreNames]).6ghc-lib-parserA 3 for the GRE suitable for output to the user. Its   will be the 6 (see Note [GreNames]).6ghc-lib-parser.The SrcSpan of the name pointed to by the GRE.6ghc-lib-parser>The module in which the name pointed to by the GRE is defined.6ghc-lib-parserTakes a list of distinct GREs and folds them into AvailInfos. This is more efficient than mapping each individual GRE to an AvailInfo and the folding using 5& but needs the uniqueness assumption.6ghc-lib-parserLook for this 6 in the global environment. Omits record fields without selector functions (see Note [NoFieldSelectors] in GHC.Rename.Env).6ghc-lib-parserLook for this 6 in the global environment. Includes record fields without selector functions (see Note [NoFieldSelectors] in GHC.Rename.Env).6ghc-lib-parserLook for precisely this  in the environment. This tests whether it is in scope, ignoring anything else that might be in scope with the same  .6ghc-lib-parserLook for precisely this 5 in the environment. This tests whether it is in scope, ignoring anything else that might be in scope with the same  .6ghc-lib-parserLook for a particular record field selector in the environment, where the selector name and field label may be different: the GlobalRdrEnv is keyed on the label. See Note [GreNames] for why this happens.6ghc-lib-parserLook for precisely this ! in the environment, but with an  % that might differ from that of the . See 6 and Note [GreNames].6ghc-lib-parserIs this a record field defined with DuplicateRecordFields? (See Note [GreNames])6ghc-lib-parserIs this a record field defined with NoFieldSelectors? (See Note [NoFieldSelectors] in GHC.Rename.Env)6ghc-lib-parserIs this a record field defined with FieldSelectors? (See Note [NoFieldSelectors] in GHC.Rename.Env)6ghc-lib-parser2Returns the field label of this GRE, if it has one6ghc-lib-parser>Test if an unqualified version of this thing would be in scope6ghc-lib-parser2Takes a list of GREs which have the right OccName x: Pick those GREs that are in scope * Qualified, as 4 if want_qual is Qual M _ * Unqualified, as x if want_unqual is Unqual _Return each such GRE, with its ImportSpecs filtered, to reflect how it is in scope qualified or unqualified respectively. See Note [GRE filtering]6ghc-lib-parserPick GREs that are in scope *both* qualified *and* unqualified Return each GRE that is, as a pair (qual_gre, unqual_gre) These two GREs are the original GRE with imports filtered to express how it is in scope qualified an unqualified respectively9Used only for the 'module M' item in export list; see ghc-lib-parserisBuiltInSyntax filter out names for built-in syntax They just clutter up the environment (esp tuples), and the parser will generate Exact RdrNames for them, so the cluttered envt is no use. Really, it's only useful for GHC.Base and GHC.Tuple.6ghc-lib-parser>Apply a transformation function to the GREs for these OccNames6ghc-lib-parserIs in scope unqualified?6ghc-lib-parser,Is in scope qualified with the given module?6ghc-lib-parserPrint out one place where the name was define/imported (With -dppr-debug, print them all)6ghc-lib-parser.Indicate if the given name is the "@" operator55556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666655556666666666666666666666666 Safe-Inferred  4ghc-lib-parserIds which have no CAF references. This is a result of analysis of C--. It is always safe to use an empty 4. TODO Refer to Note.4ghc-lib-parser A number of 4s in dependency order: earlier 4 scope over later 4 In a single (def, use) pair, the defs also scope over the uses4ghc-lib-parser(Just ds, us) => The use of any member of the ds, implies that all the us+ are used too. Also, us may mention ds. Nothing => Nothing is defined in this group, but nevertheless all the uses are essential. Used for instance declarations, for example4ghc-lib-parser&A set of names that are used somewhere4ghc-lib-parser)A set of names that are defined somewhere4ghc-lib-parser,True if there is a non-empty intersection. s1 4 s2 doesn't compute s2 if s1 is empty4ghc-lib-parserGet the elements of a NameSet with some stable ordering. This only works for Names that originate in the source code or have been tidied. See Note [Deterministic UniqFM] to learn about nondeterminism4ghc-lib-parser Just like 4, but 4 are not eliminated from the 4 returned4ghc-lib-parser Collect all 4>, regardless of whether the group is itself used, but remove 4 on the way4ghc-lib-parser Given some 4 and some 4, find all the uses, transitively. The result is a superset of the input 4,; and includes things defined in the input 4 (but only if they are used).4444444444444444444444444444444444444444444444.4444444444444444444444444444444444444444444444i Safe-Inferred (8 oghc-lib-parser An unboxed B% type with two unboxed fields in the J case. Useful for defining  and  without overhead.ghc-lib-parserStrict left fold.ghc-lib-parser?Compare not only the values but also the structure of two listsghc-lib-parser?Compare not only the values but also the structure of two lists555 Safe-Inferred 4ghc-lib-parserDeterministic Name Environment#See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM' for explanation why we need DNameEnv.4ghc-lib-parserName Environment,44444444444444455555555555555555555555555555,44444445544555545554455545554555555555555554  Safe-Inferred( J $ghc-lib-parser*Edge direction based on DFS Classification$ghc-lib-parser7Loop back towards the root node. Eg backjumps in loops$ghc-lib-parserv -> v$ghc-lib-parser&Representation for nodes of the Graph.The payload1 is user data, just carried around in this moduleThe key is the node identifier. Key has an Ord instance for performance reasons.The [key] are the dependencies of the node; it's ok to have extra keys in the dependencies that are not the key of any Node in the graph%ghc-lib-parser User data%ghc-lib-parserUser defined node id%ghc-lib-parser#Dependencies/successors of the node%ghc-lib-parserFind a reasonably short cycle a->b->c->a, in a strongly connected component. The input nodes are presumed to be a SCC, so you can start anywhere.%ghc-lib-parser1Given a list of roots return all reachable nodes.%ghc-lib-parserEfficiently construct a map which maps each key to it's set of transitive dependencies.%ghc-lib-parserGiven a start vertex, a way to get successors from a node and a list of (directed) edges classify the types of edges.$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%$%%%%$%%%%%%%%%%%%%%%%%%%%$$$$$% Safe-Inferred 6 ($ghc-lib-parserFlag to indicate whether the FieldSelectors extension is enabled.$ghc-lib-parser.Selector functions are available (the default)$ghc-lib-parser$Selector functions are not available$ghc-lib-parserFlag to indicate whether the DuplicateRecordFields extension is enabled.$ghc-lib-parser+Fields may be duplicated in a single module$ghc-lib-parser3Fields must be unique within a module (the default)$ghc-lib-parser:Fields in an algebraic record type; see Note [FieldLabel].$ghc-lib-parserUser-visible label of the field$ghc-lib-parserWas DuplicateRecordFields- on in the defining module for this datatype?$ghc-lib-parserWas FieldSelectors enabled in the defining module for this datatype? See Note [NoFieldSelectors] in GHC.Rename.Env$ghc-lib-parserRecord selector function$ghc-lib-parser2A map from labels to all the auxiliary information$ghc-lib-parserRecord selector OccNames are built from the underlying field name and the name of the first data constructor of the type, to support duplicate record field names. See Note [Why selector names include data constructors].$ghc-lib-parserUndo the name mangling described in Note [FieldLabel] to produce a Name that has the user-visible OccName (but the selector's unique). This should be used only when generating output, when we want to show the label, but may need to qualify it with a module prefix.ghc-lib-parserSelector name mangling should be used if either DuplicateRecordFields or NoFieldSelectors is enabled, so that the OccName of the field can be used for something else. See Note [FieldLabel], and Note [NoFieldSelectors] in GHC.Rename.Env.$ghc-lib-parser We need the  Binary Name> constraint here even though there is an instance defined in GHC.Types.Name, because the we have a SOURCE import, so the instance is not in scope. And the instance cannot be added to Name.hs-boot because GHC.Utils.Binary itself depends on GHC.Types.Name.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Safe-Inferred6 '5ghc-lib-parserUsed where we may have an ordinary name or a record field label. See Note [GreNames] in GHC.Types.Name.Reader.5ghc-lib-parserA collection of 5& - several things that are "available"5ghc-lib-parser2Records what things are "available", i.e. in scope5ghc-lib-parserAn ordinary identifier in scope, or a field label without a parent type (see Note [Representing pattern synonym fields in AvailInfo]).5ghc-lib-parserA type or class in scopeThe AvailTC Invariant=: If the type or class is itself to be in scope, it must be first in this list. Thus, typically: AvailTC Eq [Eq, ==, \/=]5ghc-lib-parserCompare lexicographically5ghc-lib-parser Does this 5 export the parent decl? This depends on the invariant that the parent is first if it appears at all.5ghc-lib-parserJust the main name made available, i.e. not the available pieces of type or class brought into scope by the 55ghc-lib-parserAll names made available by the availability information (excluding overloaded selectors)5ghc-lib-parserAll names made available by the availability information (including overloaded selectors)5ghc-lib-parserNames for non-fields made available by the availability information5ghc-lib-parser5Fields made available by the availability information5ghc-lib-parserNames and fields made available by the availability information.5ghc-lib-parserNames and fields made available by the availability information, other than the main decl itself.5ghc-lib-parserA  for internal use, but not for output to the user. For fields, the   will be the selector. See Note [GreNames] in GHC.Types.Name.Reader.5ghc-lib-parserA 3 suitable for output to the user. For fields, the   will be the field label. See Note [GreNames] in GHC.Types.Name.Reader.5ghc-lib-parser trims an 5 to keep only a single name5ghc-lib-parserfilters 5s by the given predicate5ghc-lib-parser filters an 5 by the given predicate5ghc-lib-parser Combines 5s from the same family avails may have several items with the same availName E.g import Ix( Ix(..), index ) will give Ix(Ix,index,range) and Ix(index) We want to combine these; addAvail does that5ghc-lib-parser/Used when deciding if the interface has changed5ghc-lib-parserThe name of the type or classghc-lib-parserThe available pieces of type or class (see Note [Representing fields in AvailInfo])."5555555555555555555555555555555555"5555555555555555555555555555555555j Safe-Inferred -ghc-lib-parser9A finite mapping based on equality and association lists.ghc-lib-parserCombines the two lists while keeping their order, placing the first argument first in the result.Uses a set internally to record duplicates. This makes it slightly slower for very small lists but avoids quadratic behaviour for large lists.ghc-lib-parser0Assumes that the arguments contain no duplicatesghc-lib-parser4Calculate the set difference of two lists. This is O((m + n) log n), where we subtract a list of n elements from a list of m elements.3Extremely short cases are handled specially: When m or n is 0, this takes O(1) time. When m is 1, it takes O(n) time.ghc-lib-parser7Lookup key, fail gracefully using Nothing if not found.ghc-lib-parserRemove the duplicates from a list using the provided comparison function. Might change the order of elements.Returns the list without duplicates, and accumulates all the duplicates in the second component of its result.ghc-lib-parserRemove the duplicates from a list using the provided comparison function.k Safe-Inferred 89: .ghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputsghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputs%%33 Safe-Inferred6 0J ghc-lib-parserCaptures the fixity of declarations as they are parsed. This is not necessarily the same as the fixity declaration, as the normal fixity may be overridden using parens or backticks.  g Safe-Inferred 1ghc-lib-parser$The operator occurrence type in the PsOperatorWhitespaceMessage diagnostic.ghc-lib-parserThe operator symbol in the &PsOperatorWhitespaceExtConflictMessage diagnostic.   Safe-Inferred )*/156 5:ghc-lib-parser1Constraint type to bundle up the requirement for  on both the id and the  of it. See Note [NoGhcTc].:ghc-lib-parser.Maps the "normal" id type for a given GHC pass:ghc-lib-parserAllows us to check what phase we're in at GHC's runtime. For example, this class allows us to write > f :: forall p. IsPass p => HsExpr (GhcPass p) -> blah > f e = case ghcPass @p of > GhcPs -> ... in this RHS we have HsExpr GhcPs... > GhcRn -> ... in this RHS we have HsExpr GhcRn... > GhcTc -> ... in this RHS we have HsExpr GhcTc... which is very useful, for example, when pretty-printing. See Note [IsPass].:ghc-lib-parserUsed as a data type index for the hsSyn AST; also serves as a singleton type for Passghc-lib-parserMarks that a field uses the GhcRn variant even when the pass parameter is GhcTc. Useful for storing HsTypes in GHC.Hs.Exprs, say, because HsType GhcTc should never occur. See Note [NoGhcTc]::::::::::::::::::::::::::::::::::::::::::::F Safe-Inferred 156 :ghc-lib-parser$Layout information for declarations.ghc-lib-parser$Explicit braces written by the user. 'class C a where { foo :: a; bar :: a } ghc-lib-parser0Virtual braces inserted by the layout algorithm. &class C a where foo :: a bar :: a ghc-lib-parserEmpty or compiler-generated blocks do not have layout information associated with them.ghc-lib-parserWith  UnicodeSyntax, there might be multiple ways to write the same token. For example an arrow could be either -> or C. This choice must be recorded in order to exactprint such tokens, so instead of  HsToken "->" we introduce HsUniToken "->" "C". See also IsUnicodeSyntax in GHC.Parser.Annotation,; we do not use here to avoid a dependency.ghc-lib-parserA token stored in the syntax tree. For example, when parsing a let-expression, we store  HsToken "let" and  HsToken "in". The locations of those tokens can be used to faithfully reproduce (exactprint) the original program text.ghc-lib-parser.Layout column (indentation level, begins at 1)   Safe-Inferred 68 v7ghc-lib-parserCaptures the sort order of sub elements. This is needed when the sub-elements have been split (as in a HsLocalBind which holds separate binds and sigs) or for infix patterns where the order has been re-arranged. It is captured explicitly so that after the Delta phase a SrcSpan is used purely as an index into the annotations, allowing transformations of the AST including the introduction of new Located items or re-arranging existing ones.7ghc-lib-parserexact print annotation used for capturing the locations of annotations in pragmas.7ghc-lib-parserA 7 can capture the locations of surrounding adornments, such as parens or backquotes. This data type identifies what particular pair are being used.7ghc-lib-parser'(' ')'7ghc-lib-parser '(#' '#)'7ghc-lib-parser'`'7ghc-lib-parser'[' ']'7ghc-lib-parserexact print annotations for a RdrName. There are many kinds of adornment that can be attached to a given RdrName. This type captures them, as detailed on the individual constructors.7ghc-lib-parser&Used for a name with an adornment, so `foo`, (bar)7ghc-lib-parser Used for (,,,), or @(,,,)#7ghc-lib-parser Used for  (# | | #)7ghc-lib-parser Used for (), (##), []7ghc-lib-parser Used for ->, as an identifier7ghc-lib-parser Used for an item with a leading '1. The annotation for unquoted item is stored in 7.7ghc-lib-parserUsed when adding a 7 to an existing 7' which has no Api Annotation (via the 8 constructor.7ghc-lib-parserExact print annotation for the Context data type.7ghc-lib-parserlocation and encoding of the '=>' , if present.7ghc-lib-parser!zero or more opening parentheses.7ghc-lib-parser!zero or more closing parentheses.7ghc-lib-parser$Detail of the "brackets" used in an 7 exact print annotation.7ghc-lib-parser'(', ')'7ghc-lib-parser '(#', '#)'7ghc-lib-parser'[', ']'7ghc-lib-parserexact print annotation for an item having surrounding "brackets", such as tuples or lists7ghc-lib-parserAnnotation for the "container" of a list. This captures surrounding items such as braces if present, and introductory keywords such as 'where'.7ghc-lib-parser#start point of a list having layout7ghc-lib-parsercontext, such as 'where' keyword7ghc-lib-parser)items appearing after the list, such as '=>' for a context7ghc-lib-parserAnnotation for items appearing in a list. They can have one or more trailing punctuations items, such as commas or semicolons.7ghc-lib-parserCaptures the location of punctuation occurring between items, normally in a list. It is captured as a trailing annotation.7ghc-lib-parser Trailing ';'7ghc-lib-parser Trailing ','7ghc-lib-parser Trailing '|'7ghc-lib-parserGeneral representation of a 0 type carrying a parameterised annotation type.7ghc-lib-parser,We mostly use 'SrcSpanAnn'' with an 'EpAnn''7ghc-lib-parser&The 'SrcSpanAnn'' type wraps a normal , together with an extra annotation type. This is mapped to a specific  usage in the AST through the XRec and Anno type families.7ghc-lib-parserWhen we are parsing we add comments that belong a particular AST element, and print them together with the element, interleaving them into the output stream. But when editing the AST to move fragments around it is useful to be able to first separate the comments into those occurring before the AST element and those following it. The 7 constructor is used to do this. The GHC parser will only insert the 7 form.7ghc-lib-parser'If tools modify the parsed source, the 7 variant can directly provide the spacing for this item relative to the previous one when printing. This allows AST fragments with a particular anchor to be freely moved, without worrying about recalculating the appropriate anchor span.7ghc-lib-parserAn 7 records the base location for the start of the syntactic element holding the annotations, and is used as the point of reference for calculating delta positions for contained annotations. It is also normally used as the reference point for the spacing of the element relative to its container. If it is moved, that relationship is tracked in the 8 instead.8ghc-lib-parserBase location for the start of the syntactic element holding the annotations.8ghc-lib-parserThe exact print annotations (EPAs) are kept in the HsSyn AST for the GhcPs phase. We do not always have EPAs though, only for code that has been parsed as they do not exist for generated code. This type captures that they may be missing.A goal of the annotations is that an AST can be edited, including moving subtrees from one place to another, duplicating them, and so on. This means that each fragment must be self-contained. To this end, each annotated fragment keeps track of the anchor position it was originally captured at, being simply the start span of the topmost element of the ast fragment. This gives us a way to later re-calculate all Located items in this layer of the AST, as well as any annotations captured. The comments associated with the AST fragment are also captured here.The 7 type parameter allows this general structure to be specialised to the specific set of locations of original exact print annotation elements. So for HsLet we havetype instance XLet GhcPs = EpAnn AnnsLet data AnnsLet = AnnsLet { alLet :: EpaLocation, alIn :: EpaLocation } deriving DataThe spacing between the items under the scope of a given EpAnn is normally derived from the original 7. But if a sub-element is not in its original position, the required spacing can be directly captured in the 8 field of the 8 Anchor. This allows us to freely move elements around, and stitch together new AST fragments out of old ones, and have them still printed out in a precise way.8ghc-lib-parser?No Annotation for generated code, e.g. from TH, deriving, etc.8ghc-lib-parserBase location for the start of the syntactic element holding the annotations.8ghc-lib-parserAnnotations added by the Parser8ghc-lib-parser6Comments enclosed in the SrcSpan of the element this 8 is attached to8ghc-lib-parserSpacing between output items when exact printing. It captures the spacing from the current print position on the page to the position required for the thing about to be printed. This is either on the same line in which case is is simply the number of spaces to emit, or it is some number of lines down, with a given column offset. The exact printing algorithm keeps track of the column offset pertaining to the current anchor position, so the 85 is the additional spaces to add in this case. See  8https://gitlab.haskell.org/ghc/ghc/wikis/api-annotations for details.8ghc-lib-parserdeltaLine should always be > 08ghc-lib-parserTokens embedded in the AST have an EpaLocation, unless they come from generated code (e.g. by TH).8ghc-lib-parserThe anchor for an 8. The Parser inserts the 8 variant, giving the exact location of the original item in the parsed source. This can be replaced by the 8 version, to provide a position for the item relative to the end of the previous item in the source. This is useful when editing an AST prior to exact printing the changed one. The list of comments in the 8 variant captures any comments between the prior output and the thing being marked here, since we cannot otherwise sort the relative order.8ghc-lib-parser$Captures an annotation, storing the 82 and its location. The parser only ever inserts 8 fields with a RealSrcSpan being the original location of the annotation in the source file. The 8 can also store a delta position if the AST has been modified and needs to be pretty printed again. The usual way an 8 is created is using the mj ("make jump") function, and then it can be inserted into the appropriate annotation.8ghc-lib-parser;a docstring that can be pretty printed using pprHsDocString8ghc-lib-parser(doc options (prune, ignore-exports, etc)8ghc-lib-parsercomment starting by "--"8ghc-lib-parsercomment in {- -}8ghc-lib-parser)empty comment, capturing location of EOF8ghc-lib-parser?The location of the prior token, used in exact printing. The 8 appears as an 7 containing its location. The difference between the end of the prior token and the start of this location is used for the spacing when exact printing the comment.8ghc-lib-parser'8ghc-lib-parser'=>', unicode variant8ghc-lib-parser'::'8ghc-lib-parser'::', unicode variant8ghc-lib-parser8ghc-lib-parser'..'8ghc-lib-parserUnicode variant8ghc-lib-parserfor function name in matches where there are multiple equations for the function.8ghc-lib-parser for CType8ghc-lib-parser'infix' or 'infixl' or 'infixr'8ghc-lib-parser'<-'8ghc-lib-parser'<-', unicode variant8ghc-lib-parserThe E unicode arrow8ghc-lib-parser 8ghc-lib-parser;where a name loses its location in the AST, this carries it8ghc-lib-parser'{-# DEPRECATED' etc. Opening of pragmas where the capitalisation of the string can be changed by the user. The actual text used is stored in a  SourceText on the relevant pragma item.8ghc-lib-parser'(|'8ghc-lib-parser'(|', unicode variant8ghc-lib-parser'{'8ghc-lib-parser'[e|' or '[e||'8ghc-lib-parser'[|'8ghc-lib-parser'[|', unicode variant8ghc-lib-parser'('8ghc-lib-parser'['8ghc-lib-parser'(#'8ghc-lib-parserprefix   -- TemplateHaskell8ghc-lib-parserprefix  -- TemplateHaskell8ghc-lib-parser% -- for HsExplicitMult8ghc-lib-parser'%1' -- for HsLinearArrow8ghc-lib-parser->8ghc-lib-parser->, unicode variant8ghc-lib-parser';'8ghc-lib-parser'''8ghc-lib-parserstatic8ghc-lib-parser double '''8ghc-lib-parser~8ghc-lib-parser() for types9ghc-lib-parser e.g. INTEGER9ghc-lib-parser*String value, will need quotes when output9ghc-lib-parser'|'9ghc-lib-parservia9ghc-lib-parser-<9ghc-lib-parser-<, unicode variant9ghc-lib-parser->9ghc-lib-parser->, unicode variant9ghc-lib-parser-<<9ghc-lib-parser-<<, unicode variant9ghc-lib-parser>>-9ghc-lib-parser>>-, unicode variant9ghc-lib-parser;Convert a normal annotation into its unicode equivalent one9ghc-lib-parserSmart constructor for a 8+. It preserves the invariant that for the 8 constructor 8 is always > 0.9ghc-lib-parser%Used in the parser only, extract the  from an 8!. The parser will never insert a 8#, so the partial function is safe.9ghc-lib-parser Maps the 7 to the related opening and closing AnnKeywordId. Used when actually printing the item.9ghc-lib-parser Convert a 7 to an 89ghc-lib-parser,Helper function used in the parser to add a 7" items to an existing annotation.9ghc-lib-parser,Helper function used in the parser to add a 7" items to an existing annotation.9ghc-lib-parserHelper function used in the parser to add a comma location to an existing annotation.9ghc-lib-parserHelper function (temporary) during transition of names Discards any annotations9ghc-lib-parserHelper function (temporary) during transition of names Discards any annotations9ghc-lib-parserHelper function (temporary) during transition of names Discards any annotations9ghc-lib-parserHelper function (temporary) during transition of names Discards any annotations9ghc-lib-parserShort form for 89ghc-lib-parserThe annotations need to all come after the anchor. Make sure this is the case.ghc-lib-parserThe annotations need to all come after the anchor. Make sure this is the case.9ghc-lib-parserCombine locations from two % things and add them to a third thing9ghc-lib-parserAdd additional comments to a 7, used for manipulating the AST prior to exact printing the changed one.9ghc-lib-parser#Replace any existing comments on a 7, used for manipulating the AST prior to exact printing the changed one.9ghc-lib-parserAdd additional comments, used for manipulating the AST prior to exact printing the changed one.9ghc-lib-parserReplace any existing comments, used for manipulating the AST prior to exact printing the changed one.9ghc-lib-parserTransfer comments and trailing items from the annotations in the first 7! argument to those in the second.9ghc-lib-parserRemove the exact print annotations payload, leaving only the anchor and comments.9ghc-lib-parserRemove the comments, leaving the exact print annotations payload7ghc-lib-parser!Api Annotations for comments only77777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888988888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999998889888888888888888888888888888888888888888888888888888888888888888888888888888888888888888899999999999998888888888888988888888998888888899888888778877799977777799997777777777777777777777777777777777779777777777777777777777777777777777777777779999999999999999999999999999999999999999999999999999 Safe-Inferred6  ghc-lib-parser#A contiguous chunk of documentation ghc-lib-parser'|' is the decorator ghc-lib-parser is the decorator ghc-lib-parser'$ string' is the decorator ghc-lib-parser%The decorator is the given number of s ghc-lib-parserHaskell Documentation StringRich structure to support exact printing The location around each chunk doesn't include the decorators ghc-lib-parser#The first chunk is preceded by "--  decorator" and each following chunk is preceded by "--" Example: -- | This is a docstring for foo$. It is the line with the decorator '|' and is always included -- This continues that docstring and is the second element in the NonEmpty list foo :: a -> a ghc-lib-parser The docstring is preceded by "{- decorator" and followed by "-}" The chunk contains balanced pairs of '{-' and '-}' ghc-lib-parserA docstring generated either internally or via TH Pretty printed with the '-- |' decorator This is because it may contain unbalanced pairs of '{-' and '-}' and not form a valid  ghc-lib-parserAnnotate a pretty printed thing with its doc The docstring comes after if is   Otherwise it comes before. Note - we convert MultiLineDocString HsDocStringPrevious to HsDocStringNext because we can't control if something else will be pretty printed on the same line ghc-lib-parser Create a   from a UTF8-encoded . ghc-lib-parser:Pretty print with decorators, exactly as the user wrote it ghc-lib-parser:Pretty print with decorators, exactly as the user wrote it ghc-lib-parser.Just get the docstring, without any decoratorsghc-lib-parser&Don't add a newline to a single string ghc-lib-parserJust get the docstring, without any decorators Separates docstrings using "nn", which is how haddock likes to render them   Safe-Inferred 8 <ghc-lib-parser$Sometimes we want to look through a newtype< and get its associated coercion. This function strips off newtype1 layers enough to reveal something that isn't a newtype&. Specifically, here's the invariant: 5topNormaliseNewType_maybe rec_nts ty = Just (co, ty') then (a)  co : ty ~ ty'". (b) ty' is not a newtype.The function returns Nothing for non-newtypes, or unsaturated applicationsThis function does *not* look through type families, because it has no access to the type family environment. If you do have that at hand, consider to use topNormaliseType_maybe, which should be a drop-in replacement for topNormaliseNewType_maybe If topNormliseNewType_maybe ty = Just (co, ty'), then co : ty ~R ty'<ghc-lib-parserIf it is the case that c :: (t1 ~ t2)i.e. the kind of c relates t1 and t2, then coercionKind c = Pair t1 t2.<ghc-lib-parserliftCoSubst role lc ty produces a coercion (at role role) that coerces between  lc_left(ty) and  lc_right(ty) , where lc_left is a substitution mapping type variables to the left-hand types of the mapped coercions in lc, and similar for lc_right.<ghc-lib-parserMakes a coercion type from two types: the types whose equality is proven by the relevant %<ghc-lib-parserSlowly checks if the coercion is reflexive. Don't call this in a loop, as it walks over the entire coercion.<ghc-lib-parserTests if this coercion is obviously reflexive. Guaranteed to work very quickly. Sometimes a coercion can be reflexive, but not obviously so. c.f. <<ghc-lib-parserTests if this coercion is obviously a generalized reflexive coercion. Guaranteed to work very quickly.<ghc-lib-parser$Make a "coercion between coercions".<ghc-lib-parserGiven co :: (a :: k) ~ (b :: k') produce  co' :: k ~ k'.<ghc-lib-parser!Make a nominal reflexive coercion<ghc-lib-parser%Make a generalized reflexive coercion<ghc-lib-parserInstantiates a %.<ghc-lib-parser Create a new % by composing the two given %s transitively. (co1 ; co2)<ghc-lib-parser(Create a symmetric version of the given % that asserts equality between the same types but in the other "direction", so a kind of t1 ~ t2 becomes the kind t2 ~ t1.<ghc-lib-parser6Make a universal coercion between two arbitrary types.<ghc-lib-parserMake a phantom coercion between two types. The coercion passed in must be a nominal coercion between the kinds of the types.<ghc-lib-parserBuild a function % from two other %s. That is, given  co1 :: a ~ b and  co2 :: x ~ y produce co :: (a -> x) ~ (b -> y) or (a => x) ~ (b => y), depending on the kind of a/b. This (most common) version takes a single FunTyFlag, which is used for both fco_afl and ftf_afr of the FunCo<ghc-lib-parserMake a Coercion from a tycovar, a kind coercion, and a body coercion. The kind of the tycovar should be the left-hand kind of the kind coercion. See Note [Unused coercion variable in ForAllCo]<ghc-lib-parserApply a % to another %. The second coercion must be Nominal, unless the first is Phantom. If the first is Phantom, then the second can be either Phantom or Nominal.<ghc-lib-parserApply a type constructor to a list of coercions. It is the caller's responsibility to get the roles correct on argument coercions.<ghc-lib-parserMake a reflexive coercionRghc-lib-parser9The result of stepping in a normalisation function. See S.Rghc-lib-parserNothing more to doRghc-lib-parser2Utter failure. The outer function should fail too.Rghc-lib-parserWe stepped, yielding new bits; ^ ev is evidence; Usually a co :: old type ~ new typeRghc-lib-parserA function to check if we can reduce a type by one step. Used with S.Rghc-lib-parserTests if this MCoercion is obviously generalized reflexive Guaranteed to work very quickly.Rghc-lib-parser'Compose two MCoercions via transitivityRghc-lib-parserGet the reverse of an %Rghc-lib-parserCast a type by an %Rghc-lib-parserLike R, but with an %Rghc-lib-parserThis breaks a % with type T A B C ~ T D E F into a list of % s of kinds A ~ D, B ~ E and E ~ F. Hence: decomposeCo 3 c [r1, r2, r3] = [nth r1 0 c, nth r2 1 c, nth r3 2 c]Rghc-lib-parserExtract a covar, if possible. This check is dirty. Be ashamed of yourself. (It's dirty because it cares about the structure of a coercion, which is morally reprehensible.)Rghc-lib-parser-Attempt to take a coercion application apart.Rghc-lib-parserLike R(, but only returns Just for tyvar binderRghc-lib-parserLike R(, but only returns Just for covar binderRghc-lib-parserGiven a coercion &co1 :: (a :: TYPE r1) ~ (b :: TYPE r2)9, (or CONSTRAINT instead of TYPE) produce a coercion rep_co :: r1 ~ r2.Rghc-lib-parserReturns the type coerced if this coercion is a generalized reflexive coercion. Guaranteed to work very quickly.Rghc-lib-parserReturns the type coerced if this coercion is reflexive. Guaranteed to work very quickly. Sometimes a coercion can be reflexive, but not obviously so. c.f. RRghc-lib-parserExtracts the coerced type from a reflexive coercion. This potentially walks over the entire coercion, so avoid doing this in a loop.Rghc-lib-parser*Make a representational reflexive coercionRghc-lib-parserApplies multiple % s to another % , from left to right. See also <.ghc-lib-parserLike <, but the inner coercion shouldn't be an obvious reflexive coercion. For example, it is guaranteed in R. The kind of the tycovar should be the left-hand kind of the kind coercion.Rghc-lib-parserMake nested ForAllCosRghc-lib-parserMake a Coercion quantified over a type/coercion variable; the variable has the same type in both sides of the coercionghc-lib-parserLike R, but the inner coercion shouldn't be an obvious reflexive coercion. For example, it is guaranteed in R.Rghc-lib-parserReturn the left-hand type of the axiom, when the axiom is instantiated at the types given.Rghc-lib-parser5Instantiate the left-hand side of an unbranched axiomRghc-lib-parser$Make a coercion from a coercion holeRghc-lib-parser Extract the nth field of a FunCoRghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2 , produces co' :: ty ~r (ty |> co)Rghc-lib-parserGiven r, ty :: k1, and co :: k1 ~N k2 , produces co' :: (ty |> co) ~r tyRghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2, co2:: ty ~r ty', produces @co' :: (ty |> co) ~r ty' It is not only a utility function, but it saves allocation when co is a GRefl coercion.Rghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2, co2:: ty' ~r ty, produces @co' :: ty' ~r (ty |> co) It is not only a utility function, but it saves allocation when co is a GRefl coercion.ghc-lib-parserChanges a role, but only a downgrade. See Note [Role twiddling functions]Rghc-lib-parserLike , but panics if the change isn't a downgrade. See Note [Role twiddling functions]Rghc-lib-parserConverts a coercion to be nominal, if possible. See Note [Role twiddling functions]Sghc-lib-parserlike mkKindCo, but aggressively & recursively optimizes to avoid using a KindCo constructor. The output role is nominal.ghc-lib-parsersay g = promoteCoercion h. Then, instCoercion g w yields Just g' , where g' = promoteCoercion (h w)%. fails if this is not possible, if g coerces between a forall and an -> or if second parameter has a representational role and can't be used with an InstCo.ghc-lib-parserRepeated use of Sghc-lib-parserCreates a new coercion with both of its types casted by different casts !castCoercionKind2 g r t1 t2 h1 h2, where  g :: t1 ~r t2 , has type (t1 |> h1) ~r (t2 |> h2). h1 and h2 must be nominal.Sghc-lib-parsercastCoercionKind1 g r t1 t2 h = coercionKind g r t1 t2 h h That is, it's a specialised form of castCoercionKind, where the two kind coercions are identical castCoercionKind1 g r t1 t2 h, where  g :: t1 ~r t2 , has type (t1 |> h) ~r (t2 |> h). h/ must be nominal. See Note [castCoercionKind1]Sghc-lib-parserCreates a new coercion with both of its types casted by different casts castCoercionKind g h1 h2, where  g :: t1 ~r t2 , has type (t1 |> h1) ~r (t2 |> h2). h1 and h2 must be nominal. It calls coercionKindRole#, so it's quite inefficient (which I stands for) Use castCoercionKind2 instead if t1, t2, and r are known beforehand.Sghc-lib-parserMake a forall %, where both types related by the coercion are quantified over the same variable.Sghc-lib-parserIf `instNewTyCon_maybe T ts = Just (rep_ty, co)` then `co :: T ts ~R# rep_ty`-Checks for a newtype, and for being saturatedSghc-lib-parserTry one stepper and then try the next, if the first doesn't make progress. So if it returns NS_Done, it means that both steppers are satisfiedSghc-lib-parserA R that unwraps newtypes, careful not to fall into a loop. If it would fall into a loop, it produces R.Sghc-lib-parserA general function for normalising the top-level of a type. It continues to use the provided R until that function fails, and then this function returns. The roles of the coercions produced by the R must all be the same, which is the role returned from the call to S.Typically ev is Coercion.If topNormaliseTypeX step plus ty = Just (ev, ty') then ty ~ev1~ t1 ~ev2~ t2 ... ~evn~ ty' and ev = ev1 plus ev2 plus ... plus evn If it returns Nothing then no newtype unwrapping could happenSghc-lib-parserSyntactic equality of coercionsSghc-lib-parser Compare two %s, with respect to an RnEnv2Sghc-lib-parser,Extend a lifting context with a new mapping.Sghc-lib-parserExtend a lifting context with a new mapping, and extend the in-scope setghc-lib-parserExtend a lifting context with existential-variable bindings. See Note [extendLiftingContextEx]Sghc-lib-parser+Erase the environments in a lifting contextSghc-lib-parserLike L , but works on a lifting contextghc-lib-parserThe "lifting" operation which substitutes coercions for type variables in a type to produce a coercion.For the inverse operation, see  liftCoMatchSghc-lib-parser,Is a var in the domain of a lifting context?Sghc-lib-parser"Apply "sym" to all coercions in a RSghc-lib-parser;Extract the underlying substitution from the LiftingContextSghc-lib-parserGet the 3 from a  b) -> a -> b Just :: forall (k :: Multiplicity) a. a % k -> Maybe a  turns in to,. ($) :: forall a (b :: *). (a -> b) -> a -> b  ! Just :: forall a . a -> Maybe a We do this to prevent RuntimeRep, Levity and Multiplicity variables from incurring a significant syntactic overhead in otherwise simple type signatures (e.g. ($)). See Note [Defaulting RuntimeRep variables] and #11549 for further discussion.ghc-lib-parser6The type ('BoxedRep 'Lifted), also known as LiftedRep.ghc-lib-parserThe type 'Lifted :: Levity'.Qghc-lib-parser The type 'Many :: Multiplicity'.Qghc-lib-parserLike Q, but always uses an explicit forall.Qghc-lib-parser;Render the "forall ... ." or "forall ... ->" bit of a type.ghc-lib-parserRender the ... in (forall ... .) or (forall ... ->). Returns both the list of not-yet-rendered binders and the doc. No anonymous binders here!ghc-lib-parserPretty-print a type-level equality. Returns (Just doc) if the argument is a  saturated application of eqTyCon (~) eqPrimTyCon (~#) eqReprPrimTyCon (~R#) heqTyCon (~~)See Note [Equality predicates in IfaceType] and Note [The equality types story] in GHC.Builtin.Types.Primghc-lib-parserPretty-prints an application of a type constructor to some arguments (whose visibilities are known). This is polymorphic (over a) since we use this function to pretty-print two different things:  Types (from Q`)Coercions (from Q)ghc-lib-parserPretty-print an unboxed sum type. The sum should be saturated: as many visible arguments as the arity of the sum.)NB: this always strips off the invisible F arguments, even with `-fprint-explicit-runtime-reps` and `-fprint-explicit-kinds`.ghc-lib-parserPretty-print a tuple type (boxed tuple, constraint tuple, unboxed tuple). The tuple should be saturated: as many visible arguments as the arity of the tuple.)NB: this always strips off the invisible F arguments, even with `-fprint-explicit-runtime-reps` and `-fprint-explicit-kinds`.Qghc-lib-parserPrints "(C a, D b) =>", including the arrow. Used when we want to print a context in a type, so we use & to decide whether to parenthesise a singleton predicate; e.g. Num a => a -> aQghc-lib-parserPrints a context or ()- if empty You give it the context precedenceghc-lib-parserif printing coercionsghc-lib-parser otherwiseghc-lib-parserdefault F/F variables?ghc-lib-parserdefault  Multiplicity variables?ghc-lib-parser*visibility of the first binder in the listQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQPP$1111$1111PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPPQQQQQPQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQPPPPPPPPPPPQQQQQQQQPPP$111111$1111PPPQQQQQQQQQQQQPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ Safe-Inferred 6 :'%ghc-lib-parserTyCons represent type constructors. Type constructors are introduced by things such as:1) Data declarations: data Foo = ... creates the Foo type constructor of kind *2) Type synonyms: type Foo = ... creates the Foo type constructor 3) Newtypes: newtype Foo a = MkFoo ... creates the Foo type constructor of kind * -> *4) Class declarations: class Foo where creates the Foo type constructor of kind *This data type also encodes a number of primitive, built in type constructors such as those for function and tuple types.%ghc-lib-parserName of the constructor%ghc-lib-parserMake a  for the Typeable* representation of the given wired-in type%ghc-lib-parser Is this the % for an unboxed tuple?%ghc-lib-parser Does this % represent a tuple?NB: when compiling  Data.Tuple, the tycons won't reply True to %, because they are built as  AlgTyCons. However they get spat into the interface file as tuple tycons, so I don't think it matters.Fghc-lib-parserPaints a picture of what a % represents, in broad strokes. This is used towards more informative error messages.Fghc-lib-parser e.g., the (->) %.Fghc-lib-parserA F is an abstraction of a type. It contains information that the code generator needs in order to pass arguments, return results, and store values of this type. See also Note [RuntimeRep and PrimRep] in GHC.Types.RepType and Note [VoidRep] in GHC.Types.RepType.Fghc-lib-parserUnlifted pointerFghc-lib-parserSigned, 8-bit valueFghc-lib-parserSigned, 16-bit valueFghc-lib-parserSigned, 32-bit valueFghc-lib-parserSigned, 64 bit valueFghc-lib-parserSigned, word-sized valueFghc-lib-parserUnsigned, 8 bit valueFghc-lib-parserUnsigned, 16 bit valueFghc-lib-parserUnsigned, 32 bit valueFghc-lib-parserUnsigned, 64 bit valueFghc-lib-parserUnsigned, word-sized valueFghc-lib-parserA pointer, but not) to a Haskell value (use '(Un)liftedRep')Fghc-lib-parserA vectorFghc-lib-parser;Information pertaining to the expansion of a type synonym (type)Fghc-lib-parserRepresents an open type family without a fixed right hand side. Additional instances can appear at any time.7These are introduced by either a top level declaration: data family T a :: *Or an associated data type declaration, within a class declaration: !class C a b where data T b :: *Fghc-lib-parser"An open type synonym family e.g. type family F x y :: * -> *Fghc-lib-parser$A closed type synonym family e.g. &type family F x where { F Int = Bool }Fghc-lib-parserA closed type synonym family declared in an hs-boot file with type family F a where ..Fghc-lib-parser0Built-in type family used by the TypeNats solverFghc-lib-parserDescribes the flavour of an algebraic type constructor. For classes and data families, this flavour includes a reference to the parent %.Fghc-lib-parserAn ordinary algebraic type constructor. This includes unlifted and representation-polymorphic datatypes and newtypes and unboxed tuples, but NOT unboxed sums; see UnboxedSumTyCon.Fghc-lib-parserAn unboxed sum type constructor. This is distinct from VanillaAlgTyCon because we currently don't allow unboxed sums to be Typeable since there are too many of them. See #13276.Fghc-lib-parserType constructors representing a class dictionary. See Note [ATyCon for classes] in GHC.Core.TyCo.RepFghc-lib-parserType constructors representing an *instance* of a *data* family. Parameters:1) The type family in question*2) Instance types; free variables are the F of the current % (not the family one). INVARIANT: the number of types matches the arity of the family %3) A CoTyCon identifying the representation type with the type instance familyFghc-lib-parserSome promoted datacons signify extra info relevant to GHC. For example, the F constructor of F corresponds to the F constructor of F. This data structure allows us to store this information right in the %6. The other approach would be to look up things like F's F by known-key every time. See also Note [Getting from RuntimeRep to PrimRep] in GHC.Types.RepTypeFghc-lib-parseran ordinary promoted data conFghc-lib-parserA constructor of F. The argument to the function should be the list of arguments to the promoted datacon.Fghc-lib-parserA constructor of FFghc-lib-parserA constructor of FFghc-lib-parserA constructor of FFghc-lib-parserRepresents right-hand-sides of %s for algebraic typesFghc-lib-parserSays that we know nothing about this data type, except that it's represented by a pointer. Used when we export a data type abstractly into an .hi file.Fghc-lib-parserInformation about those %s derived from a data declaration. This includes data types with no constructors at all.Fghc-lib-parserAn unboxed sum type.Fghc-lib-parserInformation about those %s derived from a newtype declarationFghc-lib-parserThe data type constructors; can be empty if the user declares the type to have no constructors'INVARIANT: Kept in order of increasing ./ tag (see the tag assignment in mkTyConTagMap)Fghc-lib-parserCached value: length data_consFghc-lib-parserCached value: is this an enumeration type? See Note [Enumeration types]Fghc-lib-parserK if the data type constructor has a known, fixed levity when fully applied to its arguments, False otherwise.This can only be H with UnliftedDatatypes, e.g. 5data A :: TYPE (BoxedRep l) where { MkA :: Int -> A }This boolean is cached to make it cheaper to check for levity and representation-polymorphism in tcHasFixedRuntimeRep.Fghc-lib-parserThe unique constructor for the newtype. It has no existentialsFghc-lib-parser.Is this a boxed, unboxed or constraint tuple?Fghc-lib-parserCached value: the argument type of the constructor, which is just the representation type of the % (remember that newtypes do not exist at runtime so need a different representation type). The free $s of this type are the F from the corresponding %Fghc-lib-parser Same as the F0, but this time eta-reduced. Hence the list of $?s in this field may be shorter than the declared arity of the %.Fghc-lib-parserK if the newtype has a known, fixed representation when fully applied to its arguments, H# otherwise. This can only ever be H with UnliftedNewtypes.Example: newtype N (a :: TYPE r) = MkN a=Invariant: nt_fixed_rep nt = tcHasFixedRuntimeRep (nt_rhs nt)This boolean is cached to make it cheaper to check if a variable binding is representation-polymorphic in tcHasFixedRuntimeRep.ghc-lib-parser"Algebraic data types, from - data declarations - newtype declarations - data instance declarations - type instance declarations - the TyCon generated by a class declaration - boxed tuples - unboxed tuples - constraint tuples - unboxed sums Datanewtypetype families are handled by . See F for more information.ghc-lib-parserRepresents type synonymsghc-lib-parserRepresents families (both type and data) Argument roles are all Nominalghc-lib-parserPrimitive types; cannot be defined in Haskell. This includes the usual suspects (such as Int#0) as well as foreign-imported types and kinds (*, #, and ?)ghc-lib-parser%Represents promoted data constructor.ghc-lib-parserThese exist only during type-checking. See Note [How TcTyCons work] in  GHC.Tc.TyClFghc-lib-parserA Unique of this TyCon. Invariant: identical to Unique of Name stored in tyConName field.Fghc-lib-parser Full bindersFghc-lib-parser TyVar bindersFghc-lib-parser Result kindFghc-lib-parserKind of this TyConFghc-lib-parserArityFghc-lib-parserA pre-allocated TyConApp tycon []ghc-lib-parserThe role for each type variable This list has length = tyConArity See also Note [TyCon Role signatures]Gghc-lib-parserThe C type that should be used for this type when using the FFI and CAPIghc-lib-parserWas the data type declared with GADT syntax? If so, that doesn't mean it's a true GADT; only that the "where" form was used. This field is used only to guide pretty-printingghc-lib-parserThe "stupid theta" for the data type (always empty for GADTs). A "stupid theta" is the context to the left of an algebraic type declaration, e.g. Eq a in the declaration data Eq a => T a .... See Note [The stupid context] in GHC.Core.DataCon.ghc-lib-parserContains information about the data constructors of the algebraic typeGghc-lib-parser,Maps a label to information about the fieldghc-lib-parserThe flavour of this algebraic tycon. Gives the class or family declaration % for derived %8s representing class or family instances, respectively.ghc-lib-parser8Contains information about the expansion of the synonymGghc-lib-parserName of result type variable, used for pretty-printing with --show-iface and for reifying TyCon in Template Haskellghc-lib-parserType family flavour: open, closed, abstract, built-in. See comments for FamTyConFlavghc-lib-parserFor *associated* type/data families The class tycon in which the family is declared See Note [Associated families and their parent class]ghc-lib-parseris this a type family injective in its type variables? Nothing if no injectivity annotation was givenghc-lib-parserThe Typeable' representation. A cached version of % (% tc).ghc-lib-parserCorresponding data constructorghc-lib-parserSee comments with FGghc-lib-parserScoped tyvars over the tycon's body The range is always a skolem or TcTyVar, be MonoTcTyCon only: see Note [Scoped tyvars in a TcTyCon]Gghc-lib-parserIs this TcTyCon already generalized? Used only to make zonking more efficientghc-lib-parser What sort of % this represents.Gghc-lib-parserMake a Required TyConBinder. It chooses between NamedTCB and AnonTCB based on whether the tv is mentioned in the dependent setGghc-lib-parser(mkTyConTy tc) returns (TyConApp tc []) but arranges to share that TyConApp among all calls See Note [Sharing nullary TyConApps] So it's just an alias for tyConNullaryTy!Gghc-lib-parser Create an F from the data constructors, for a potentially levity-polymorphic datatype (with UnliftedDatatypes).Gghc-lib-parser Create an F from the data constructors.Use mkLevPolyDataConRhs if the datatype can be levity-polymorphic or if it comes from a "data type" declarationGghc-lib-parserExtract those .s that we are able to learn about. Note that visibility in this sense does not correspond to visibility in the context of any particular user program!ghc-lib-parserChecks the invariants of a F/ given the appropriate type class name, if anyGghc-lib-parserThe name (and defining module) for the Typeable representation (TyCon) of a type constructor.&See Note [Grand plan for Typeable] in GHC.Tc.Instance.Typeable.Gghc-lib-parserThe size of a F in bytes.This applies also when used in a constructor, where we allow packing the fields. For instance, in data Foo = Foo Float# Float# the two fields will take only 8 bytes, which for 64-bit arch will be equal to 1 word. See also mkVirtHeapOffsetsWithPadding for details of how data fields are laid out.Gghc-lib-parserReturn if Rep stands for floating type, returns Nothing for vector types.Gghc-lib-parser-The labels for the fields of this particular %ghc-lib-parser-The labels for the fields of this particular %Gghc-lib-parser(Look up a field label belonging to this %ghc-lib-parserMake a map from strings to FieldLabels from all the data constructors of this algebraic tyconGghc-lib-parser#This is the making of an algebraic %.Gghc-lib-parserSimpler specialization of G for classesGghc-lib-parserMakes a tycon suitable for use during type-checking. It stores a variety of details about the definition of the TyCon, but no right-hand side. It lives only during the type-checking of a mutually-recursive group of tycons; it is then zonked to a proper TyCon in zonkTcTyCon. See also Note [Kind checking recursive type and class declarations] in  GHC.Tc.TyCl.Gghc-lib-parser5No scoped type variables (to be used with mkTcTyCon).Gghc-lib-parserCreate an primitive % , such as Int#, Type or  RealWorld# Primitive TyCons are marshalable iff not lifted. If you'd like to change this, modify marshalablePrimTyCon.Gghc-lib-parserCreate a type synonym %Gghc-lib-parserCreate a type family %Gghc-lib-parser#Create a promoted data constructor % Somewhat dodgily, we give it the same Name as the data constructor itself; when we pretty-print the TyCon we add a quote; see the Outputable TyCon instanceGghc-lib-parser Test if the %8 is algebraic but abstract (invisible data constructors)Gghc-lib-parser Does this %7 represent something that cannot be defined in Haskell?Gghc-lib-parserReturns True if the supplied % resulted from either a data or newtype declarationGghc-lib-parserReturns True9 for vanilla AlgTyCons -- that is, those created with a data or newtype declaration.Gghc-lib-parserReturns True for data types that are  definitely represented by heap-allocated constructors. These are scrutinised by Core-level case: expressions, and they get info tables allocated for them.-Generally, the function will be true for all data types and false for newtype1s, unboxed tuples, unboxed sums and type family %&s. But it is not guaranteed to return True in all cases that it could.%NB: for a data type family, only the instance %2s get an info table. The family declaration % does notGghc-lib-parser Was this % declared as "type data"? See Note [Type data declarations] in GHC.Rename.Module.Gghc-lib-parserG is true of %s for which this property holds (where r is the role passed in): If (T a1 b1 c1) ~r (T a2 b2 c2), then (a1 ~r1 a2), (b1 ~r2 b2), and (c1 ~r3 c2) (where r1, r2, and r3, are the roles given by tyConRolesX tc r) See also Note [Decomposing TyConApp equalities] in GHC.Tc.Solver.CanonicalGghc-lib-parserG is true of %s for which this property holds (where r is the role passed in): If (T tys ~r t), then (t's head ~r T). See also Note [Decomposing TyConApp equalities] in GHC.Tc.Solver.CanonicalGghc-lib-parser Is this an F of a % that is generative and injective with respect to representational equality?Gghc-lib-parserIs this % that for a newtypeGghc-lib-parserTake a % apart into the $s it scopes over, the % it expands into, and (possibly) a coercion from the representation type to the newtype . Returns Nothing if this is not possible.Gghc-lib-parser Is this a %* representing a regular H98 type synonym (type)?Gghc-lib-parserIs this tycon neither a type family nor a synonym that expands to a type family?Gghc-lib-parserIs this a forgetful type synonym? If this is a type synonym whose RHS does not mention one (or more) of its bound variables, returns True. Thus, False means that all bound variables appear on the RHS; True may not mean anything, as the test to set this flag is conservative.Gghc-lib-parserTrue iff we can decompose (T a b c) into ((T a b) c) I.e. is it injective and generative w.r.t nominal equality? That is, if (T a b) ~N d e f, is it always the case that (T ~N d), (a ~N e) and (b ~N f)? Specifically NOT true of synonyms (open and otherwise)It'd be unusual to call tyConMustBeSaturated on a regular H98 type synonym, because you should probably have expanded it first But regardless, it's not decomposableGghc-lib-parserIs this an algebraic % declared with the GADT syntax?Gghc-lib-parserIs this an algebraic %( which is just an enumeration of values?Gghc-lib-parser Is this a %., synonym or otherwise, that defines a family?Gghc-lib-parser Is this a %>, synonym or otherwise, that defines a family with instances?Gghc-lib-parserIs this a synonym %1 that can have may have further instances appear?Gghc-lib-parserIs this a synonym %1 that can have may have further instances appear?Gghc-lib-parser"Is this an open type family TyCon?Gghc-lib-parser0Is this a non-empty closed type family? Returns I( for abstract or empty closed families.Gghc-lib-parserG tc returns F is if tc is an injective tycon (where is states for which F tc is injective), or F otherwise.Gghc-lib-parser%Is this TyCon for an associated type?Gghc-lib-parserGet the enclosing class TyCon (if there is one) for the given TyCon.Gghc-lib-parserGet the enclosing class TyCon (if there is one) for the given TyConFlavourGghc-lib-parser Is this the % for a boxed tuple?Gghc-lib-parser Is this the % for an unboxed sum?Gghc-lib-parser Is this the % for a promoted tuple?Gghc-lib-parserIs this a PromotedDataCon?Gghc-lib-parserThis function identifies PromotedDataCon's from data constructors in `data T = K1 | K2`, promoted by -XDataKinds. These type constructors are printed with a tick mark 'K1 and 'K2, and similarly have a tick mark added to their OccName's.In contrast, constructors in `type data T = K1 | K2` are printed and represented with their original undecorated names. See Note [Type data declarations] in GHC.Rename.ModuleGghc-lib-parser T a .... See Note [The stupid context] in GHC.Core.DataCon.Gghc-lib-parser Extract the $s bound by a vanilla type synonym and the corresponding (unsubstituted) right hand side.Gghc-lib-parserExtract the information pertaining to the right hand side of a type synonym (type) declaration.Gghc-lib-parserExtract the flavour of a type family (with all the extra information that it carries)Gghc-lib-parserIs this % that for a class instance?Gghc-lib-parserIf this % is that for a class instance, return the class it is for. Otherwise returns NothingGghc-lib-parser#Return the associated types of the %, if anyGghc-lib-parserIs this %! that for a data family instance?Gghc-lib-parserIf this % is that of a data family instance, return the family in question and the instance types. Otherwise, return NothingGghc-lib-parserIf this %- is that of a data family instance, return a % which represents a coercion identifying the representation type with the type instance family. Otherwise, return NothingHghc-lib-parser Extract any RuntimeRepInfo from this TyConghc-lib-parserCan this flavour of % appear unsaturated?Hghc-lib-parserIs this flavour of %& an open type family or a data family?Hghc-lib-parserReturns whether or not this % is definite, or a hole that may be filled in at some later point. See Note [Skolem abstract data] Gghc-lib-parser whether the . has a fixed levityghc-lib-parserTrue if this is a "type data" declaration See Note [Type data declarations] in GHC.Rename.ModuleGghc-lib-parserBinders of the %ghc-lib-parser Result kindghc-lib-parserThe roles for each TyVarghc-lib-parser>The C type this type corresponds to when using the CAPI FFIghc-lib-parserStupid theta: see ghc-lib-parser#Information about data constructorsghc-lib-parser0What flavour is it? (e.g. vanilla, type family)ghc-lib-parserWas the % declared with GADT syntax?Gghc-lib-parserResult kind of the %ghc-lib-parserArity of the tuple %ghc-lib-parser%Whether the tuple is boxed or unboxedGghc-lib-parserKind of the resulting %ghc-lib-parserArity of the sumghc-lib-parser$s scoped over: see FGghc-lib-parserresult kind onlyghc-lib-parserScoped type variables; see Note [How TcTyCons work] in GHC.Tc.TyClghc-lib-parser$Is this TcTyCon generalised already?ghc-lib-parser What sort of % this representsGghc-lib-parserresult kind Must answer K to isFixedRuntimeRepKind (i.e., no representation polymorphism). (If you need a representation-polymorphic PrimTyCon, change tcHasFixedRuntimeRep, marshalablePrimTyCon, reifyTyCon for PrimTyCons.)Gghc-lib-parserresult kindGghc-lib-parserresult kindGghc-lib-parser Arguments to %ghc-lib-parser Returns a $ substitution, the body type of the synonym (not yet substituted) and any arguments remaining from the application ^ Expand a type synonym application Return Nothing if the TyCon is not a synonym, or if not enough arguments are supplied %%GGFFGGFFGFF%F%%%%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHH%FFFFFFFFFFFFFFFFFGFFFFFGFFFFFF FFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG%%GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG%HFFFGGGGGGGGGGGFFGGHGGGGGGGGGGGGGGGGGGGHFFGGGHFFFGGGHGH%%%GFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGN Safe-Inferred >ghc-lib-parserDefault maximum depth for both class instance search and type family reduction. See also #5395.ghc-lib-parserDefault maximum constraint-solver iterations Typically there should be very few   Safe-Inferred H"(ghc-lib-parserTest if the given Integer is representable with a platform Int(ghc-lib-parser?Test if the given Integer is representable with a platform Word(ghc-lib-parserFor some architectures the C calling convention is that any integer shorter than 64 bits is replaced by its 64 bits representation using sign or zero extension.(ghc-lib-parserTry to locate "GhclibDerivedConstants.h" file in the given dirs and to parse the PlatformConstants from it.See Note [Platform constants]XWV ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((XWV(((((((((((((((((((((((((((((((( (((((( Safe-Inferred6 ci"%ghc-lib-parserA collection of %s%ghc-lib-parser0The key type representing kinds in the compiler.%ghc-lib-parser/Type synonym used for types of kind RuntimeRep.%ghc-lib-parserA type of the form p of constraint kind represents a value whose type is the Haskell predicate p/, where a predicate is what occurs before the => in a Haskell type.We use % as documentation to mark those types that we guarantee to have this kind.0It can be expanded into its representation, but:(The type checker must treat it as opaque1The rest of the compiler treats it as transparentConsider these examples: f :: (Eq a) => a -> Int g :: (?x :: Int -> Int) => a -> Int h :: (r\l) => {r} => {l::Int | r} Here the Eq a and ?x :: Int -> Int and rl are all called "predicates"%ghc-lib-parserMult is a type alias for Type.Mult must contain Type because multiplicity variables are mere type variables (of kind Multiplicity) in Haskell. So the simplest implementation is to make Mult be Type.Multiplicities can be formed with: - One: GHC.Types.One (= oneDataCon) - Many: GHC.Types.Many (= manyDataCon) - Multiplication: GHC.Types.MultMul (= multMulTyCon)So that Mult feels a bit more structured, we provide pattern synonyms and smart constructors for these.%ghc-lib-parser&A shorthand for data with an attached % element (the multiplicity).%ghc-lib-parserA semantically more meaningful type to represent what may or may not be a useful %.%ghc-lib-parserFor simplicity, we have just one UnivCo that represents a coercion from some type to some other type, with (in general) no restrictions on the type. The UnivCoProvenance specifies more exactly what the coercion really is and why a program should (or shouldn't!) trust the coercion. It is reasonable to consider each constructor of % as a totally independent coercion form; their only commonality is that they don't tell you what types they coercion between. (That info is in the H constructor of %.%ghc-lib-parserA % is concrete evidence of the equality/convertibility of two types.%ghc-lib-parser% creates a nullary I$. In general you should rather use , which picks the shared nullary TyConApp from inside the TyCon (via tyConNullaryTy. But we have to build the TyConApp tc [] in that TyCon field; that's what % is for.%ghc-lib-parserLike mkTyCoForAllTy, but does not check the occurrence of the binder See Note [Unused coercion variable in ForAllTy]Hghc-lib-parser>What to do with coercion holes. See Note [Coercion holes] in GHC.Core.TyCo.Rep.Hghc-lib-parser.The returned env is used in the extended scopeHghc-lib-parserA coercion to be filled in by the type-checker. See Note [Coercion holes]Hghc-lib-parser>See Note [Phantom coercions]. Only in Phantom roled coercionsHghc-lib-parserFrom the fact that any two coercions are considered equivalent. See Note [ProofIrrelProv]. Can be used in Nominal or Representational coercionsHghc-lib-parserFrom a plugin, which asserts that this coercion is sound. The string is for the use of the plugin.Ighc-lib-parser;See Note [Coercion holes] Only present during typecheckingIghc-lib-parserA type labeled I might have knot-tied tycons in it. See Note [Type checking recursive type and class declarations] in  GHC.Tc.TyClIghc-lib-parser;Vanilla type or kind variable (*never* a coercion variable)Ighc-lib-parser+Type application to something other than a % . Parameters:1) Function: must not be a I or I, must be another I, or I See Note [Respecting definitional equality] (EQ1) about the no I requirement2) Argument typeIghc-lib-parserApplication of a %, including newtypes and1 synonyms. Invariant: saturated applications of FunTyCon must use I and saturated synonyms must use their own constructors. However,  unsaturated FunTyCons do appear as Is. Parameters:%1) Type constructor being applied to.2) Type arguments. Might not have enough type arguments here to saturate the constructor. Even type synonyms are not necessarily saturated; for example unsaturated type synonyms can appear as the right hand side of a type synonym.Ighc-lib-parserA  type. Note [When we quantify over a coercion variable] INVARIANT: If the binder is a coercion variable, it must be mentioned in the Type. See Note [Unused coercion variable in ForAllTy]Ighc-lib-parserFUN m t1 t2 Very common, so an important special case See Note [Function types]Ighc-lib-parser/Type literals are similar to type constructors.Ighc-lib-parserA kind cast. The coercion is always nominal. INVARIANT: The cast is never reflexive (EQ2) INVARIANT: The Type is not a CastTy (use TransCo instead) (EQ3) INVARIANT: The Type is not a ForAllTy over a tyvar (EQ4) See Note [Respecting definitional equality]Ighc-lib-parserInjection of a Coercion into a type This should only ever be used in the RHS of an AppTy, in the list of a TyConApp, when applying a promoted GADT data constructorIghc-lib-parser+Type synonym used for types of kind Levity.Ighc-lib-parser3The key representation of types within the compilerIghc-lib-parserMake nested arrow types | Special, common, case: Arrow type with mult ManyIghc-lib-parser/Wraps foralls over the type using the provided $s from left to rightIghc-lib-parser/Wraps foralls over the type using the provided $s from left to rightIghc-lib-parser+A view function that looks through nothing.Ighc-lib-parserApply a function to both the Mult and the Type in a 'Scaled Type'$1111$1111%%%%%%%%H%HH%III%HHHH%HHH%HHHHHHHHHHHHHHHIIIIIIIII%IIIIIIIIIIII%%%%&HHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII%IIIIIIIIIIII%IIII%%II%%I$111111$1111%HHHHHHHHHHHHHHHIIIIIIIII%HHHHHHH%HHHHHHHHII%HHH%HHH%%IIIII%IIIIIII%IIIIIIII&HHHHHHHIIIII%HI%I%I3I3I3 Safe-Inferred i%ghc-lib-parserdebugPprType is a simple pretty printer that prints a type without going through IfaceType. It does not format as prettily as the normal route, but it's much more direct, and that can be useful for debugging. E.g. with -dppr-debug it prints the kind on type-variable  occurrences1 which the normal route fundamentally cannot do.Qghc-lib-parserPrint a user-level forall; see Note [When to print foralls] in GHC.Iface.Type.Qghc-lib-parser#Display all kind information (with -fprint-explicit-kinds) when the provided ; argument is K. See 'Note [Kind arguments in error messages] in  GHC.Tc.Errors.Qghc-lib-parserThis variant preserves any use of TYPE in a type, effectively locally setting -fprint-explicit-runtime-reps.Qghc-lib-parserPretty prints a %, using the family instance in case of a representation tycon. For example: data T [a] = ...In that case we want to print T [a], where T is the family %#%%%%%%&&&&&&&&QQQQQQQQQQQQQQQQQQQQQ#&&&&&&&&%QQQQQQQQQQQQ%QQQ%Q%QQQQ%Q% Safe-Inferred j$HHHHHHH$HHHHHHH Safe-Inferred156 mNghc-lib-parserGoverns the kind of expression that the tick gets placed on when annotating for example using mkTick. If we find that we want to put a tickish on an expression ruled out here, we try to float it inwards until we find a suitable expression.Nghc-lib-parserPlace ticks exactly on run-time expressions. We can still move the tick through pure compile-time constructs such as other ticks, casts or type lambdas. This is the most restrictive placement rule for ticks, as all tickishs have in common that they want to track runtime processes. The only legal placement rule for counting ticks. NB: We generally try to move these as close to the relevant runtime expression as possible. This means they get pushed through tyoe arguments. E.g. we create `(tick f) Bool` instead of `tick (f Bool)`.Nghc-lib-parserAs  PlaceRuntime, but we float the tick through all lambdas. This makes sense where there is little difference between annotating the lambda and annotating the lambda's code.Nghc-lib-parserIn addition to floating through lambdas, cost-centre style tickishs can also be moved from constructors, non-function variables and literals. For example: let x = scc ... C (scc ... y) (scc ... 3) in ...Neither the constructor application, the variable or the literal are likely to have any cost worth mentioning. And even if y names a thunk, the call would not care about the evaluation context. Therefore removing all annotations in the above example is safe.Nghc-lib-parserSpecifies the scoping behaviour of ticks. This governs the behaviour of ticks that care about the covered code and the cost associated with it. Important for ticks relating to profiling.Nghc-lib-parserNo scoping: The tick does not care about what code it covers. Transformations can freely move code inside as well as outside without any additional annotation obligationsNghc-lib-parserSoft scoping: We want all code that is covered to stay covered. Note that this scope type does not forbid transformations from happening, as long as all results of the transformations are still covered by this tick or a copy of it. For example let x = tick ...6 (let y = foo in bar) in baz ===> let x = tick ... bar; y = tick ... foo in bazIs a valid transformation as far as "bar" and "foo" is concerned, because both still are scoped over by the tick.Note though that one might object to the "let" not being covered by the tick any more. However, we are generally lax with this - constant costs don't matter too much, and given that the "let" was effectively merged we can view it as having lost its identity anyway.Also note that this scoping behaviour allows floating a tick "upwards" in pretty much any situation. For example:case foo of x -> tick ... bar ==> tick ... case foo of x -> barWhile this is always legal, we want to make a best effort to only make us of this where it exposes transformation opportunities.Nghc-lib-parserCost centre scoping: We don't want any costs to move to other cost-centre stacks. This means we not only want no code or cost to get moved out of their cost centres, but we also object to code getting associated with new cost-centre ticks - or changing the order in which they get applied.A rule of thumb is that we don't want any code to gain new annotations. However, there are notable exceptions, for example:let f = y -> foo in tick ... ... (f x) ... ==> tick ... ... foo[x/y] ...In-lining lambdas like this is always legal, because inlining a function does not change the cost-centre stack when the function is called.Nghc-lib-parserAn  {-# SCC #-} profiling annotation, either automatically added by the desugarer as a result of -auto-all, or added by the user.Nghc-lib-parserA "tick" used by HPC to track the execution of each subexpression in the original source code.Nghc-lib-parserA breakpoint for the GHCi debugger. This behaves like an HPC tick, but has a list of free variables which will be available for inspection in GHCi when the program stops at the breakpoint.NB. we must take account of these Ids when (a) counting free variables, and (b) substituting (don't substitute for them)Nghc-lib-parserA source note.Source notes are pure annotations: Their presence should neither influence compilation nor execution. The semantics are given by causality: The presence of a source note means that a local change in the referenced source code span will possibly provoke the generated code to change. On the flip-side, the functionality of annotated code *must* be invariant against changes to all source code *except* the spans referenced in the source notes (see "Causality of optimized Haskell" paper for details).Therefore extending the scope of any given source note is always valid. Note that it is still undesirable though, as this reduces their usefulness for debugging and profiling. Therefore we will generally try only to make use of this property where it is necessary to enable optimizations.Nghc-lib-parserthe cost centreNghc-lib-parserbump the entry count?Nghc-lib-parser;scopes over the enclosed expression (i.e. not just a tick)Nghc-lib-parserthe order of this list is important: it matches the order of the lists in the appropriate entry in .9Careful about substitution! See Note [substTickish] in GHC.Core.Subst.Nghc-lib-parserSource coveredNghc-lib-parser4Name for source location (uses same names as CCs)Nghc-lib-parser)Tickish in Cmm context (annotations only)ghc-lib-parser;Allows attaching extra information to points in expressionsUsed as a data type index for the GenTickish annotations. See Note [Tickish passes]Nghc-lib-parserA "counting tick" (where tickishCounts is True) is one that counts evaluations in some way. We cannot discard a counting tick, and the compiler should preserve the number of counting ticks as far as possible.However, we still allow the simplifier to increase or decrease sharing, so in practice the actual number of ticks may vary, except that we never change the value from zero to non-zero or vice versa.Nghc-lib-parser/Returns the intended scoping rule for a TickishNghc-lib-parserReturns whether the tick scoping rule is at least as permissive as the given scoping rule.Nghc-lib-parserReturns True for ticks that can be floated upwards easily even where it might change execution counts, such as: Just (tick ... foo) ==> tick ... (Just foo)This is a combination of tickishSoftScope and  tickishCounts. Note that in principle splittable ticks can become floatable using mkNoTick -- even though there's currently no tickish for which that is the case.Nghc-lib-parserReturns True" for a tick that is both counting and> scoping and can be split into its (tick, scope) parts using N and mkNoTick respectively.Nghc-lib-parserReturn True if this source annotation compiles to some backend code. Without this flag, the tickish is seen as a simple annotation that does not have any associated evaluation code.What this means that we are allowed to disregard the tick if doing so means that we can skip generating any code in the first place. A typical example is top-level bindings: foo = tick ...% y -> ... ==> foo = y -> tick ... ...Here there is just no operational difference between the first and the second version. Therefore code generation should simply translate the code as if it found the latter.Nghc-lib-parser)Placement behaviour we want for the ticksNghc-lib-parserReturns whether one tick "contains" the other one, therefore making the second tick redundant.ghc-lib-parser6Keep track of the type of breakpoints in STG, for GHCi&NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN Safe-Inferred6 5ghc-lib-parserA Cost Centre Stack is something that can be attached to a closure. This is either:$the current cost centre stack (CCCS)a pre-defined cost centre stack (there are several pre-defined CCSs, see below).5ghc-lib-parserThe flavour of a cost centre.Index fields represent 0-based indices giving source-code ordering of centres with the same module, name, and flavour.5ghc-lib-parserAuto-generated top-level thunk5ghc-lib-parserExplicitly annotated expression5ghc-lib-parser Explicitly annotated declaration5ghc-lib-parserGenerated by HPC for coverage5ghc-lib-parser.Annotated by the one of the prof-last* passes.5ghc-lib-parserA Cost Centre is a single  {-# SCC #-} annotation.5ghc-lib-parserTwo cost centres may have the same name and module but different SrcSpans, so we need a way to distinguish them easily and give them different object-code labels. So every CostCentre has an associated flavour that indicates how it was generated, and flavours that allow multiple instances of the same name and module have a deterministic 0-based index.5ghc-lib-parserName of the cost centre itself5ghc-lib-parser Name of module defining this CC.ghc-lib-parser Extract the index from a flavour5ghc-lib-parser.Is this a cost-centre which records scc counts5ghc-lib-parser)Is this a cost-centre which can be sccd ?5ghc-lib-parserPrint a flavour in Coreghc-lib-parserPrint a flavour's index in Coreghc-lib-parser(Print the flavour component of a C labelghc-lib-parser.Print the flavour index component of a C label&55555555555555555555555555555555555555&55555555555555555555555555555555555555 Safe-Inferred6  ghc-lib-parser9An index into a given cost centre module,name,flavour set ghc-lib-parser2Per-module state for tracking cost centre indices.See documentation of  for more details. ghc-lib-parserInitialize cost centre state. ghc-lib-parser-Get a new index for a given cost centre name.   Safe-Inferred 6 Nghc-lib-parserNumeric literal typeNghc-lib-parserBignat (see Note [BigNum literals])Nghc-lib-parserInt# - according to target machineNghc-lib-parserInt8# - exactly 8 bitsNghc-lib-parserInt16# - exactly 16 bitsNghc-lib-parserInt32# - exactly 32 bitsNghc-lib-parserInt64# - exactly 64 bitsNghc-lib-parserWord# - according to target machineNghc-lib-parserWord8# - exactly 8 bitsOghc-lib-parserWord16# - exactly 16 bitsOghc-lib-parserWord32# - exactly 32 bitsOghc-lib-parserWord64# - exactly 64 bitsOghc-lib-parser So-called O s are one of:An unboxed numeric literal or floating-point literal which is presumed to be surrounded by appropriate constructors (Int#2, etc.), so that the overall thing makes sense.#We maintain the invariant that the A in the O constructor is actually in the (possibly target-dependent) range. The mkLit{Int,Word}*Wrap smart constructors ensure this by applying the target machine's wrapping semantics. Use these in situations where you know the wrapping semantics are correct.The literal derived from the label mentioned in a "foreign label" declaration (O)A O3 to be used in place of values that are never used. A characterA stringThe NULL pointerOghc-lib-parserChar#" - at least 31 bits. Create with OOghc-lib-parserAny numeric literal that can be internally represented with an Integer.Oghc-lib-parserA string-literal: stored and emitted UTF-8 encoded, we'll arrange to decode it at runtime. Also emitted with a '\0' terminator. Create with OOghc-lib-parserThe NULL pointer, the only pointer value that can be represented as a Literal. Create with OOghc-lib-parser.A nonsense value; See Note [Rubbish literals].Oghc-lib-parserFloat#. Create with OOghc-lib-parserDouble#. Create with OOghc-lib-parserA label literal. Parameters::1) The name of the symbol mentioned in the declaration2) The size (in bytes) of the arguments the label expects. Only applicable with stdcall labels. Just x => ? will be appended to label name when emitting assembly.3) Flag indicating whether the symbol references a function or a dataOghc-lib-parserCoerce a literal number into another using wrapping semantics.Oghc-lib-parserNarrow a literal number by converting it into another number type and then converting it back to its original type.Oghc-lib-parser>Check that a given number is in the range of a numeric literalOghc-lib-parserGet the literal rangeOghc-lib-parserCreate a numeric O of the given typeOghc-lib-parser Creates a O of type Int#Oghc-lib-parser Creates a O of type Int#. If the argument is out of the (target-dependent) range, it is wrapped. See Note [Word Int underflow overflow]Oghc-lib-parser Creates a O of type Int# without checking its range.Oghc-lib-parser Creates a O of type Int#, as well as a ;ean flag indicating overflow. That is, if the argument is out of the (target-dependent) range the argument is wrapped and the overflow flag will be set. See Note [Word Int underflow overflow]Oghc-lib-parser Creates a O of type Word#Oghc-lib-parser Creates a O of type Word#. If the argument is out of the (target-dependent) range, it is wrapped. See Note [Word Int underflow overflow]Oghc-lib-parser Creates a O of type Word# without checking its range.Oghc-lib-parser Creates a O of type Word#, as well as a ;ean flag indicating carry. That is, if the argument is out of the (target-dependent) range the argument is wrapped and the carry flag will be set. See Note [Word Int underflow overflow]Oghc-lib-parser Creates a O of type Int8#Oghc-lib-parser Creates a O of type Int8#8. If the argument is out of the range, it is wrapped.Oghc-lib-parser Creates a O of type Int8# without checking its range.Oghc-lib-parser Creates a O of type Word8#Oghc-lib-parser Creates a O of type Word8#8. If the argument is out of the range, it is wrapped.Oghc-lib-parser Creates a O of type Word8# without checking its range.Oghc-lib-parser Creates a O of type Int16#Oghc-lib-parser Creates a O of type Int16#8. If the argument is out of the range, it is wrapped.Oghc-lib-parser Creates a O of type Int16# without checking its range.Oghc-lib-parser Creates a O of type Word16#Oghc-lib-parser Creates a O of type Word16#8. If the argument is out of the range, it is wrapped.Oghc-lib-parser Creates a O of type Word16# without checking its range.Oghc-lib-parser Creates a O of type Int32#Oghc-lib-parser Creates a O of type Int32#8. If the argument is out of the range, it is wrapped.Oghc-lib-parser Creates a O of type Int32# without checking its range.Oghc-lib-parser Creates a O of type Word32#Oghc-lib-parser Creates a O of type Word32#8. If the argument is out of the range, it is wrapped.Oghc-lib-parser Creates a O of type Word32# without checking its range.Oghc-lib-parser Creates a O of type Int64#Oghc-lib-parser Creates a O of type Int64#8. If the argument is out of the range, it is wrapped.Oghc-lib-parser Creates a O of type Int64# without checking its range.Oghc-lib-parser Creates a O of type Word64#Oghc-lib-parser Creates a O of type Word64#8. If the argument is out of the range, it is wrapped.Oghc-lib-parser Creates a O of type Word64# without checking its range.Oghc-lib-parser Creates a O of type Float#Oghc-lib-parser Creates a O of type Double#Oghc-lib-parser Creates a O of type Char#Oghc-lib-parser Creates a O of type Addr#, which is appropriate for passing to e.g. some of the "error" functions in GHC.Err such as GHC.Err.runtimeErrorOghc-lib-parserTests whether the literal represents a zero of whatever type it isOghc-lib-parserTests whether the literal represents a one of whatever type it isOghc-lib-parser Returns the A contained in the O', for when that makes sense, i.e. for = and numbers.Oghc-lib-parser Returns the A contained in the O', for when that makes sense, i.e. for = and numbers.Oghc-lib-parserApply a function to the A contained in the O', for when that makes sense, e.g. for = and numbers. For fixed-size integral literals, the result will be wrapped in accordance with the semantics of the target type. See Note [Word Int underflow overflow]ghc-lib-parser0Narrow a literal number (unchecked result range)Oghc-lib-parser-Extend or narrow a fixed-width literal (e.g. Int16##) to a target word-sized literal (Int# or Word#). Narrowing can only happen on 32-bit architectures when we convert a 64-bit literal into a 32-bit one.Oghc-lib-parser-Extend or narrow a fixed-width literal (e.g. Int16##) to a target word-sized literal (Int# or Word#). Narrowing can only happen on 32-bit architectures when we convert a 64-bit literal into a 32-bit one.Oghc-lib-parserTrue if there is absolutely no penalty to duplicating the literal. False principally of strings."Why?", you say? I'm glad you asked. Well, for one duplicating strings would blow up code sizes. Not only this, it's also unsafe.Consider a program that wants to traverse a string. One way it might do this is to first compute the Addr# pointing to the end of the string, and then, starting from the beginning, bump a pointer using eqAddr# to determine the end. For instance, -- Given pointers to the start and end of a string, count how many zeros -- the string contains. countZeros :: Addr# -> Addr# -> -> Int countZeros start end = go start 0 where go off n | off addrEq#- end = n | otherwise = go (off  plusAddr# 1) n' where n' | isTrue# (indexInt8OffAddr# off 0# ==# 0#) = n + 1 | otherwise = n Consider what happens if we considered strings to be trivial (and therefore duplicable) and emitted a call like countZeros "hello"# ("hello"# plusAddr# 5). The beginning and end pointers do not belong to the same string, meaning that an iteration like the above would blow up terribly. This is what happened in #12757.Ultimately the solution here is to make primitive strings a bit more structured, ensuring that the compiler can't inline in ways that will break user code. One approach to this is described in #8472.Oghc-lib-parser?True if code space does not go bad if we duplicate this literalOghc-lib-parserFind the Haskell % the literal occupiesOghc-lib-parserNeeded for the Ord instance of AltCon, which in turn is needed in .NNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO Safe-Inferred džghc-lib-parser!An ordering relation between two %s (known below as t1 :: k1 and t2 :: k2)ghc-lib-parser t1 < t2ghc-lib-parsert1 ~ t2> and there are no casts in either, therefore we can conclude k1 ~ k2ghc-lib-parsert1 ~ t2 yet one of the types contains a cast so they may differ in kind.ghc-lib-parser t1 > t2Nghc-lib-parsertcEqType implements typechecker equality It behaves just like eqType, but is implemented differently (for now)Nghc-lib-parser Just like N, but will return True for types of different kinds as long as their non-coercion structure is identical.Nghc-lib-parserCheck whether two TyConApps are the same; if the number of arguments are different, just checks the common prefix of arguments.ghc-lib-parserType equality comparing both visible and invisible arguments and expanding type synonyms.Nghc-lib-parserLike N, but returns True if the visible part of the types are equal, even if they are really unequal (in the invisible bits)Nghc-lib-parserLike pickyEqTypeVis$, but returns a Bool for convenienceghc-lib-parserReal worker for N. No kind check!Nghc-lib-parser.Do these denote the same level of visibility? 1 arguments are visible, others are not. So this function equates 1 and 1. Used for printing.Nghc-lib-parser.Do these denote the same level of visibility? 1 arguments are visible, others are not. So this function equates 1 and 1. Used for printing.Nghc-lib-parser5Type equality on source types. Does not look through newtypes, %s or type families, but it does look through type synonyms. This first checks that the kinds of the types are equal and then checks whether the types are equal, ignoring casts and coercions. (The kind check is a recursive call, but since all kinds have type Type, there is no need to check the types of kinds.) See also Note [Non-trivial definitional equality] in GHC.Core.TyCo.Rep.Nghc-lib-parser7Compare types with respect to a (presumably) non-empty 3.Nghc-lib-parserType equality on lists of types, looking through type synonyms but not newtypes.Nghc-lib-parser Compare two %+s. See Note [nonDetCmpType nondeterminism]ghc-lib-parserTrue  = do not expand type synonymsghc-lib-parserTrue  = compare visible args onlyNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  Safe-Inferred zKghc-lib-parserReturns free variables of types, including kind variables as a non-deterministic set. For type synonyms it does not expand the synonym.ghc-lib-parserGiven a list of tyvars returns a deterministic FV computation that returns the given tyvars with the kind variables free in the kinds of the given tyvars.Kghc-lib-parserAdd the kind variables free in the kinds of the tyvars in the given set. Returns a deterministically ordered list.Kghc-lib-parserAdd the kind variables free in the kinds of the tyvars in the given set. Returns a deterministic set.Kghc-lib-parserK that returns free variables of a type in a deterministic set. For explanation of why using 26 is not deterministic see Note [Deterministic FV] in  GHC.Utils.FV.Kghc-lib-parserK that returns free variables of a type in deterministic order. For explanation of why using 26 is not deterministic see Note [Deterministic FV] in  GHC.Utils.FV.Kghc-lib-parserReturns free variables of types, including kind variables as a deterministic set. For type synonyms it does not expand the synonym.Kghc-lib-parserReturns free variables of types, including kind variables as a deterministically ordered list. For type synonyms it does not expand the synonym.Kghc-lib-parserThe worker for K and tyCoFVsOfTypeList$. The previous implementation used 2 which is O(n+m) and can make the function quadratic. It's exported, so that it can be composed with other functions that compute free variables. See Note [FV naming conventions] in  GHC.Utils.FV.Eta-expanded because that makes it run faster (apparently) See Note [FV eta expansion] in  GHC.Utils.FV for explanation.Kghc-lib-parser6Get a deterministic set of the vars free in a coercionKghc-lib-parserGiven a covar and a coercion, returns True if covar is almost devoid in the coercion. That is, covar can only appear in Refl and GRefl. See last wrinkle in Note [Unused coercion variable in ForAllCo] in GHC.Core.CoercionKghc-lib-parserRetrieve the free variables in this type, splitting them based on whether they are used visibly or invisibly. Invisible ones come first.Kghc-lib-parser Returns the free variables of a % that are in injective positions. Specifically, it finds the free variables while:Expanding type synonymsIgnoring the coercion in  (ty |> co)'Ignoring the non-injective fields of a IFor example, if F& is a non-injective type family, then: 9injectiveTyVarsOf( Either c (Maybe (a, F b c)) ) = {a,c} If K ty = itvs, then knowing ty fixes itvs. More formally, if a is in K ty and S1(ty) ~ S2(ty), then S1(a) ~ S2(a) , where S1 and S2 are arbitrary substitutions.See Note [When does a tycon application need an explicit kind signature?].Kghc-lib-parser Returns the free variables of a % that are in injective positions. Specifically, it finds the free variables while:Expanding type synonymsIgnoring the coercion in  (ty |> co)'Ignoring the non-injective fields of a ISee Note [When does a tycon application need an explicit kind signature?].Kghc-lib-parserReturns the set of variables that are used invisibly anywhere within the given type. A variable will be included even if it is used both visibly and invisibly. An invisible use site includes: * In the kind of a variable * In the kind of a bound variable in a forall * In a coercion * In a Specified or Inferred argument to a function See Note [VarBndrs, ForAllTyBinders, TyConBinders, and visibility] in GHC.Core.TyCo.RepKghc-lib-parserLike K, but for many types.Kghc-lib-parserDo a topological sort on a list of tyvars, so that binders occur before occurrences E.g. given [ a::k, k::*, b::k ] it'll return a well-scoped list [ k::*, a::k, b::k ]This is a deterministic sorting operation (that is, doesn't depend on Uniques).It is also meant to be stable: that is, variables should not be reordered unnecessarily. This is specified in Note [ScopedSort] See also Note [Ordering of implicit variables] in GHC.Rename.HsTypeKghc-lib-parser+Get the free vars of a type in scoped orderKghc-lib-parser*Get the free vars of types in scoped orderKghc-lib-parserAll type constructors occurring in the type; looking through type synonyms, but not newtypes. When it finds a Class, it returns the class TyCon.Kghc-lib-parserShould we look under injective type families? See Note [Coverage condition for injective type families] in GHC.Tc.Instance.Family.Kghc-lib-parserlook under injective type families? See Note [Coverage condition for injective type families] in GHC.Tc.Instance.Family.6KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK6KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKh Safe-Inferred 89: ܄   Safe-Inferred )*16 <ghc-lib-parser,For now, we work only with nominal equality.<ghc-lib-parsercoaxrProves returns Nothing when it doesn't like the supplied arguments. When this happens in a coercion that means that the coercion is ill-formed, and Core Lint checks for that.<ghc-lib-parser-A more explicit representation for `t1 ~ t2`.<ghc-lib-parserA <: is a "coercion constructor", i.e. a named equality axiom.<ghc-lib-parserThe  [CoAxBranch] passed into the mapping function is a list of all previous branches, reversed <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<< Safe-Inferred kghc-lib-parserCreate a primitive % with the given , arguments of kind % with the given  -s, and the given result kind representation.Only use this in GHC.Builtin.Types.Prim.ghc-lib-parserCreate a primitive nullary % with the given ! and result kind representation.Only use this in GHC.Builtin.Types.Prim.µghc-lib-parserCreate a primitive % like , except the last argument is levity-polymorphic, where the levity argument is implicit and comes before other argumentsOnly use this in GHC.Builtin.Types.Prim.Ighc-lib-parser Primitive %s that are defined in GHC.Prim but not "exposed". See Note [Unexposed TyCons]Ighc-lib-parser Primitive %3s that are defined in, and exported from, GHC.Prim.Jghc-lib-parserThe FUN type constructor. FUN :: forall (m :: Multiplicity) -> forall {rep1 :: RuntimeRep} {rep2 :: RuntimeRep}. TYPE rep1 -> TYPE rep2 -> Type The runtime representations quantification is left inferred. This means they cannot be specified with -XTypeApplications.This is a deliberate choice to allow future extensions to the function arrow.Jghc-lib-parserGiven a Role, what TyCon is the type of equality predicates at that role?µghc-lib-parserroles of the arguments (must be non-empty), not including the implicit argument of kind F, which always has   roleghc-lib-parser(representation of the fully-applied typeIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIIIJJIJJIJJIJJIJJIJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIJJIJJIJJIJJIJJIJJIJJIJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK Safe-Inferred" .ghc-lib-parser'Type constructor for n-ary unboxed sum..ghc-lib-parser=Data constructor for i-th alternative of a n-ary unboxed sum..ghc-lib-parserSpecialization of õ for tuples/ghc-lib-parser "type LiftedRep = 'BoxedRep 'Lifted/ghc-lib-parser &type UnliftedRep = 'BoxedRep 'Unlifted/ghc-lib-parserBuild the type of a small tuple that holds the specified type of thing Flattens 1-tuples. See Note [One-tuples].gghc-lib-parserMake a fake, recovery % from an existing one. Used when recovering from errors in type declarationshghc-lib-parserBuilt-in syntax isn't "in scope" so these OccNames map to wired-in Names with BuiltInSyntax. However, this should only be necessary while resolving names produced by Template Haskell splices since we take care to encode built-in syntax names specially in interface files. See Note [Symbol table representation of names].Moreover, there is no need to include names of things that the user can't write (e.g. type representation bindings like $tc(,,,)).hghc-lib-parserIf the given name is that of a constraint tuple, return its arity.ĵghc-lib-parserCached type constructors, data constructors, and superclass selectors for constraint tuples. The outer array is indexed by the arity of the constraint tuple and the inner array is indexed by the superclass position.õghc-lib-parserGiven the TupleRep/SumRep tycon and list of RuntimeReps of the unboxed tuple;sum arguments, produces the return kind of an unboxed tuplesum type constructor. unboxedTupleSumKind [IntRep, LiftedRep] --> TYPE (TupleRep/SumRep [IntRep, LiftedRep])ŵghc-lib-parser/OccName for n-ary unboxed sum type constructor.Ƶghc-lib-parserOccName for i-th alternative of n-ary unboxed sum data constructor.ǵghc-lib-parserCached type and data constructors for sums. The outer array is indexed by the arity of the sum and the inner array is indexed by the alternative.hghc-lib-parserSpecialization of õ for sumsȵghc-lib-parserCreate type constructor and data constructors for n-ary unboxed sum.ɵghc-lib-parser@type ZeroBitRep = 'Tuple '[]hghc-lib-parser Given a type ty, if ty is not of kind Type, return a data constructor that will box it, and the type of the boxed thing, which does4 now have kind Type. See Note [Boxing constructors]ʵghc-lib-parser+See Note [Boxing constructors] wrinkle (W1)hghc-lib-parser,Make a tuple type. The list of types should not include any RuntimeRep specifications. Boxed 1-tuples are flattened. See Note [One-tuples]hghc-lib-parser,Make a tuple type. The list of types should not include any RuntimeRep specifications. Boxed 1-tuples are *not* flattened. See Note [One-tuples] and Note [Don't flatten tuples from HsSyn] in  GHC.Core.Makehghc-lib-parserMake a *promoted* list.˵ghc-lib-parserExtract the elements of a promoted list. Panics if the type is not a promoted listhghc-lib-parser>Replaces constraint tuple names with corresponding boxed ones.̵ghc-lib-parserdeclared infix?ghc-lib-parser datacon nameghc-lib-parser univ tyvarsghc-lib-parser ex tycovarsghc-lib-parseruser-written tycovarsghc-lib-parserargshghc-lib-parserof the elements of the listghc-lib-parserelements˵ghc-lib-parserThe promoted list............................///////////////////////////////////////////////////////BDGJJJJJJgggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhggghhhhgghhghhghhhhhhhhhhhhhggggggghhg/hgghhhghhhghhggghhhghhhh/hgBhgDhhghhhhhghghhghhhhhh/h...h.hhh/hhhhhhhh.hhhh.hhh..hh.gg.gh..h/Gh//JJJJJJ////h////hhh/ghhhghhg/ghh//////////h///h/////////////////////......////hhh..hh......h.hhhhhhhh.hhhhhh Safe-Inferred  =ghc-lib-parserData Constructor Boxerghc-lib-parserStrict fields by defaultghc-lib-parser?Disable automatic field unboxing (e.g. if we aren't optimising)ghc-lib-parserUnbox strict fieldsghc-lib-parserUnbox small strict fieldsghc-lib-parserUsed for imported data constructors See Note [Bangs on imported data constructors]͵ghc-lib-parserConjure a fresh local binder.εghc-lib-parser/Unpack/Strictness decisions from source module.This function should only ever be invoked for data constructor fields, and never on the field of a newtype constructor. See Note [HsImplBangs for newtypes].ϵghc-lib-parserWrappers+Workers and representation following UnpackStrictness decisionsеghc-lib-parserEvery alternative of an unboxed sum has exactly one field, and we use unboxed tuples when we need more than one field. This generates an unboxed tuple when necessary, to be used in unboxed sum alts.͵ghc-lib-parser%a string which will form part of the $'s nameghc-lib-parserthe type of the $*===E*===E Safe-Inferred (  bghc-lib-parserThe arity of the wrapped b is the arity at which it is safe to unleash. See Note [Understanding DmdType and DmdSig] in GHC.Types.Demandbghc-lib-parserThe result of b.bghc-lib-parserThe abstract domain A_t+ from the original 'CPR for Haskell' paper.bghc-lib-parserNumber of value arguments the denoted expression eats before returning the bbghc-lib-parserb) eventually unleashed when applied to b argumentsѵghc-lib-parser The number of field Cprs equals Z&. If all of them are top, better use ҵ%, as ensured by the pattern synonym b.ҵghc-lib-parserFlatConCpr tag is an efficient encoding for ѵ tag [TopCpr..]5. Purely for compiler perf. Can be constructed with b.bghc-lib-parser Unpacks a b-shaped b and returns the field bs wrapped in a b. Otherwise, it returns b with the appropriate b to assume for each field. The use of b( allows O(1) space for the common, non-b case.bghc-lib-parserTurns a b computed for the particular & into a b unleashable at that arity. See Note [Understanding DmdType and DmdSig] in GHC.Types.Demandbghc-lib-parserAdd extra value args to CprSigbghc-lib-parserBNF: cpr ::= '' -- TopCpr | n -- FlatConCpr n | n '(' cpr1 ',' cpr2 ',' ... ')' -- ConCpr n [cpr1,cpr2,...] | 'b' -- BotCpr*Examples: * `f x = f x` has result CPR b" * `1(1,)` is a valid (nested) b! denotation for `(I# 42#, f 42)`.bghc-lib-parserBNF: cpr_ty ::= cpr -- short form if arty == 0 | '\' arty '.' cpr -- if arty > 0Examples: * `f x y z = f x y z` has denotation `3.b` * `g !x = (x+1, x+2)` has denotation `1.1(1,1)`.bghc-lib-parserOnly print the CPR resultbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb Safe-Inferred6 5*7.ghc-lib-parserAn . is a tyvar/type pair representing an equality made in rejigging a GADT constructor.ghc-lib-parserData Constructor Representation See Note [Data constructor workers and wrappers].ghc-lib-parserA data constructor : , ,.ghc-lib-parserReturns an Id which looks like the Haskell-source constructor by using the wrapper if it exists (see Y') and failing over to the worker (see .).ghc-lib-parserIs this data constructor in a "type data" declaration? See Note [Type data declarations] in GHC.Rename.Module..ghc-lib-parserThe "full signature" of the . returns, in order:1) The result of Y2) The result of .3) The non-dependent GADT equalities. Dependent GADT equalities are implied by coercion variables in return value (2).4) The other constraints of the data constructor type, excluding GADT equalities&5) The original argument types to the . (i.e. before any change of the representation of the type) with linearity annotations#6) The original result type of the ..ghc-lib-parserThe "stupid theta" of the . , such as  data Eq a in: data Eq a => T a = ...See Note [The stupid context]..ghc-lib-parserReturns just the instantiated value argument types of a ., (excluding dictionary args).ghc-lib-parser-The labels for the fields of this particular ..ghc-lib-parser*Source-level arity of the data constructor.ghc-lib-parser$s for the type variables of the constructor, in the order the user wrote them.ghc-lib-parserThe type variables of the constructor, in the order the user wrote them.ghc-lib-parserThe existentially-quantified type/coercion variables of the constructor including dependent (kind-) GADT equalities.ghc-lib-parserThe type constructor that we are building via this data constructor.ghc-lib-parserGet the Id of the . worker: a function that is the "actual" constructor and has no top level binding in the program. The type may be different from the obvious one written in the source program. Panics if there is no such $ for this ..ghc-lib-parserThe  of the .+, giving it a unique, rooted identificationYghc-lib-parserHaskell Implementation BangBangs of data constructor arguments as generated by the compiler after consulting HsSrcBang, flags, etc.Yghc-lib-parser(Lazy field, or one with an unlifted typeYghc-lib-parserStrict but not unpacked fieldYghc-lib-parser;Strict and unpacked field co :: arg-ty ~ product-ty HsBangYghc-lib-parserHaskell Source BangBangs on data constructor arguments as the user wrote them in the source code.(HsSrcBang _ SrcUnpack SrcLazy) and #(HsSrcBang _ SrcUnpack NoSrcStrict) (without StrictData) makes no sense, we emit a warning (in checkValidDataCon) and treat it like !(HsSrcBang _ NoSrcUnpack SrcLazy)ӵghc-lib-parserTag, used for ordering .sYghc-lib-parserMake a non-dependent .Yghc-lib-parserCompare strictness annotationsYghc-lib-parserBuild a new data constructorYghc-lib-parserThe tag used for ordering .sYghc-lib-parserThe original type constructor used in the definition of this data constructor. In case of a data family instance, that will be the family type constructor.Yghc-lib-parserThe representation type of the data constructor, i.e. the sort type that will represent values of this type at runtimeYghc-lib-parser Should the . be presented infix?Yghc-lib-parser b -> T [a] rather than: 3T :: forall a c. forall b. (c~[a]) => a -> b -> T cThe type variables are quantified in the order that the user wrote them. See )Note [DataCon user type variable binders].NB: If the constructor is part of a data instance, the result type mentions the family tycon, not the internal one.Zghc-lib-parserFinds the instantiated types of the arguments required to construct a . representation NB: these INCLUDE any dictionary args but EXCLUDE the data-declaration context, which is discarded It's all post-flattening etc; this is a representation typeZghc-lib-parserGiven a data constructor dc with n( universally quantified type variables a_{1}, a_{2}, ..., a_{n}&, and given a list of argument types dc_args of length m where m <= n, then: dataConInstUnivs dc dc_args  Will return: ?[dc_arg_{1}, dc_arg_{2}, ..., dc_arg_{m}, a_{m+1}, ..., a_{n}] ;That is, return the list of universal type variables with a_{1}, a_{2}, ..., a_{m} instantiated with  dc_arg_{1},  dc_arg_{2}, ...,  dc_arg_{m}. It is possible for m to be less than n, in which case the remaining n - m elements will simply be universal type variables (with their kinds possibly instantiated). Examples:Given the data constructor D :: forall a b. Foo a b and dc_args  [Int, Bool], then dataConInstUnivs D dc_args will return  [Int, Bool].Given the data constructor D :: forall a b. Foo a b and dc_args [Int], then @dataConInstUnivs D dc_args will return [Int, b].Given the data constructor E :: forall k (a :: k). Bar k a and dc_args [Type], then @dataConInstUnivs D dc_args will return [Type, (a :: Type)].This is primarily used in GHC.Tc.Deriv.* in service of instantiating data constructors' field types. See 2Note [Instantiating field types in stock deriving] for a notable example of this.Zghc-lib-parserReturns the argument types of the wrapper, excluding all dictionary arguments and without substituting for any type variablesZghc-lib-parserReturns constraints in the wrapper type, other than those in the dataConEqSpecZghc-lib-parserReturns the arg types of the worker, including *all* non-dependent evidence, after any flattening has been done and without substituting for any type variablesZghc-lib-parser The string package:module.name identifying a constructor, which is attached to its info table and used by the GHCi debugger and the heap profilerZghc-lib-parserVanilla .8s are those that are nice boring Haskell 98 constructorsZghc-lib-parser Is this the . of a newtype?Zghc-lib-parserShould this DataCon be allowed in a type even without -XDataKinds? Currently, only Lifted & UnliftedZghc-lib-parserWere the type variables of the data con written in a different order than the regular order (universal tyvars followed by existential tyvars)?This is not a cheap test, so we minimize its use in GHC as much as possible. Currently, its only call site in the GHC codebase is in  mkDataConRep in MkId , and so Z is only called at most once during a data constructor's lifetime.Zghc-lib-parserExtract the type constructor, type argument, data constructor and it's representation4 argument types from a type if it is a product type.Precisely, we return Just" for any data type that is all of:$Concrete (i.e. constructors visible)Single-constructor... which has no existentialsWhether the type is a data type or a newtype.Yghc-lib-parser"Is the constructor declared infix?ghc-lib-parser#TyConRepName for the promoted TyConghc-lib-parser(Strictness/unpack annotations, from userghc-lib-parserField labels for the constructor, if it is a record, otherwise emptyghc-lib-parser Universals.ghc-lib-parser Existentials.ghc-lib-parser User-written 1/s. These must be Inferred/Specified. See Note [TyVarBinders in DataCons]ghc-lib-parserGADT equalities ghc-lib-parser0Theta-type occurring before the arguments proper ghc-lib-parserOriginal argument types ghc-lib-parserOriginal result type ghc-lib-parserSee comments on F ghc-lib-parserRepresentation type constructorghc-lib-parserConstructor tagghc-lib-parser:The "stupid theta", context of the data declaration e.g. data Eq a => T a ...ghc-lib-parser Worker Idghc-lib-parserRepresentationZghc-lib-parserA datacon with no existentials or equality constraints However, it can have a dcTheta (notably it can be a class dictionary, with superclasses)ghc-lib-parserInstantiated at these typesZghc-lib-parserA product type, perhaps $$$$$$&..YYYYYYY................YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ..YYYYYYY YYYYYYYYY Y.YYYYY$$$$$$ Y&YZ..ZYY.YZZZY.Y..Y.ZZZZ.ZZZ.ZZZ.ZY..YZZZZZZZZZZ.ZZZ.ZZZZYYYYYYZ. Safe-Inferred 7յghc-lib-parsercomplete bipartite graphֵghc-lib-parsercomplete graph׵ghc-lib-parser Resolves all ص0, by pushing them in, and simplifies `D D @ = @`ٵghc-lib-parserShallow empty check.333333333333333333333333333333333333333333 Safe-Inferred8 UXghc-lib-parserA regular type variableXghc-lib-parser#Declare that this type variable is apart from the type provided. That is, the type variable will never be instantiated to that type. See also Note [Binding when looking up instances] in GHC.Core.InstEnv.Xghc-lib-parserWhy are two types X? X takes precedence: This is used (only) in Note [Infinitary substitution in lookup] in GHC.Core.InstEnv As of Feb 2022, we never differentiate between MARTypeFamily and MARTypeVsConstraint; it's really only MARInfinite that's interesting here.Xghc-lib-parsermatching e.g. F Int ~? BoolXghc-lib-parsermatching e.g. a ~? Maybe aXghc-lib-parsermatching Type ~? Constraint or the arrow types See Note [Type and Constraint are not apart] in GHC.Builtin.Types.PrimXghc-lib-parserSee Note [Unification result]Xghc-lib-parser2Some unification functions are parameterised by a X, which says whether or not to allow a certain unification to take place. A X takes the $ involved along with the %" it will potentially be bound to.It is possible for the variable to actually be a coercion variable (Note [Matching coercion variables]), but only when one-way matching. In this case, the % will be a I.Xghc-lib-parsertcMatchTy t1 t2) produces a substitution (over fvs(t1)) s such that s(t1) equals t2. The returned substitution might bind coercion variables, if the variable is an argument to a GADT constructor.Precondition: typeKind ty1 N typeKind ty2We don't pass in a set of "template variables" to be bound by the match, because tcMatchTy (and similar functions) are always used on top-level types, so we can bind any of the free variables of the LHS. See also Note [tcMatchTy vs tcMatchTyKi]Xghc-lib-parserLike X, but allows the kinds of the types to differ, and thus matches them as well. See also Note [tcMatchTy vs tcMatchTyKi]Xghc-lib-parserThis is similar to X, but extends a substitution See also Note [tcMatchTy vs tcMatchTyKi]Xghc-lib-parserLike X but over a list of types. See also Note [tcMatchTy vs tcMatchTyKi]Xghc-lib-parserLike X but over a list of types. See also Note [tcMatchTy vs tcMatchTyKi]Xghc-lib-parserLike X, but extending a substitution See also Note [tcMatchTy vs tcMatchTyKi]Xghc-lib-parserLike X, but extending a substitution See also Note [tcMatchTy vs tcMatchTyKi]ڵghc-lib-parser=Same as tc_match_tys_x, but starts with an empty substitution۵ghc-lib-parser Worker for X and XXghc-lib-parserThis one is called from the expression matcher, which already has a MatchEnv in handYghc-lib-parserAllow binding only for any variable in the set. Variables may be bound to any type. Used when doing simple matching; e.g. can we find a substitution S = [a :-> t1, b :-> t2] such that S( Maybe (a, b->Int ) = Maybe (Bool, Char -> Int) Yghc-lib-parser-Allow the binding of any variable to any typeYghc-lib-parserGiven a list of pairs of types, are any two members of a pair surely apart, even after arbitrary type function evaluation and substitution?Yghc-lib-parserSimple unification of two types; all type variables are bindable Precondition: the kinds are already equalYghc-lib-parserLike Y, but also unifies the kindsYghc-lib-parserUnify two types, treating type family applications as possibly unifying with anything and looking through injective type family applications. Precondition: kinds are the sameYghc-lib-parserLike Y but also unifies the kindsYghc-lib-parsertcUnifyTysFG bind_tv tys1 tys2! attempts to find a substitution s% (whose domain elements all respond X to bind_tv ) such that s(tys1) and that of s(tys2) are equal, as witnessed by the returned Coercions. This version requires that the kinds of the types are the same, if you unify left-to-right.ܵghc-lib-parserThis function is actually the one to call the unifier -- a little too general for outside clients, though.ݵghc-lib-parser(Converts any SurelyApart to a MaybeApartYghc-lib-parserY is sort of inverse to <. In particular, if  liftCoMatch vars ty co == Just s, then liftCoSubst s ty == co , where == there means that the result of < has the same type as the original co; but may be different under the hood. That is, it matches a type against a coercion of the same "shape", and returns a lifting substitution which could have been used to produce the given coercion from the given type. Note that this function is incomplete -- it might return Nothing when there does indeed exist a possible lifting context.This function is incomplete in that it doesn't respect the equality in N. That is, it's possible that this will succeed for t1 and fail for t2, even when t1 N t2. That's because it depends on there being a very similar structure between the type and the coercion. This incompleteness shouldn't be all that surprising, especially because it depends on the structure of the coercion, which is a silly thing to do.The lifting context produced doesn't have to be exacting in the roles of the mappings. This is because any use of the lifting context will also require a desired role. Thus, this algorithm prefers mapping to nominal coercions where it can do so.޵ghc-lib-parser޵ does all the actual work for Y. Xghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTargetXghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot; in principle the template variables could be free in the targetXghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitutionXghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitutionXghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitutionڵghc-lib-parser match kinds?۵ghc-lib-parser match kinds?Xghc-lib-parsertemplate variablesghc-lib-parsertype substitution to extendghc-lib-parserTemplateghc-lib-parserTargetYghc-lib-parserTrue  =" do two-way unification; False  =: do one-way matching. See end of sec 5.2 from the paperYghc-lib-parserA regular one-shot (idempotent) substitution that unifies the erased types. See comments for Yܵghc-lib-parserTrue  = unify; False  = matchghc-lib-parserTrue  = doing an injectivity checkghc-lib-parserTrue  = treat the kinds as wellghc-lib-parsersubstitution to extend޵ghc-lib-parserambient helpful infoghc-lib-parserincoming substghc-lib-parserty, type to matchghc-lib-parser+co :: lty ~r rty, coercion to match againstghc-lib-parser :: kind(lsubst(ty)) ~N kind(lty)ghc-lib-parser :: kind(rsubst(ty)) ~N kind(rty)ghc-lib-parserJust env ==> liftCoSubst Nominal env ty == co, modulo roles. Also: Just env ==> lsubst(ty) == lty and rsubst(ty) == rty, where lsubst = lcSubstLeft(env) and rsubst = lcSubstRight(env)#XXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYY#XXXXXXXXXYYYYYYXXXXYYXXXXXXXXXYYYYY Safe-Inferred v!-Kghc-lib-parserA substitution of %s for 1sKghc-lib-parserA substitution of %s for $s and %s for 1sKghc-lib-parserA substitution of Exprs for non-coercion $sKghc-lib-parser!Type & coercion & id substitutionThe Subst data type defined in this module contains substitution for tyvar, covar and id. However, operations on IdSubstEnv (mapping from Id to CoreExpr%) that require the definition of the Expr data type are defined in GHC.Core.Subst to avoid circular module dependency.Lghc-lib-parserComposes two substitutions, applying the second one provided first, like in function composition. This function leaves IdSubstEnv untouched because IdSubstEnv is not used during substitution for types.Lghc-lib-parserChecks whether the tyvar and covar environments are empty. This function should be used over L when substituting for types, because types currently do not contain expressions; we can safely disregard the expression environment when deciding whether to skip a substitution. Using L gives us a non-trivial performance boost (up to 70% less allocation for T18223)Lghc-lib-parserMake a TCvSubst with specified tyvar subst and empty covar substLghc-lib-parserMake a TCvSubst with specified covar subst and empty tyvar substLghc-lib-parser Int) case x of { C f -> ... }Here, f gets an  OtherCon [] unfolding.cghc-lib-parser;An unfolding with redundant cached information. Parameters:uf_tmpl: Template used to perform unfolding; NB: Occurrence info is guaranteed correct: see Note [OccInfo in unfoldings and rules]'uf_is_top: Is this a top level binding? uf_is_value:  exprIsHNF* template (cached); it is ok to discard a  on this variableuf_is_work_free: Does this waste only a little work if we expand it inside an inlining? Basically this is a cached version of exprIsWorkFree!uf_guidance: Tells us about the size of the unfolding templatecghc-lib-parserThe 3 in the c is a superset of variables that are currently in scope. See Note [The InScopeSet invariant].cghc-lib-parserA c is:"Local" if the function it is a rule for is defined in the same module as the rule itself."Orphan" if nothing on the LHS is defined in the same module as the rule itselfcghc-lib-parserBuilt-in rules are used for constant folding and suchlike. They have no free variables. A built-in rule is always visible (there is no such thing as an orphan built-in rule.)cghc-lib-parser1Name of the rule, for communication with the usercghc-lib-parserWhen the rule is activecghc-lib-parser Name of the  at the head of this rulecghc-lib-parser7Name at the head of each argument to the left hand sidecghc-lib-parserVariables quantified overcghc-lib-parserLeft hand side argumentscghc-lib-parserRight hand side of the rule Occurrence info is guaranteed correct See Note [OccInfo in unfoldings and rules]cghc-lib-parserTrue  = this rule is auto-generated (notably by Specialise or SpecConstr) False  = generated at the user's behest See Note [Trimming auto-rules] in GHC.Iface.Tidy% for the sole purpose of this field.cghc-lib-parser the rule was defined in, used to test if we should see an orphan rule.cghc-lib-parser%Whether or not the rule is an orphan.cghc-lib-parserTrue iff the fn at the head of the rule is defined in the same module as the rule and is not an implicit $ (like a record selector, class operation, or data constructor). This is different from c, where a rule can avoid being an orphan if *any* Name in LHS of the rule was defined in the same module as the rule.cghc-lib-parserNumber of arguments that c1 consumes, if it fires, including type argumentscghc-lib-parserThis function does the rewrite. It given too many arguments, it simply discards them; the returned $ is just the rewrite of c applied to the first c argscghc-lib-parserIs this instance an orphan? If it is not an orphan, contains an  ? witnessing the instance's non-orphanhood. See Note [Orphans]dghc-lib-parserBinding, used for top level bindings in a module and local bindings in a let.dghc-lib-parser3A case alternative constructor (i.e. pattern match)dghc-lib-parser A literal: case e of { 1 -> ... } Invariant: always an *unlifted* literal See Note [Literal alternatives]dghc-lib-parserTrivial alternative: case e of { _ -> ... }dghc-lib-parserA case split alternative. Consists of the constructor leading to the alternative, the variables bound from the constructor, and the expression to be executed given that binding. The default alternative is (DEFAULT, [], rhs)dghc-lib-parserType synonym for expressions that occur in function argument positions. Only d should contain a % at top level, general $ should notdghc-lib-parserReturns true if c is orphan.dghc-lib-parserReturns true if c is not an orphan.dghc-lib-parserThe number of arguments the c4 must be applied to before the rule can match on itdghc-lib-parserThe  of the ' at the head of the rule left hand sidedghc-lib-parserSet the  of the ' at the head of the rule left hand sidedghc-lib-parserThere is no known cdghc-lib-parser body) == (x -> f body)dghc-lib-parserAttempt to remove the last N arguments of a function call. Strip off any ticks or coercions encountered along the way and any at the end.dghc-lib-parserLike  collectArgs, but also collects looks through floatable ticks if it means that we can find more arguments.dghc-lib-parser$Will this variable exist at runtime?dghc-lib-parser/Will this argument expression exist at runtime?dghc-lib-parserReturns True for value arguments, false for type args NB: coercions are value arguments (zero width, to be sure, like State#, but still value args).dghc-lib-parserReturns True iff the expression is a % or % expression at its top leveldghc-lib-parserReturns True iff the expression is a % expression at its top leveldghc-lib-parserReturns True iff the expression is a %; expression at its top level. Note this does NOT include %s.dghc-lib-parser8The number of binders that bind values rather than typesdghc-lib-parserThe number of argument expressions that are values rather than types at their top leveldghc-lib-parserTakes a nested application expression and returns the function being applied and the arguments to which it is applieddghc-lib-parserAs d but for c rather than $dghc-lib-parserAs d but for c rather than $$$$dddddddddd%%%%%&'+111111112cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd$ddddddddddddddddddddc$ccc$ccccccd1ccccdcd1c111ccccccc1c11cddddddddddddddddddddddddddddd2dddddddddddddddddddddddddddddccccccccccccccccccccccccccc%%%%%ddddddddddddddddddddddddddd'cccccccccccccccccddddddddcccdddcccccccccccccccc&ccc+dddddddddd4d4d4d4d4 Safe-Inferred +ghc-lib-parser Rule options+ghc-lib-parserTarget platform+ghc-lib-parser-Enable more advanced numeric constant folding+ghc-lib-parserCut down precision of Rational values to that of Float/Double if disabled+ghc-lib-parserEnable rules for bignums++++++++++++ Safe-Inferred  Xghc-lib-parserA X is a X which allows us to distinguish between binding forms whose binders have different types. For example, if we are doing a O lookup on (x :: Int) -> ()), we should not pick up an entry in the O for (x :: Bool) -> (): we can disambiguate this by matching on the type (or kind, if this a binder in a type) of the binder.We also need to do the same for multiplicity! Which, since multiplicities are encoded simply as a %, amounts to have a Trie for a pair of types. Tries of pairs are composition.Xghc-lib-parser DeBruijn a represents a modulo alpha-renaming. This is achieved by equipping the value with a X, which tracks an on-the-fly deBruijn numbering. This allows us to define an ' instance for  DeBruijn a., even if this was not (easily) possible for a. Note: we purposely don't export the constructor. Make a helper function if you find yourself needing it.Xghc-lib-parserA X doesn't do a kind-check. Thus, when lookup up (t |> g), you'll find entries inserted under (t), even if (g) is non-reflexive.Xghc-lib-parser TypeMap a is a map from % to a. If you are a client, this is the type you want. The keys in this map may have different kinds.ghc-lib-parser!An equality relation between two %s (known below as t1 :: k2 and t2 :: k2)ghc-lib-parser t1 /= t2ghc-lib-parsert1 ~ t2? and there are not casts in either, therefore we can conclude k1 ~ k2ghc-lib-parsert1 ~ t2 yet one of the types contains a cast so they may differ in kindghc-lib-parser TypeMapX a is the base map from  DeBruijn Type to a, but without the O optimization. See Note [Computing equality on types] in GHC.Core.Type.Xghc-lib-parser TypeMapG a is a map from  DeBruijn Type to a. The extended key makes it suitable for recursive traversal, since it can track binders, but it is strictly internal to this module. If you are including a X inside another O, this is the type you want. Note that this lookup does not do a kind-check. Thus, all keys in this map must have the same kind. Also note that this map respects the distinction between Type and  Constraint, despite the fact that they are equivalent type synonyms in Core.ghc-lib-parserSqueeze out any synonyms, and change TyConApps to nested AppTys. Why the last one? See Note [Equality on AppTys] in GHC.Core.TypeWe also keep (Eq a => a) as a FunTy, distinct from ((->) (Eq a) a).Xghc-lib-parser Extend a X$ with a type in the given context. 8extendTypeMapWithScope m (mkDeBruijnContext [a,b,c]) t v is equivalent to #extendTypeMap m (forall a b c. t) v<, but allows reuse of the context over multiple insertions.Xghc-lib-parserConstruct a deBruijn environment with the given variables in scope. e.g. mkDeBruijnEnv [a,b,c] constructs a context  forall a b c.Xghc-lib-parserSynthesizes a  DeBruijn a from an a9, by assuming that there are no bound binders (an empty X<). This is usually what you want if there isn't already a X in scope.'OOOOOOOOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'OOOOOOOOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Safe-Inferred  OOOOOOOOOOOOOOOOOOOOOOOOOOPOOOOOOOOOOOOOOOOOOOOOOOOPOOO1O1O1 Safe-Inferred?  Wghc-lib-parser>A choice of equality relation. This is separate from the type   because  3 does not define a (non-trivial) equality relation.Wghc-lib-parserA predicate in the solver. The solver tries to prove Wanted predicates from Given ones.Wghc-lib-parserA typeclass predicate.Wghc-lib-parserA type equality predicate.Wghc-lib-parserAn irreducible predicate.Wghc-lib-parserA quantified predicate.= w1 and mkMultSup w1 w2 >= w2.. See Note [Overapproximating multiplicities].Nghc-lib-parser submult w1 w2' check whether a value of multiplicity w1+ is allowed where a value of multiplicity w2& is expected. This is a partial order.%%H%IILLMMMMMMNNNNNNNNNN%LLNNNN%HI%MMMMMMNNNNNIN Safe-Inferred Fghc-lib-parserShould this name be considered in-scope, even though it technically isn't?This ensures that we don't filter out information because, e.g., Data.Kind.Type isn't imported. See Note [pretendNameIsInScope].===========================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF===========================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF Safe-Inferred 1<ghc-lib-parserInformation about an associated type family default implementation. This is used solely for validity checking. See (Note [Type-checking default assoc decls] in  GHC.Tc.TyCl."<<<==============================="====<<=<========================== Safe-Inferred 689: :::::::::::::::::::::::::::::::::::::::: Safe-Inferred *sghc-lib-parserRecover the type of a well-typed Core expression. Fails when applied to the actual d7 expression as it cannot really be said to have a typesghc-lib-parser4Returns the type of the alternatives right hand sidesghc-lib-parserReturns the type of the first alternative, which should be the same as for all alternativessghc-lib-parserMakes a (->) type or an implicit forall type, depending on whether it is given a type variable or a term variable. This is used, for example, when producing the type of a lambda. Always uses Inferred binders.sghc-lib-parsers% for multiple type or value argumentssghc-lib-parserDetermines the type resulting from applying an expression with given typesghc-lib-parserWrap the given expression in the coercion safely, dropping identity coercions and coalescing nested coercionssghc-lib-parserWraps the given expression in the source annotation, dropping the annotation if possible.sghc-lib-parser b }&depending on whether we have to use a case or let" binding for the expression (see s). It's used by the desugarer to avoid building bindings that give Core Lint a heart attack, although actually the simplifier deals with them perfectly well. See also sghc-lib-parserTests whether we have to use a case rather than let7 binding for this expression as per the invariants of $: see  GHC.Core#let_can_float_invariantsghc-lib-parserThis guy constructs the value that the scrutinee must have given that you are in one particular branch of a casesghc-lib-parser$Extract the default case alternativesghc-lib-parserFind the case alternative corresponding to a particular constructor: panics if no such constructor existssghc-lib-parserMerge alternatives preserving order; alternatives in the first argument shadow ones in the secondsghc-lib-parserGiven: )case (C a b x y) of C b x y -> ...We want to drop the leading type argument of the scrutinee leaving the arguments to match against the patternsghc-lib-parser$Refine the default alternative to a d, if there is a unique way to do so. See Note [Refine DEFAULT case alternatives]sghc-lib-parsers' returns True of an expression that is:Safe to evaluate even if normal order eval might not evaluate the expression at all, orSafe not- to evaluate even if normal order would do soIt is usually called on arguments of unlifted type, but not always In particular, Simplify.rebuildCase calls it on lifted types when a 'case' is a plain . See the example in Note [exprOkForSpeculation: case expressions] belowPrecisely, it returns True iff: a) The expression guarantees to terminate, b) soon, c) without causing a write side effect (e.g. writing a mutable variable) d) without throwing a Haskell exception e) without risking an unchecked runtime exception (array out of bounds, divide by zero)For exprOkForSideEffects( the list is the same, but omitting (e).Note that exprIsHNF implies exprOkForSpeculation exprOkForSpeculation implies exprOkForSideEffects3See Note [PrimOp can_fail and has_side_effects] in GHC.Builtin.PrimOps and Note [Transformations affected by can_fail and has_side_effects];As an example of the considerations in this test, consider: -let x = case y# +# 1# of { r# -> I# r# } in Ebeing translated to: 3case y# +# 1# of { r# -> let x = I# r# in E }We can only do this if the y + 1 is ok for speculation: it has no side effects, and can't diverge or raise an exception.sghc-lib-parsers' returns True of an expression that is:Safe to evaluate even if normal order eval might not evaluate the expression at all, orSafe not- to evaluate even if normal order would do soIt is usually called on arguments of unlifted type, but not always In particular, Simplify.rebuildCase calls it on lifted types when a 'case' is a plain . See the example in Note [exprOkForSpeculation: case expressions] belowPrecisely, it returns True iff: a) The expression guarantees to terminate, b) soon, c) without causing a write side effect (e.g. writing a mutable variable) d) without throwing a Haskell exception e) without risking an unchecked runtime exception (array out of bounds, divide by zero)For exprOkForSideEffects( the list is the same, but omitting (e).Note that exprIsHNF implies exprOkForSpeculation exprOkForSpeculation implies exprOkForSideEffects3See Note [PrimOp can_fail and has_side_effects] in GHC.Builtin.PrimOps and Note [Transformations affected by can_fail and has_side_effects];As an example of the considerations in this test, consider: -let x = case y# +# 1# of { r# -> I# r# } in Ebeing translated to: 3case y# +# 1# of { r# -> let x = I# r# in E }We can only do this if the y + 1 is ok for speculation: it has no side effects, and can't diverge or raise an exception.sghc-lib-parserA special version of s used during Note [Speculative evaluation]. When the predicate arg fun_ok returns False for b, then b! is never considered ok-for-spec.sghc-lib-parserShould we look past this tick when eta-expanding the given function?See Note [Ticks and mandatory eta expansion] Takes the function we are applying as argument.sghc-lib-parser:exprIsHNF returns true for expressions that are certainly already evaluated to head normal form. This is used to decide whether it's ok to change: case x of _ -> einto: e-and to decide whether it's safe to discard a . So, it does not treat variables as evaluated, unless they say they are. However, it does treat partial applications and constructor applications as values, even if their arguments are non-trivial, provided the argument type is lifted. For example, both of these are values: &(:) (f x) (map f xs) map (...redex...)because & on such things completes immediately.3For unlifted argument types, we have to be careful: C (f x :: Int#)Suppose f x diverges; then C (f x) is not a value. We check for this using needsCaseBinding belowsghc-lib-parser Similar to s but includes CONLIKE functions as well as data constructors. Conlike arguments are considered interesting by the inliner.ghc-lib-parserReturns true for values or value-like expressions. These are lambdas, constructors / CONLIKE functions (as determined by the function argument) or PAPs.sghc-lib-parserCan we bind this $ at the top level?sghc-lib-parserCheck if the expression is zero or more Ticks wrapped around a literal string.sghc-lib-parserExtract a literal string from an expression that is zero or more Ticks wrapped around a literal string. Returns Nothing if the expression has a different shape. Used to "look through" Ticks in places that need to handle literal strings.sghc-lib-parserA cheap equality test which bales out fast! If it returns True the arguments are definitely equal, otherwise, they may or may not be equal.sghc-lib-parser9Cheap expression equality test, can ignore ticks by type.sghc-lib-parser-Finds differences between core bindings, see diffExpr.The main problem here is that while we expect the binds to have the same order in both lists, this is not guaranteed. To do this properly we'd either have to do some sort of unification or check all possible mappings, which would be seriously expensive. So instead we simply match single bindings as far as we can. This leaves us just with mutually recursive and/or mismatching bindings, which we then speculatively match by ordering them. It's by no means perfect, but gets the job done well enough.%Only used in GHC.Core.Lint.lintAnnotsghc-lib-parserFinds differences between core expressions, modulo alpha and renaming. Setting top means that the IdInfo6 of bindings will be checked for differences as well.ghc-lib-parserFind differences in IdInfo. We will especially check whether the unfoldings match, if present (see  diffUnfold).ghc-lib-parserFind differences in unfoldings. Note that we will not check for differences of IdInfo in unfoldings, as this is generally redundant, and can lead to an exponential blow-up in complexity.ghc-lib-parser)Add location information to diff messagessghc-lib-parserTrue if the type has no non-bottom elements, e.g. when it is an empty datatype, or a GADT with non-satisfiable type parameters, e.g. Int :~: Bool. See Note [Bottoming expressions]See Note [No alternatives lint check] for another use of this function.sghc-lib-parserIf 1normSplitTyConApp_maybe _ ty = Just (tc, tys, co) then ty |> co = tc tys. It's 4#, but looks through coercions via Y. Hence the "norm" prefix.sghc-lib-parser-collectMakeStaticArgs (makeStatic t srcLoc e) yields Just (makeStatic, t, srcLoc, e).Returns Nothing for every other expression.sghc-lib-parserDoes this binding bind a join point (or a recursive group of join points)?sghc-lib-parserDo we expect there to be any benefit if we make this var strict in order for it to get treated as as cbv argument? See Note [Which Ids should be strictified] See Note [CBV Function Ids] for more background.sghc-lib-parserCase alternative constructorghc-lib-parser!Things bound by the pattern matchghc-lib-parser*The type arguments to the case alternativesghc-lib-parserType constructor of scrutinee's type (used to prune possibilities)ghc-lib-parserAnd its type argumentsghc-lib-parser imposs_cons: constructors known to be impossible due to the form of the scrutineeghc-lib-parser Alternativessghc-lib-parser$Uniques for constructing new bindersghc-lib-parser.Multiplicity annotation of the case expressionghc-lib-parser$Type constructor of scrutinee's typeghc-lib-parser"Type arguments of scrutinee's typeghc-lib-parser3Constructors that cannot match the DEFAULT (if any)ghc-lib-parserK', if a default alt was replaced with a dMdsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssMsssssssssssssssssssssssssdssssssssssssssssssss Safe-Inferred 9"Xghc-lib-parserStores X as well as a kind coercion.1Used when rewriting arguments to a type function f.Invariant: when the stored reductions are of the form co_i :: ty_i ~ xi_i, the kind coercion is of the form kco :: typeKind (f ty_1 ... ty_n) ~ typeKind (f xi_1 ... xi_n)The type function f depends on context.Xghc-lib-parserA collection of X:s where the coercions and the types are stored separately.Use X to obtain X from a list of Xs.This datatype is used in X, mkClassPredRedns and X-, which expect separate types and coercions.Invariant: the two stored lists are of the same length, and the RHS type of each coercion is the corresponding type.Xghc-lib-parserA X in which the % has   role.Xghc-lib-parserA X in which the % has   role.Xghc-lib-parser!Stores a heterogeneous reduction.The stored kind coercion must relate the kinds of the stored reduction. That is, in "HetReduction (Reduction co xi) kco, we must have: / co :: ty ~ xi kco :: typeKind ty ~ typeKind xiXghc-lib-parserA X4 is the result of an operation that rewrites a type ty_in. The X includes the rewritten type ty_out and a % co such that co :: ty_in ~ ty_out, where the role of the coercion is determined by the context. That is, the LHS type of the coercion is the original type ty_in+, while its RHS type is the rewritten type ty_out.A Reduction is always homogeneous, unless it is wrapped inside a X-, which separately stores the kind coercion.See Note [The Reduction type].Xghc-lib-parser!Create a heterogeneous reduction.Pre-condition: the provided kind coercion (second argument) relates the kinds of the stored reduction. That is, if the coercion stored in the X is of the form  co :: ty ~ xi4Then the kind coercion supplied must be of the form:  kco :: typeKind ty ~ typeKind xiXghc-lib-parser%Homogenise a heterogeneous reduction.Given "HetReduction (Reduction co xi) kco, with 1 co :: ty ~ xi kco :: typeKind(ty) ~ typeKind(xi)'this returns the homogeneous reduction: hco :: ty ~ ( xi |> sym kco )Xghc-lib-parser Create a X from a pair of a % and a 'Type.Pre-condition: the RHS type of the coercion matches the provided type (perhaps up to zonking).Use X! when you only have the coercion.Xghc-lib-parser4Get the original, unreduced type corresponding to a X.This is obtained by computing the LHS kind of the stored coercion, which may be slow.Xghc-lib-parserTurn a % into a X- by inspecting the RHS type of the coercion. Prefer using X when you already know the RHS type of the coercion, to avoid computing it anew.Xghc-lib-parser1Downgrade the role of the coercion stored in the X.Xghc-lib-parser1Downgrade the role of the coercion stored in the X, from   to  .Xghc-lib-parser0Compose a reduction with a coercion on the left.Pre-condition: the provided coercion's RHS type must match the LHS type of the coercion that is stored in the reduction.Xghc-lib-parserThe reflexive reduction.Xghc-lib-parser Create a X from a kind cast, in which the casted type is the rewritten type.Given ty :: k1, mco :: k1 ~ k2, produces the X ty ~res_co~> (ty |> mco) at the given  .Xghc-lib-parser Create a X from a kind cast, in which the casted type is the rewritten type.Given ty :: k1, mco :: k1 ~ k2, produces the X ty ~res_co~> (ty |> mco) at the given  .Xghc-lib-parser Create a X from a kind cast, in which the casted type is the original (non-rewritten) type.Given ty :: k1, mco :: k1 ~ k2, produces the X (ty |> mco) ~res_co~> ty at the given  .Xghc-lib-parser Create a X from a kind cast, in which the casted type is the original (non-rewritten) type.Given ty :: k1, mco :: k1 ~ k2, produces the X (ty |> mco) ~res_co~> ty at the given  .Xghc-lib-parser Apply a cast to the result of a X.Given a X ty1 ~co1~> (ty2 :: k2) and a kind coercion kco with LHS kind k2, produce a new X ty1 ~co2~> ( ty2 |> kco ) of the given  ; (which must match the role of the coercion stored in the X argument).Xghc-lib-parser Apply a cast to the result of a X , using an %.Given a X ty1 ~co1~> (ty2 :: k2) and a kind coercion mco with LHS kind k2, produce a new X ty1 ~co2~> ( ty2 |> mco ) of the given  ; (which must match the role of the coercion stored in the X argument).Xghc-lib-parserApply a cast to a X1, casting both the original and the reduced type.Given cast_co and X  ty ~co~> xi, this function returns the X ,(ty |> cast_co) ~return_co~> (xi |> cast_co) of the given  ; (which must match the role of the coercion stored in the X argument).Pre-condition: the % passed in is the same as the LHS type of the coercion stored in the X.Xghc-lib-parserApply casts on both sides of a X (of the given  ).Use X when you want to cast both the original and reduced types in a X using the same coercion.Pre-condition: the % passed in is the same as the LHS type of the coercion stored in the X.Xghc-lib-parser Apply one X to another. Combines < and 4.Xghc-lib-parserCreate a function X. Combines mkFunCo and I.Xghc-lib-parser Create a X& associated to a  type, from a kind X and a body X. Combines < and %.Xghc-lib-parser Create a X of a quantified type from a X of the body. Combines R and I.Xghc-lib-parser Create a X# from a coercion between coercions. Combines < and 4.Xghc-lib-parserCreate a reflexive X whose RHS is the given %, with the specified  .Xghc-lib-parserCreate X. from individual lists of coercions and types.The lists should be of the same length, and the RHS type of each coercion should match the specified type in the other list.Xghc-lib-parser Combines R and L.Xghc-lib-parser TyConAppCo for X s: combines < and 4.Xghc-lib-parserReduce the arguments of a = %.Xghc-lib-parserObtain X from a list of Xs by unzipping.Xghc-lib-parserheterogeneous reductionghc-lib-parser kind coercionXghc-lib-parser desired roleghc-lib-parser current roleXghc-lib-parser original typeghc-lib-parsercoercion to cast withghc-lib-parser'rewritten type, with rewriting coercionXghc-lib-parser original typeghc-lib-parser!coercion to cast with on the leftghc-lib-parser'rewritten type, with rewriting coercionghc-lib-parser"coercion to cast with on the rightXghc-lib-parsermultiplicity reductionghc-lib-parserargument reductionghc-lib-parserresult reductionXghc-lib-parserkind reductionghc-lib-parserbody reductionXghc-lib-parser!role of the created coercion, "r"ghc-lib-parserco :: phi1 ~N phi2ghc-lib-parser g1 :: phi1ghc-lib-parser g2 :: phi2ghc-lib-parserres_co :: g1 ~r g2)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Safe-Inferred )*8 F4 ghc-lib-parser1a monad for the normalisation functions, reading Y, a <, and a  .Yghc-lib-parser;Result of testing two type family equations for injectiviy.Yghc-lib-parserEither RHSs are distinct or unification of RHSs leads to unification of LHSsYghc-lib-parserRHSs unify but LHSs don't unify under that substitution. Relevant for closed type families where equation after unification might be overlapped (in which case it is OK if they don't unify). Constructor stores axioms after unification.Yghc-lib-parser Create a Y from  indices. INVARIANTS: * The fs_tvs are distinct in each FamInst of a range value of the map (so we can safely unify them)Yghc-lib-parser/Makes no particular effort to detect conflicts.Yghc-lib-parserCheck whether two type family axioms don't violate injectivity annotation.Yghc-lib-parserCreate a coercion constructor (axiom) suitable for the given newtype %. The % should be that of a new coercion <, the $ s the arguments expected by the newtype8 and the type the appropriate right hand side of the newtype/, with the free variables a subset of those $s.Yghc-lib-parserCheck whether an open type family equation can be added to already existing instance environment without causing conflicts with supplied injectivity annotations. Returns list of conflicting axioms (type instance declarations).Yghc-lib-parserDo an apartness check, as described in the "Closed Type Families" paper (POPL '14). This should be used when determining if an equation (<) of a closed type family can be used to reduce a certain target type family application.Yghc-lib-parserGet rid of *outermost* (or toplevel) * type function redex * data family redex * newtypes returning an appropriate Representational coercion. Specifically, if topNormaliseType_maybe env ty = Just (co, ty') then (a) co :: ty ~R ty' (b) ty' is not a newtype, and is not a type-family or data-family redexHowever, ty' can be something like (Maybe (F ty)), where (F ty) is a redex.Always operates homogeneously: the returned type has the same kind as the original type, and the returned coercion is always homogeneous.Yghc-lib-parserTry to simplify a type-family application, by *one* step If topReduceTyFamApp_maybe env r F tys = Just (HetReduction (Reduction co rhs) res_co) then co :: F tys ~R# rhs res_co :: typeKind(F tys) ~ typeKind(rhs) Type families and data families; always Representational roleYghc-lib-parser flattened target arguments. Make sure they're flattened! See Note [Flattening type-family applications when matching instances] in GHC.Core.Unify.ghc-lib-parserthe candidate equation we wish to use Precondition: this matches the targetghc-lib-parserTrue  = equation can fire;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Safe-Inferred68 KRghc-lib-parserTrie of [RoughMatchTc] Examples*  insert [OtherTc] 1 insert [OtherTc] 2 lookup [OtherTc] == [1,2] Rghc-lib-parser/The position only matches the specified KnownTcRghc-lib-parser1The position definitely doesn't match any KnownTcRghc-lib-parserThe position can match anythingRghc-lib-parser!Order of result is deterministic.Rghc-lib-parserN.B. Returns a  for matches, which allows us to avoid rebuilding all of the lists we find in ,, which would otherwise be necessary due to  if we returned a list. We use a list for unifiers because the tail is computed lazily and we often only care about the first couple of potential unifiers. Constructing a bag forces the tail which performs much too much work.>See Note [Matching a RoughMap] See Note [Matches vs Unifiers]ghc-lib-parserPlace a R# in normal form, turning all empty s into "s. Necessary after removing items.Rghc-lib-parserFilter all elements that might match a particular key with the given predicate.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR^ Safe-Inferred Nvrghc-lib-parserTrue of dyadic operators that can fail only if the second arg is zero!This function probably belongs in an automagically generated file.. but it's such a special case I thought I'd leave it here for now.rghc-lib-parser Returns the $* of the wrapper associated with the given . See Note [Primop wrappers].rghc-lib-parserIndicate if a primop is really inline: that is, it isn't out-of-line and it isn't SeqOp/DataToTagOp which are two primops that evaluate their argument hence induce threadstack heap changes.qnllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrlllllllllrrrrrrrrrrrrrrrrrrrrrqnllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrllllrrrrrrrrrrrrrrrrrrrrrlllll Safe-Inferred _ +ghc-lib-parseris -falignment-sanitisation enabled?+ghc-lib-parser.The width of the current platform's word size.+ghc-lib-parser3The width of the current platform's half-word size.+ghc-lib-parser7A bit-mask for the lower half-word of current platform.+ghc-lib-parserA width in bits.+ghc-lib-parserA width in bytes. %widthFromBytes (widthInBytes w) === w+ghc-lib-parser*Partial* A width from the number of bytes.+ghc-lib-parser:log_2 of the width in bytes, useful for generating shifts.+ghc-lib-parserNarrow a signed or unsigned value to the given width. The result will reside in  [0, +2^width). narrowU W8 256 == 256narrowU W8 255 == 255narrowU W8 128 == 128narrowU W8 127 == 127narrowU W8 0 == 0narrowU W8 (-127) == 129narrowU W8 (-128) == 128narrowU W8 (-129) == 127narrowU W8 (-255) == 1narrowU W8 (-256) == 0+ghc-lib-parserNarrow a signed value to the given width. The result will reside in [-2^(width-1), +2^(width-1)). narrowS W8 256 == 0narrowS W8 255 == -1narrowS W8 128 == -128narrowS W8 127 == 127narrowS W8 0 == 0narrowS W8 (-127) == -127narrowS W8 (-128) == -128narrowS W8 (-129) == 127narrowS W8 (-255) == 1narrowS W8 (-256) == 0++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,+++++++++++++++++++++++++++++++++++++++++++++,,,,++++++++++,,,,,,,,,,+ Safe-Inferred cVghc-lib-parserSame as # but simplifies the unfolding firstghc-lib-parser0Used for things that absolutely must be unfoldedghc-lib-parserMake an INLINE unfolding that may be used unsaturated (ug_unsat_ok = unSaturatedOk) and that is reported as having its manifest arity (the number of outer lambdas applications will resolve before doing any work).ghc-lib-parserMake an INLINE unfolding that will be used once the RHS has been saturated to the given arity.ghc-lib-parserSees if the unfolding is pretty certain to inline. If so, return a *stable* unfolding for it, that will always inline. The CoreExpr is the WW'd and simplified RHS. In contrast, the unfolding template might not have been WW'd yet.ddZ Safe-Inferred hghc-lib-parserUnfolding optionsghc-lib-parser0The size of a candidate expression for unfoldingghc-lib-parser Size foundghc-lib-parser2Arguments cased herein, and discount for each suchghc-lib-parser?Size to subtract if result is scrutinised by a case expressionughc-lib-parser2Threshold above which unfoldings are not *created*ughc-lib-parser2Threshold above which unfoldings are not *inlined*ughc-lib-parser,Discount for lambdas that are used (applied)ughc-lib-parserDiscount for dictionariesughc-lib-parser!Force inlining in many more casesughc-lib-parserDon't consider depth up to xughc-lib-parserPenalize depth with 1/xughc-lib-parser9Only report inlining decisions for names with this prefixghc-lib-parser)Finds a nominal size of a string literal.ghc-lib-parserThe size of a function callghc-lib-parser"The size of a jump to a join pointghc-lib-parserReport the inlining of an identifier's RHS to the user, if requested.ghc-lib-parsernumber of value argsghc-lib-parser"number of value args that are voidghc-lib-parsernumber of value argsghc-lib-parser"number of value args that are void%uuuuuuuuuccuuuuuuuuuuuuuuuuu%ccuuuuuuuuuuuuuuuuuuuuuuuuuu Safe-Inferred v$!ghc-lib-parser-Enumerates the simple on-or-off dynamic flags!ghc-lib-parser.Append dump output to files instead of stdout.!ghc-lib-parser Use foo.ways. dumpFlag instead of foo. dumpFlag"ghc-lib-parser8Enable floating out of let-bindings in the simplifier"ghc-lib-parserEnable floating out of let-bindings at the top level in the simplifier N.B. See Note [RHS Floating]"ghc-lib-parserdeprecated, no effect and behaviour is now default. Allowed switching of a special demand transformer for dictionary selectors"ghc-lib-parser)Use the cfg based block layout algorithm."ghc-lib-parser+Layout based on last instruction per block."ghc-lib-parser;Do W/W split for unlifting even if we won't unbox anything."ghc-lib-parserIgnore manual SCC annotations"ghc-lib-parser -fPIC"ghc-lib-parser -fPIE"ghc-lib-parser -pie"ghc-lib-parserUse regular thunks even when we could use std ap thunks in order to get entry counts#ghc-lib-parser -fcompact-unwind#ghc-lib-parserSuppress timestamps in dumps#ghc-lib-parser-Suppress per binding Core size stats in dumps#ghc-lib-parserDebugging flags#ghc-lib-parser#Dump the cfg used for block layout.#ghc-lib-parserInitial STG (CoreToStg output)#ghc-lib-parserSTG after unarise#ghc-lib-parserSTG (after stg2stg)#ghc-lib-parser!Result of tag inference analysis.#ghc-lib-parserFinal STG (before cmm gen)$ghc-lib-parser)Helper function to query whether a given # is enabled or not.$ghc-lib-parserIs the flag implicitly enabled when the verbosity is high enough?$ghc-lib-parser!Return the names of a WarningFlagOne flag may have several names because of US/UK spelling. The first one is the "preferred one" that will be displayed in warning messages.$ghc-lib-parserWarning groups.As all warnings are in the Weverything set, it is ignored when displaying to the user which group a warning is in.$ghc-lib-parserWarning group hierarchies, where there is an explicit inclusion relation.Each inner list is a hierarchy of warning groups, ordered from smallest to largest, where each group is a superset of the one before it.Separating this from $ allows for multiple hierarchies with no inherent relation to be defined.3The special-case Weverything group is not included.$ghc-lib-parserFind the smallest group in every hierarchy which a warning belongs to, excluding Weverything.$ghc-lib-parser+Warnings enabled unless specified otherwise$ghc-lib-parserThings you get with -W$ghc-lib-parserThings you get with -Wall$ghc-lib-parserThings you get with -Weverything, i.e. *all* known warnings flags$ghc-lib-parserThings you get with -Wcompat.This is intended to group together warnings that will be enabled by default at some point in the future, so that library authors eager to make their code future compatible to fix issues before they even generate warnings.$ghc-lib-parser"Things you get with -Wunused-binds$ghc-lib-parserGetter for verbosity settingghc-lib-parser(Getter for the set of enabled dump flags!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###########################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#####################################################################$$$$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$ Safe-Inferred }!ghc-lib-parserRepresents the ! as a bit set.+Assumes that all elements are non-negative.This is only efficient for values that are sufficiently small, for example in the lower hundreds.!!!!!!!!!!!!!!!! Safe-Inferred gghc-lib-parserSimple optimiser optionsgghc-lib-parserUnfolding optionsghc-lib-parserSimplifier optionsghc-lib-parserDeals with preInlineUnconditionally; things that occur exactly once and are inlined without having first been simplifiedghc-lib-parser+Deals with cloning; includes the InScopeSetghc-lib-parserFast OutVarSet tracking which recursive RHSs we are analysing. See Note [Eta reduction in recursive RHSs]ghc-lib-parserCoercion optimiser optionsghc-lib-parserEta reduction on?ghc-lib-parser)Default options for the Simple optimiser.ghc-lib-parserReturns Just (bndr,rhs) if the binding is a join point: If it's a JoinId, just return it If it's not yet a JoinId but is always tail-called, make it into a JoinId and return it. In the latter case, eta-expand the RHS if necessary, to make the lambdas explicit, as is required for join pointsPrecondition: the InBndr has been occurrence-analysed, so its OccInfo is validghc-lib-parserReturns 'Just ([b1..bp], dc, [t1..tk], [x1..xn]) if the argument expression is a *saturated* constructor application of the form *let b1 in .. let bp in dc t1..tk x1 .. xn>, where t1..tk are the *universally-quantified* type args of dc. Floats can also be (and most likely are) single-alternative case expressions. Why does  return floats? We may have to look through lets and cases to detect that we are in the presence of a data constructor wrapper. In this case, we need to return the lets and cases that we traversed. See Note [exprIsConApp_maybe on data constructors with wrappers]. Data constructor wrappers are unfolded late, but we really want to trigger case-of-known-constructor as early as possible. See also Note [Activation for data constructor wrappers] in GHC.Types.Id.Make.We also return the incoming InScopeSet, augmented with the binders from any [FloatBind] that we returngggggg Safe-Inferred sghc-lib-parserAdd a substitution for an $ to the K: you must ensure that the in-scope set is such that TyCoSubst Note [The substitution invariant] holds after extending the substitution like thissghc-lib-parserAdds multiple $ substitutions to the K : see also ssghc-lib-parserAdd a substitution appropriate to the thing being substituted (whether an expression, type, or coercion). See also s, L, Lsghc-lib-parserAdd a substitution as appropriate to each of the terms being substituted (whether expressions, types, or coercions). See also s.sghc-lib-parserFind the substitution for an $ in the Ksghc-lib-parserSimultaneously substitute for a bunch of variables No left-right shadowing ie the substitution for (x y. e) a1 a2 so neither x nor y scope over a1 a2sghc-lib-parser.substExpr applies a substitution to an entire $1. Remember, you may only apply the substitution once/: See Note [Substitutions apply only once] in GHC.Core.TyCo.SubstDo *not* attempt to short-cut in the case of an empty substitution! See Note [Extending the IdSubstEnv]sghc-lib-parser"Apply a substitution to an entire c$, additionally returning an updated K2 that should be used by subsequent substitutions.sghc-lib-parser"Apply a substitution to an entire c$, additionally returning an updated K2 that should be used by subsequent substitutions.sghc-lib-parserDe-shadowing the program is sometimes a useful pre-pass. It can be done simply by running over the bindings with an empty substitution, because substitution returns a result that has no-shadowing guaranteed.(Actually, within a single type* there might still be shadowing, because substTy is a no-op for the empty substitution, but that's probably OK.) Aug 09This function is not used in GHC at the moment, but seems so short and simple that I'm going to leave it heresghc-lib-parserSubstitutes a $" for another one according to the K- given, returning the result and an updated K3 that should be used by subsequent substitutions.  is preserved by this process, although it is substituted into appropriately.sghc-lib-parserApplies s to a number of $s, accumulating a new K left-to-rightsghc-lib-parser,Substitute in a mutually recursive group of $ssghc-lib-parserVery similar to s , but it always allocates a new  for each variable in its output. It substitutes the IdInfo though. Discards non-Stable unfoldingssghc-lib-parserApplies s to a number of $s, accumulating a final substitution from left to right Discards non-Stable unfoldingssghc-lib-parser$Clone a mutually recursive group of $stghc-lib-parserSubstitute into some ! with regard to the supplied new $.. Discards unfoldings, unless they are Stabletghc-lib-parserSubstitutes for the $*s within an unfolding NB: substUnfolding discards any unfolding without without a Stable source. This is usually what we want, but it may be a bit unexpectedtghc-lib-parserSubstitutes for the $*s within an unfolding NB: substUnfolding discards any unfolding without without a Stable source. This is usually what we want, but it may be a bit unexpectedtghc-lib-parserSubstitutes for the $ s within the e given the new function $ghc-lib-parser"Substitution to use for the IdInfoghc-lib-parser Substitution and Id to transformghc-lib-parser-Transformed pair NB: unfolding may be zapped83KKKKLLLLLLLLLLLLLLLLLLLsssssssssssssssssssssssttttttttt8KKKK3sttLLssssttstttttLLLsLssLLssssLLLLLLLLssLsssLLsssss Safe-Inferred gghc-lib-parserEvaluate all the fields of the - that are generally demanded by the compilergggggggggggggg Safe-Inferred \&lghc-lib-parserEvery node in an expression annotated with its (non-global) free variables, both Ids and TyVars, and type.lghc-lib-parserEvery node in an expression annotated with its (non-global) free variables, both Ids and TyVars, and type. NB: see Note [The FVAnn invariant]lghc-lib-parserEvery node in a binding group annotated with its (non-global) free variables, both Ids and TyVars, and type.lghc-lib-parserFind all locally-defined free Ids or type variables in an expression returning a non-deterministic set.lghc-lib-parserFind all locally-defined free Ids or type variables in an expression returning a composable FV computation. See Note [FV naming conventions] in  GHC.Utils.FV for why export it.lghc-lib-parserFind all locally-defined free Ids or type variables in an expression returning a deterministic set.lghc-lib-parserFind all locally-defined free Ids or type variables in an expression returning a deterministically ordered list.lghc-lib-parser2Find all locally-defined free Ids in an expressionlghc-lib-parserFind all locally-defined free Ids in an expression returning a deterministic set.lghc-lib-parserFind all locally-defined free Ids in an expression returning a deterministically ordered list.lghc-lib-parserFind all locally-defined free Ids in several expressions returning a deterministic set.lghc-lib-parserFind all locally-defined free Ids in several expressions returning a deterministically ordered list.lghc-lib-parserFind all locally-defined free Ids or type variables in several expressions returning a non-deterministic set.ghc-lib-parserFind all locally-defined free Ids or type variables in several expressions returning a composable FV computation. See Note [FV naming conventions] in  GHC.Utils.FV for why export it.lghc-lib-parserFind all locally-defined free Ids or type variables in several expressions returning a deterministically ordered list.lghc-lib-parser4Find all locally defined free Ids in a binding grouplghc-lib-parser=Finds free variables in an expression selected by a predicatelghc-lib-parserFinds free variables in an expression selected by a predicate returning a deterministically ordered list.ghc-lib-parserFinds free variables in an expression selected by a predicate returning a deterministic set.lghc-lib-parserFinds free variables in several expressions selected by a predicatelghc-lib-parserFinds free variables in several expressions selected by a predicate returning a deterministically ordered list.ghc-lib-parserFinds free variables in several expressions selected by a predicate returning a deterministic set.ghc-lib-parserFinds the free external names of an expression, notably including the names of type constructors (which of course do not show up in l).lghc-lib-parserFinds the free external# names of several expressions: see  for detailslghc-lib-parserorphNamesOfAxiom collects the names of the concrete types and type constructors that make up the LHS of a type family instance, including the family name itself.For instance, given `type family Foo a b`: `type instance Foo (F (G (H a))) b = ...` would yield [Foo,F,G,H].Used in the implementation of ":info" in GHCi.ghc-lib-parserThose locally-defined variables free in the left and/or right hand sides of the rule, depending on the first argument. Returns an 3 computation.ghc-lib-parserThose locally-defined variables free in the left and/or right hand sides from several rules, depending on the first argument. Returns an 3 computation.lghc-lib-parserThose variables free in the right hand side of a rule returned as a non-deterministic setlghc-lib-parserThose locally-defined free $s in the right hand side of several rules returned as a non-deterministic setlghc-lib-parserThis finds all locally-defined free Ids on the left hand side of a rule and returns them as a non-deterministic setlghc-lib-parserThis finds all locally-defined free Ids on the left hand side of a rule and returns them as a deterministically ordered listlghc-lib-parserThose variables free in the both the left right hand sides of a rule returned as a non-deterministic setlghc-lib-parserThose variables free in the both the left right hand sides of rules returned as a deterministic setlghc-lib-parserThose variables free in both the left right hand sides of several ruleslghc-lib-parserMake a e containing a number of c!s, suitable for putting into an lghc-lib-parserInverse function to llghc-lib-parser$Extract the vars reported in a FVAnnlghc-lib-parser Annotate a $ with its (non-global) free type and value variables at every tree node.lghc-lib-parser Says which $s are interestinglghc-lib-parser Says which $s are interestingghc-lib-parser Says which $s are interestingghc-lib-parser Says which $s are interesting43lllllllllllllllllllllllllllllllllllllllllllllllllll4llllllllllll3lllllllllllllllllllllllllllllllllllllll Safe-Inferred( tghc-lib-parser e` is evaluated according to sd1 and can soundly and gainfully be eta-reduced to e`. See Note [Eta reduction soundness] and Note [Eta reduction makes sense] when that is the case.ghc-lib-parserCan we eta-reduce the given function to the specified arity? See Note [Eta reduction soundness], criteria (B), (J), (W) and (L).tghc-lib-parserIf 'pushCoValArg co = Just (co_arg, co_res), then (\x.body) |> co = (\y. let { x = y |> co_arg } in body) |> co_res)or, equivalently 3(fun |> co) arg = (fun (arg |> co_arg)) |> co_resIf the LHS is well-typed, then so is the RHS. In particular, the argument  arg |> co_arg is guaranteed to have a fixed  RuntimeRep, in the sense of Note [Fixed RuntimeRep] in GHC.Tc.Utils.Concrete.tghc-lib-parserSplit an expression into the given number of binders and a body, eta-expanding if necessary. Counts value *and* type binders.tghc-lib-parser(This is the BNF of the generated output:  @ We format AT [o1,..,on] topDiv as o1..on.T and AT [o1,..,on] botDiv as o1..on.E", respectively. More concretely, AT [NOI,OS,OS] topDiv is formatted as ?11.T6. If the one-shot info is empty, we omit the leading .@.ghc-lib-parser;Info about one lambda in an ArityType See Note [ArityType]ghc-lib-parser&How many value arguments to eta-expandghc-lib-parser5The pretty-printed original expression, for warnings.ghc-lib-parser=A super-set of the free vars of the expression to eta-expand.ghc-lib-parserThe variables in  are fresh wrt. to the incoming 3. The outgoing 3 extends the incoming 3 with the fresh variables in .#ttttttttttttttttttttttttttttttttttt#ttttttttttttttttttttttttttttttttttt22 Safe-Inferred 4tghc-lib-parserSort the variables, putting type and covars first, in scoped order, and then other IdsIt is a deterministic sort, meaning it doesn't look at the values of Uniques. For explanation why it's important See Note [Unique Determinism] in GHC.Types.Unique.tghc-lib-parser1Bind a binding group over an expression, using a let or case as appropriate (see  GHC.Core#let_can_float_invariant)tghc-lib-parserCreate a lambda where the given expression has a number of variables bound over it. The leftmost binder is that bound by the outermost lambda in the resulttghc-lib-parserBind a list of binding groups over an expression. The leftmost binding group becomes the outermost group in the resulting expressiontghc-lib-parserConstruct an expression which represents the application of a number of expressions to that of a data constructor expression. The leftmost expression in the list is applied firsttghc-lib-parserConstruct an expression which represents the application of a number of expressions to another. The leftmost expression in the list is applied firsttghc-lib-parserConstruct an expression which represents the application of one expression to the otherghc-lib-parserConstruct an expression which represents the application of one expression paired with its type to an argument. The result is paired with its type. This function is not exported and used in the definition of t and t.tghc-lib-parserMake a wildcard binder. This is typically used when you need a binder that you expect to use only at a *binding* site. Do not use it at occurrence sites because it has a single, fixed unique, and it's very easy to get into difficulties with shadowing. That's why it is used so little.See Note [WildCard binders] in GHC.Core.Opt.Simplify.Envtghc-lib-parserMake a case expression whose case binder is unused The alts and res_ty should not have any occurrences of WildIdtghc-lib-parser Create a $" which will evaluate to the given Inttghc-lib-parser Create a $" which will evaluate to the given Int. Don't check that the number is in the range of the target platform Inttghc-lib-parser Create a $" which will evaluate to the given Inttghc-lib-parser Create a $ which will evaluate to a Word with the given valuetghc-lib-parser Create a $" which will evaluate to the given Integertghc-lib-parser Create a $" which will evaluate to the given Naturaltghc-lib-parser Create a $" which will evaluate to the given Floattghc-lib-parser Create a $" which will evaluate to the given Doubletghc-lib-parser Create a $" which will evaluate to the given Chartghc-lib-parser Create a $" which will evaluate to the given Stringtghc-lib-parser Create a $ which will evaluate to a string morally equivalent to the given  FastStringghc-lib-parserBuild a small tuple holding the specified expressions One-tuples are *not* flattened; see Note [Flattening one-tuples] See also Note [Don't flatten tuples from HsSyn] Arguments must have kind Typetghc-lib-parserBuild a small unboxed tuple holding the specified expressions. Do not include the RuntimeRep specifiers; this function calculates them for you. Does not5 flatten one-tuples; see Note [Flattening one-tuples]tghc-lib-parser=Make a core tuple of the given boxity; don't flatten 1-tuplestghc-lib-parserBuild the type of a small tuple that holds the specified variables One-tuples are flattened; see Note [Flattening one-tuples]tghc-lib-parserBuild a small tuple holding the specified expressions One-tuples are flattened; see Note [Flattening one-tuples]tghc-lib-parserBuild an unboxed sum.)Alternative number ("alt") starts from 1.tghc-lib-parserBuild a big tuple holding the specified variables One-tuples are flattened; see Note [Flattening one-tuples] Arguments don't have to have kind Typetghc-lib-parserBuild a "big" tuple holding the specified expressions One-tuples are flattened; see Note [Flattening one-tuples] Arguments don't have to have kind Type; ones that do not are boxed This function crashes (in wrapBox) if given a non-Type argument that it doesn't know how to box.tghc-lib-parserBuild the type of a big tuple that holds the specified variables One-tuples are flattened; see Note [Flattening one-tuples]tghc-lib-parserBuild the type of a big tuple that holds the specified type of thing One-tuples are flattened; see Note [Flattening one-tuples]tghc-lib-parserThe unit expressionghc-lib-parserIf (e :: ty) and (ty :: Type), wrapBox is a no-op But if (ty :: ki), and ki is not Type, wrapBox returns (K @ty e) which has kind Type where K is the boxing data constructor for ki See Note [Boxing constructors] in GHC.Builtin.Types Panics if there is no boxing data conghc-lib-parser#`boxTy ty` is the boxed version of ty. That is, if `e :: ty`, then `wrapBox e :: boxTy ty`. Note that if `ty :: Type`, `boxTy ty` just returns ty'. Panics if it is not possible to box ty, like > (#22336) See Note [Boxing constructors] in GHC.Builtin.Typestghc-lib-parserLifts a "small" constructor into a "big" constructor by recursive decompositiontghc-lib-parserSplit a list into lists that are small enough to have a corresponding tuple arity. The sub-lists of the result all have length <=  But there may be more than  sub-liststghc-lib-parsert is like t but one-tuples are NOT flattened (see Note [Flattening one-tuples])Builds a selector which scrutinises the given expression and extracts the one name from the list given. If you want the no-shadowing rule to apply, the caller is responsible for making sure that none of these names are in scope.If there is just one $7 in the tuple, then the selector is just the identity.0If necessary, we pattern match on a "big" tuple.A tuple selector is not linear in its argument. Consequently, the case expression built by t must consume its scrutinee Many? times. And all the argument variables must have multiplicity Many.tghc-lib-parserBuilds a selector which scrutinises the given expression and extracts the one name from the list given. If you want the no-shadowing rule to apply, the caller is responsible for making sure that none of these names are in scope.If there is just one $7 in the tuple, then the selector is just the identity.0If necessary, we pattern match on a "big" tuple.A tuple selector is not linear in its argument. Consequently, the case expression built by t must consume its scrutinee Many? times. And all the argument variables must have multiplicity Many.ghc-lib-parser is like  but one-tuples are NOT flattened (see Note [Flattening one-tuples]) is like t, but for tuples that are guaranteed never to be "big". Also does not unwrap boxed types. mkSmallTupleSelector [x] x v e = [| e |] mkSmallTupleSelector [x,y,z] x v e = [| case e of v { (x,y,z) -> x } |]ghc-lib-parser is like t, but for tuples that are guaranteed never to be "big". Also does not unwrap boxed types. mkSmallTupleSelector [x] x v e = [| e |] mkSmallTupleSelector [x,y,z] x v e = [| case e of v { (x,y,z) -> x } |]tghc-lib-parserA generalization of t?, allowing the body of the case to be an arbitrary expression.;To avoid shadowing, we use uniques to invent new variables./If necessary we pattern match on a "big" tuple.ghc-lib-parserAs t, but for a tuple that is small enough to be guaranteed not to need nesting.tghc-lib-parser/Applies the floats from right to left. That is wrapFloats [b1, b2, @, bn] u = let b1 in let b2 in @ in let bn in utghc-lib-parser Makes a list [] for lists of the specified typetghc-lib-parser Makes a list (:) for lists of the specified typetghc-lib-parserMake a list containing the given expressions, where the list has the given typetghc-lib-parserMake a fully applied  expressiontghc-lib-parserMake a build6 expression applied to a locally-bound worker functiontghc-lib-parser&Makes a Nothing for the specified typetghc-lib-parser/Makes a Just from a value of the specified typeghc-lib-parser!Exception with type "forall a. a"Any exceptions added via this function needs to be added to the RTS's initBuiltinGcRoots() function.ghc-lib-parserAn  for an Id, such as , that throws an (imprecise) exception after being supplied one value arg for every argument a9 in the list. The demands end up in the demand signature. 8Sets the demand signature to unleash the given arg dmds bSets the arity info so that it matches the length of arg demands/Sets a bottoming CPR sig with the correct arityIt's important that all 3 agree on the arity, which is what this defn ensures. tghc-lib-parserfunctionghc-lib-parser argumentstghc-lib-parserfunctionghc-lib-parserargumenttghc-lib-parser scrutineeghc-lib-parserres_tyghc-lib-parseraltstghc-lib-parserguardghc-lib-parserthenghc-lib-parserelsetghc-lib-parser5"Small" constructor function, of maximum input arity ghc-lib-parser/Possible "big" list of things to construct fromghc-lib-parser:Constructed thing made possible by recursive decompositiontghc-lib-parserThe $$s to pattern match the tuple againstghc-lib-parserThe $ to selectghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutineeghc-lib-parserSelector expressiontghc-lib-parserThe $$s to pattern match the tuple againstghc-lib-parserThe $ to selectghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutineeghc-lib-parserSelector expressiontghc-lib-parser-For inventing names of intermediate variablesghc-lib-parserThe tuple identifiers to pattern match on; Bring these into scope in the bodyghc-lib-parserBody of the caseghc-lib-parser Scrutineeghc-lib-parserThe tuple argsghc-lib-parserBody of the caseghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutineetghc-lib-parserElement type of the listghc-lib-parserFold result typeghc-lib-parserCons! function expression for the foldghc-lib-parserNil expression for the foldghc-lib-parser#List expression being folded acresstghc-lib-parser!Type of list elements to be builtghc-lib-parser+Function that, given information about the $s of the binders for the build worker function, returns the body of that workerstttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttstttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt4t4 Safe-Inferred ghc-lib-parser.Do we force the result to be representational?ghc-lib-parserDo we apply a sym to the result?~ghc-lib-parserCoercion optimisation options~ghc-lib-parser.Enable coercion optimisation (reduce its size)~ghc-lib-parseroptCoercion applies a substitution to a coercion, *and* optimises it to reduce its sizeghc-lib-parserOptimize a coercion, making no assumptions. All coercions in the lifting context are already optimized (and sym'd if nec'y)ghc-lib-parserOptimize a coercion, knowing the coercion's role. No other assumptions.ghc-lib-parser=Optimize a coercion, knowing the coercion's non-Phantom role.ghc-lib-parser Optimize a non-phantom coercion.ghc-lib-parser Optimize a non-phantom coercion.ghc-lib-parserOptimize a phantom coercion. The input coercion may not necessarily be a phantom, but the output sure will be.~ghc-lib-parserCheck to make sure that an AxInstCo is internally consistent. Returns the conflicting branch, if it exists See Note [Conflict checking with AxiomInstCo]ghc-lib-parser/Conditionally set a role to be representationalghc-lib-parserIf we require a representational role, return that. Otherwise, return the "default" role provided.ghc-lib-parserThe role of the input coercionghc-lib-parser current roleghc-lib-parser"default" role~~~~~~~~~~ Safe-Inferred cghc-lib-parserA constructor-like thingcghc-lib-parserIs this a 'vanilla' constructor-like thing (no existentials, no provided constraints)?cghc-lib-parserNumber of argumentscghc-lib-parser"Names of fields used for selectorscghc-lib-parserReturns just the instantiated value argument types of a c, (excluding dictionary args)cghc-lib-parser1 s for the type variables of the c. For pattern synonyms, this will always consist of the universally quantified variables followed by the existentially quantified type variables. For data constructors, the situation is slightly more complicated@see )Note [DataCon user type variable binders] in GHC.Core.DataCon.cghc-lib-parser0Existentially quantified type/coercion variablescghc-lib-parserThe "stupid theta" of the c , such as  data Eq a in: data Eq a => T a = ...It is empty for c* as they do not allow such contexts. See Note [The stupid context] in GHC.Core.DataCon.cghc-lib-parserc returns True except for uni-directional pattern synonyms, which have no buildercghc-lib-parser7Returns the strictness information for each constructorcghc-lib-parser%Returns the type of the whole patterncghc-lib-parserThe "full signature" of the c returns, in order:,1) The universally quantified type variables72) The existentially quantified type/coercion variables3) The equality specification;4) The provided theta (the constraints provided by a match)<5) The required theta (the constraints required for a match)6) The original argument types (i.e. before any change of the representation of the type)7) The original result typecghc-lib-parser5Extract the type for any given labelled field of the ccghc-lib-parser-The ConLikes that have *all* the given fieldscccccccccccccccccccccccccccccccccccc Safe-Inferred i Qghc-lib-parserPattern SynonymSee Note [Pattern synonym representation] See Note [Pattern synonym signature contexts]ghc-lib-parserArgument typesQghc-lib-parserBuild a new pattern synonymQghc-lib-parserThe  of the Q+, giving it a unique, rooted identificationRghc-lib-parser Should the Q be presented infix?Rghc-lib-parserArity of the pattern synonymRghc-lib-parserIs this a 'vanilla' pattern synonym (no existentials, no provided constraints)?Rghc-lib-parser5Extract the type for any given labelled field of the DataConRghc-lib-parserPrint the type of a pattern synonym. The foralls are printed explicitlyQghc-lib-parser&Is the pattern synonym declared infix?ghc-lib-parser9Universally-quantified type variables and required dictsghc-lib-parser;Existentially-quantified type variables and provided dictsghc-lib-parserOriginal argumentsghc-lib-parserOriginal result typeghc-lib-parserMatcherghc-lib-parserBuilderghc-lib-parser/Names of fields for a record pattern synonymQQQQQRRRRRRRRRRRRRRRRRQQQQQRRRRRRRRRRRRRRRRR Safe-Inferred bghc-lib-parserStandardFormInfo tells whether this thunk has one of a small number of standard formsbghc-lib-parserInformation about an identifier, from the code generator's point of view. Every identifier is bound to a LambdaFormInfo in the environment, which gives the code generator enough info to be able to tail call or return that identifier.bghc-lib-parser9Maps names in the current module to their LambdaFormInfosbghc-lib-parserCodegen-generated Id infos, to be passed to downstream via interfaces.This stuff is for optimization purposes only, they're not compulsory.When CafInfo of an imported Id is not known it's safe to treat it as CAFFY.When LambdaFormInfo of an imported Id is not known it's safe to treat it as `LFUnknown True` (which just says "it could be anything" and we do slow entry).See also Note [Conveying CAF-info and LFInfo between modules] above.bghc-lib-parserExported Non-CAFFY closures in the current module. Everything else is either not exported of CAFFY.cghc-lib-parser;LambdaFormInfos of exported closures in the current module.cghc-lib-parser,The C stub which is used for IPE informationbbbbbbbbbbbbbbbbbccbbbccbbbbbbbbbbbbbb Safe-Inferred ? .ghc-lib-parserForeign export stubs.ghc-lib-parserWe don't have any stubs.ghc-lib-parser!There are some stubs. Parameters:?1) Header file prototypes for "foreign exported" functions2) C stubs to use when calling "foreign exported" functions.ghc-lib-parserInitializers to be run at startup See Note [Initializers and finalizers in Cmm] in GHC.Cmm.InitFini..ghc-lib-parser Finalizers to be run at shutdown.ghc-lib-parser!initializerCStub fn_nm decls body is a .: containing C initializer function (e.g. an entry of the  .init_array section) named fn_nm7 with the given body and the given set of declarations..ghc-lib-parserfinalizerCStub fn_nm decls body is a .8 containing C finalizer function (e.g. an entry of the  .fini_array section) named fn_nm7 with the given body and the given set of declarations............................. Safe-Inferred  >.ghc-lib-parser.< is an abstract type that supports the following operations:Pretty printingIn a C file, does it need to be declared before use? (i.e. is it guaranteed to be already in scope in the places we need to refer to it?)If it needs to be declared, what type (code or data) should it be declared to have?.Is it visible outside this object file or not?#Is it "dynamic" (see details below)Eq and Ord, so that we can make sets of CLabels (currently only used in outputting C as far as I can tell, to avoid generating more than one declaration for any given label).3Converting an info table label into an entry label.CLabel usage is a bit messy in GHC as they are used in a number of different contexts:!By the C-- AST to identify labelsBy the unregisterised C code generator ("PprC") for naming functions (hence the name .)9By the native and LLVM code generators to identify labelsFor extra fun, each of these uses a slightly different subset of constructors (e.g.  and / are used only in the NCG and LLVM backends).In general, we use  to represent Haskell things early in the pipeline. However, later optimization passes will often represent blocks they create with  where there is no obvious  to hang off the label.ghc-lib-parserStyle of label pretty-printing.When we produce C sources or headers, we have to take into account that C compilers transform C labels when they convert them into symbols. For example, they can add prefixes (e.g., "_" on Darwin) or suffixes (size for stdcalls on Windows). So we provide two ways to pretty-print CLabels: C style or Asm style.ghc-lib-parser+C label style (used by C and LLVM backends)ghc-lib-parser%Asm label style (used by NCG backend)ghc-lib-parserInfo Table Provenance Entry See Note [Mapping Info Tables to Source Positions]ghc-lib-parserWhat type of Cmm label we're dealing with. Determines the suffix appended to the name when a CLabel.CmmLabel is pretty printed.ghc-lib-parser'misc rts info tables, suffix _infoghc-lib-parser(misc rts entry points, suffix _entryghc-lib-parser'misc rts ret info tables, suffix _infoghc-lib-parser&misc rts return points, suffix _retghc-lib-parser'misc rts data bits, eg CHARLIKE_closureghc-lib-parser misc rts codeghc-lib-parserclosures eg CHARLIKE_closureghc-lib-parser)a prim call to some hand written Cmm codeghc-lib-parserSelector thunksghc-lib-parser AP thunksghc-lib-parser_fast versions of generic applyĀghc-lib-parser=Which module is the info table from, and which number was it.ghc-lib-parserLabel for closureghc-lib-parser*Info tables for closures; always read-only¶ghc-lib-parser Entry pointöghc-lib-parserSlow entry pointĶghc-lib-parser)Like InfoTable but not externally visibleŶghc-lib-parser%Like Entry but not externally visibleƶghc-lib-parser7Label of place to keep Ticky-ticky hit info for this IdǶghc-lib-parserConstructor entry point, when `-fdistinct-info-tables` is enabled then each usage of a constructor will be given a unique number and a fresh info table will be created in the module where the constructor is used. The argument is used to keep track of which info table a usage of a constructor should use. When the argument is I then it uses the info table which is defined in the module where the datatype is declared, this is the usual case. When it is (Just (m, k)) it will use the kth info table defined in module m. The point of this inefficiency is so that you can work out where allocations of data constructors are coming from when you are debugging.ȶghc-lib-parserCorresponding info tableɶghc-lib-parser!Table of closures for Enum tyconsʶghc-lib-parser5Content of a string literal. See Note [Bytes label].˶ghc-lib-parserLike LocalInfoTable but for a proc-point block instead of a closure entry-point. See Note [Proc-point local block entry-points].̶ghc-lib-parserUsed for dynamic allocationsͶghc-lib-parser,Used to track dynamic hits of tag inference.ǀghc-lib-parser'Record where a foreign label is stored.Ȁghc-lib-parserLabel is in a named packageɀghc-lib-parserLabel is in some external, system package that doesn't also contain compiled Haskell code, and is not associated with any .hi files. We don't have to worry about Haskell code being inlined from external packages. It is safe to treat the RTS package as "external".ʀghc-lib-parserLabel is in the package currently being compiled. This is only used for creating hacky tmp labels during code generation. Don't use it in any code that might be inlined across a package boundary (ie, core code) else the information will be wrong relative to the destination module.ˀghc-lib-parser Indicate if  GHC.CmmToC has to generate an extern declaration for the label (e.g. "extern StgWordArray(foo)"). The type is fixed to StgWordArray.Symbols from the RTS don't need "extern" declarations because they are exposed via "rtsinclude&Stg.h" with the appropriate type. See .The fixed StgWordArray type led to "conflicting types" issues with user provided Cmm files (not in the RTS) that declare data of another type (#15467 and test for #17920). Hence the Cmm parser considers that labels in data sections don't need the "extern" declaration (just add one explicitly if you need it).See  https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/backends/ppr-c#prototypes/ for why extern declaration are needed at all.ghc-lib-parserA label related to the definition of a particular Id or Con in a .hs file.ζghc-lib-parserA label from a .cmm file that is not associated with a .hs level Id.϶ghc-lib-parserA label with a baked-in / algorithmically generated name that definitely comes from the RTS. The code for it must compile into libHSrts.a / libHSrts.so If it doesn't have an algorithmically generated name then use a CmmLabel instead and give it an appropriate UnitId argument.ghc-lib-parserA label associated with a block. These aren't visible outside of the compilation unit in which they are defined. These are generally used to name blocks produced by Cmm-to-Cmm passes and the native code generator, where we don't have a 4 to associate the label to and therefore can't use .жghc-lib-parserA C (or otherwise foreign) label.ghc-lib-parserLocal temporary label used for native (or LLVM) code generation; must not appear outside of these contexts. Use primarily for debug informationghc-lib-parserA label "derived" from another . by the addition of a suffix. Must not occur outside of the NCG or LLVM code generators.Ѷghc-lib-parserA per-module metadata label.Ҷghc-lib-parserThese labels are generated and used inside the NCG only. They are special variants of a label used for dynamic linking see module GHC.CmmToAsm.PIC for details.Ӷghc-lib-parserThis label is generated and used inside the NCG only. It is used as a base for PIC calculations on some platforms. It takes the form of a local numeric assembler label '1'; and is pretty-printed as 1b, referring to the previous definition of 1: in the assembler source file.Զghc-lib-parserA label before an info table to prevent excessive dead-stripping on darwinնghc-lib-parser"Per-module table of tick locationsֶghc-lib-parserStatic reference table׶ghc-lib-parser"A bitmap (function or case return)πghc-lib-parserFor debugging problems with the CLabel representation. We can't make a Show instance for CLabel because lots of its components don't have instances. The regular Outputable instance only shows the label name, and not its other info.Հghc-lib-parserDecides between external and local labels based on the names externality.ghc-lib-parserMake a foreign labelghc-lib-parser-Update the label size field in a ForeignLabelghc-lib-parser+Whether label is a top-level string literalghc-lib-parser8Whether label is a non-haskell label (defined in C code)ghc-lib-parserWhether label is a static closure label (can come from haskell or cmm)ghc-lib-parser Whether label is a .rodata labelghc-lib-parser2Whether label is points to some kind of info tableghc-lib-parser4Whether label points to an info table defined in Cmmghc-lib-parser1Whether label is points to constructor info tableghc-lib-parser,Get the label size field from a ForeignLabelghc-lib-parserA standard string unpacking thunk. See Note [unpack_cstring closures] in StgStdThunks.cmm.ghc-lib-parserA standard string unpacking thunk. See Note [unpack_cstring closures] in StgStdThunks.cmm.ghc-lib-parser*A label indicating the end of a procedure.ghc-lib-parserConstruct a label for a DWARF Debug Information Entity (DIE) describing another symbol.ghc-lib-parser7If a label is a local block label then return just its P , otherwise I.ghc-lib-parserCheck whether a label corresponds to a C function that has a prototype in a system header somewhere, or is built-in to the C compiler. For these labels we avoid generating our own C prototypes.ghc-lib-parserIs a CLabel visible outside this object file or not? From the point of view of the code generator, a name is externally visible if it has to be declared as exported in the .o file's symbol table; that is, made non-static.ضghc-lib-parserWork out the general type of data at the address of this label whether it be code, data, or static GC object.ghc-lib-parserIs a .. defined in the current module being compiled?Sometimes we can optimise references within a compilation unit in ways that we couldn't for inter-module references. This provides a conservative estimate of whether a . lives in the current module.ghc-lib-parserDoes a . need dynamic linkage?When referring to data in code, we need to know whether that data resides in a DLL or not. [Win32 only.]  labelDynamic returns True if the label is located in a DLL, be it a data reference or not.ghc-lib-parser;Generate a label for a procedure internal to a module (if Opt_ExposeAllSymbols/ is enabled). See Note [Internal proc labels].ghc-lib-parserDon't depend on this if you need determinism. No determinism in the ncg backend, so we use the unique for Ord. Even if it pains me slightly.ghc-lib-parserencodes the suffix of the labelζghc-lib-parser"what package the label belongs to.ghc-lib-parser.does the label need an "extern .." declarationghc-lib-parser)identifier giving the prefix of the labelghc-lib-parserencodes the suffix of the labelжghc-lib-parsername of the imported label.ghc-lib-parser possible '9n' suffix for stdcall functions When generating C, the 'n' suffix is omitted, but when generating assembler we must add it to the label.ghc-lib-parser%what package the foreign label is in.ghc-lib-parsersuffixghc-lib-parserthe current moduleghc-lib-parserthe internal proc label..€ÀĀŀƀǀȀɀʀˀ̀̀΀πЀрҀӀԀՀր׀؀ـڀۀ܀݀ހ߀.ˀ̀ǀȀɀʀ€ÀĀŀƀЀԀрՀրҀӀ؀׀ـڀۀ܀݀ހ߀̀΀π. Safe-Inferred APPׁ؁فPPׁ؁ف Safe-Inferred89: BXPPPPPPPPPPPP\ Safe-Inferred 89: B:: Safe-Inferred L*ghc-lib-parser8An ArgDescr describes the argument pattern of a function*ghc-lib-parserWe represent liveness bitmaps as a Bitmap (whose internal representation really is a bitmap). These are pinned onto case return vectors to indicate the state of the stack for the garbage collector.In the compiled program, liveness bitmaps that fit inside a single word (StgWord) are stored as a single word, while larger bitmaps are stored as a pointer to an array of words.*ghc-lib-parserTrue <=> This is a static closure. Affects how we garbage-collect it. Static closure have an extra static link field at the end. Constructors do not have a static variant; see Note [static constructors]*ghc-lib-parserA description of the layout of a closure. Corresponds directly to the closure types in includes/rts/storage/ClosureTypes.h.*ghc-lib-parserWord offset, or word count*ghc-lib-parserByte offset, or byte count*ghc-lib-parserRound up the given byte count to the next byte count that's a multiple of the machine's word size.*ghc-lib-parser Round up base to a multiple of size.*ghc-lib-parser7Convert the given number of words to a number of bytes.This function morally has type WordOff -> ByteOff , but uses Num a to allow for overloading.*ghc-lib-parserFirst round the given byte count up to a multiple of the machine's word size and then convert the result to words.*ghc-lib-parserHalf word size in bytes*ghc-lib-parserSize of a closure header (StgHeader in includes/rts/storage/Closures.h)*ghc-lib-parserSize of the profiling part of a closure header (StgProfHeader in includes/rts/storage/Closures.h)ٶghc-lib-parserThe garbage collector requires that every closure is at least as big as this.*ghc-lib-parser(The total size of the closure, in words.*ghc-lib-parserThe byte offset into the card table of the card for a given element*ghc-lib-parser>Convert a number of elements to a number of cards, rounding up*ghc-lib-parser"The size of a card table, in bytes*ghc-lib-parser"The size of a card table, in words*ghc-lib-parser%Derives the RTS closure type from an *************************************************************************************************************************************************** Safe-Inferred O*ghc-lib-parserA platform profile fully describes the kind of objects that are generated for a platform.( doesn't fully describe the ABI of an object. Compiler ways (profiling, debug, dynamic) also modify the ABI.*ghc-lib-parserPlatform*ghc-lib-parserWays*ghc-lib-parserGet platform constants*ghc-lib-parserIs profiling enabled*ghc-lib-parserWord size in bytes*ghc-lib-parser Unique build tag for the profile****************None Y@)ghc-lib-parserA way4Don't change the constructor order as it is used by ) to create a unique tag (e.g. thr_debug_p) which is expected by other tools (e.g. Cabal).)ghc-lib-parser,for GHC API clients building custom variants)ghc-lib-parser'(RTS only) Multithreaded runtime system)ghc-lib-parser1Debugging, enable trace messages and extra checks)ghc-lib-parser:Profiling, enable cost-centre stacks and profiling reports)ghc-lib-parserDynamic linking)ghc-lib-parserTest if a way is enabled)ghc-lib-parserTest if a way is not enabled)ghc-lib-parser Add a way)ghc-lib-parser Remove a way)ghc-lib-parser)Check if a combination of ways is allowed)ghc-lib-parser'Unique tag associated to a list of ways)ghc-lib-parser-Unique build-tag associated to a list of waysRTS only ways are filtered out because they have no impact on the build.)ghc-lib-parser$Unique build-tag associated to a way)ghc-lib-parserReturn true for ways that only impact the RTS, not the generated code)ghc-lib-parser.Filter ways that have an impact on compilation)ghc-lib-parserFilter RTS-only ways (ways that don't have an impact on compilation))ghc-lib-parser*Turn these flags on when enabling this way)ghc-lib-parser+Turn these flags off when enabling this way)ghc-lib-parser;Pass these options to the C compiler when enabling this way)ghc-lib-parser3Pass these options to linker when enabling this way)ghc-lib-parser=Pass these options to the preprocessor when enabling this way)ghc-lib-parserConsult the RTS to find whether it has been built with profiling enabled.)ghc-lib-parserConsult the RTS to find whether GHC itself has been built with dynamic linking. This can't be statically known at compile-time, because we build both the static and dynamic versions together with -dynamic-too.)ghc-lib-parser/Consult the RTS to find whether it is threaded.)ghc-lib-parser/Consult the RTS to find whether it is debugged.)ghc-lib-parser.Consult the RTS to find whether it is tracing.)ghc-lib-parser Host ways.)ghc-lib-parserHost "full" ways (i.e. ways that have an impact on the compilation, not RTS only ways).These ways must be used when compiling codes targeting the internal interpreter.)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) Safe-Inferred 89: ^ ighc-lib-parser Header information only, not rhsighc-lib-parser,Show only some sub-components. Specifically, []Print all sub-components.(n:ns)Print sub-component n with  ShowSub = ns!; elide other sub-components to ...6 May 14: the list is max 1 element long at the momentighc-lib-parserEverything including GHC-internal information (used in --show-iface)ighc-lib-parserIface type for LambdaFormInfo. Fields not relevant for imported Ids are omitted in this type.ighc-lib-parserThis corresponds to HsSrcBangighc-lib-parserThis corresponds to an HsImplBang; that is, the final implementation decision about the data constructor argjghc-lib-parserName of associated axiom and branches for pretty printing purposes, or I for an empty closed family without an axiom See Note [Pretty printing via Iface syntax] in GHC.Types.TyThing.Pprjghc-lib-parserA binding top-level , in an interface file (e.g. the name of an j).jghc-lib-parserPretty Print an IfaceExprThe first argument should be a function that adds parens in context that need an atomic value (e.g. function args)QQPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQPPPPPPP $1111$1111PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjiiiiiiiiiiiiijjjjiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjiiiiiii jjjjjjjjjjjjiiiiiiiiiiijjjjjjjjjjjiiiiiihiiijjڶ3w Safe-Inferred )*0 cw Safe-Inferred8 j 7ghc-lib-parserA collection of annotations7ghc-lib-parserThe kind of annotation target found in the middle end of the compiler7ghc-lib-parserAn annotation target7ghc-lib-parserWe are annotating something with a name: a type or identifier7ghc-lib-parser%We are annotating a particular module7ghc-lib-parserRepresents an annotation after it has been sufficiently desugared from it's initial form of 7ghc-lib-parserThe target of the annotation7ghc-lib-parser An empty annotation environment.7ghc-lib-parserConstruct a new annotation environment that contains the list of annotations provided.7ghc-lib-parser,Add the given annotation to the environment.7ghc-lib-parser"Union two annotation environments.7ghc-lib-parser5Find the annotations attached to the given target as  values of your choice. If no deserializer is specified, only transient annotations will be returned.7ghc-lib-parser5Find the annotations attached to the given target as  values of your choice. If no deserializer is specified, only transient annotations will be returned.۶ghc-lib-parserFind payloads for the given 7 in an 7.7ghc-lib-parserDeserialize all annotations of a given type. This happens lazily, that is no deserialization will take place until the [a] is actually demanded and the [a] can also be empty (the UniqFM is not filtered).7ghc-lib-parserThe "payload" of an annotation allows recovery of its value at a given type, and can be persisted to an interface file7777777777777777777777777777777777 Safe-Inferred)*/1 j 3333333333 3333333333 Safe-Inferred ks:ghc-lib-parserUsed when we want to fingerprint a structure without depending on the fingerprints of external Names that it refers to.:::::: Safe-Inferred oHKghc-lib-parserThis tidies up a type for printing in an error message, or in an interface file.;It doesn't change the uniques at all, just the print names.Kghc-lib-parser Add the free $s to the env in tidy form, so that we can tidy the type they are free inKghc-lib-parser Treat a new $ as a binder, and give it a fresh tidy name using the environment if one has not already been allocated. See also KKghc-lib-parserTidy a list of Types-See Note [Strictness in tidyType and friends]Kghc-lib-parser Tidy a Type-See Note [Strictness in tidyType and friends]Kghc-lib-parser:Grabs the free type variables, tidies them and then uses K to work over the type itselfKghc-lib-parserCalls K= on a top-level type (i.e. with an empty tidying environment)Kghc-lib-parserTidy a Coercion-See Note [Strictness in tidyType and friends]KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKU Safe-Inferred  ghc-lib-parserA StringBuffer is an internal pointer to a sized chunk of bytes. The bytes are intended to be *immutable*. There are pure operations to read the contents of a StringBuffer.A StringBuffer may have a finalizer, depending on how it was obtained.ghc-lib-parserRead a file into a . The resulting buffer is automatically managed by the garbage collector.ܶghc-lib-parserSkip the byte-order mark if there is one (see #1744 and #6016), and return the new position of the handle in bytes.This is better than treating #FEFF as whitespace, because that would mess up layout. We don't have a concept of zero-width whitespace in Haskell: all whitespace codepoints have a width of one column.ghc-lib-parser Encode a < into a  as UTF-8. The resulting buffer is automatically managed by the garbage collector.ghc-lib-parserConvert a UTF-8 encoded  into a 'StringBuffer. This really relies on the internals of both  and .O(n) (but optimized into a memcpy by  bytestring under the hood)ghc-lib-parser/Return the first UTF-8 character of a nonempty 2 and as well the remaining portion (analogous to ). Warning:# The behavior is undefined if the  is empty. The result shares the same buffer as the original. Similar to utf8DecodeChar0, if the character cannot be decoded as UTF-8, '\0' is returned.ghc-lib-parserReturns true if the buffer contains Unicode bi-directional formatting characters. https://www.unicode.org/reports/tr9/#Bidirectional_Character_TypesBidirectional format characters are one of 'x202a' : "U+202A LEFT-TO-RIGHT EMBEDDING (LRE)" 'x202b' : "U+202B RIGHT-TO-LEFT EMBEDDING (RLE)" 'x202c' : "U+202C POP DIRECTIONAL FORMATTING (PDF)" 'x202d' : "U+202D LEFT-TO-RIGHT OVERRIDE (LRO)" 'x202e' : "U+202E RIGHT-TO-LEFT OVERRIDE (RLO)" 'x2066' : "U+2066 LEFT-TO-RIGHT ISOLATE (LRI)" 'x2067' : "U+2067 RIGHT-TO-LEFT ISOLATE (RLI)" 'x2068' : "U+2068 FIRST STRONG ISOLATE (FSI)" 'x2069' : "U+2069 POP DIRECTIONAL ISOLATE (PDI)"This list is encoded in ghc-lib-parser/Return the first UTF-8 character of a nonempty  (analogous to ). Warning:# The behavior is undefined if the  is empty. Similar to utf8DecodeChar0, if the character cannot be decoded as UTF-8, '\0' is returned.ghc-lib-parser Return a 7 with the first UTF-8 character removed (analogous to ). Warning:# The behavior is undefined if the ? is empty. The result shares the same buffer as the original.ghc-lib-parser Return a  with the first n bytes removed. Warning:2 If there aren't enough characters, the returned  will be invalid and any use of it may lead to undefined behavior. The result shares the same buffer as the original.ghc-lib-parser-Compute the difference in offset between two  s that share the same buffer. Warning:# The behavior is undefined if the s use separate buffers.ghc-lib-parserCheck whether a  is empty (analogous to ).ghc-lib-parser%Computes a hash of the contents of a .ghc-lib-parser Computes a  which points to the first character of the wanted line. Lines begin at 1.ghc-lib-parserDecode the first n bytes of a  as UTF-8 into a <. Similar to utf8DecodeChar, if the character cannot be decoded as UTF-8, they will be replaced with '\0'.ghc-lib-parserReturn the previous n* characters (or fewer if we are less than n characters into the buffer.ghc-lib-parsern, the number of bytesghc-lib-parsern, the number of bytesghc-lib-parsern, the number of bytes) Safe-Inferred )*01 ghc-lib-parser4The context for a representation-polymorphism check.For example, when typechecking  (a :: k) -> ..., we are checking the type a because it's the type of a term variable bound in a lambda, so we use . ghc-lib-parserThe context in which a representation-polymorphism check was performed.Does not include the type on which the check was performed; see   for that. ghc-lib-parser  stores the origin of a skolem type variable, so that we can display this information to the user in case of a type error.The  field allows us to report all skolem type variables bound in the same place in a single report. ghc-lib-parser  stores the origin of a skolem type variable (e.g. bound by a user-written forall, the header of a data declaration, a deriving clause, ...).This information is displayed when reporting an error message, such as "Couldn't match k with l" C [a] where ... When typechecking the instance decl itself, including producing evidence for the superclasses of C, the superclasses of (Foo a) and (Bar a) will have  origin.ghc-lib-parser is used for a Given constraint obtained by superclass selection from a constraint  other than the context of an instance declaration. (For the latter we use .) E.g. f :: Foo a => blah f = e When typechecking body of f3, the superclasses of the Given (Foo a) will have .Needed for Note [Replacement vs keeping] in GHC.Tc.Solver.Interact.ghc-lib-parser is used only for the Wanted constraints for the superclasses of an instance declaration. If the instance head is  C ty1 .. tyn then #TypeSize = sizeTypes [ty1, .., tyn] See Note [Solving superclass constraints] in GHC.Tc.TyCl.Instanceghc-lib-parserTesting whether the constraint associated with an instance declaration in a signature file is satisfied upon instantiation.Test cases: backpack should_failbkpfail{11,43}.bkpghc-lib-parser The thing that has type "actual"ghc-lib-parserIs at least one of the three elements above visible? (Errors from the polymorphic subsumption check are considered visible.) Only used for prioritizing error messages.ghc-lib-parser"Some kind of type variable binder.Used for reporting errors, in   and TcSolverReportMsg.šghc-lib-parserSome thing which has a type.This datatype is used when we want to report to the user that something has an unexpected type.ۚghc-lib-parserReport Redundant Constraints.ܚghc-lib-parser"Don't report redundant constraintsݚghc-lib-parserReport redundant constraints, and here is the SrcSpan for the constraints E.g. f :: (Eq a, Ord b) => blah The span is for the (Eq a, Ord b)ޚghc-lib-parserUserTypeCtxt describes the origin of the polymorphic type in the places where we need an expression to have that typeghc-lib-parser8Wrap up the origin of a skolem type variable with a new 8, so that we can common up skolem type variables whose   shares a certain .ghc-lib-parserDid a constraint arise from expanding a Wanted constraint to look at superclasses?ghc-lib-parser)Extract a suitable CtOrigin from a HsExprghc-lib-parser-Extract a suitable CtOrigin from a MatchGroupghc-lib-parser-Extract a suitable CtOrigin from guarded RHSs޶ghc-lib-parser7Extract a suitable CtOrigin from a list of guarded RHSs߶ghc-lib-parserShort one-linersghc-lib-parserPrint the context for a FixedRuntimeRep# representation-polymorphism check.6Note that this function does not include the specific F4 which is not fixed. That information is stored in   and is reported separately. ٙghc-lib-parserrebindable syntax operatorڙghc-lib-parser!function used in the view patternۙghc-lib-parserfunctionghc-lib-parserargumentܙghc-lib-parsername of the functionghc-lib-parser equationsޙghc-lib-parser!the entire lambda-case expressionghc-lib-parserargument position (1-indexed)ghc-lib-parserThe number of superclass selections necessary to get this constraint; see Note [Replacement vs keeping] in GHC.Tc.Solver.Interactghc-lib-parserIf (C ty1 .. tyn) is the largest class from which we made a superclass selection in the chain, then #TypeSize = sizeTypes [ty1, .., tyn] See Note [Solving superclass constraints] in GHC.Tc.TyCl.Instanceghc-lib-parserThe number of superclass selections necessary to get this constraintghc-lib-parserWhere the sub-class constraint arose from (used only for printing)ghc-lib-parser)Module in which the instance was declaredghc-lib-parserThe declared typeclass instanceښghc-lib-parserused to common up skolem variables bound at the same location (only used in pprSkols)ghc-lib-parser Eq (Foo a)4Which signifies that the context should be inferred.]ghc-lib-parser :  , ,  , ,  , ,]ghc-lib-parser3Located stand-alone 'deriving instance' declaration]ghc-lib-parserInstance Declaration]ghc-lib-parserLocated Instance Declaration]ghc-lib-parserClass Instance Declaration -  :  ,  , ,, For details on above see Note [exact print annotations] in GHC.Parser.Annotation]ghc-lib-parser : &, ,]ghc-lib-parser"Located Class Instance Declaration]ghc-lib-parserFamily EquationOne equation in a type family instance declaration, data family instance declaration, or type family default. See Note [Type family instance declarations in HsSyn] See Note [Family instance declaration binders]]ghc-lib-parserOptional quantified type vars]ghc-lib-parserFixity used in the declaration]ghc-lib-parser : ]ghc-lib-parser Data Family Instance Declaration]ghc-lib-parser :  , , ,  , , ]ghc-lib-parser(Located Data Family Instance Declaration]ghc-lib-parser Type Family Instance Declaration]ghc-lib-parser :  , ,]ghc-lib-parser(Located Type Family Instance Declaration]ghc-lib-parser)Located type family default declarations.]ghc-lib-parser MkT a b MkT :: forall b a. Eq a => MkT a b data T b where MkT1 :: Int -> T Int data T = Int MkT, Int | MkT2 data T a where Int MkT Int :: T Int s : , ,, ,, ,, ,data Constructor Declaration]ghc-lib-parserThe outermost type variable binders, be they explicit or implicit. The  is used to anchor exact print annotations, AnnForall and AnnDot.]ghc-lib-parserUser-written context (if any)]ghc-lib-parserArguments; never infix]ghc-lib-parser Result type]ghc-lib-parserA possible Haddock comment.]ghc-lib-parserTrue  = explicit user-written forall e.g. data T a = forall b. MkT b (b->a) con_ex_tvs = {b} False => con_ex_tvs is empty]ghc-lib-parserExistentials only]ghc-lib-parserArguments; can be infix]ghc-lib-parser$Located data Constructor Declaration]ghc-lib-parser#Whether a data-type declaration is data or newtype, and its constructors.]ghc-lib-parser5When we only care whether a data-type declaration is `data` or  `newtype`", but not what constructors it has]ghc-lib-parser newtype Blah ...]ghc-lib-parser  data Blah ...]ghc-lib-parser!Located Standalone Kind Signature]ghc-lib-parser The types mentioned in a single deriving& clause. This can come in two forms, ] or ], depending on whether the types are surrounded by enclosing parentheses or not. These parentheses are semantically different than Z. For example,  deriving () means "derive zero classes" rather than "derive an instance of the 0-tuple".] use [ because deriving clauses can mention type variables that aren't bound by the datatype, e.g. data T b = ... deriving (C [a])&should produce a derived instance for  C [a] (T b).]ghc-lib-parserA deriving clause with a single type. Moreover, that type can only be a type constructor without any arguments. Example:  deriving Eq]ghc-lib-parserA deriving clause with a comma-separated list of types, surrounded by enclosing parentheses. Example: deriving (Eq, C a)]ghc-lib-parser A single deriving clause of a data declaration. : ,  , ,  , ,]ghc-lib-parser;The user-specified strategy (if any) to use when deriving ].]ghc-lib-parserThe types to derive.]ghc-lib-parserHaskell Deriving clause^ghc-lib-parserHaskell Data type Definition^ghc-lib-parser:Declares a data type or newtype, giving its constructors  data/newtype T a =  constrs! data/newtype instance T [a] =  constrs ^ghc-lib-parserContext^ghc-lib-parserOptional kind signature.(Just k) for a GADT-style data, or  data instance decl, with explicit kind sigAlways Nothing for H98-syntax decls^ghc-lib-parserData constructorsFor data T a = T1 | T2 a the ] s all have ]. For data T a where { T1 :: T a } the  LConDecls all have ].^ghc-lib-parser Optional  'deriving' clause^ghc-lib-parserI if we're in an hs-boot file and the user said "type family Foo x where .."^ghc-lib-parserIf the user supplied an injectivity annotation it is represented using InjectivityAnn. At the moment this is a single injectivity condition - see Note [Injectivity annotation]. `Located name` stores the LHS of injectivity condition. `[Located name]` stores the RHS of injectivity condition. Example:.type family Foo a b c = r | r -> a c where ...,This will be represented as "InjectivityAnn r [a, c]"^ghc-lib-parser : , ^ghc-lib-parserLocated Injectivity Annotation^ghc-lib-parsertype Family Declaration^ghc-lib-parser : , , , , , , , , , ^ghc-lib-parserLocated type Family Declaration^ghc-lib-parsertype Family Result Signature^ghc-lib-parser :^ghc-lib-parser : ,, ^ghc-lib-parser : ,, , ^ghc-lib-parser$Located type Family Result Signature^ghc-lib-parserType or Class Group^ghc-lib-parserA type or class declaration.^ghc-lib-parser type/data family T :: *->* : , , ,, ,, ,, ,, ^ghc-lib-parsertype declaration : , ,^ghc-lib-parserdata declaration : , , , , ,^ghc-lib-parser :  , , , The tcdFDs will have ,   For details on above see Note [exact print annotations] in GHC.Parser.Annotation^ghc-lib-parserPost renamer, FVs^ghc-lib-parserType constructor^ghc-lib-parserType variables; for an associated type these include outer binders^ghc-lib-parserFixity used in the declaration^ghc-lib-parserRHS of type declaration^ghc-lib-parserPost renamer, CUSK flag, FVs^ghc-lib-parserPost renamer, FVs^ghc-lib-parser7Explicit or virtual braces See Note [Class LayoutInfo]^ghc-lib-parser Context...^ghc-lib-parserFunctional deps^ghc-lib-parserMethods' signatures^ghc-lib-parserDefault methods^ghc-lib-parserAssociated types;^ghc-lib-parserAssociated type defaults^ghc-lib-parser Haddock docs^ghc-lib-parser&Located Declaration of a Type or Class^ghc-lib-parserA splice can appear with various decorations wrapped around it. This data type captures explicitly how it was originally written, for use in the pretty printer.^ghc-lib-parser$splice^ghc-lib-parser bare splice^ghc-lib-parserSplice Declaration^ghc-lib-parserLocated Splice Declaration^ghc-lib-parser Haskell GroupA ^ is categorised into a ^" before being fed to the renamer.^ghc-lib-parserA Haskell Declaration^ghc-lib-parserType or Class Declaration^ghc-lib-parserInstance declaration^ghc-lib-parserDeriving declaration^ghc-lib-parserValue declaration^ghc-lib-parserSignature declaration^ghc-lib-parserStandalone kind signature^ghc-lib-parser 'default' declaration^ghc-lib-parserForeign declaration^ghc-lib-parserWarning declaration^ghc-lib-parserAnnotation declaration^ghc-lib-parserRule declaration^ghc-lib-parser+Splice declaration (Includes quasi-quotes)^ghc-lib-parser"Documentation comment declaration^ghc-lib-parserRole annotation declaration^ghc-lib-parserTrue  = argument is a data/newtype declaration.^ghc-lib-parser!type or type instance declaration^ghc-lib-parser type class^ghc-lib-parsertype/data family declaration^ghc-lib-parsertype family declaration^ghc-lib-parseropen type family info^ghc-lib-parserclosed type family info^ghc-lib-parserdata family declaration^ghc-lib-parserAre the constructors within a  type data declaration? See Note [Type data declarations] in GHC.Rename.Module.]ghc-lib-parser May have  :  when in a list]ghc-lib-parser May have  : # when in a GADT constructor list]ghc-lib-parser The optional deriving clauses of a data declaration. Clauses is plural because one can specify multiple deriving clauses using the -XDerivingStrategies language extension. The list of ]s corresponds to exactly what the user requested to derive, in order. If no deriving clauses were specified, the list is empty.^ghc-lib-parserWhen in a list this may have : \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__^^^^^^^^^^^^^^^^^^^^^^^^^^]^^^^]]]]]]]]]]]]]]]]]]^^]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]]]]]]]]]]]^^^^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]\\\\\\\\\\\\\\\\\\\\\\^]]]]^^^^^^^]]]]]]]]]]]]]]\\\]]]]]]]]]]]]]]]]]]]]]]]]]]\\\\\\_\\\\\\\\\\\\\\\\\\_\\\\^^^^^^^^^^^^^^^^^^^^^^^^^^ Safe-Inferred(/,1[ghc-lib-parser!Haskell Pattern Synonym Direction[ghc-lib-parserRecord Pattern Synonym Field[ghc-lib-parser'Field label visible in rest of the file\ghc-lib-parser=Filled in by renamer, the name used internally by the pattern\ghc-lib-parserHaskell Pattern Synonym Details\ghc-lib-parserFixity Signature\ghc-lib-parserLocated Fixity Signature\ghc-lib-parserSignatures and pragmas\ghc-lib-parserAn ordinary type signature f :: Num a => a -> aAfter renaming, this list of Names contains the named wildcards brought into scope by this signature. For a signature _ -> _a -> Bool., the renamer will leave the unnamed wildcard _$ untouched, and the named wildcard _a is then replaced with fresh meta vars in the type. Their names are stored in the type signature that brought them into scope, in this third field to be more specific. :  , \ghc-lib-parser A pattern synonym type signature ,pattern Single :: () => (Show a) => a -> [a] :  , , ,\ghc-lib-parserA signature for a class method False: ordinary class-method signature True: generic-default class method signature e.g. class C a where op :: a -> a -- Ordinary default op :: Eq a => a -> a -- Generic default No wildcards allowed here :  , \ghc-lib-parserAn ordinary fixity declaration  infixl 8 *** :  , \ghc-lib-parserAn inline pragma {#- INLINE f #-} :   '{-# INLINE' and '[' , , , , , \ghc-lib-parserA specialisation pragma "{-# SPECIALISE f :: Int -> Int #-} : ,  '{-# SPECIALISE' and '[', , ,  ']' and '#-}', \ghc-lib-parser6A specialisation pragma for instance declarations only ${-# SPECIALISE instance Eq [Int] #-}(Class tys); should be a specialisation of the current instance declaration : , ,\ghc-lib-parser$A minimal complete definition pragma ${-# MINIMAL a | (b, c | (d | e)) #-} : , ,, \ghc-lib-parser+A "set cost centre" pragma for declarations {-# SCC funName #-}or &{-# SCC funName "cost_centre_name" #-}\ghc-lib-parserA complete match pragma {-# COMPLETE C, D [:: T] #-}Used to inform the pattern match checker about additional complete matchings which, for example, arise from pattern synonym definitions.\ghc-lib-parserLocated Signature\ghc-lib-parserImplicit parameter bindings. : \ghc-lib-parser"Located Implicit Parameter Binding May have  :  when in a list\ghc-lib-parser#Haskell Implicit Parameter Bindings\ghc-lib-parser : , ,, , '{',  '}',Pattern Synonym binding\ghc-lib-parserName of the pattern synonym\ghc-lib-parserFormal parameter names\ghc-lib-parserRight-hand side\ghc-lib-parserDirectionality\ghc-lib-parser1Haskell Binding with separate Left and Right id's\ghc-lib-parserFunction-like Binding'FunBind is used for both functions f x = e) and variables  f = x -> e) and strict variables  !x = x + 1/Reason 1: Special case for type inference: see .Reason 2: Instance decls can only have FunBinds, which is convenient. If you change this, you'll need to change e.g. rnMethodBinds'But note that the form f :: a->a = ... parses as a pattern binding, just like (f :: a -> a) = ... 6Strict bindings have their strictness recorded in the  SrcStrictness of their  MatchContext. See Note [FunBind vs PatBind] for details about the relationship between FunBind and PatBind.s), attached to each element of fun_matches,, ,,\ghc-lib-parserPattern BindingThe pattern is never a simple variable; That case is done by FunBind. See Note [FunBind vs PatBind] for details about the relationship between FunBind and PatBind.\ghc-lib-parserVariable BindingDictionary binding and suchlike. All VarBinds are introduced by the type checker\ghc-lib-parserPatterns Synonym Binding\ghc-lib-parser The payload\ghc-lib-parserLocated only for consistency\ghc-lib-parserLocated Haskell Binding with separate Left and Right identifier types\ghc-lib-parserLocated Haskell Bindings with separate Left and Right identifier types\ghc-lib-parserHaskell Binding\ghc-lib-parserLocated Haskell Bindings\ghc-lib-parserLocated Haskell Binding\ghc-lib-parserHaskell Value bindings with separate Left and Right identifier types (not implicit parameters) Used for both top level and nested bindings May contain pattern synonym bindings\ghc-lib-parserValue Bindings InBefore renaming RHS; idR is always RdrName Not dependency analysed Recursive by default\ghc-lib-parserValue Bindings OutAfter renaming RHS; idR can be Name or Id Dependency analysed, later bindings in the list may depend on earlier ones.\ghc-lib-parserHaskell Value Bindings\ghc-lib-parserHaskell Local Bindings with separate Left and Right identifier typesBindings in a 'let' expression or a 'where' clause\ghc-lib-parserHaskell Value Bindings\ghc-lib-parser#Haskell Implicit Parameter Bindings\ghc-lib-parserEmpty Local Bindings\ghc-lib-parserLocated Haskell local bindings\ghc-lib-parserHaskell Local Bindings\ghc-lib-parser :  , , ,   '{', '}'[[[[[\[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[\[[[[[[ Safe-Inferred 56;/;ghc-lib-parser Warning information for a module;ghc-lib-parserNothing deprecated;ghc-lib-parserWhole module deprecated;ghc-lib-parserSome specific things deprecated;ghc-lib-parser Warning Text6reason/explanation from a WARNING or DEPRECATED pragma<ghc-lib-parserConstructs the cache for the  mi_warn_fn field of a ModIface ;;;;;;;;<<< ;;;;;;;;<<<#Generic helpers for the HsSyn type.((c) The University of Glasgow, 1992-2006 Safe-Inferred()*/1@"ghc-lib-parserThis class specifies how to collect variable identifiers from extension patterns in the given pass. Consumers of the GHC API that define their own passes should feel free to implement instances in order to make use of functions which depend on it.In particular, Haddock already makes use of this, with an instance for its DocNameI pass so that it can reuse the code in GHC for collecting binders.ghc-lib-parser2Indicate if evidence binders have to be collected.This type is used as a boolean (should we collect evidence binders or not?) but also to pass an evidence that the AST has been typechecked when we do want to collect evidence binders, otherwise these binders are not available.*See Note [Dictionary binders in ConPatOut]ghc-lib-parserDon't collect evidence bindersghc-lib-parserCollect evidence bindersghc-lib-parser e => (e)ghc-lib-parserA simple case alternative with a single pattern, no binds, no guards; pre-typecheckingghc-lib-parserWrap in parens if  appPrec says it needs them So f x becomes (f x), but 3 stays as 3.ghc-lib-parserA useful function for building OpApps. The operator is always a variable, and we don't know the fixity yet.ɑghc-lib-parser NB: Only for  $.ّghc-lib-parser Wildcard pattern - after parsingڑghc-lib-parser!Wildcard pattern - after renamingghc-lib-parser4The Big equivalents for the source tuple expressionsghc-lib-parser1The Big equivalents for the source tuple patternsghc-lib-parser Convert an [ to an [.ghc-lib-parser Convert an [ to an [.ghc-lib-parserConvert \ to \. The former is what is parsed, but the latter is what we need in class/instance declarationsghc-lib-parser8Not infix, with place holders for coercion and free varsghc-lib-parser!In Name-land, with empty bind_fvsghc-lib-parserIf any of the matches in the \ are infix, the \ is considered infix.ghc-lib-parser Return the 0 encompassing the contents of any enclosed bindsghc-lib-parserConvenience function using . This is for generated bindings only, do not use for user-written code.ghc-lib-parser#Make a prefix, non-strict function _ghc-lib-parserShould we treat this as an unlifted bind? This will be true for any bind that binds an unlifted variable, but we must be careful around AbsBinds. See Note [Unlifted id check in isUnliftedHsBind]. For usage information, see Note [Strict binds checks] is GHC.HsToCore.Binds.ghc-lib-parser5Is a binding a strict variable or pattern bind (e.g. !x = ...)?ghc-lib-parserCollect $ binders only, or $"s + pattern synonyms, respectivelyghc-lib-parser Collect both $s and pattern-synonym bindersghc-lib-parserSame as #, but works over a list of bindingsghc-lib-parserCollect $s, or $/s + pattern synonyms, depending on boolean flagghc-lib-parserUsed exclusively for the bindings of an instance decl which are all FunBindsghc-lib-parserReturns all the binding names of the decl. The first one is guaranteed to be the name of the decl. The first component represents all binding names except record fields; the second represents field occurrences. For record fields mentioned in multiple constructors, the SrcLoc will be from the first occurrence.3Each returned (Located name) has a SrcSpan for the whole- declaration. See Note [SrcSpan for binders]ghc-lib-parserSee Note [SrcSpan for binders]ghc-lib-parserCollects record pattern-synonym selectors only; the pattern synonym names are collected by .ghc-lib-parserthe < returned are for the whole declarations, not just the namesghc-lib-parserthe < returned are for the whole declarations, not just the nameskk‘ÑđőƑǑȑɑʑˑ̑͑ΑϑБёґӑԑՑ֑בّؑڑۑܑݑޑߑƑǑȑɑʑΑБϑˑёۑܑݑޑߑ‘Ñđő̑͑ґӑՑ֑ԑבّؑڑkk Safe-Inferred6Q{ghc-lib-parserWhere to store evidence for expression holes See Note [Holes] in GHC.Tc.Types.Constraint{ghc-lib-parser Evidence for  CallStack implicit parameters.{ghc-lib-parserEvCsPushCall origin loc stk represents a call from origin, occurring at loc, in a calling context stk.{ghc-lib-parserInstructions on how to make a Typeable0 dictionary. See Note [Typeable evidence terms]{ghc-lib-parserDictionary for  Typeable T where T is a type constructor with all of its kind variables saturated. The [EvTerm] is Typeable" evidence for the applied kinds..{ghc-lib-parserDictionary for Typeable (s t), given a dictionaries for s and t.{ghc-lib-parserDictionary for Typeable (s % w -> t), given a dictionaries for w, s, and t.{ghc-lib-parser%Dictionary for a type literal, e.g. Typeable "foo" or  Typeable 3 The { is evidence of, e.g.,  KnownNat 3 (see #10348)|ghc-lib-parserIf a & is &$, flip the orientation of a coercion|ghc-lib-parserSmart constructor to create a | |.PRECONDITION: the "from" type of the first wrapper must have a syntactically fixed RuntimeRep (see Note [Fixed RuntimeRep] in GHC.Tc.Utils.Concrete).|ghc-lib-parserIdentifies the  lambda-bound dictionaries of an |. This is used (only) to allow the pattern-match overlap checker to know what Given dictionaries are in scope.7We specifically do not collect dictionaries bound in a |. These are either superclasses of lambda-bound ones, or (extremely numerous) results of binding Wanted dictionaries. We definitely don't want all those cluttering up the Given dictionaries for pattern-match overlap checking!|ghc-lib-parser,Any sort of evidence Id, including coercions|ghc-lib-parserd |> co|ghc-lib-parser Create a % that unwraps an implicit-parameter dictionary to expose the underlying value. We expect the %- to have the form `IP sym ty`, and return a % `co :: IP sym ty ~ ty`|ghc-lib-parser Create a %> that wraps a value in an implicit-parameter dictionary. See |.|ghc-lib-parserConvert the QuoteWrapper into a normal HsWrapper which can be used to apply its contents.|ghc-lib-parser-The Semigroup instance is a bit fishy, since  WpCompose, as a data constructor, is "syntactic" and not associative. Concretely, if a, b, and c aren't WpHole: (a <> b) <> c ?= a <> (b <> c)> (a `WpCompose` b) `WpCompose` c /= @ a `WpCompose` (b `WpCompose` c)However these two associations are are "semantically equal" in the sense that they produce equal functions when passed to GHC.HsToCore.Binds.dsHsWrapper.{ghc-lib-parser&where to write the erroring expressionghc-lib-parser expected type of that expressionghc-lib-parserfor debug output only|ghc-lib-parserthe "from" type of the first wrapper MUST have a fixed RuntimeRepghc-lib-parserEither "from" type or "to" type of the second wrapper (used only when the second wrapper is the identity) &&&&H{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||{{{{|||||||{{{{{{{{{|||||||||||||{{{{{{{{{{||||H||| &&&&|||{{|| Safe-Inferred(/6skghc-lib-parserThe extension field for [2, which is only used in the renamer onwards. See ,Note [Pattern signature binders and scoping].kghc-lib-parserWildcard nameskghc-lib-parserImplicitly bound variable nameskghc-lib-parserReturn the attached flagkghc-lib-parserSet the attached flagkghc-lib-parserDo all type variables in this [ come with kind annotations?kghc-lib-parserConvert an arrow into its corresponding multiplicity. In essence this erases the information of whether the programmer wrote an explicit multiplicity or a shorthand.kghc-lib-parser7Get the kind signature of a type, ignoring parentheses:hsTyKindSig `Maybe ` = Nothing hsTyKindSig `Maybe :: Type -> Type ` = Just `Type -> Type` hsTyKindSig `Maybe :: ((Type -> Type))` = Just `Type -> Type`This is used to extract the result kind of type synonyms with a CUSK:2type S = (F :: res_kind) ^^^^^^^^kghc-lib-parserRetrieve the name of the "head" of a nested type application. This is somewhat like GHC.Tc.Gen.HsType.splitHsAppTys, but a little more thorough. The purpose of this function is to examine instance heads, so it doesn't handle *all* cases (like lists, tuples, (~), etc.).kghc-lib-parser Compute the  associated with an Z.kghc-lib-parserk id fixity args! pretty-prints an application of id to args , using the fixity to tell whether id. should be printed prefix or infix. Examples: pprHsArgsApp T Prefix [HsTypeArg Bool, HsValArg Int] = T @Bool Int pprHsArgsApp T Prefix [HsTypeArg Bool, HsArgPar, HsValArg Int] = (T @Bool) Int pprHsArgsApp (++) Infix [HsValArg Char, HsValArg Double] = Char ++ Double pprHsArgsApp (++) Infix [HsValArg Char, HsValArg Double, HsVarArg Ordering] = (Char ++ Double) Ordering ghc-lib-parser.Pretty-print a prefix identifier to a list of Zs.ghc-lib-parserPretty-print an Z in isolation.kghc-lib-parserDecompose a pattern synonym type signature into its constituent parts.Note that this function looks through parentheses, so it will work on types such as  (forall a.  ...). The downside to this is that it is not generally possible to take the returned types and reconstruct the original type (parentheses and all) from them.kghc-lib-parser$Decompose a sigma type (of the form forall  tvs. context => body) into its constituent parts. Only splits type variable binders that were quantified invisibly (e.g.,  forall a., with a dot).This function is used to split apart certain types, such as instance declaration types, which disallow visible forall)s. For instance, if GHC split apart the forall in "instance forall a -> Show (Blah a)6, then that declaration would mistakenly be accepted!Note that this function looks through parentheses, so it will work on types such as  (forall a.  ...). The downside to this is that it is not generally possible to take the returned types and reconstruct the original type (parentheses and all) from them.kghc-lib-parser;Decompose a GADT type into its constituent parts. Returns (outer_bndrs, mb_ctxt, body), where: outer_bndrs are [ if the type has explicit, outermost type variable binders. Otherwise, they are [.mb_ctxt is Just5 the context, if it is provided. Otherwise, it is Nothing.body, is the body of the type after the optional foralls and context.?This function is careful not to look through parentheses. See Note [GADT abstract syntax] (Wrinkle: No nested foralls or contexts)  GHC.Hs.Decls for why this is important.kghc-lib-parserDecompose a type of the form forall  tvs. body into its constituent parts. Only splits type variable binders that were quantified invisibly (e.g.,  forall a., with a dot).This function is used to split apart certain types, such as instance declaration types, which disallow visible forall)s. For instance, if GHC split apart the forall in "instance forall a -> Show (Blah a)6, then that declaration would mistakenly be accepted!Note that this function looks through parentheses, so it will work on types such as  (forall a.  ...). The downside to this is that it is not generally possible to take the returned types and reconstruct the original type (parentheses and all) from them. Unlike k, this function does not look through parentheses, hence the suffix _KP (short for "Keep Parentheses").kghc-lib-parserDecompose a type of the form forall  tvs. body into its constituent parts. Only splits type variable binders that were quantified invisibly (e.g.,  forall a., with a dot).This function is used to split apart certain types, such as instance declaration types, which disallow visible forall)s. For instance, if GHC split apart the forall in "instance forall a -> Show (Blah a)6, then that declaration would mistakenly be accepted!Unlike k, this function does not look through parentheses, hence the suffix _KP (short for "Keep Parentheses").kghc-lib-parserDecompose a type of the form context => body into its constituent parts.Note that this function looks through parentheses, so it will work on types such as  (context =>  ...). The downside to this is that it is not generally possible to take the returned types and reconstruct the original type (parentheses and all) from them.ghc-lib-parserDecompose a type of the form context => body into its constituent parts.Unlike k, this function does not look through parentheses, hence the suffix _KP (short for "Keep Parentheses").kghc-lib-parser3Decompose a type class instance type (of the form forall  tvs. context => instance_head-) into its constituent parts. Note that the [Name] s returned correspond to either:The implicitly bound type variables (if the type lacks an outermost forall), orThe explicitly bound type variables (if the type has an outermost forall).?This function is careful not to look through parentheses. See 6Note [No nested foralls or contexts in instance types] for why this is important.kghc-lib-parser3Decompose a type class instance type (of the form forall  tvs. context => instance_head ) into the  instance_head.kghc-lib-parser3Decompose a type class instance type (of the form forall  tvs. context => instance_head ) into the  instance_head and retrieve the underlying class type constructor (if it exists).kghc-lib-parserPrints the explicit forall in a type family equation if one is written. If there is no explicit forall, nothing is printed.kghc-lib-parserPrints the outermost forall in a type signature if one is written. If there is no outermost forall, nothing is printed.kghc-lib-parser3Prints a forall; When passed an empty list, prints forall ./ forall -> only when  -dppr-debug is enabled.lghc-lib-parserl p t returns K if the type t% needs parentheses under precedence p.lghc-lib-parserl p ty checks if l p ty is true, and if so, surrounds ty with an Z . Otherwise, it simply returns ty.lghc-lib-parserl p ctxt checks if ctxt is a single constraint c such that l p c is true, and if so, surrounds c with an Z to form a parenthesized ctxt . Otherwise, it simply returns ctxt unchanged.lghc-lib-parserThis instance is meant for debug-printing purposes. If you wish to pretty-print an application of Zs, use k instead.kghc-lib-parser Location of forall and -> for HsForAllVis Location of forall and  for HsForAllInvis %YYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklll%ZZ[[ZZZZkZZZkkkkZZZZZZZZZZZZZZZZZZZZZZZZZZZZZk[[[[[[[[[[[kZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[kkkk[[[[[[[[[ZZZ[[kZZZZZ[[[ZZZZkkZkk[[YYYYYY kkZZZZZZZZkZZZZ[ZZZZZZkZZZZZkkkkkkkkk[kkkkkkkkkk[k[kkkkkkkkkkkkkkkkkkkkkkkkkkkk[kkkkkkkklll Safe-Inferred /1564`ghc-lib-parser%TH finalizers produced by the splice.`ghc-lib-parser8The result of splicing; See Note [Lifecycle of a splice]`ghc-lib-parser&Finalizers produced by a splice with See Note [Delaying modFinalizers in untyped splices] in GHC.Rename.Splice. For how this is used.ghc-lib-parserPending Type-checker Spliceghc-lib-parserPending Renamer Spliceяghc-lib-parserMatch separator locationُghc-lib-parser'Command Syntax Table (for Arrow syntax)ghc-lib-parser'('ghc-lib-parser')'ghc-lib-parser)HsWrap appears only in typechecker outputghc-lib-parser7An expression with wrappers, used for rebindable syntaxThis should desugar to syn_res_wrap $ syn_expr (syn_arg_wraps[0] arg0) (syn_arg_wraps[1] arg1) ...:where the actual arguments come from elsewhere in the AST.ghc-lib-parserThe function to use in rebindable syntax. See Note [NoSyntaxExpr].ghc-lib-parserPost-Type checking TableWe use a PostTcTable where there are a bunch of pieces of evidence, more than is convenient to keep individually.ghc-lib-parserPost-Type checking ExpressionPostTcExpr is an evidence expression attached to the syntax tree by the type checker (c.f. postTcType).ghc-lib-parserThis is used for rebindable-syntax pieces that are too polymorphic for tcSyntaxOp (trS_fmap and the mzip in ParStmt)ghc-lib-parserMake a 'SyntaxExpr GhcRn' from an expression Used only in getMonadFailOp. See Note [Monad fail : Rebindable syntax, overloaded strings] in GHC.Rename.Exprghc-lib-parserMake a  from a 4 (the "rn" is because this is used in the renamer).ghc-lib-parser p e returns K if the expression e% needs parentheses under precedence p.ghc-lib-parser4Parenthesize an expression without token informationghc-lib-parser p e checks if  p e is true, and if so, surrounds e with an `. Otherwise, it simply returns e.ghc-lib-parser.Is there only one RHS in this list of matches?ghc-lib-parser(Just print the original expression (the a).``___````___`````````````````````````````````````````````````____________________________________________________________________________________________________________`````````````````````````````````````````````````````````````````````aaaaaϏďǏŏƏȏ͏̏ˏɏʏΏяϏЏҏ֏Տӏԏ׏؏ُڏۏ܏ߏݏޏÐĐŐƐǐȐɐʐː̐͐ΐϐАѐҐӐԐՐ֐אِؐڐېܐݐސߐ````````aaaaaϏďǏŏƏȏ͏̏ˏɏʏΏяϏЏҏ֏Տӏԏ׏؏ُڏۏ܏ߏݏޏÐĐŐƐǐȐɐʐː̐͐ΐϐАѐҐӐԐՐ֐אِؐڐېܐݐސߐ Safe-Inferred )*?~ghc-lib-parser?A typecheckable thing available in a local context. Could be  %1, but also lexically scoped variables, etc. See GHC.Tc.Utils.Env for how to retrieve a % given a .ghc-lib-parserThe current collection of docs that Template Haskell has built up via putDoc.ghc-lib-parserThis is a mirror of Template Haskell's DocLoc, but the TH names are resolved to GHC names.ghc-lib-parser$A plugin for controlling defaulting.ghc-lib-parser.Initialize plugin, when entering type-checker.ghc-lib-parserDefault some typesghc-lib-parser9Clean up after the plugin, when exiting the type-checker.ghc-lib-parser pure $ TcPluginOK [] [] 5 if your plugin does not provide this functionality.ghc-lib-parser+Rewrite saturated type family applications.The plugin is expected to supply a mapping from type family names to rewriting functions. For each type family %, the plugin should provide a function which takes in the given constraints and arguments of a saturated type family application, and return a possible rewriting. See + for the expected shape of such a function.Use  \ _ -> emptyUFM 4 if your plugin does not provide this functionality.ghc-lib-parser9Clean up after the plugin, when exiting the type-checker.ghc-lib-parser5 is the monad in which type-checking plugins operate.ghc-lib-parserFor rewriting type family applications, a type-checking plugin provides a function of this type for each type family %.The function is provided with the current set of Given constraints, together with the arguments to the type family. The type family application will always be fully saturated.ghc-lib-parserThe solve function of a type-checking plugin takes in Given and Wanted constraints, and should return a  indicating which Wanted constraints it could solve, or whether any are insoluble.ghc-lib-parser>IsGroupClosed describes a group of mutually-recursive bindingsghc-lib-parser+IdBindingInfo describes how an Id is bound.?It is used for the following purposes: a) for static forms in  and b) to figure out when a nested binding can be generalised, in .ӱghc-lib-parserType alias for ; the convention is we'll use this for mutable bits of data in  which are updated during typechecking and returned at the end.ghc-lib-parser describes the top-level of the module at the point at which the typechecker is finished work. It is this structure that is handed on to the desugarer For state that needs to be updated during the typechecking phase and returned at end, use a ӱ (= ).ghc-lib-parserModule being compiledghc-lib-parserIf a signature, the backing module See also Note [Identity versus semantic module]ghc-lib-parser4What kind of module (regular Haskell, hs-boot, hsig)ghc-lib-parser$Top level envt; used during renamingghc-lib-parserTypes used for defaulting. Nothing => no default declghc-lib-parserJust for things in this moduleghc-lib-parserJust for things in this module See Note [The interactive package] in GHC.Runtime.Contextghc-lib-parserGlobal type env for the module we are compiling now. All TyCons and Classes (for this module) end up in here right away, along with their derived constructors, selectors.(Ids defined in this module start in the local envt, though they move to the global envt during zonking)NB: for what "things in this module" means, see Note [The interactive package] in GHC.Runtime.Contextghc-lib-parserInstance envt for all  home-package modules; Includes the dfuns in tcg_insts NB. BangPattern is to fix a leak, see #15111ghc-lib-parserDitto for family instances NB. BangPattern is to fix a leak, see #15111ghc-lib-parserAnd for annotationsghc-lib-parserWhat is exportedghc-lib-parserInformation about what was imported from where, including things bound in this module. Also store Safe Haskell info here about transitive trusted package requirements.There are not many uses of this field, so you can grep for all them.The ImportAvails records information about the following things: 6All of the modules you directly imported (tcRnImports)The orphans (only!) of all imported modules in a GHCi session (runTcInteractive)(The module that instantiated a signature%Each of the signatures that merged inIt is used in the following ways: - imp_orphs is used to determine what orphan modules should be visible in the context (tcVisibleOrphanMods) - imp_finsts is used to determine what family instances should be visible (tcExtendLocalFamInstEnv) - To resolve the meaning of the export list of a module (tcRnExports) - imp_mods is used to compute usage info (mkIfaceTc, deSugar) - imp_trust_own_pkg is used for Safe Haskell in interfaces (mkIfaceTc, as well as in GHC.Driver.Main) - To create the Dependencies field in interface (mkDependencies)ghc-lib-parserTrue" <=> Template Haskell syntax used.We need this so that we can generate a dependency on the Template Haskell package, because the desugarer is going to emit loads of references to TH symbols. The reference is implicit rather than explicit, so we have to zap a mutable variable.ghc-lib-parserTrue( <=> A Template Haskell splice was used.2Splices disable recompilation avoidance (see #481)ghc-lib-parserThe set of runtime dependencies required by this module See Note [Object File Dependencies]ghc-lib-parser&Allows us to choose unique DFun names.ghc-lib-parserThe requirements we merged with; we always have to recompile if any of these changed.ghc-lib-parserRenamed decls, maybe. Nothing! <=> Don't retain renamed decls.ghc-lib-parser"dependencies from addDependentFileghc-lib-parser'Top-level declarations from addTopDeclsghc-lib-parserForeign files emitted from TH.ghc-lib-parser>Exact names bound in top-level declarations in tcg_th_topdeclsghc-lib-parser#Template Haskell module finalizers.+They can use particular local environments.ghc-lib-parser,Core plugins added by Template Haskell code.ghc-lib-parserTemplate Haskell stateghc-lib-parser#Docs added in Template Haskell via putDoc.ghc-lib-parserMaybe Haddock header docsghc-lib-parserTrue if any part of the prog uses hpc instrumentation. NB. BangPattern is to fix a leak, see #15111ghc-lib-parser5Whether this module has a corresponding hi-boot fileghc-lib-parserThe Name of the main function, if this module is the main module.ghc-lib-parserHas the typechecker inferred this module as -XSafe (Safe Haskell)? See Note [Safe Haskell Overlapping Instances Implementation], although this is used for more than just that failure case.ghc-lib-parserUnreported reasons why tcg_safe_infer is False. INVARIANT: If this Messages is non-empty, then tcg_safe_infer is False. It may be that tcg_safe_infer is False but this is empty, if no reasons are supplied (#19714), or if those reasons have already been reported by GHC.Driver.Main.markUnsafeInferghc-lib-parserA list of user-defined type-checking plugins for constraint solving.ghc-lib-parserA collection of all the user-defined type-checking plugins for rewriting type family applications, collated by their type family %s.ghc-lib-parser;A list of user-defined plugins for type defaulting plugins.ghc-lib-parser8A list of user-defined plugins for hole fit suggestions.ghc-lib-parser%The RealSrcSpan this module came fromghc-lib-parserWanted constraints of static forms. See Note [Constraints in static forms].ghc-lib-parser,Tracking indices for cost centre annotationsghc-lib-parser2See Note [Generating fresh names for FFI wrappers]ghc-lib-parser describes the result of running the frontend of a Haskell module. Currently one always gets a , since running the frontend involves typechecking a program. hs-sig merges are not handled here.This data type really should be in GHC.Driver.Env, but it needs to have a TcGblEnv which is only defined here.ghc-lib-parserA  carries the necessary context for performing rewrites (i.e. type family reductions and following filled-in metavariables) in the solver.ghc-lib-parser"In which context are we rewriting?Type-checking plugins might want to use this location information when emitting new Wanted constraints when rewriting type family applications. This ensures that such Wanted constraints will, when unsolved, give rise to error messages with the correct source location.ghc-lib-parserAt what role are we rewriting?3See Note [Rewriter EqRels] in GHC.Tc.Solver.Rewriteghc-lib-parser"See Note [Wanteds rewrite Wanteds]Ʋghc-lib-parser0Historical "type-checking monad" (now it's just ˲).Dzghc-lib-parser+Historical "renaming monad" (now it's just ˲).Ͳghc-lib-parserA Ͳ is a substitution on s that can be used to refine the identities of a hole while we are renaming interfaces (see GHC.Iface.Rename). Specifically, a Ͳ for ns_module_name A, defines a mapping from {A.T} (for some   T) to some arbitrary other ."The most intriguing thing about a Ͳ(, however, is how it's constructed. A Ͳ is *implied* by the exported 5s of the implementor of an interface: if an implementor of signature  exports M.T-, you implicitly define a substitution from {H.T} to M.T. So a Ͳ is computed from the list of 5s that are exported by the implementation of a module, or successively merged together by the export lists of signatures which are joining together.It's not the most obvious way to go about doing this, but it does seem to work!NB: Can't boot this and put it in NameShape because then we start pulling in too many DynFlags things.Ҳghc-lib-parser,The plugin has not found any contradictions,The first field is for constraints that were solved. The second field contains new work, that should be processed by the constraint solver.Ӳghc-lib-parserThe plugin found a contradiction. The returned constraints are removed from the inert set, and recorded as insoluble.7The returned list of constraints should never be empty.ٲghc-lib-parserGet target platformghc-lib-parserMatches on either a global % or a z.ghc-lib-parserUnion two ImportAvailsThis function is a key part of Import handling, basically for each import we create a separate ImportAvails structure and then union them all together with this function.ghc-lib-parser#No signature or a partial signatureghc-lib-parser;This function provides an escape for direct access to the Ʋ: monad. It should not be used lightly, and the provided  API should be favoured instead.ghc-lib-parser Check the  for consistency. Currently, only checks axioms, but should check other aspects, too.ghc-lib-parserRewriter environmentghc-lib-parserGivensghc-lib-parsertype family argumentsghc-lib-parserGivensghc-lib-parserWantedsccyyyyyyyyyyy~~~~ױرٱڱ۱ܱݱޱ߱~~~~~©ӲҲ±ñıűƱDZȱɱʱ˱̱ͱαϱбѱұӱԱձֱ²òIJŲƲDzȲɲʲ˲̲ͲβϲвѲԲղֲײزٲڲ۲ܲݲ޲߲̲˲ƲDzʲȲɲӱ²òIJŲ~ױرٱڱ۱ܱݱޱ߱~~~~~Բֱֲײyyyyyyyyyyyձб̱ͱαϱ~~ղ©ccıűƱDZȱɱʱ˱±ñڲ۲ܲݲ޲߲Ա~ұѱͲβϲвѲزٲӲҲӲҲ Safe-Inferredv~ghc-lib-parserThe ~/ is essentially a cache for information in the ModIface for home modules only. Information relating to packages will be loaded into global environments in ExternalPackageState.~ghc-lib-parserLocal type environment for this particular module Includes Ids, TyCons, PatSyns~ghc-lib-parserDFunId"s for the instances in this module~ghc-lib-parserDomain may include Ids from other modules~ghc-lib-parserAnnotations present in this module: currently they only annotate things also declared in this module~ghc-lib-parser&Complete match pragmas for this module~ghc-lib-parserConstructs an empty ModDetails ~~~~~~~~~~ ~~~~~~~~~~ Safe-InferredJfghc-lib-parser A map from s to %s, constructed by typechecking local declarations or interface filesffffffffgggggggggffggggggggffffffg Safe-Inferredcghc-lib-parserA list of conlikes which represents a complete pattern match. These arise from COMPLETE signatures. See also Note [Implementation of COMPLETE pragmas].cghc-lib-parser The set of c valuescghc-lib-parser6The optional, concrete result TyCon the set applies tocccccccccccccc Safe-Inferred6ڪghc-lib-parserCollect class instance matches, including matches that we know are overridden but might still be useful to override other instances (which we call "guards").'See Note [Instance overlap and guards].ghc-lib-parserMinimal matches: we have knocked out all strictly more general matches that are overlapped by a match in this list.ghc-lib-parserGuards: matches that we know we won't pick in the end, but might still be useful for ruling out other instances, as per #20946. See Note [Instance overlap and guards], (A).~ghc-lib-parserSet of visible orphan modules, according to what modules have been directly imported. This is based off of the dep_orphs field, which records transitively reachable orphan modules (modules that define orphan instances).~ghc-lib-parser~ represents the combination of the global type class instance environment, the local type class instance environment, and the set of transitively reachable orphan modules (according to what modules have been directly imported) used to test orphan instance visibility.~ghc-lib-parserA type-class instance. Note that there is some tricky laziness at work here. See Note [ClsInst laziness and the rough-match fields] for more details.~ghc-lib-parser Class name~ghc-lib-parserTop of type args The class itself is always the first element of this list~ghc-lib-parseris_dfun_name = idName . is_dfun.We use ~ for the visibility check, ~, which needs to know the  which the dictionary is defined in. However, we cannot use the  attached to ~ since doing so would mean we would potentially pull in an entire interface file unnecessarily. This was the cause of #12367.~ghc-lib-parserA fuzzy comparison function for class instances, intended for sorting instances before displaying them to the user.~ghc-lib-parserCollects the names of concrete types and type constructors that make up the head of a class instance. For instance, given `class Foo a b`:`instance Foo (Either (Maybe Int) a) Bool` would yield [Either, Maybe, Int, Bool].Used in the implementation of ":info" in GHCi.The { is because of instance Foo a => Baz T where ... The decl is an orphan if Baz and T are both not locally defined, even if Foo *is* locally defined~ghc-lib-parserTest if an instance is visible, by checking that its origin module is in ~2. See Note [Instance lookup and orphan instances]~ghc-lib-parserChecks for an exact match of ClsInst in the instance environment. We use this when we do signature checking in  GHC.Tc.Module~ghc-lib-parser/Makes no particular effort to detect conflicts.~ghc-lib-parserTrue when when the instance heads are the same e.g. both are Eq [(a,b)] Used for overriding in GHCi Obviously should be insensitive to alpha-renaming~ghc-lib-parserLook up an instance in the given instance environment. The given class application must match exactly one instance and the match may not contain any flexi type variables. If the lookup is unsuccessful, yield 'Left errorMessage'.~ghc-lib-parserSee Note [Rules for instance lookup] ^ See Note [Safe Haskell Overlapping Instances] in  GHC.Tc.Solver ^ See Note [Safe Haskell Overlapping Instances Implementation] in  GHC.Tc.Solverghc-lib-parserRemove from the argument list any InstMatches for which another element of the list is more specific, and overlaps it, using the rules of Nove [Rules for instance lookup]ghc-lib-parserComputes whether the first class instance overrides the second, i.e. the first is more specific and can overlap the second.More precisely, instA  instB returns K precisely when:instA is more specific than instB,instB is not more specific than instA,instA is overlapping OR instB is overlappable.ghc-lib-parserAdd a new solution, knocking out strictly less specific ones See Note [Rules for instance lookup] and Note [Instance overlap and guards].Property/: the order of insertion doesn't matter, i.e. ;insert_overlapping inst1 (insert_overlapping inst2 matches) gives the same result as ;insert_overlapping inst2 (insert_overlapping inst1 matches).~ghc-lib-parserthe name of the classghc-lib-parser)the rough match signature of the instanceghc-lib-parserthe  of the dictionary bindingghc-lib-parserthe $ of the dictionary.ghc-lib-parsermay this instance overlap?ghc-lib-parseris this instance an orphan?&&&&&&&&&&&1RR~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1~~~~~~~&&&&&&&&&&&~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~RR~~~ Safe-Inferred%yghc-lib-parsery summarises what was imported from where, irrespective of whether the imported things are actually used or not. It is used: when processing the export list,4when constructing usage info for the interface file,to identify the list of directly imported modules for initialisation purposes and for optimised overlap checking of family instances,/when figuring out what things are really unusedyghc-lib-parser'Domain is all directly-imported modules-See the documentation on ImportedModsVal in GHC.Unit.Module.Imported for the meaning of the fields.We need a full ModuleEnv rather than a ModuleNameEnv here, because we might be importing modules of the same name from different packages. (currently not the case, but might be in the future).yghc-lib-parserHome-package modules directly imported by the module being compiled.yghc-lib-parser5Packages directly needed by the module being compiledyghc-lib-parserDo we require that our own package is trusted? This is to handle efficiently the case where a Safe module imports a Trustworthy module that resides in the same package as it. See Note [Trust Own Package] in GHC.Rename.Namesyghc-lib-parserThis records the packages the current module needs to trust for Safe Haskell compilation to succeed. A package is required to be trusted if we are dependent on a trustworthy module in that package. See Note [Tracking Trust Transitively] in GHC.Rename.Namesyghc-lib-parserDomain is all modules which have hs-boot files, and whether we should import the boot version of interface file. Only used in one-shot mode to populate eps_is_boot.yghc-lib-parser Signature modules below this oneyghc-lib-parserOrphan modules below us in the import tree (and maybe including us for imported modules)yghc-lib-parserFamily instance modules below us in the import tree (and maybe including us for imported modules)yghc-lib-parserRecords modules for which changes may force recompilation of this module See wiki: https://gitlab.haskell.org/ghc/ghc/wikis/commentary/compiler/recompilation-avoidanceThis differs from Dependencies. A module X may be in the dep_mods of this module (via an import chain) but if we don't use anything from X it won't appear in our Usageyghc-lib-parserModule from another packageyghc-lib-parserModule from the current packageyghc-lib-parserA file upon which the module depends, e.g. a CPP #include, or using TH's addDependentFileyghc-lib-parser-A requirement which was merged into this one.yghc-lib-parser#External package module depended onyghc-lib-parser:Cached module ABI fingerprint (corresponds to mi_mod_hash)yghc-lib-parser)Was this module imported as a safe importyghc-lib-parserName of the moduleyghc-lib-parserEntities we depend on, sorted by occurrence name and fingerprinted. NB: usages are for parent names only, e.g. type constructors but not the associated data constructors.yghc-lib-parserFingerprint for the export list of this module, if we directly imported it (and hence we depend on its export list)yghc-lib-parserExternal file dependency. From a CPP #include or TH addDependentFile. Should be absolute.yghc-lib-parser of the file contents.yghc-lib-parserAn optional string which is used in recompilation messages if file in question has changed.yghc-lib-parserThe *interface* hash of the module, not the ABI hash. This changes when anything about the interface (and hence the module) has changed.yghc-lib-parserDependency information about ALL modules and packages below this one in the import hierarchy. This is the serialisable version of y.(Invariant: the dependencies of a module M never includes M.0Invariant: none of the lists contain duplicates.Invariant: lists are ordered canonically (e.g. using stableModuleCmp)1See Note [Transitive Information in Dependencies]yghc-lib-parserAll home-package modules which are directly imported by this one. This may include modules from other units when using multiple home unitsyghc-lib-parserAll packages directly imported by this module I.e. packages to which this module's direct imports belong. Does not include other home units when using multiple home units. Modules from these units will go in yyghc-lib-parserAll units needed for pluginsyghc-lib-parser4Transitive closure of hsig files in the home packageyghc-lib-parserAll modules which have boot files below this one, and whether we should use the boot file or not. This information is only used to populate the eps_is_boot field. See Note [Structure of dep_boot_mods]yghc-lib-parserTransitive closure of orphan modules (whether home or external pkg).(Possible optimization: don't include family instance orphans as they are anyway included in y. But then be careful about code which relies on dep_orphs having the complete list!) This does NOT include us, unlike y.yghc-lib-parserTransitive closure of depended upon modules which contain family instances (whether home or external). This is used by checkFamInstConsistency%. This does NOT include us, unlike y9. See Note [The type family instance consistency story].yghc-lib-parserExtract information from the rename and typecheck phases to produce a dependencies information for the module being compiled.0The fourth argument is a list of plugin modules.yghc-lib-parserUpdate module dependencies containing orphans (used by Backpack)yghc-lib-parserUpdate module dependencies containing family instances (used by Backpack)yghc-lib-parserPretty-print unit dependencies)yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy)yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy Safe-Inferred '7xghc-lib-parserSubstitution on module variables, mapping module names to module identifiers.xghc-lib-parser!The result of performing a lookupxghc-lib-parser-Found the module uniquely, nothing else to doxghc-lib-parser,Multiple modules with the same name in scopexghc-lib-parserNo modules found, but there were some hidden ones with an exact name match. First is due to package hidden, second is due to module being hiddenxghc-lib-parserNo modules found, but there were some unusable ones with an exact name matchxghc-lib-parser6Nothing found, here are some suggested different namesghc-lib-parserFor each unit, a mapping from uid -> i indicates that this unit was brought into GHC by the ith  -package-db flag on the command line. We use this mapping to make sure we prefer units that were defined later on the command line, if there is an ambiguity.ghc-lib-parser'A reverse dependency index, mapping an  to the  s which have a dependency on it.xghc-lib-parser"The reason why a unit is unusable.xghc-lib-parserWe ignored it explicitly using -ignore-package.xghc-lib-parserThis unit transitively depends on a unit that was never present in any of the provided databases.xghc-lib-parserThis unit transitively depends on a unit involved in a cycle. Note that the list of  reports the direct dependencies of this unit that (transitively) depended on the cycle, and not the actual cycle itself (which we report separately at high verbosity.)xghc-lib-parser;This unit transitively depends on a unit which was ignored.xghc-lib-parserThis unit transitively depends on a unit which was shadowed by an ABI-incompatible unit.xghc-lib-parser Unit databasexghc-lib-parser A mapping of  to )>. This list is adjusted so that only valid units are here. )5 reflects what was stored *on disk*, except for the trusted flag, which is adjusted at runtime. (In particular, some units in this map may have the exposed flag be H.)xghc-lib-parserThe set of transitively reachable units according to the explicitly provided command line arguments. A fully instantiated VirtUnit may only be replaced by a RealUnit from this set. See Note [VirtUnit to RealUnit improvement]xghc-lib-parser A mapping of ) to . If several units have the same package name (e.g. different instantiations), then we return one of them... This is used when users refer to packages in Backpack includes. And also to resolve package qualifiers with the PackageImports extension.xghc-lib-parser7A mapping from database unit keys to wired in unit ids.xghc-lib-parserA mapping from wired in unit ids to unit keys from the database.xghc-lib-parserThe units we're going to link in eagerly. This list should be in reverse dependency order; that is, a unit is always mentioned before the units it depends on.xghc-lib-parserUnits which we explicitly depend on (from a command line flag). We'll use this to generate version macros and the unused packages warning. The original flag which was used to bring the unit into scope is recorded for the -Wunused-packages warning.xghc-lib-parserThis is a full map from  to all modules which may possibly be providing it. These providers may be hidden (but we'll still want to report them in error messages), or it may be an ambiguous import.xghc-lib-parser A map, like x$, but controlling plugin visibility.xghc-lib-parserA map saying, for each requirement, what interfaces must be merged together when we use them. For example, if our dependencies are p[A=] and q[A=,B=r[C=]:B]*, then the interfaces to merge for A are  p[A=]:A, q[A=,B=r[C=]:B]:A and  r[C=]:C.?There's an entry in this map for each hole in our home library.xghc-lib-parser0Indicate if we can instantiate units on-the-fly.This should only be true when we are type-checking an indefinite unit. See Note [About units] in GHC.Unit.ghc-lib-parser Map from & to a set of module providers (i.e. a  and its x).NB: the set is in fact a 'Map Module ModuleOrigin', probably to keep only one origin for a given ghc-lib-parserUnit configurationghc-lib-parserPlatform arch and OSghc-lib-parser Ways to useghc-lib-parserAllow virtual units ^ Do we allow the use of virtual units instantiated on-the-fly (see Note [About units] in GHC.Unit). This should only be true when we are type-checking an indefinite unit (not producing any code).ghc-lib-parserName of the compiler (e.g. GHC, GHCJS). Used to fetch environment variables such as "GHC[JS]_PACKAGE_PATH".ghc-lib-parserPath to global DBghc-lib-parser%Main GHC dir: contains settings, etc.ghc-lib-parser$User DB name (e.g. "package.conf.d")ghc-lib-parser,Units to link automatically (e.g. base, rts)ghc-lib-parserDistrust all units by defaultghc-lib-parserHide all units by defaultghc-lib-parser!Hide all plugins units by defaultghc-lib-parserCache of databases to use, in the order they were specified on the command line (later databases shadow earlier ones). If Nothing, databases will be found using .ghc-lib-parserUnit databases flagsghc-lib-parser Exposed unitsghc-lib-parser Ignored unitsghc-lib-parser Trusted unitsghc-lib-parserPlugins exposed unitsghc-lib-parser< records the various aspects of visibility of a particular .ghc-lib-parser-Any custom renamings that should bring extra s into scope.ghc-lib-parser%The package name associated with the 4. This is used to implement legacy behavior where -package foo-0.1& implicitly hides any packages named fooghc-lib-parserThe signatures which are contributed to the requirements context from this unit ID.ghc-lib-parserWhether or not this unit was explicitly brought into scope, as opposed to implicitly via the exposed' fields in the package database (when -hide-all-packages is not passed.)ghc-lib-parser map from  to a .xghc-lib-parserGiven a module name, there may be multiple ways it came into scope, possibly simultaneously. This data type tracks all the possible ways it could have come into scope. Warning: don't use the record functions, they're partial!xghc-lib-parserModule is hidden, and thus never will be available for import. (But maybe the user didn't realize), so we'll still keep track of these modules.)xghc-lib-parser6Module is unavailable because the package is unusable.xghc-lib-parser7Module is public, and could have come from some places.xghc-lib-parser Just False) means that this module is in someone's exported-modules$ list, but that package is hidden;  Just True means that it is available; Nothing means neither applies.xghc-lib-parserIs the module available from a reexport of an exposed package? There could be multiple.xghc-lib-parser]:B maps to  p[A=q():A]:B with A=q():A; similarly,  maps to q():A.yghc-lib-parserSubstitutes holes in a , suitable for renaming when an include occurs; see Note [Representation of module/name variables].p[A=] maps to p[A=] with A=.yghc-lib-parserLike y, but requires only ClosureUnitInfoMap so it can be used by GHC.Unit.State.yghc-lib-parser(Like 'renameHoleUnit, but requires only ClosureUnitInfoMap so it can be used by GHC.Unit.State.yghc-lib-parser Injects an  to  (see also y.yghc-lib-parser9Print unit-ids with UnitInfo found in the given UnitStateyghc-lib-parser8Add package dependencies on the wired-in packages we useghc-lib-parser Home unit idghc-lib-parserHome unit instance ofghc-lib-parserHome unit instantiationsZ\[ )))))))))))))))))****xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyxxxyxyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxyyyyxyyyyyyyyyyyyyyyc Safe-Inferred:ghc-lib-parser9Subset of UnitInfo: just enough to pretty-print a unit-idInstead of printing the unit-id which may contain a hash, we print: package-version:componentnameghc-lib-parser Identifierghc-lib-parserSource package nameghc-lib-parserSource package versionghc-lib-parserComponent name Safe-Inferred %&A )ghc-lib-parserInformation about an installed unit (units are identified by their internal UnitId))ghc-lib-parserInformation about an installed unit (units are identified by their database UnitKey))ghc-lib-parser#Information about an installed unitWe parameterize on the unit identifier: * UnitKey: identifier used in the database (cf )5) * UnitId: identifier used to generate code (cf ))These two identifiers are different for wired-in packages. See Note [About units] in GHC.Unit)ghc-lib-parser9Convert a DbUnitInfo (read from a package database) into ))ghc-lib-parserMap over the unit parameter)ghc-lib-parserMake a  from a ) If the unit is definite, make a  from   field."If the unit is indefinite, make a  from   and  8 fields. Note that in this case we don't keep track of  . It can be retrieved later with "improvement", i.e. matching on `unitInstanceOf/unitInstantiations` fields (see Note [About units] in GHC.Unit).)ghc-lib-parser$Create a UnitPprInfo from a UnitInfo)ghc-lib-parser3Find all the include directories in the given units)ghc-lib-parser2Find all the C-compiler options in the given units*ghc-lib-parserFind all the library directories in the given units for the given ways*ghc-lib-parser*Find all the frameworks in the given units*ghc-lib-parserFind all the package framework paths in these and the preload packagesghc-lib-parser Either the   or   as appropriate for the way.:\[Z )))))))))))))))))****: ))))))))))))\[Z)))))**** Safe-InferredFR (ghc-lib-parserSettings for what GHC this is.(ghc-lib-parserPaths to various files and directories used by GHC, including those that provide more settings.(ghc-lib-parser)Settings for other executables GHC calls.Probably should further split down by phase, or split between platform-specific and platform-agnostic.(ghc-lib-parserN.B. On Windows we don't have a linker which supports object merging, hence the B . See Note [Object merging] in GHC.Driver.Pipeline.Execute for details.(ghc-lib-parserLLVM: opt llvm optimiser(ghc-lib-parserLLVM: llc static compiler)ghc-lib-parserLLVM: c compiler)ghc-lib-parser?cached Fingerprint of sOpt_P See Note [Repeated -optP hashing])ghc-lib-parserLLVM: llvm optimiser)ghc-lib-parserLLVM: llc static compiler)ghc-lib-parserLLVM: c compiler)ghc-lib-parser iserv options)ghc-lib-parserDynamic library suffix(((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))((((((((((((((((((((((((()))))))))))))))))((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))))))))))))))I Safe-InferredJOghc-lib-parserWhen invoking external tools as part of the compilation pipeline, we pass these a sequence of options on the command-line. Rather than just using a list of Strings, we use a type that allows us to distinguish between filepaths and 'other stuff'. The reason for this is that this type gives us a handle on transforming filenames, and filenames only, to whatever format they're expected to be on a particular platform. Safe-Inferred6LAghc-lib-parser Package-qualifier after renamingRenaming detects if "this" or the unit-id of the home-unit was used as a package qualifier.ghc-lib-parserNo package qualifierghc-lib-parserImport from home-unitghc-lib-parserImport from another unitghc-lib-parser"Package-qualifier as it was parsedghc-lib-parserNo package qualifierghc-lib-parserRaw package qualifier string.J Safe-Inferred 8Ǻughc-lib-parserFlag in string formughc-lib-parserFlag in internal formughc-lib-parserExtra action to run when the flag is found Typically, emit a warning or errorughc-lib-parser%In which ghc mode the flag has effectughc-lib-parser&Don't try to build dynamic objects tooughc-lib-parser*Will still try to generate dynamic objectsughc-lib-parser5Currently generating dynamic objects (in the backend)ughc-lib-parser+Flags for manipulating packages visibility.ughc-lib-parser-package,  -package-idughc-lib-parser  -hide-packageughc-lib-parser%Flags for manipulating package trust.ughc-lib-parser -trustughc-lib-parser  -distrustughc-lib-parser6Flags for manipulating the set of non-broken packages.ughc-lib-parser -ignore-packageughc-lib-parserRepresents the renaming that may be associated with an exposed package, e.g. the rns part of -package "foo (rns)".Here are some example parsings of the package flags (where a string literal is punned to be a : -package foo is ModRenaming True []-package foo () is ModRenaming False []-package foo (A) is ModRenaming False [(A, A)]-package foo (A as B) is ModRenaming False [(A, B)]-package foo with (A as B) is ModRenaming True [(A, B)]ughc-lib-parser%Bring all exposed modules into scope?ughc-lib-parser Bring module m into scope under name n.ughc-lib-parserWe accept flags which make packages visible, but how they select the package varies; this data type reflects what selection criterion is used.ughc-lib-parser-package, by  PackageNameughc-lib-parser -package-id, by ughc-lib-parser-What to do in the link step, if there is one.ughc-lib-parserDon't link at allughc-lib-parserLink object code into a binaryughc-lib-parserUse the in-memory dynamic linker (works for both bytecode and object code).ughc-lib-parserLink objects into a dynamic lib (DLL on Windows, DSO on ELF platforms)ughc-lib-parserLink objects into a static libughc-lib-parser(Link objects into a merged "GHCi object"ughc-lib-parserThe u tells us whether we're doing multi-module compilation (controlled via the GHC API) or one-shot (single-module) compilation. This makes a difference primarily to the GHC.Unit.Finder: in one-shot mode we look for interface files for imported modules, but in multi-module mode we look for source files in order to check whether they need to be recompiled.ughc-lib-parser--make , GHCi, etc.ughc-lib-parser  ghc -c Foo.hsughc-lib-parserghc -M, see GHC.Unit.Finder for why we need thisughc-lib-parser"Contains not only a collection of !s but also a plethora of information relating to the compilation of a single file or GHC sessionughc-lib-parserThe backend to use (if any).7Whenever you change the backend, also make sure to set u to something sensible. NoBackend can be used to avoid generating any output, however, note that:If a program uses Template Haskell the typechecker may need to run code from an imported module. To facilitate this, code generation is enabled for modules imported by modules that use template haskell, using the default backend for the platform. See Note [-fno-code mode].ughc-lib-parserLLVM optimisation levelughc-lib-parser,Verbosity level: see Note [Verbosity levels]ughc-lib-parser%How much debug information to produceughc-lib-parserNumber of simplifier phasesughc-lib-parserMax simplifier iterationsvghc-lib-parserAdditional demand analysisvghc-lib-parserThe number of modules to compile in parallel in --make mode, where Nothing ==> compile as many in parallel as there are CPUs.vghc-lib-parserEnable RTS timing statistics?vghc-lib-parserThe heap size to set.vghc-lib-parserMaximum number of bindings from the type envt to show in type error messagesvghc-lib-parserMaximum number of hole fits to show in typed hole error messagesvghc-lib-parserMaximum number of refinement hole fits to show in typed hole error messagesvghc-lib-parserMaximum level of refinement for refinement hole fits in typed hole error messagesvghc-lib-parserMaximum number of unmatched patterns to show in non-exhaustiveness warningsvghc-lib-parserSoft limit on the number of models the pattern match checker checks a pattern against. A safe guard against exponential blow-up.vghc-lib-parserMultiplier for simplifier ticksvghc-lib-parserWhether DmdAnal should optimistically put an Unboxed demand on returned products with at most this number of fieldsvghc-lib-parserThreshold for SpecConstrvghc-lib-parser2Max number of specialisations for any one functionvghc-lib-parserMax number of specialisations for recursive types Not optional; otherwise ForceSpecConstr can diverge.vghc-lib-parserBinary literals (e.g. strings) whose size is above this threshold will be dumped in a binary file by the assembler code generator. 0 and Nothing disables this feature. See .vghc-lib-parserThreshold for LiberateCasevghc-lib-parser%Arg count for lambda floating See vghc-lib-parserMaximum number of arguments after lambda lifting a recursive function.vghc-lib-parserMaximum number of arguments after lambda lifting a non-recursive function.vghc-lib-parserLambda lift even when this turns a known call into an unknown call.vghc-lib-parser4Align Cmm functions at this boundary or use default.vghc-lib-parserSimplification history sizevghc-lib-parserTypechecker maximum stack depthvghc-lib-parserNumber of iterations in the constraints solver Typically only 1 is neededvghc-lib-parserTarget home unit-idvghc-lib-parserId of the unit to instantiatevghc-lib-parserModule instantiationsvghc-lib-parser8What the package is called, use with multiple home unitsvghc-lib-parser&Target way flags from the command linevghc-lib-parserIndicate if we are now generating dynamic output because of -dynamic-too. This predicate is used to query the appropriate fields (outputFile/dynOutputFile, ways, etc.)vghc-lib-parser1This defaults to 'non-module'. It can be set by  or 'ghc.GHCi.UI.runStmt'% based on where its output is going.vghc-lib-parser Override the v set by  or 'ghc.GHCi.UI.runStmt' . Set by -ddump-file-prefixvghc-lib-parserPath to store the .mix filesvghc-lib-parserthe -fplugin flags given on the command line, in *reverse* order that they're specified on the command line.vghc-lib-parserthe -ffrontend-opt flags given on the command line, in *reverse* order that they're specified on the command line.vghc-lib-parser-External plugins loaded from shared librariesvghc-lib-parserThe  -package-db flags given on the command line, In *reverse* order that they're specified on the command line. This is intended to be applied with the list of "initial" package databases derived from GHC_PACKAGE_PATH; see  getUnitDbRefs.vghc-lib-parserThe -ignore-package flags from the command line. In *reverse* order that they're specified on the command line.vghc-lib-parserThe -package and  -hide-package flags from the command-line. In *reverse* order that they're specified on the command line.vghc-lib-parserThe -plugin-package-id flags from command line. In *reverse* order that they're specified on the command line.vghc-lib-parserThe -trust and  -distrust flags. In *reverse* order that they're specified on the command line.vghc-lib-parserFilepath to the package environment file (if overriding default)vghc-lib-parserSafe Haskell modevghc-lib-parserUnfolding control See Note [Discounts and thresholds] in GHC.Core.Unfoldvghc-lib-parser8GHCi scripts specified by -ghci-script, in reverse ordervghc-lib-parser-what kind of {-# SCC #-} to add automaticallyvghc-lib-parser(Machine dependent flags (-m stuff)vghc-lib-parser8Run-time linker information (what options we need, etc.)vghc-lib-parserRun-time C compiler informationvghc-lib-parserRun-time assembler informationwghc-lib-parser0Max size, in bytes, of inline array allocations.wghc-lib-parserOnly inline memcpy if it generates no more than this many pseudo (roughly: Cmm) instructions.wghc-lib-parserOnly inline memset if it generates no more than this many pseudo (roughly: Cmm) instructions.wghc-lib-parser/Reverse the order of error messages in GHC/GHCiwghc-lib-parser*Limit the maximum number of errors to showwghc-lib-parser9Unique supply configuration for testing build determinismwghc-lib-parser/Temporary: CFG Edge weights for fast iterationswghc-lib-parserUsed to differentiate the scope an include needs to apply to. We have to split the include paths to avoid accidentally forcing recursive includes since -I overrides the system search paths. See #14312.wghc-lib-parser!See Note [Implicit include paths]wghc-lib-parserAppend to the list of includes a path that shall be included using `-I` when the C compiler is called. These paths override system search paths.wghc-lib-parserAppend to the list of includes a path that shall be included using `-iquote` when the C compiler is called. These paths only apply when quoted includes are used. e.g. #include "foo.h"wghc-lib-parserThese includes are not considered while fingerprinting the flags for iface | See Note [Implicit include paths]wghc-lib-parserConcatenate and flatten the list of global and quoted includes returning just a flat list of paths.wghc-lib-parser "unbuild" a ) from a u. This shouldn't be needed in the vast majority of code. But GHCi questionably uses this to produce a default u1 from which to compute a flags diff for printing.wghc-lib-parserThe directory for this version of ghc in the user's app directory The appdir used to be in ~/.ghc but to respect the XDG specification we want to move it under $XDG_DATA_HOME/ However, old tooling (like cabal) might still write package environments to the old directory, so we prefer that if a subdirectory of ~/.ghc with the correct target and GHC version suffix exists. i.e. if ~.ghc$UNIQUE_SUBDIR exists we use that otherwise we use $XDG_DATA_HOME/$UNIQUE_SUBDIRUNIQUE_SUBDIR is typically a combination of the target platform and GHC versionwghc-lib-parserAre we building with -fPIE or -fPIC enabled?wghc-lib-parserUsed by  to partially initialize a new u valuewghc-lib-parser The normal u. Note that they are not suitable for use in this form and must be fully initialized by  first.wghc-lib-parserThe language extensions implied by the various language variants. When updating this be sure to update the flag documentation in docs users_guideexts.wghc-lib-parserTest whether a # is setwghc-lib-parserSet a #wghc-lib-parserUnset a #wghc-lib-parserTest whether a ! is set Note that v (i.e., dynamic objects built with `-dynamic-too`) always implicitly enables Opt_PIC, Opt_ExternalDynamicRefs, and disables Opt_SplitSections.wghc-lib-parserSet a !wghc-lib-parserUnset a !wghc-lib-parserTest whether a ! is setwghc-lib-parserSet a !wghc-lib-parserUnset a !wghc-lib-parserTest whether a ! is set as fatalwghc-lib-parserMark a ! as fatal (do not set the flag)wghc-lib-parserMark a ! as not fatalwghc-lib-parserTest whether a  is setwghc-lib-parserSet a wghc-lib-parserUnset a wghc-lib-parserSet or unset a 7, unless it has been explicitly set or unset before.ghc-lib-parser(Set the Haskell language standard to usewghc-lib-parserIs the -fpackage-trust mode onwghc-lib-parser9Is Safe Haskell on in some way (including inference mode)wghc-lib-parser(Is the Safe Haskell safe language in usewghc-lib-parser.Is the Safe Haskell safe inference mode activewghc-lib-parser(Test if Safe Imports are on in some formghc-lib-parserSet a 'Safe Haskell' flagwghc-lib-parserAre all direct imports required to be safe for this Safe Haskell mode? Direct imports are when the code explicitly imports a modulewghc-lib-parserAre all implicit imports required to be safe for this Safe Haskell mode? Implicit imports are things in the prelude. e.g System.IO when print is used.ghc-lib-parserCombine two Safe Haskell modes correctly. Used for dealing with multiple flags. This makes Safe Haskell very much a monoid but for now I prefer this as I don't want to export this functionality from the module but do want to export the type constructors.wghc-lib-parserA list of unsafe flags under Safe Haskell. Tuple elements are: * name of the flag * function to get srcspan that enabled the flag * function to test if the flag is on * function to turn the flag offwghc-lib-parserA list of unsafe flags under Safe Haskell. Tuple elements are: * name of the flag * function to get srcspan that enabled the flag * function to test if the flag is on * function to turn the flag offwghc-lib-parser3Retrieve the options corresponding to a particular opt_* field in the correct orderwghc-lib-parserGets the verbosity flag for the current verbosity level. This is fed to other tools, so GHC-specific verbosity flags like  -ddump-most are not includedghc-lib-parser Sets the u to be appropriate to the optimisation level and signals if any changes took placewghc-lib-parser Sets the u, to be appropriate to the optimisation levelwghc-lib-parserParse dynamic flags from a list of command line arguments. Returns the parsed u=, the left-over arguments, and a list of warnings. Throws a  if errors occurred during parsing (such as unknown flags or missing arguments).wghc-lib-parserLike w but does not allow the package flags (-package, -hide-package, -ignore-package, -hide-all-packages, -package-db). Used to parse flags set in a modules pragma.wghc-lib-parserA helper to parse a set of flags from a list of command-line arguments, handling response files.wghc-lib-parserParses the dynamically set flags for GHC. This is the most general form of the dynamic flag parser that the other methods simply wrap. It allows saying which flags are valid flags and indicating if we are parsing arguments from the command line or from a file pragma.ghc-lib-parserCheck (and potentially disable) any extensions that aren't allowed in safe mode.The bool is to indicate if we are parsing command line flags (false means file pragma). This allows us to generate better warnings.wghc-lib-parserAll dynamic flags option strings without the deprecated ones. These are the user facing strings for enabling and disabling options.ghc-lib-parser4All flags with possibility to filter deprecated onesghc-lib-parserThis is where we handle unrecognised warning flags. We only issue a warning if -Wunrecognised-warning-flags is set. See #11429 for context.wghc-lib-parserMake a list of flags for shell completion. Filter all available flags into two groups, for interactive GHC vs all other.ghc-lib-parserDefine a new flag.ghc-lib-parser!Define a new flag with an effect.ghc-lib-parserDefine a warning flag.ghc-lib-parser%Define a warning flag with an effect.ghc-lib-parser,Define a new deprecated flag with an effect.ghc-lib-parserDefine a new deprecated flag.ghc-lib-parser!Define a deprecated warning flag.ghc-lib-parser8Define a deprecated warning name substituted by another.ghc-lib-parserDefine a new deprecated flag with an effect where the deprecation message depends on the flag valueghc-lib-parserDefine a new deprecated flag where the deprecation message depends on the flag valueghc-lib-parserDefine a new deprecated flag where the deprecation message is shown depending on the flag valueghc-lib-parserDefine a new flag for GHCi.ghc-lib-parser*Define a new flag for GHCi with an effect.ghc-lib-parser.Define a new flag invisible to CLI completion.ghc-lib-parser=Define a new flag invisible to CLI completion with an effect.ghc-lib-parserHide a u from being displayed in --show-options.This is for example useful for flags that are obsolete, but should not (yet) be deprecated for compatibility reasons.wghc-lib-parser Find the u for a !.wghc-lib-parserThese -W flags can all be reversed with  -Wno-ghc-lib-parserThese - flags can all be reversed with  -no-ghc-lib-parserThese -d flags can all be reversed with  -dno-xghc-lib-parserThese -f flags can all be reversed with  -fno-ghc-lib-parserThese -f flags have to do with the typed-hole error message or the valid hole fits in that message. See Note [Valid hole fits include ...] in the GHC.Tc.Errors.Hole/ module. These flags can all be reversed with  -fno-xghc-lib-parserThese -f flags can all be reversed with  -fno-ghc-lib-parserThese -X blah# flags cannot be reversed with -XNo blahghc-lib-parserThese -X blah# flags cannot be reversed with -XNo blah They are used to place hard requirements on what GHC Haskell language features can be used.xghc-lib-parserThese -X blah$ flags can all be reversed with -XNo blahghc-lib-parserThese are the default settings for the display and sorting of valid hole fits in typed-hole error messages. See Note [Valid hole fits include ...] in the GHC.Tc.Errors.Hole module.ghc-lib-parserThings you get with `-dlint`.xghc-lib-parserGet target profilexghc-lib-parser1Resolve any internal inconsistencies in a set of u. Returns the consistent u6 as well as a list of warnings to report to the user.xghc-lib-parser,Indicate if cost-centre profiling is enabledxghc-lib-parser1Indicate whether we need to generate source notesxghc-lib-parserShould we use `-XLinker -rpath` when linking or not? See Note [-fno-use-rpaths]xghc-lib-parser&Initialize the pretty-printing optionsxghc-lib-parserInitialize the pretty-printing options using the default user stylexghc-lib-parser/Pretty-print the difference between 2 DynFlags.For now only their general flags but it could be extended. Useful mostly for debugging.wghc-lib-parseru to retrieve the options fromghc-lib-parser%Relevant record accessor: one of the opt_* accessorsghc-lib-parser#Correctly ordered extracted optionswghc-lib-parserUpdated u-, left-over arguments, and list of warnings.wghc-lib-parserUpdated u-, left-over arguments, and list of warnings.wghc-lib-parservalid flags to match againstghc-lib-parser current stateghc-lib-parserarguments to parseghc-lib-parser(leftovers, errors, warnings)wghc-lib-parservalid flags to match againstghc-lib-parser(are the arguments from the command line?ghc-lib-parsercurrent dynamic flagsghc-lib-parserarguments to parseghc-lib-parserTrue  = it should be turned onghc-lib-parserThe flag prefixghc-lib-parser!What to do when the flag is foundghc-lib-parser&Specification of this particular flag!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$(((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))TTTTuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx###########################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#####################################################################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!TTTT$$$$uuuxwwwwwwwwwwxxwwwwwwwwwwwwwuuuuwwxxuuuuuuvvuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwxxxuuuuuuuuuuuuuuuuuuuuwuuuuuuuwuuuuuuuuuuwuuuuuuuuuuuuuuuuuxxxwxw$xxwxwwwwwwwwww))))))))))))))))))))))))))))))))))))))))))))))))))))))(((((((((((((((((wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxwwwwwwwwwxwwwxxuwwxxxuuwwwwwwwwwwwwxwxxxx(xxxxxxxxxxuuuuuuuuuuuuuuuxwwwwwwwwwxxx Safe-InferredUghc-lib-parserUsed when a temp file is created. This determines which component Set of FilesToClean will get the temp fileUghc-lib-parserA file with lifetime TFL_CurrentModule will be cleaned up at the end of upweep_modUghc-lib-parserA file with lifetime TFL_GhcSession will be cleaned up at the end of runGhc(T)Ughc-lib-parser do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342.Ughc-lib-parserDirectory name template. See  openTempFile.ghc-lib-parser#Callback that can use the directoryUghc-lib-parser)Temp directory to create the directory inghc-lib-parserDirectory name template. See  openTempFile.ghc-lib-parser#Callback that can use the directoryUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU Safe-Inferred!*ghc-lib-parserUntyped Phase description*ghc-lib-parser -E+ghc-lib-parser -C+ghc-lib-parser -S+ghc-lib-parser -c+ghc-lib-parserWhen we are given files (modified by -x arguments) we need to determine if they are Haskellish or not to figure out how we should try to compile it. The rules are: If no -x flag was specified, we check to see if the file looks like a module name, has no extension, or has a Haskell source extension.If an -x flag was specified, we just make sure the specified suffix is a Haskell one.+ghc-lib-parserForeign language of the phase if the phase deals with a foreign code1*********************++++++++++++++++++++++++++++1*******************+++++**+++++++++++++++++++++++ Safe-Inferredghc-lib-parser.hs fileghc-lib-parser .hs-boot fileghc-lib-parser .hsig fileghc-lib-parser Tests if an 9 is a boot file, primarily for constructing elements of  BuildModule. We conflate signatures and modules because they are bound in the same namespace; only boot interfaces can be disambiguated with `import {-# SOURCE #-}`.x Safe-InferredK Safe-Inferredaghc-lib-parser-What kind of {-# SCC #-} to add automaticallyghc-lib-parserno SCC annotations addedghc-lib-parser,top-level and nested functions are annotatedghc-lib-parser"top-level functions annotated onlyghc-lib-parser!exported functions annotated onlyghc-lib-parserannotate call-sitesM Safe-Inferredghc-lib-parserDoes the controlling terminal support ANSI color sequences? This memoized to avoid thread-safety issues in ncurses (see #17922).÷ghc-lib-parserCheck if ANSI escape sequences can be used to control color in stderr._ Safe-Inferredghc-lib-parserExpand occurrences of the $tooldir interpolation in a string on Windows, leave the string untouched otherwise.ghc-lib-parser.Returns a Unix-format path pointing to TopDir.ghc-lib-parser*whether we use the ambient mingw toolchainghc-lib-parsertooldirghc-lib-parser,Maybe TopDir path (without the '-B' prefix).ghc-lib-parserTopDir (in Unix format  separated)ghc-lib-parser*whether we use the ambient mingw toolchainghc-lib-parsertopdirO Safe-Inferred¨ghc-lib-parserExternal plugin specghc-lib-parserParser external static plugin specification from command-line flag Safe-Inferred8Ƣ Wghc-lib-parser6A command-line warning message and the reason it aroseWghc-lib-parserA command-line error messageWghc-lib-parserUsed when filtering warnings: if a reason is given it can be filtered out when displaying.Wghc-lib-parser4GHC flag modes describing when a flag has an effect.Wghc-lib-parser-The flag only affects the non-interactive GHCWghc-lib-parser)The flag only affects the interactive GHCWghc-lib-parser#The flag affects multiple ghc modesWghc-lib-parser.This flag should not be seen in cli completionķghc-lib-parser Parse an IntLooks for "433" or "=342", with no trailing gubbins * n or =n => Just n * gibberish => Nothingŷghc-lib-parserDiscards a leading equals signWghc-lib-parser%Parse a response file into arguments.Wghc-lib-parsercmdline parser specghc-lib-parserargsghc-lib-parserresponse file handler1WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW1WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWRBack ends for code generation Safe-InferredVghc-lib-parserNames a function that tells the driver what command-line options to include when invoking a C compiler. It's meant for -D options that define symbols for the C preprocessor. Because the exact symbols defined might depend on versions of tools located in the file system (cough LLVM cough), the function requires an E+ action. The function named has this type: !Logger -> DynFlags -> IO [String]Vghc-lib-parser-No additional command-line options are neededVghc-lib-parserReturn command-line options that tell GHC about the LLVM version.Vghc-lib-parserNames a function that tells the driver what should happen after assembly code is written. This might include running a C compiler, running LLVM, running an assembler, or various similar activities. The function named normally has this type:  TPipelineClass TPhase m => PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> m (Maybe FilePath)&The functions so named are defined in GHC.Driver.Pipeline.Vghc-lib-parser0After code generation, nothing else need happen.Vghc-lib-parserNames a function that generates code and writes the results to a file, of this type:  Logger -> DynFlags -> Module -- ^ module being compiled -> ModLocation -> FilePath -- ^ Where to write output -> Set UnitId -- ^ dependencies -> Stream IO RawCmmGroup a -- results from `StgToCmm` -> IO a&The functions so named are defined in GHC.Driver.CodeOutput.We expect one function per back end@or more precisely, one function for each back end that writes code to a file. (The interpreter does not write to files; its output lives only in memory.)Vghc-lib-parserNames a function that discover from what toolchain the assembler is coming, of this type: 1Logger -> DynFlags -> Platform -> IO CompilerInfo&The functions so named are defined in GHC.Driver.Pipeline.Execute.Vghc-lib-parser)Interrogate the standard system assemblerVghc-lib-parser If using the JS backend; return  EmscriptenVghc-lib-parserIf running on Darwin, return Clang7; otherwise interrogate the standard system assembler.Vghc-lib-parser7Names a function that runs the assembler, of this type: 3Logger -> DynFlags -> Platform -> [Option] -> IO ()&The functions so named are defined in GHC.Driver.Pipeline.Execute.Vghc-lib-parser!Use the standard system assemblerVghc-lib-parserJS Backend compile to JS via Stg, and so does not use any assemblerVghc-lib-parser1If running on Darwin, use the assembler from the clang: toolchain. Otherwise use the standard system assembler.Vghc-lib-parserThis enumeration type specifies how the back end wishes GHC's primitives to be implemented. (Module GHC.StgToCmm.Prim provides a generic implementation of every primitive, but some primitives, like  IntQuotRemOp, can be implemented more efficiently by certain back ends on certain platforms. For example, by using a machine instruction that simultaneously computes quotient and remainder.).For the meaning of each alternative, consult GHC.StgToCmm.Config. (In a perfect world, type V would be defined there, in the module that determines its meaning. But I could not figure out how to do it without mutual recursion across module boundaries.)Vghc-lib-parserPrimitives supported by LLVMVghc-lib-parser1Primitives supported by the native code generatorVghc-lib-parser"Primitives supported by JS backendVghc-lib-parser%Primitives supported by all back endsVghc-lib-parserAvalue of type Backend represents one of GHC's back ends. The set of back ends cannot be extended except by modifying the definition of Backend in this module.The Backend type is abstract; thatis, its value constructors are not exported. It's crucial that they not be exported, because a value of type Backend carries only the back end's name', not its behavior or properties. If Backend were not abstract, then code elsewhere in the compiler could depend directly on the name, not on the semantics, which would make it challenging to create a new back end. Because Backend is abstract, all the obligations of a new back end are enumerated in this module, in the form of functions that take Backend as an argument.The issue of abstraction is discussed at great length in #20927 and !7442.Vghc-lib-parser7Is the platform supported by the Native Code Generator?Ʒghc-lib-parser,Is the platform supported by the JS backend?Vghc-lib-parserThe native code generator. Compiles Cmm code into textual assembler, then relies on an external assembler toolchain to produce machine code.4Only supports a few platforms (X86, PowerPC, SPARC).See  GHC.CmmToAsm.Vghc-lib-parserThe LLVM backend.Compiles Cmm code into LLVM textual IR, then relies on LLVM toolchain to produce machine code.It relies on LLVM support for the calling convention used by the NCG backend to produce code objects ABI compatible with it (see "cc 10" or "ghccc" calling convention in  7https://llvm.org/docs/LangRef.html#calling-conventions).4Supports a few platforms (X86, AArch64, s390x, ARM).See  GHC.CmmToLlvmVghc-lib-parserThe JavaScript Backend See documentation in GHC.StgToJSVghc-lib-parser!Via-C ("unregisterised") backend.Compiles Cmm code into C code, then relies on a C compiler to produce machine code."It produces code objects that are not> ABI compatible with those produced by NCG and LLVM backends.Produced code is expected to be less efficient than the one produced by NCG and LLVM backends because STG registers are not pinned into real registers. On the other hand, it supports more target platforms (those having a valid C toolchain).See  GHC.CmmToCVghc-lib-parserThe ByteCode interpreter.#Produce ByteCode objects (BCO, see  GHC.ByteCode/) that can be interpreted. It is used by GHCi.?Currently some extensions are not supported (foreign primops).See GHC.StgToByteCodeVghc-lib-parser(A dummy back end that generates no code.Use this back end to disable code generation. It is particularly useful when GHC is used as a library for other purpose than generating code (e.g. to generate documentation with Haddock) or when the user requested it (via `-fno-code`) for some reason.Vghc-lib-parserAn informal description of the back end, for use in issuing warning messages only. If code depends on what's in the string, you deserve what happens to you.Vghc-lib-parserThis flag tells the compiler driver whether the back end will write files: interface files and object files. It is typically true for "real" back ends that generate code into the filesystem. (That means, not the interpreter.)Vghc-lib-parserWhen the back end does write files, this value tells the compiler in what manner of file the output should go: temporary, persistent, or specific.Vghc-lib-parserThis flag tells the driver whether the back end can reuse code (bytecode or object code) that has been loaded dynamically. Likely true only of the interpreter.Vghc-lib-parser'It is is true of every back end except  -fno-code that it "generates code." Surprisingly, this property influences the driver in a ton of ways. Some examples:If the back end does not generate code, then the driver needs to turn on code generation for Template Haskell (because that code needs to be generated and run at compile time).If the back end does not generate code, then the driver does not need to deal with an output file.If the back end does/ generated code, then the driver supports  HscRecomp. If not, recompilation does not need a linkable (and is automatically up to date).Vghc-lib-parserWhen set, this flag turns on interface writing for Backpack. It should probably be the same as V, but it is kept distinct for reasons described in Note [-fno-code mode].Vghc-lib-parserWhen preparing code for this back end, the type checker should pay attention to SPECIALISE pragmas. If this flag is H, then the type checker ignores SPECIALISE pragmas (for imported things?).Vghc-lib-parserThis back end wants the  mi_globals field of a ModIface to be populated (with the top-level bindings of the original source). True for the interpreter, and also true for "no backend", which is used by Haddock. (After typechecking a module, Haddock wants access to the module's  GlobalRdrEnv.)Vghc-lib-parser3The back end targets a technology that implements switch natively. (For example, LLVM or C.) Therefore it is not necessary for GHC to ccompile a Cmm Switch< form into a decision tree with jump tables at the leaves.Vghc-lib-parser#As noted in the documentation for V, certain primitives have multiple implementations, depending on the capabilities of the back end. This field signals to module GHC.StgToCmm.Prim1 what implementations to use with this back end.Vghc-lib-parserWhen this value is U, the back end is compatible with vector instructions. When it is U/, it carries a message that is shown to users.Vghc-lib-parserThis flag says whether the back end supports large binary blobs. See Note [Embedding large binary blobs] in GHC.CmmToAsm.Ppr.Vghc-lib-parserThis flag tells the compiler driver that the back end does not support every target platform; it supports only platforms that claim NCG support. (It's set only for the native code generator.) Crufty. If the driver tries to use the native code generator without platform support, the driver fails over to the LLVM back end.Vghc-lib-parserThis flag is set if the back end can generate code for proc points. If the flag is not set, then a Cmm pass needs to split proc points (that is, turn each proc point into a standalone procedure).Vghc-lib-parserThis flag guides the driver in resolving issues about API support on the target platform. If the flag is set, then these things are true:"When the target platform supports only an unregisterised API, this backend can be replaced with compilation via C.When the target does not support an unregisterised API, this back end can replace compilation via C.Vghc-lib-parserThis flag is true if the back end works *only* with the unregisterised ABI.Vghc-lib-parser8This flag is set if the back end generates C code in a .hc file. The flag lets the compiler driver know if the command-line flag -C is meaningful.Vghc-lib-parserThis flag says whether SPT (static pointer table) entries will be inserted dynamically if needed. If this flag is H, then GHC.Iface.Tidy6 should emit C stubs that initialize the SPT entries.Vghc-lib-parserIf this flag is set, then GHC.HsToCore.Ticks inserts  Breakpoint( ticks. Used only for the interpreter.Vghc-lib-parserIf this flag is set, then the driver forces the optimization level to 0, issuing a warning message if the command line requested a higher optimization level.Vghc-lib-parserI don't understand exactly how this works. But if this flag is set *and* another condition is met, then  ghc/Main.hs will alter the DynFlags so that all the  hostFullWays4 are asked for. It is set only for the interpreter.Vghc-lib-parserThis flag is also special for the interpreter: if a message about a module needs to be shown, do we know anything special about where the module came from? The Boolean argument is a recomp flag.Vghc-lib-parserThis flag says whether the back end supports Haskell Program Coverage (HPC). If not, the compiler driver will ignore the `-fhpc` option (and will issue a warning message if it is used).Vghc-lib-parserThis flag says whether the back end supports foreign import of C functions. (Supports means "does not barf on," so  -fno-code supports foreign C imports.)Vghc-lib-parserThis flag says whether the back end supports foreign export of Haskell functions to C.Vghc-lib-parserThis (defunctionalized) function runs the assembler used on the code that is written by this back end. A program determined by a combination of back end, DynFlags, and ( is run with the given Options.The function's type is 7 Logger -> DynFlags -> Platform -> [Option] -> IO ()  This field is usually defaulted.Vghc-lib-parserThis (defunctionalized) function is used to retrieve an enumeration value that characterizes the C/assembler part of a toolchain. The function caches the info in a mutable variable that is part of the DynFlags.The function's type is 5 Logger -> DynFlags -> Platform -> IO CompilerInfo  This field is usually defaulted.Vghc-lib-parserWhen using this back end, it may be necessary or advisable to pass some `-D` options to a C compiler. This (defunctionalized) function produces those options, if any. An IO action may be necessary in order to interrogate external tools about what version they are, for example.The function's type is % Logger -> DynFlags -> IO [String]  This field is usually defaulted.Vghc-lib-parserThis (defunctionalized) function generates code and writes it to a file. The type of the function is  Logger -> DynFlags -> Module -- ^ module being compiled -> ModLocation -> FilePath -- ^ Where to write output -> Set UnitId -- ^ dependencies -> Stream IO RawCmmGroup a -- results from `StgToCmm` -> IO aVghc-lib-parserThis (defunctionalized) function tells the compiler driver what else has to be run after code output. The type of the function is  TPipelineClass TPhase m => PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> m (Maybe FilePath)Vghc-lib-parserSomewhere in the compiler driver, when compiling Haskell source (as opposed to a boot file or a sig file), it needs to know what to do with the code that the V writes to a file. This * value gives instructions like "run the C compiler", "run the assembler," or "run the LLVM Optimizer."Vghc-lib-parserName of the back end, if any. Used to migrate legacy clients of the GHC API. Code within the GHC source tree should not refer to a back end's name.Vghc-lib-parserA list of all back ends. They are ordered as we wish them to appear when they are enumerated in error messages.Vghc-lib-parserWhen foreign C import or export is invalid, the carried value enumerates the valid back ends.Vghc-lib-parserWhen foreign C import or export is invalid, the carried value enumerates the valid back ends.Vghc-lib-parser"The Show instance is for messages only. If code depends on what's in the string, you deserve what happens to you.VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV Safe-Inferred /l Vghc-lib-parserOutput should be to a temporary file: we're going to run more compilation steps on this output later.Vghc-lib-parserWe want a persistent file, i.e. a file in the current directory derived from the input filename, but with the appropriate extension. eg. in "ghc -c Foo.hs" the output goes into ./Foo.o.Vghc-lib-parserThe output must go into the specific outputFile in DynFlags. We don't store the filename in the constructor as it changes when doing -dynamic-too.Vghc-lib-parser>No output should be created, like in Interpreter or NoBackend.Vghc-lib-parserStop just after this phaseVghc-lib-parser!basename of original input sourceVghc-lib-parser!basename of original input sourceVghc-lib-parser its extensionVghc-lib-parser%says where to put the pipeline outputVghc-lib-parserLift a f action into an m action.VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVS5Interface for migrating legacy clients of the GHC API Safe-Inferred ?ghc-lib-parser(Names the native code generator backend.ghc-lib-parserNames the LLVM backend.ghc-lib-parserNames the Via-C backend.ghc-lib-parserNames the JS backend.ghc-lib-parserNames the ByteCode interpreter.ghc-lib-parserNames the `-fno-code` backend.[ Safe-Inferred '6;=?  G Safe-Inferred vghc-lib-parser+A state monad which is strict in the state s, but lazy in the value a.See Note [Strict State monad] for the particular notion of strictness and implementation details.Ƿghc-lib-parserForces the state component of the unboxed representation pair of . See Note [Strict State monad]. This is The Place doing the forcing!   Safe-Inferred%ghc-lib-parserA restricted form of  for code generation purposesghc-lib-parserModule being compiledghc-lib-parserAlgebraic data types (including ones that started life as classes); generate constructors and info tables. Includes newtypes, just for the benefit of External Coreghc-lib-parserThe tidied main bindings, including previously-implicit bindings for record and class selectors, and data constructor wrappers. But *not* data constructor workers; reason: we regard them as part of the code-gen of tyconsghc-lib-parserForeign export stubsghc-lib-parser>Dependent packages, used to generate #includes for C code genghc-lib-parser%Program coverage tick box informationghc-lib-parserModule breakpointsghc-lib-parserStatic pointer table entries for static forms defined in the module. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTableghc-lib-parserA ModGuts is carried through the compiler, accumulating stuff as it goes There is only one ModGuts at any time, the one for the module being compiled right now. Once it is compiled, a ModIface and  ModDetails, are extracted and the ModGuts is discarded.ghc-lib-parserModule being compiledghc-lib-parserWhether it's an hs-boot moduleghc-lib-parser$For error messages from inner passesghc-lib-parserWhat it exportsghc-lib-parser*What it depends on, directly or otherwiseghc-lib-parser$What was used? Used for interfaces.ghc-lib-parserDid we run a TH splice?ghc-lib-parserTop-level lexical environmentghc-lib-parserFixities declared in this module. Used for creating interface files.ghc-lib-parser=TyCons declared in this module (includes TyCons for classes)ghc-lib-parser'Class instances declared in this moduleghc-lib-parser(Family instances declared in this moduleghc-lib-parser(Pattern synonyms declared in this moduleghc-lib-parserBefore the core pipeline starts, contains See Note [Overall plumbing for rules] in GHC.Core.Rulesghc-lib-parserBindings for this moduleghc-lib-parser'Foreign exports declared in this moduleghc-lib-parser(Files to be compiled with the C compilerghc-lib-parserWarnings declared in the moduleghc-lib-parser#Annotations declared in this moduleghc-lib-parserComplete Matchesghc-lib-parser!Coverage tick boxes in the moduleghc-lib-parserBreakpoints for the moduleghc-lib-parser Class instance environment for  home-package% modules (including this one); c.f.  tcg_inst_env–ghc-lib-parser&Type-family instance environment for  home-package% modules (including this one); c.f. tcg_fam_inst_envĖghc-lib-parserSafe Haskell modeŖghc-lib-parserDo we need to trust our own package for Safe Haskell? See Note [Trust Own Package] in GHC.Rename.NamesƖghc-lib-parserDocumentation.+–ÖĖŖƖǖ+–ÖĖŖƖǖ Safe-InferredZ\[ )))))))))))))))))****xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyL Safe-Inferred]ghc-lib-parserThis is used to signal if one of my imports used HPC instrumentation even if there is no module-local HPC usageghc-lib-parser;Information about a modules use of Haskell Program Coverageghc-lib-parser*Is hpc used anywhere on the module *tree*?ghc-lib-parserFind out if HPC is used by this module or any of the modules it depends upon   Safe-Inferred5ghc-lib-parserFixity information for an . We keep the OccName in the range so that we can generate an interface from it5ghc-lib-parser2Fixity environment mapping names to their fixities5ghc-lib-parserCreates cached lookup for the  mi_fix_fn field of ModIface55555555555555 Safe-Inferred)ghc-lib-parserAn entry to be inserted into a module's static pointer table. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTable.ghc-lib-parser3Objects which have yet to be linked by the compilerghc-lib-parserAn object file (.o)ghc-lib-parserStatic archive file (.a)ghc-lib-parser3Dynamically linked library file (.so, .dll, .dylib)ghc-lib-parserSerialised core which we can turn into BCOs (or object files), or used by some other backend See Note [Interface Files with Core Definitions]ghc-lib-parserA list of BCOs, but hidden behind extra indirection to avoid being too strict.ghc-lib-parserA byte-code object, lives only in memory. Also carries some static pointer table entries which should be loaded along with the BCOs. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTable.ghc-lib-parserInformation we can use to dynamically link modules into the compilerghc-lib-parserTime at which this linkable was built (i.e. when the bytecodes were produced, or the mod date on the files)ghc-lib-parserThe linkable module itselfghc-lib-parser3Those files and chunks of code we have yet to link.4INVARIANT: A valid linkable always has at least one  item.ghc-lib-parser6Current global mapping from Names to their true valuesghc-lib-parserThe current global mapping from RdrNames of DataCons to info table addresses. When a new Unlinked is linked into the running image, or an existing module in the image is replaced, the itbl_env must be updated appropriately.ghc-lib-parser7The currently loaded interpreted modules (home package)ghc-lib-parser8And the currently-loaded compiled modules (home package)ghc-lib-parserThe currently-loaded packages; always object code haskell libraries, system libraries, transitive dependenciesghc-lib-parserWe need to remember the name of previous temporary DLL/.so libraries so we can link them (see #10322)ghc-lib-parser6Is this an actual file on disk we can link in somehow?ghc-lib-parser1Is this a bytecode linkable with no file on disk?ghc-lib-parserRetrieve the filename of the linkable if possible. Panic if it is a byte-code objectghc-lib-parserRetrieve the compiled byte-code if possible. Panic if it is a file-based linkable22 Safe-Inferred+kghc-lib-parser serialised tidied core bindings.kghc-lib-parser%The module which the bindings are forkghc-lib-parser&The location where the sources reside.kkkkkkkkkk Safe-Inferred %&/Z ghc-lib-parser6All the information about the breakpoints for a moduleghc-lib-parserThe array of flags, one per breakpoint, indicating which breakpoints are enabled.ghc-lib-parser3An array giving the source span of each breakpoint.ghc-lib-parserAn array giving the names of the free variables at each breakpoint.ghc-lib-parserAn array giving the names of the declarations enclosing each breakpoint. See Note [Field modBreaks_decls]ghc-lib-parser1Array pointing to cost centre for each breakpointghc-lib-parser6info about each breakpoint from the bytecode generatorghc-lib-parserC CostCentre typeghc-lib-parserBreakpoint indexghc-lib-parserInformation about a breakpoint that we know at code-generation timeɄghc-lib-parserConstruct an empty ModBreaks;„ÄĄńƄDŽȄɄ;„ÄĄńƄDŽȄɄ Safe-Inferred 2ghc-lib-parserSets of registersghc-lib-parserA stack area is either the stack slot where a variable is spilled or the stack space where function arguments and results are passed.ghc-lib-parserReturns an alignment in bytes of a CmmExpr when it's a statically known integer constant, otherwise returns an alignment of 1 byte. The caller is responsible for using with a sensible CmmExpr argument.++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-...----------------------------------------------------------.....................................................ځہ܁݁ށ߁,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ځ܁ہ݁߁ށ Safe-Inferred 7T,ghc-lib-parser'Parameters: 1. Identifier 2. Type0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Safe-Inferred@* ,ghc-lib-parser$The operation to perform atomically.-ghc-lib-parser'Atomic compare-and-swap. Arguments are [dest, expected, new]. Sequentially consistent. Possible future refactoring: should this be an- variant?-ghc-lib-parserAtomic swap. Arguments are  [dest, new]-ghc-lib-parserMachine-level primops; ones which we can reasonably delegate to the native code generators to handle.)Most operations are parameterised by the + that they operate on. Some operations have separate signed and unsigned versions, and float and integer versions.Note that there are variety of places in the native code generator where we assume that the code produced for a MachOp does not introduce new blocks..ghc-lib-parserReturns K if the MachOp has commutable arguments. This is used in the platform-independent Cmm optimisations.If in doubt, return H. This generates worse code on the native routes, but is otherwise harmless..ghc-lib-parserReturns K$ if the MachOp is associative (i.e. (x+y)+z == x+(y+z)=) This is used in the platform-independent Cmm optimisations.If in doubt, return H. This generates worse code on the native routes, but is otherwise harmless..ghc-lib-parserReturns K if the MachOp is a comparison.If in doubt, return False. This generates worse code on the native routes, but is otherwise harmless..ghc-lib-parserReturns Just w6 if the operation is an integer comparison with width w, or Nothing otherwise..ghc-lib-parser.Returns the MachRep of the result of a MachOp..ghc-lib-parserThis function is used for debugging only: we can check whether an application of a MachOp is "type-correct" by checking that the MachReps of its arguments are the same as the MachOp expects. This is used when linting a CmmExpr..ghc-lib-parser!Return (results_hints,args_hints).ghc-lib-parserThe alignment of a memcpy-ish operation.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------------------------------------------------------------------------------------------------------------------------------........................................................-----------------------------------------------------------.....................................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------...,,,,,,, Safe-Inferred8Lͯghc-lib-parserThe monad used by Core-to-Core passes to register simplification statistics. Also used to have common state (in the form of UniqueSupply) for generating Uniques.Яghc-lib-parserJust n  = float lambdas to top level, if doing so will abstract over n or fewer value variables Nothing  = float all lambdas to top level, regardless of how many free variables Just 0 is the vanilla case: float a lambda iff it has no free varsѯghc-lib-parserTrue  = float constants to top level, even if they do not escape a lambdaүghc-lib-parserTrue  = float out over-saturated applications based on arity information. See Note [Floating over-saturated applications] in GHC.Core.Opt.SetLevelsӯghc-lib-parser%Allow floating to the top level only.ȷghc-lib-parserLift an  operation into ͯկghc-lib-parserLift an E operation into ͯ while consuming its Wݯghc-lib-parser2Adjust the dyn flags passed to the argument actionޯghc-lib-parserDrop the single count of the argument action so it doesn't effect the total.ghc-lib-parserGet all annotations of a given type. This happens lazily, that is no deserialization will take place until the [a] is actually demanded and the [a] can also be empty (the UniqFM is not filtered).This should be done once at the start of a Core-to-Core pass that uses annotations.See Note [Annotations]ghc-lib-parserGet at most one annotation of a given type per annotatable item.ghc-lib-parser%Output a String message to the screenghc-lib-parserOutput a message to the screenghc-lib-parserOutput an error to the screen. Does not cause the compiler to die.ghc-lib-parserOutput a fatal error to the screen. Does not cause the compiler to die.ghc-lib-parserOutput a fatal error to the screen. Does not cause the compiler to die.ghc-lib-parser8Output a string debugging message at verbosity level of -v or higherghc-lib-parser2Outputs a debugging message at verbosity level of -v or higherɷghc-lib-parserddump-simpl-statsԯghc-lib-parserMask!TuͯίϯЯѯүӯԯկ֯ׯدٯگۯܯݯޯ߯!ίϯЯѯүӯͯԯݯޯ֯ׯدu߯ܯٯگۯTկ Safe-InferredXghc-lib-parser:Accumulated statistics about what we are putting into the !. "In" means stuff that is just read from interface files, "Out" means actually sucked in and type-checkedghc-lib-parserInformation about other packages that we have slurped in by reading their interface filesghc-lib-parserIn OneShot mode (only), home-package modules accumulate in the external package state, and are sucked in lazily. For these home-pkg modules (only) we need to record which are boot modules. We set this field after loading all the explicitly-imported interfaces, but before doing anything elseThe  part is not necessary, but it's useful for debug prints, and it's convenient because this field comes direct from ghc-lib-parserThe s for modules in external packages whose interfaces we have opened. The declarations in these interface files are held in the  eps_decls, ,  and  eps_rules$ fields of this record, not in the ͕, fields of the interface we have sucked in.What is in the PIT is: The ModuleFingerprint info Its exportsFixitiesDeprecations and warningsghc-lib-parser Cache for #. Ordinarily, we can rely on the  for this information, EXCEPT that when we do dependency analysis, we need to look at the  Dependencies of our imports to determine what their precise free holes are (moduleFreeHolesPrecise). We don't want to repeatedly reread in the interface for every import, so cache it here. When the PIT gets filled in we can drop these entries.ghc-lib-parserResult of typechecking all the external package interface files we have sucked in. The domain of the mapping is external-package modulesghc-lib-parser The total ~3 accumulated from all the external-package modulesghc-lib-parser The total Y3 accumulated from all the external-package modulesghc-lib-parser The total RuleEnv3 accumulated from all the external-package modulesghc-lib-parser The total 73 accumulated from all the external-package modulesghc-lib-parser The total c3 accumulated from all the external-package modulesghc-lib-parserThe family instances accumulated from external packages, keyed off the module that declared themghc-lib-parser7Statistics about what was loaded from external packagesghc-lib-parserInformation about the currently loaded external packages. This is mutable because packages will be demand-loaded during a compilation run as required.ghc-lib-parserHelps us find information about modules in the imported packagesghc-lib-parser%Constructs an empty PackageIfaceTableghc-lib-parser&Add stats for one newly-read interface$$ Safe-Inferred 1u1ghc-lib-parser)Does this module define family instances?ghc-lib-parser summarises everything we know about a compiled module. The  is the stuff *before* linking, and can be written out to an interface file. The 'ModDetails is after linking and can be completely recovered from just the .4When we read an interface file, we also construct a . from it, except that we explicitly make the ͕ and a few other fields empty; as when reading we consolidate the declarations etc. into a number of indexed maps and environments in the ExternalPackageState.See Note [Strictness in ModIface] to learn about why some fields are strict and others are not.Õghc-lib-parserName of the module we are forĕghc-lib-parserAre we a sig of another mod?ŕghc-lib-parserBoot? Signature?ƕghc-lib-parserThe dependencies of the module. This is consulted for directly-imported modules, but not for anything else (hence lazy)Ǖghc-lib-parserUsages; kept sorted so that it's easy to decide whether to write a new iface file (changing usages doesn't affect the hash of this module) NOT STRICT! we read this field lazily from the interface file It is *only* consulted by the recompilation checkerȕghc-lib-parserExports Kept sorted by (mod,occ), to make version comparisons easier Records the modules that are the declaration points for things exported by this module, and the  s of those thingsɕghc-lib-parserModule required TH splices when it was compiled. This disables recompilation avoidance (see #481).ʕghc-lib-parserFixities NOT STRICT! we read this field lazily from the interface file˕ghc-lib-parserWarnings NOT STRICT! we read this field lazily from the interface file̕ghc-lib-parserAnnotations NOT STRICT! we read this field lazily from the interface file͕ghc-lib-parserType, class and variable declarations The hash of an Id changes if its fixity or deprecations change (as well as its type of course) Ditto data constructors, class operations, except that the hash of the parent class/tycon changesΕghc-lib-parserExtra variable definitions which are **NOT** exposed but when combined with mi_decls allows us to restart code generation. See Note [Interface Files with Core Definitions] and Note [Interface File with Core: Sharing RHSs]ϕghc-lib-parser6Binds all the things defined at the top level in the original source code for this module. which is NOT the same as mi_exports, nor mi_decls (which may contains declarations for things not actually defined by the user). Used for GHCi and for inspecting the contents of modules via the GHC API only.(We need the source file to figure out the top-level environment, if we didn't compile this module from source then this field contains Nothing).1Strictly speaking this field should live in the  HomeModInfo", but that leads to more plumbing.Еghc-lib-parserSorted class instanceѕghc-lib-parserSorted family instancesҕghc-lib-parser Sorted rulesӕghc-lib-parser:True if this program uses Hpc at any point in the program.ԕghc-lib-parser/Safe Haskell Trust information for this module.Օghc-lib-parserDo we require the package this module resides in be trusted to trust this module? This is used for the situation where a module is Safe (so doesn't require the package be trusted itself) but imports some trustworthy modules from its own package (which does require its own package be trusted). See Note [Trust Own Package] in GHC.Rename.Namesוghc-lib-parser:Docstrings and related data for use by haddock, the ghci :doc command, and other tools.Just _  = the module was built with -haddock.ؕghc-lib-parserEither () or ݕ% for a fully instantiated interface.ٕghc-lib-parserAdditional optional fields, where the Map key represents the field name, resulting in a (size, serialized data) pair. Because the data is intended to be serialized through the internal 3 class (increasing compatibility with types using  and  FastString,, such as HIE), this format is chosen over  ByteStrings.ڕghc-lib-parser8Hash of the .hs source, used for recompilation checking.ܕghc-lib-parserSelects a IfaceDecl representation. For fully instantiated interfaces we also maintain a fingerprint, which is used for recompilation checks.ʷghc-lib-parser9Partial interface built based on output of core pipeline.ݕghc-lib-parserExtends a PartialModIface with information which is either: * Computed after codegen * Or computed just before writing the iface to disk. (Hashes) In order to fully instantiate it.ߕghc-lib-parserHash of the whole interfaceghc-lib-parserHash of the ABI onlyghc-lib-parserHash of the important flags used when compiling the module, excluding optimisation flagsghc-lib-parserHash of optimisation flagsghc-lib-parserHash of hpc flagsghc-lib-parserHash of pluginsghc-lib-parserWhether this module has orphansghc-lib-parserWhether this module has family instances. See Note [The type family instance consistency story].ghc-lib-parserHash of export listghc-lib-parser:Hash for orphan rules, class and family instances combinedghc-lib-parserCached lookup for ˕ghc-lib-parserCached lookup for ʕghc-lib-parserCached lookup for ͕. The Nothing in  means that the thing isn't in decls. It's useful to know that when seeing if we are up to date wrt. the old interface. The  + is the parent of the name, if it has one.ghc-lib-parserOld-style accessor for whether or not the ModIface came from an hs-boot file.ghc-lib-parser-Lookups up a (possibly cached) fixity from a . If one cannot be found,   is returned instead.ghc-lib-parserThe semantic module for this interface; e.g., if it's a interface for a signature, if Õ is p[A= A]:A,  will be  A.ghc-lib-parser:The "precise" free holes, e.g., the signatures that this  depends on.ghc-lib-parserGiven a set of free holes, and a unit identifier, rename the free holes according to the instantiation of the unit identifier. For example, if we have A and B free, and our unit identity is p[A= C ,B=impl:B]%, the renamed free holes are just C.ghc-lib-parserConstructs cache for the  field of a ;•ϕÕĕŕƕǕȕɕʕ˕͕̕ΕЕѕҕӕԕՕ֕וٕؕڕەܕݕޕߕ;•ϕÕĕŕƕǕȕɕʕ˕͕̕ΕЕѕҕӕԕՕ֕וٕؕڕݕޕߕܕە Safe-Inferredw ghc-lib-parserReading ghc-lib-parserWriting  Safe-InferredeӖghc-lib-parser?A full rule environment which we can apply rules from. Like a ٖ, but it also includes the set of visible orphans we use to filter out orphan rules which are not visible (even though we can see them...) See Note [Orphans] in GHC.Coreٖghc-lib-parserGathers a collection of cs. Maps (the name of) an $ to its rulesږghc-lib-parser Used to make c for an $1 defined in the module being compiled. See also cܖghc-lib-parserFind the "top" free names of several expressions. Such names are either: The function finally being applied to in an application chain (if that name is a GlobalId: see GHC.Types.Var#globalvslocal), orThe TyCon if the expression is a %This is used for the fast-match-check for rules; if the top names don't match, the rest can't˷ghc-lib-parserruleCantMatch tpl actual returns True only if actual definitely can't match tpl by instantiating tpl. It's only a one-way match; unlike instance matching we don't consider unification.Notice that [_$_] )ruleCantMatch [Nothing] [Just n2] = False Reason: a template variable can be instantiated by a constant Also: )ruleCantMatch [Just n1] [Nothing] = False Reason: a local variable v in the actuals might [_$_]ghc-lib-parserGather all the rules for locally bound identifiers from the supplied bindingsghc-lib-parserThe main rule matching function. Attempts to apply all (active) supplied rules to this instance of an application in a given context, returning the rule applied and the resulting expression if successful.ghc-lib-parserReport partial matches for rules beginning with the specified string for the purposes of error reporting̷ghc-lib-parser0Target; can have more elements than the templateghc-lib-parser Rule optionsghc-lib-parserRule activation testghc-lib-parser Rule patternghc-lib-parserRules for an Idghc-lib-parserBindings to check inghc-lib-parserResulting check messageӖԖՖ֖זٖؖږۖܖݖޖߖٖӖԖՖ֖זؖޖߖݖږۖܖ Safe-Inferredghc-lib-parser3Show a SDoc as a String with the default user styleghc-lib-parser.Allows caller to specify the NamePprCtx to use Safe-Inferred'ͷghc-lib-parserFor a binding we: * Look at the args * Mark any argument as call-by-value if: - It's argument to a worker and demanded strictly - Unless it's an unlifted type already * Update the id See Note [CBV Function Ids] See Note [Attaching CBV Marks to ids]ssssssss Safe-Inferred ηghc-lib-parser CoreMapX a is the base map from DeBruijn CoreExpr to a, but without the O optimization.Ϸghc-lib-parser CoreMapG a is a map from DeBruijn CoreExpr to a. The extended key makes it suitable for recursive traversal, since it can track binders, but it is strictly internal to this module. If you are including a g inside another O, this is the type you want.gghc-lib-parser CoreMap a is a map from $ to a3. If you are a client, this is the type you want.OOOOOOOOOOOOXXXXggggggggggggggOOOOOOOOOXXXXOOO Safe-Inferred(8"зghc-lib-parser9Explicit "type-class"-like dictionary for numeric primopsѷghc-lib-parserAdd two numbersҷghc-lib-parserSub two numbersӷghc-lib-parserMultiply two numbersԷghc-lib-parserAnd two numbersշghc-lib-parserOr two numbersַghc-lib-parserNegate a number׷ghc-lib-parser Literal typeطghc-lib-parserMatch a literalٷghc-lib-parserMatch a primopڷghc-lib-parser(Match the application of a binary primop۷ghc-lib-parser?Shift right, putting zeros in rather than sign-propagating as  would do. Do this by converting to the appropriate Word and back. Obviously this won't work for too-big values, but its ok as we use it here.ܷghc-lib-parserCheck if there is comparison with minBound or maxBound, that is always true or false. For instance, an Int cannot be smaller than its minBound, so we can replace such comparison with False.ݷghc-lib-parserCreate an Int literal expression while ensuring the given Integer is in the target Int range޷ghc-lib-parserCreate an Int literal expression while ensuring the given Integer is in the target Int range߷ghc-lib-parserCreate an Int literal expression while ensuring the given Integer is in the target Int rangeghc-lib-parserCreate an unboxed pair of an Int literal expression, ensuring the given Integer is in the target Int range and the corresponding overflow flag (0#/1#) if it wasn't.ghc-lib-parserCreate a Word literal expression while ensuring the given Integer is in the target Word rangeghc-lib-parserCreate a Word literal expression while ensuring the given Integer is in the target Word rangeghc-lib-parserCreate a Word literal expression while ensuring the given Integer is in the target Word rangeghc-lib-parserCreate a Word literal expression while ensuring the given Integer is in the target Word rangeghc-lib-parserCreate an unboxed pair of a Word literal expression, ensuring the given Integer is in the target Word range and the corresponding carry flag (0#/1#) if it wasn't.ghc-lib-parser'ambient (primop x) = x', but not necessarily 'primop (ambient x) = x'.ghc-lib-parser=Transform `extendWordN (narrowWordN x)` into `x .&. 0xFF..FF`ghc-lib-parsernarrow subsumes bitwise  with full mask (cf #16402):narrowN (x .&. m) m .&. (2^N-1) = 2^N-1 ==> narrowN x3e.g. narrow16 (x .&. 0xFFFF) ==> narrow16 xghc-lib-parserMatch (op (op v e) e) or (op e (op v e)) or (op (op e v) e) or (op e (op e v)) and return the innermost (op v e) or (op e v).ghc-lib-parser+Match BigNat#, Integer and Natural literalsghc-lib-parserMatch numeric literalsghc-lib-parser8Match the application of a DataCon to a numeric literal.Can be used to match e.g.: IS 123# IP bigNatLiteral W# 123##ghc-lib-parser$Left identity rule for PrimOps like IntAddC and WordAddC, where, in addition to the result, we have to indicate that no carry/overflow occurred.ghc-lib-parser%Right identity rule for PrimOps like IntSubC and WordSubC, where, in addition to the result, we have to indicate that no carry/overflow occurred.ghc-lib-parserIdentity rule for PrimOps like IntAddC and WordAddC, where, in addition to the result, we have to indicate that no carry/overflow occurred.ghc-lib-parserCreate a numeric literalghc-lib-parserMatch the scrutinee of a case and potentially return a new scrutinee and a function to apply to each literal alternative. Safe-Inferredghc-lib-parserBuild a PrimOp Idghc-lib-parserA plugin with its arguments. The result of loading the plugin.ghc-lib-parser is the compiler plugin data type. Try to avoid constructing one of these directly, and just modify some fields of ֳ instead: this is to try and preserve source-code compatibility when we add fields to this.Nonetheless, this API is preliminary and highly likely to change in the future.ghc-lib-parserStatic plugins which do not need dynamic loading. These plugins are intended to be added by GHC API users directly to this list.;To add dynamically loaded plugins through the GHC API see addPluginModuleName instead.ghc-lib-parserExternal plugins loaded directly from libraries without loading module interfaces.ghc-lib-parserPlugins dynamically loaded after processing arguments. What will be loaded here is directed by DynFlags.pluginModNames. Arguments are loaded from DynFlags.pluginModNameOpts.The purpose of this field is to cache the plugins so they don't have to be loaded each time they are needed. See .ghc-lib-parserThe object files required by the loaded plugins See Note [Plugin dependencies]ghc-lib-parser9the actual plugin together with its commandline argumentsghc-lib-parserExternal plugin loaded directly from a library without loading module interfacesghc-lib-parserPlugin with its argumentsghc-lib-parserUnitIdghc-lib-parser Module nameghc-lib-parser9the actual plugin together with its commandline argumentsghc-lib-parser the module containing the pluginghc-lib-parserthe actual callable pluginghc-lib-parser%command line arguments for the pluginghc-lib-parserModify the Core pipeline that will be used for compilation. This is called as the Core pipeline is built for every module being compiled, and plugins get the opportunity to modify the pipeline in a nondeterministic order.ghc-lib-parserAn optional typechecker plugin, which may modify the behaviour of the constraint solver.ghc-lib-parserAn optional defaulting plugin, which may specify the additional type-defaulting rules.ghc-lib-parserAn optional plugin to handle hole fits, which may re-order or change the list of valid hole fits and refinement hole fits. ghc-lib-parserAn optional plugin to update ®, right after plugin loading. This can be used to register hooks or tweak any field of DynFlags' before doing actual work on a module.³ghc-lib-parser3Specify how the plugin should affect recompilation.óghc-lib-parser8Modify the module when it is parsed. This is called by GHC.Driver.Main when the parser has produced no or only non-fatal errors. Compilation will fail if the messages produced by this function contain any errors.ijghc-lib-parserModify each group after it is renamed. This is called after each ^ has been renamed.ųghc-lib-parserModify the module when it is type checked. This is called at the very end of typechecking.Ƴghc-lib-parser4Modify the TH splice or quasiqoute before it is run.dzghc-lib-parser>Modify an interface that have been loaded. This is called by GHC.Iface.Load when an interface is successfully loaded. Not applied to the loading of the plugin interface. Tools that rely on information from modules other than the currently compiled one should implement this function.ȳghc-lib-parser2Result of running the parser and the parser pluginʳghc-lib-parser/Parsed module, potentially modified by a plugin˳ghc-lib-parserWarnings and errors from parser, potentially modified by a plugin̳ghc-lib-parser*Errors and warnings produced by the parserгghc-lib-parserCommand line options gathered from the -PModule.Name:stuff syntax are given to you as this typeֳghc-lib-parserDefault plugin: does nothing at all, except for marking that safe inference has failed unless -fplugin-trustworthy is passed. For compatibility reason you should base all your plugin definitions on this default value.׳ghc-lib-parserA renamer plugin which mades the renamed source available in a typechecker plugin.ٳghc-lib-parser9Perform an operation by using all of the plugins in turn.۳ghc-lib-parserPerform a constant operation by using all of the plugins in turn.ݳghc-lib-parserLoad external plugins³óijųƳdzȳɳʳ˳̳ͳγϳгѳҳӳԳճֳ׳سٳڳ۳ܳݳ³óijųƳdzֳг̳ͳγϳȳɳʳ˳ݳӳԳճܳ׳سҳѳڳٳ۳ Safe-Inferredghc-lib-parserData for a module node in a  ModuleGraph/. Module nodes of the module graph are one of:A regular Haskell source moduleA hi-boot source moduleghc-lib-parserIdentity of the moduleghc-lib-parser8The module source either plain Haskell, hs-boot, or hsigghc-lib-parser5Location of the various files belonging to the moduleghc-lib-parserContent hash of source fileghc-lib-parser#Timestamp of object, if we have oneghc-lib-parser+Timestamp of dynamic object, if we have oneghc-lib-parserTimestamp of hi file, if we have one See Note [When source is considered modified] and #9243ghc-lib-parser%Timestamp of hie file, if we have oneghc-lib-parserSource imports of the moduleghc-lib-parser7Non-source imports of the module from the module *text*ghc-lib-parser;Whether the special module GHC.Prim was imported explicitlyghc-lib-parserThe parsed, nonrenamed source, if we have it. This is also used to support "inline module syntax" in Backpack files.ghc-lib-parser$Filename of preprocessed source fileghc-lib-parserCached flags from OPTIONS, INCLUDE and LANGUAGE$ pragmas in the modules source codeghc-lib-parser-The actual preprocessed source, if we have itghc-lib-parser ... Differentiated from TypeHole because a ConstraintHole is simplified differently. See Note [Do not simplify ConstraintHoles] in GHC.Tc.Solver.ghc-lib-parserA hole stores the information needed to report diagnostics about holes in terms (unbound identifiers or underscores) or in types (also called wildcards, as used in partial type signatures). See Note [Holes].ghc-lib-parserWhat flavour of hole is this?ghc-lib-parserThe name of this holeghc-lib-parserType to be printed to the user For expression holes: type of expr For type holes: the missing typeghc-lib-parserWhere hole was writtenghc-lib-parserA delayed error, to be reported after constraint solving, in order to benefit from deferred unifications.ghc-lib-parser A hole (in a type or in a term).See Note [Holes].ghc-lib-parser+A type could not be ensured to be concrete.;See Note [The Concrete mechanism] in GHC.Tc.Utils.Concrete.ghc-lib-parserA  is a type that can appear on the left of a canonical equality: a type variable or exactly-saturated type family application.ghc-lib-parserA -type is one that has been fully rewritten with respect to the inert set; that is, it has been rewritten by the algorithm in GHC.Tc.Solver.Rewrite. (Historical note: , for years and years, meant that a type was type-family-free. It does *not* mean this any more.)ghc-lib-parser?Are we sure that more solving will never solve this constraint?ghc-lib-parser8No problems in checking the validity of a type equality.ghc-lib-parserCheck whether a ԛ is marked successful.ghc-lib-parserCheck whether a ԛ has a ӛghc-lib-parserCheck whether a ԛ has one ӛ and no otherghc-lib-parserMark a ԛ as not having an insoluble occurs-check: any occurs check under a type family or in a representation equality is soluble.ghc-lib-parserRetain only information about occurs-check failures, because only that matters after recurring into a kind.ghc-lib-parserReturns the evidence $ for the argument  when this  is a .Returns I otherwise.ghc-lib-parserMakes a new equality predicate with the same role as the given evidence.ghc-lib-parserGet the flavour of the given ghc-lib-parser(Get the equality relation for the given ghc-lib-parserIs a type a canonical LHS? That is, is it a tyvar or an exactly-saturated type family application? Does not look through type synonyms.ghc-lib-parser Convert a  back into a %ghc-lib-parserRetrieve the kind of a ghc-lib-parserAre two s equal?ghc-lib-parserReturns free variables of constraints as a non-deterministic setghc-lib-parserReturns free variables of constraints as a non-deterministic setghc-lib-parserReturns free variables of constraints as a deterministically ordered list. See Note [Deterministic FV] in GHC.Utils.FV.ghc-lib-parserReturns free variables of constraints as a deterministically ordered list. See Note [Deterministic FV] in GHC.Utils.FV.ghc-lib-parserReturns free variables of constraints as a composable FV computation. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of constraints as a composable FV computation. See Note [Deterministic FV] in GHC.Utils.FV.ghc-lib-parserReturns free variables of a bag of constraints as a non-deterministic set. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of a bag of constraints as a deterministically ordered list. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of a bag of constraints as a deterministically ordered list. See Note [Deterministic FV] in GHC.Utils.FV.ghc-lib-parserReturns free variables of a bag of constraints as a composable FV computation. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of a bag of constraints as a composable FV computation. See Note [Deterministic FV] in GHC.Utils.FV.ghc-lib-parserReturns free variables of WantedConstraints as a non-deterministic set. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of WantedConstraints as a deterministically ordered list. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of WantedConstraints as a composable FV computation. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of Implication as a composable FV computation. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserA constraint is considered to be a custom type error, if it contains custom type errors anywhere in it. See Note [Custom type errors in constraints]ghc-lib-parserTrue if taking superclasses of givens, or of wanteds (to perhaps expose more equalities or functional dependencies) might help to solve this constraint. See Note [When superclasses help]Ϝghc-lib-parserChecks whether a the given wanted constraints are solved, i.e. that there are no simple constraints left and all the implications are solved.ܜghc-lib-parser#Gather all the type variables from Λ that it would be unhelpful to default. For the moment, these are only z metavariables participating in a nominal equality whose other side is not concrete; it's usually better to report those as errors instead of defaulting.ghc-lib-parserReturns True of equality constraints that are definitely insoluble, as well as TypeError constraints. Can return K for Given constraints, unlike ޜ.This function is critical for accurate pattern-match overlap warnings. See Note [Pattern match warnings with insoluble Givens] in GHC.Tc.SolverNote that this does not traverse through the constraint to find nested custom type errors: it only detects TypeError msg :: Constraint, and not e.g. Eq (TypeError msg).ghc-lib-parserDoes this hole represent an "out of scope" error? See Note [Insoluble holes]ghc-lib-parser)Get the equality relation relevant for a ghc-lib-parserGet the role relevant for a ghc-lib-parser$Extract the set of rewriters from a  See Note [Wanteds rewrite Wanteds] If the provided CtEvidence is not for a Wanted, just return an empty set.ghc-lib-parserSet the type of CtEvidence.-This function ensures that the invariants on  hold, by updating the evidence and the ctev_pred in sync with each other. See Note [CtEvidence invariants].ghc-lib-parserMakes a ? from all the coercion holes that occur in the given coercion.ghc-lib-parserMakes a ; from all the coercion holes that occur in the given type.ghc-lib-parserMakes a < from all the coercion holes that occur in the given types.ghc-lib-parser-Extract the flavour, role, and boxity from a ghc-lib-parser$Extract the flavour and role from a ghc-lib-parser+Take a CtLoc and moves it to the kind levelghc-lib-parser of the familyghc-lib-parserexactly saturating the familyěśɛ͛›ÛƛǛțʛ˛̛ΛϛЛћқӛԛ՛֛כ؛ٛڛۛܛݛޛߛœÜĜŜƜǜȜɜʜ˜̜͜ΜϜМќҜӜԜ՜֜ל؜ٜڜۜܜݜޜߜȜǜʜœÜĜŜƜɜ՛֛כ؛ٛڛԛӛۛܛݛޛߛΛϛЛћқݜ˜ΜϜМќ̜͜Ԝ؜ҜӜ՜֜לޜߜۜܜěśɛ͛›ÛƛǛțʛ˛̛ڜٜ Safe-Inferred ;Gghc-lib-parser"`where'3 clause at the same depth as implicit layout block"ghc-lib-parser"`|'- at the same depth as implicit layout block")ghc-lib-parserErrors from the Cmm parserghc-lib-parserUnknown Cmm primitiveghc-lib-parser Unknown macroghc-lib-parserUnknown calling conventionghc-lib-parserUnrecognised safetyghc-lib-parserUnrecognised hintghc-lib-parser Lexical errorghc-lib-parserUnknown pragmaghc-lib-parserLexical error in pragmaghc-lib-parser$Numeric escape sequence out of rangeghc-lib-parser)Lexical error in string/character literalghc-lib-parser2Unexpected end-of-file in string/character literalghc-lib-parserUnterminated `{-'ghc-lib-parserUnterminated OPTIONS pragmaghc-lib-parserUnterminated quasiquotationŸghc-lib-parser End of inputßghc-lib-parserUTF-8 decoding errorğghc-lib-parserError at given characterɟghc-lib-parserNegative application pattern?ʟghc-lib-parser*The list of type arguments for the pattern͟ghc-lib-parserExtra information for the expression GHC is currently inspecting/parsing. It can be used to generate more informative parser diagnostics and hints.ϟghc-lib-parserIf J8, this is an infix pattern with the bound operator nameПghc-lib-parser9Did the parser likely fail due to an incomplete do block?ԟghc-lib-parser Is the parsed pattern recursive?ןghc-lib-parserExtra details about a parse error, which helps us in determining which should be the hints to suggest.ڟghc-lib-parser Is there a 'do' in the last 100 characters?۟ghc-lib-parser Is there an mdo in the last 100 characters?ܟghc-lib-parserIs PatternSynonyms enabled?ݟghc-lib-parser!Did we parse a "pattern" keyword?ߟghc-lib-parserAn "unknown" message from the parser. This type constructor allows arbitrary messages to be embedded. The typical use case would be GHC plugins willing to emit custom diagnostics.ghc-lib-parser&A group of parser messages emitted in 5. See Note [Messages from GHC.Parser.Header].ghc-lib-parserPsWarnBidirectionalFormatChars is a warning (controlled by the -Wwarn-bidirectional-format-characters flag) that occurs when unicode bi-directional format characters are found within in a fileThe  contains the exact position in the buffer the character occurred, and the string contains a description of the character.ghc-lib-parserPsWarnTab is a warning (controlled by the -Wwarn-tabs flag) that occurs when tabulations (tabs) are found within a file.Test case(s): parser should_fail"T12610 parsershould_compile"T9723b parsershould_compile"T9723a parsershould_compile#read043 parser should_fail$T16270 warningsshould_compileT9230ghc-lib-parserPsWarnTransitionalLayout is a warning (controlled by the -Walternative-layout-rule-transitional flag) that occurs when pipes ('|' ) or 'where'3 are at the same depth of an implicit layout block. Example(s):f :: IO () f | True = do let x = () y = () return () | True = return ()Test case(s): layout/layout006 layout/layout003 layout/layout001ghc-lib-parserUnrecognised pragma. First field is the actual pragma name which might be empty. Second field is the set of valid candidate pragmas.ghc-lib-parser Invalid Haddock comment positionghc-lib-parser,Multiple Haddock comment for the same entityghc-lib-parser;Found binding occurrence of "*" while StarIsType is enabledghc-lib-parserUsing "*" for Type without StarIsType enabledghc-lib-parserPre qualified import with WarnPrepositiveQualifiedModule enabledghc-lib-parser4LambdaCase syntax used without the extension enabledghc-lib-parser(A lambda requires at least one parameterghc-lib-parser5Underscores in literals without the extension enabledghc-lib-parser%Invalid character in primitive stringghc-lib-parser Missing blockghc-lib-parser Lexer errorghc-lib-parserSuffix occurrence of @ghc-lib-parser Parse errorsghc-lib-parserCmm lexer errorghc-lib-parser#Unsupported boxed sum in expressionghc-lib-parser Unsupported boxed sum in patternghc-lib-parser Unexpected qualified constructorghc-lib-parser Tuple section in pattern contextghc-lib-parser*Bang-pattern without BangPattterns enabledghc-lib-parser%Operator applied to too few argumentsghc-lib-parser Import: multiple occurrences of  qualifiedghc-lib-parserPost qualified import without ImportQualifiedPostghc-lib-parser#Explicit namespace keyword without ExplicitNamespacesghc-lib-parser1Expecting a type constructor but found a variableghc-lib-parser.Illegal export form allowed by PatternSynonymsghc-lib-parserMalformed entity stringghc-lib-parserDots used in record updateghc-lib-parserPrecedence out of rangeghc-lib-parser!Invalid use of record dot syntax ghc-lib-parserOverloadedRecordUpdate is not enabled.ghc-lib-parserCan't use qualified fields when OverloadedRecordUpdate is enabled.ghc-lib-parser;Cannot parse data constructor in a data/newtype declarationghc-lib-parser;Cannot parse data constructor in a data/newtype declarationghc-lib-parserIllegal DataKinds quote mark in data/newtype constructor declarationghc-lib-parser$UNPACK applied to a data constructorghc-lib-parser7Unexpected kind application in data/newtype declarationghc-lib-parserNot a record constructorghc-lib-parser)Illegal unboxed string literal in patternghc-lib-parser3Illegal primitive floating point literal in patternghc-lib-parserDo-notation in patternghc-lib-parserIf-then-else syntax in patternghc-lib-parserLambda-case in patternghc-lib-parsercase..of in patternghc-lib-parserlet-syntax in patternghc-lib-parserLambda-syntax in patternghc-lib-parser"Arrow expression-syntax in patternghc-lib-parserArrow command-syntax in patternghc-lib-parser"Arrow command-syntax in expressionghc-lib-parserView-pattern in expressionghc-lib-parser&Type-application without space before @ghc-lib-parserLazy-pattern (~) without space after itghc-lib-parserBang-pattern (!) without space after itghc-lib-parser#Pragma not allowed in this positionghc-lib-parserQualified do block in commandghc-lib-parser.Invalid infix hole, expected an infix operatorghc-lib-parser0Unexpected semi-colons in conditional expressionghc-lib-parser-Unexpected semi-colons in conditional commandghc-lib-parser @-operator in a pattern positionghc-lib-parser1Unexpected lambda command in function applicationghc-lib-parser/Unexpected case command in function applicationghc-lib-parser2Unexpected case(s) command in function applicationghc-lib-parser-Unexpected if command in function applicationghc-lib-parser.Unexpected let command in function applicationghc-lib-parser-Unexpected do command in function applicationghc-lib-parser+Unexpected do block in function applicationghc-lib-parser,Unexpected mdo block in function applicationghc-lib-parser4Unexpected lambda expression in function applicationghc-lib-parser2Unexpected case expression in function applicationghc-lib-parser5Unexpected case(s) expression in function applicationghc-lib-parser1Unexpected let expression in function applicationghc-lib-parser0Unexpected if expression in function applicationghc-lib-parser2Unexpected proc expression in function applicationghc-lib-parser+Malformed head of type or class declarationghc-lib-parserIllegal 'where' keyword in data declarationghc-lib-parserIllegal datatype contextghc-lib-parserParse error on inputghc-lib-parser!Malformed ... declaration for ...ghc-lib-parser,Unexpected type application in a declarationghc-lib-parserNot a data constructorghc-lib-parser1Record syntax used in pattern synonym declarationghc-lib-parserEmpty 'where'& clause in pattern-synonym declarationghc-lib-parserInvalid binding name in 'where'& clause of pattern-synonym declarationghc-lib-parserMultiple bindings in 'where'& clause of pattern-synonym declarationghc-lib-parser"Declaration splice not a top-levelghc-lib-parser(Inferred type variables not allowed hereghc-lib-parser,Multiple names in standalone kind signaturesghc-lib-parserIllegal import bundle formghc-lib-parserIllegal role nameghc-lib-parserInvalid type signatureghc-lib-parserUnexpected type in declaration ghc-lib-parserExpected a hyphenàghc-lib-parserFound a space in a SCCĠghc-lib-parserFound two single quotesŠghc-lib-parserInvalid package nameƠghc-lib-parserInvalid rule activation markerǠghc-lib-parser1Linear function found but LinearTypes not enabledȠghc-lib-parser8Multi-way if-expression found but MultiWayIf not enabledɠghc-lib-parser=Explicit forall found but no extension allowing it is enabledʠghc-lib-parser.Found qualified-do without QualifiedDo enabledˠghc-lib-parserCmm parser error̠ghc-lib-parser!Illegal traditional record syntax+TODO: distinguish errors without using SDoc͠ghc-lib-parserParse error in command+TODO: distinguish errors without using SDocΠghc-lib-parserParse error in patternϠghc-lib-parserParse error in right operator section pattern TODO: embed the proper operator, if possibleРghc-lib-parserIllegal linear arrow or multiplicity annotation in GADT record syntaxؠghc-lib-parserPsErrUnsupportedOptionsPragma is an error that occurs when an unknown OPTIONS_GHC pragma is supplied is found. Example(s): Test case(s):tests safeHaskellflags/SafeFlags28 tests safeHaskellflags/SafeFlags19 tests safeHaskellflags/SafeFlags29 testsparser!should_fail/T19923c testsparser!should_fail/T19923b testsparser%should_fail/readFail044 testsdriverT2499ݠghc-lib-parser Builds a ȟ& with the information provided by the ͟.˟ghc-lib-parserThe pattern argumentsghc-lib-parser Is the parsed pattern recursive?ghc-lib-parser4Number of other occurrences other than the first oneghc-lib-parserconditional exprghc-lib-parser"then" semi-colon?ghc-lib-parser "then" exprghc-lib-parser"else" semi-colon?ghc-lib-parser "else" exprghc-lib-parserconditional exprghc-lib-parser"then" semi-colon?ghc-lib-parser "then" exprghc-lib-parser"else" semi-colon?ghc-lib-parser "else" exprĠghc-lib-parser Is TH on?ɠghc-lib-parseris Unicode forall?Ӡghc-lib-parserthe problematic characterghc-lib-parserthe character it looks likeghc-lib-parser,the name of the character that it looks likeğߟşǟƟȟ̟˟ʟɟ͟ПϟΟџӟҟԟ֟՟ןݟܟ۟ڟٟ؟ޟӠҠѠРϠΠ̠͠ˠʠɠȠǠƠŠà ߟĠԠؠנ֠ՠ٠ڠ۠ܠݠڠ٠Ԡؠנ֠ՠޟӠҠѠРϠΠ̠͠ˠʠɠȠǠƠŠà ߟĠןݟܟ۟ڟٟ؟ԟ֟՟џӟҟ͟ПϟΟȟ̟˟ʟɟ۠ܠݠşǟƟğߟ Safe-Inferred 1O\ghc-lib-parserAn accumulator to build a prefix data constructor, e.g. when parsing  MkT A B C), the accumulator will evolve as follows:  1. PrefixDataConBuilder [] MkT 2. PrefixDataConBuilder [A] MkT 3. PrefixDataConBuilder [A, B] MkT 4. PrefixDataConBuilder [A, B, C] MkT There are two reasons we have a separate builder type instead of using HsConDeclDetails GhcPs directly: It's faster, because  gives us constant-time snoc.Having a separate type helps ensure that we don't forget to finalize a RecTy into a Z (we do that in dataConBuilderDetails).See Note [PatBuilder] for another builder type used in the parser. Here the technique is similar, but the motivation is different.ghc-lib-parser?See Note [Ambiguous syntactic categories] and Note [PatBuilder]ghc-lib-parser"Last two are the locations of the '|' before and after the payload Safe-Inferred(/6X~ghc-lib-parserThis is the extension field for ConPat, added after typechecking It adds quite a few extra fields, to support elaboration of pattern matching.~ghc-lib-parserThe universal arg types 1-1 with the universal tyvars of the constructor/pattern synonym Use (conLikeResTy pat_con cpt_arg_tys) to get the type of the pattern~ghc-lib-parserExistentially bound type variables in correctly-scoped order e.g. [k:* x:k]~ghc-lib-parserDitto *coercion variables* and *dictionaries* One reason for putting coercion variable here I think is to ensure their kinds are zonked~ghc-lib-parser%Bindings involving those dictionaries~ghc-lib-parserExtra wrapper to pass to the matcher Only relevant for pattern-synonyms; ignored for data cons~ghc-lib-parser8Extension constructor for Pat, added after typechecking.~ghc-lib-parser#Coercion Pattern (translation only):During desugaring a (CoPat co pat) turns into a cast with co+ on the scrutinee, followed by a match on pat.~ghc-lib-parserPattern expansion: original pattern, and desugared pattern, for RebindableSyntax and other overloaded syntax such as OverloadedLists. See Note [Rebindable syntax and HsExpansion].~ghc-lib-parserCoercion Pattern If co :: t1 ~ t2, p :: t2, then (CoPat co p) :: t1~ghc-lib-parser)Why not LPat? Ans: existing locn will do~ghc-lib-parserType of whole pattern, t1ghc-lib-parser)Print with type info if -dppr-debug is onghc-lib-parser%Is the pattern any of combination of:(pat) pat :: Type~pat!pat x (variable)ghc-lib-parser p pat returns K if the pattern pat% needs parentheses under precedence p.ghc-lib-parser p cp returns K if the constructor patterns cp% needs parentheses under precedence p.ghc-lib-parser0Parenthesize a pattern without token informationghc-lib-parser p pat checks if  p pat is true, and if so, surrounds pat with a [. Otherwise, it simply returns pat.ghc-lib-parser Are we in a -XStrict1 context? See Note [-XStrict and irrefutability]%%[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[~~~~~~~~~~~~~~~~~~~~%[[[[[[[[[[[[[[[[[[[[%~~~~~~~~~~~~[~~~~~~~~[[[[[[[[[[[[[[[[[[[[[[[[[[ Safe-Inferred%/\gghc-lib-parserg p ol returns K if an overloaded literal ol, needs to be parenthesized under precedence p.gghc-lib-parserg p l returns K if a literal l- needs to be parenthesized under precedence p.gghc-lib-parser0Convert a literal from one index type to anothergghc-lib-parserpmPprHsLit pretty prints literals and is used when pretty printing pattern match warnings. All are printed the same (i.e., without hashes if they are primitive and not wrapped in constructors if they are boxed). This happens mainly for too reasons: * We do not want to expose their internal representation * The warnings become too messy)MMMMMMMMMMNNNNNNNNNNNMMMNgggggggggggggggggggggggggggggggg Safe-Inferred/6hQ|ghc-lib-parser!Type checker Specification Pragma|ghc-lib-parserThe Id to be specialised, a wrapper that specialises the polymorphic function, and inlining spec for the specialised function|ghc-lib-parser*Located Type checker Specification Pragmas|ghc-lib-parser#Type checker Specialisation Pragmas| conveys  SPECIALISE/ pragmas from the type checker to the desugarer|ghc-lib-parserSuper-specialised: a default method should be macro-expanded at every call site|ghc-lib-parserA type signature in generated code, notably the code generated for record selectors. We simply record the desired Id itself, replete with its name, type and IdDetails. Otherwise it's just like a type signature: there should be an accompanying binding|ghc-lib-parserAbstraction Bindings Export|ghc-lib-parser(Any INLINE pragma is attached to this Id|ghc-lib-parserSee Note [ABExport wrapper] Shape: (forall abs_tvs. abs_ev_vars => abe_mono) ~ abe_poly|ghc-lib-parserSPECIALISE pragmas|ghc-lib-parserTypechecked, generalised bindings, used in the output to the type checker. See Note [AbsBinds].|ghc-lib-parserIncludes equality constraints|ghc-lib-parserAbsBinds only gets used when idL = idR after renaming, but these need to be idL's for the collect... code in HsUtil to have the right type|ghc-lib-parser#Evidence bindings Why a list? See GHC.Tc.TyCl.Instance4 Note [Typechecking plan for instance declarations]|ghc-lib-parserTypechecked user bindings}ghc-lib-parser7Extracts the name for a SPECIALIZE instance pragma. In }, the src field of \ signature contains the SourceText for a SPECIALIZE instance pragma of the form: "SourceText {-# SPECIALIZE"Extraction ensures that all variants of the pragma name (with a Z or an S+) are output exactly as used in the pragma.}ghc-lib-parserUsing SourceText in case the pragma was spelled differently or used mixed caseghc-lib-parserAfter the type-checker, the FunBind extension field contains the ticks to put on the rhs, if any, and a coercion from the type of the MatchGroup to the type of the Id. Example: 1 f :: Int -> forall a. a -> a f x y = y Then the MatchGroup will have type (Int -> a' -> a') (with a free type variable a'). The coercion will take a CoreExpr of this type and convert it to a CoreExpr of type Int -> forall a'. a' -> a' Notice that the coercion captures the free a'.ghc-lib-parserAfter the renamer (but before the type-checker), the FunBind extension field contains the locally-bound free variables of this defn. See Note [Bind free vars][[[[[\[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\||||||||||||||||||||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}}}}8||||||||||||||||||||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}}}} Safe-Inferred 8?sighc-lib-parser-A function called to log warnings and errors.ghc-lib-parserA monad transformer to add GHC specific features to another monad.Note that the wrapped monad must support IO and handling of exceptions.ghc-lib-parserThe Session is a handle to the complete state of a compilation session. A compilation session consists of a set of modules constituting the current program or library, the context for interactive evaluation, and various caches.ghc-lib-parserA minimal implementation of a . If you need a custom monad, e.g., to maintain additional state consider wrapping this monad or using .ghc-lib-parser:A monad that has all the features needed by GHC API calls.In short, a GHC monadallows embedding of IO actions,can log warnings,/allows handling of (extensible) exceptions, andmaintains a current session.If you do not use  or , make sure to call 5 before any call to the GHC API functions can occur.ghc-lib-parser+Call the argument with the current session.ghc-lib-parser#Grabs the DynFlags from the Sessionghc-lib-parserSet the current session to the result of applying the current session to the argument.ghc-lib-parserSet the current session to the result of applying the current session to the argument.ghc-lib-parser3Call an action with a temporarily modified Session.ghc-lib-parserModify the loggerghc-lib-parserPush a log hook on the stackghc-lib-parserPop a log hook from the stackghc-lib-parserPut a log messageghc-lib-parserPut a log messageghc-lib-parserTime an actionghc-lib-parser+A monad that allows logging of diagnostics.ghc-lib-parserReflect a computation in the  monad into the E monad.>You can use this to call functions returning an action in the  monad inside an E action. This is needed for some (too restrictive) callback arguments of some library functions: libFunc :: String -> (Int -> IO a) -> IO a ghcFunc :: Int -> Ghc a ghcFuncUsingLibFunc :: String -> Ghc a -> Ghc a ghcFuncUsingLibFunc str = reifyGhc $ \s -> libFunc $ \i -> do reflectGhc (ghcFunc i) sghc-lib-parserPrint the all diagnostics in a ݮ'. Useful inside exception handlers.TT Safe-Inferredx'ݮghc-lib-parserA source error is an error that is caused by one or more errors in the source code. A ݮ is thrown by many functions in the compilation pipeline. Inside GHC these errors are merely printed via  log_action, but API clients may treat them differently, for example, insert them into a list box. If you want the default behaviour, use the idiom: handleSourceError printExceptionAndWarnings $ do ... api calls that may fail ...The ݮ%s error messages can be accessed via 8. This list may be empty if the compiler failed due to -Werror (Opt_WarnIsError).See printExceptionAndWarnings for more information on what to take care of when writing a custom error handler.ghc-lib-parserPerform the given action and call the exception handler if the action throws a ݮ. See ݮ for more information.ghc-lib-parserexception handlerghc-lib-parseraction to performݮޮ߮ݮޮ߮ Safe-Inferred )*5;V(ghc-lib-parser Pass to a  the information whether or not the '-fbuilding-cabal-package' flag is set.ghc-lib-parserA message from the driver.ghc-lib-parserSimply wraps a generic T message a.ghc-lib-parserA parse error in parsing a Haskell file header during dependency analysisghc-lib-parserDriverMissingHomeModules is a warning (controlled with -Wmissing-home-modules) that arises when running GHC in --make mode when some modules needed for compilation are not included on the command line. For example, if A imports B, `ghc --make A.hs` will cause this warning, while `ghc --make A.hs B.hs` will not.Useful for cabal to ensure GHC won't pick up modules listed neither in 'exposed-modules' nor in 'other-modules'.Test case: warningsshould_compile MissingModghc-lib-parserDriverUnknown is a warning that arises when a user tries to reexport a module which isn't part of that unit.ghc-lib-parserDriverUnknownHiddenModules is a warning that arises when a user tries to hide a module which isn't part of that unit.ghc-lib-parserDriverUnusedPackages occurs when when package is requested on command line, but was never needed during compilation. Activated by -Wunused-packages.Test cases: warningsshould_compileUnusedPackagesghc-lib-parserDriverUnnecessarySourceImports (controlled with -Wunused-imports) occurs if there are imports which are not necessary. See warnUnnecessarySourceImports in .Test cases: warningsshould_compileT10637ghc-lib-parser5DriverDuplicatedModuleDeclaration occurs if a module A& is declared in multiple files.Test cases: None.ghc-lib-parser(DriverModuleNotFound occurs if a module A can't be found.Test cases: None.ghc-lib-parser0DriverFileModuleNameMismatch occurs if a module A is defined in a file with a different name. The first field is the name written in the source code; the second argument is the name extracted from the filename.Test cases: modulemod178, driver/bug1677ghc-lib-parser>DriverUnexpectedSignature occurs when GHC encounters a module A= that imports a signature file which is neither in the  signatures section of a '.cabal' file nor in any package in the home modules.Example:*- MyStr.hsig is defined, but not added to  signatures in the '.cabal' file. signature MyStr where data Str- A.hs, which tries to import the signature. module A where import MyStrTest cases: driver/T12955ghc-lib-parserDriverFileNotFound occurs when the input file (e.g. given on the command line) can't be found.Test cases: None.ghc-lib-parser1DriverStaticPointersNotSupported occurs when the StaticPointers9 extension is used in an interactive GHCi context.Test cases: ghciscripts StaticPtrghc-lib-parserDriverBackpackModuleNotFound occurs when Backpack can't find a particular module during its dependency analysis. Test cases: -ghc-lib-parserDriverUserDefinedRuleIgnored is a warning that occurs when user-defined rules are ignored. This typically happens when Safe Haskell. Test cases:tests safeHaskell%safeInfered/UnsafeWarn05 tests safeHaskell%safeInfered/UnsafeWarn06 tests safeHaskell%safeInfered/UnsafeWarn07 tests safeHaskell(safeInfered/UnsafeInfered11 tests safeHaskellsafeLanguage/SafeLang03ghc-lib-parserDriverMixedSafetyImport is an error that occurs when a module is imported both as safe and unsafe. Test cases:tests safeHaskellsafeInfered/Mixed03 tests safeHaskellsafeInfered/Mixed02ghc-lib-parserDriverCannotLoadInterfaceFile is an error that occurs when we cannot load the interface file for a particular module. This can happen for example in the context of Safe Haskell, when we have to load a module to check if it can be safely imported.Test cases: None.ghc-lib-parserDriverInferredSafeImport is a warning (controlled by the Opt_WarnSafe flag) that occurs when a module is inferred safe.Test cases: None.ghc-lib-parserDriverMarkedTrustworthyButInferredSafe is a warning (controlled by the Opt_WarnTrustworthySafe flag) that occurs when a module is marked trustworthy in SafeHaskell but it has been inferred safe.Test cases: tests safeHaskell)safeInfered/TrustworthySafe02 tests safeHaskellsafeInfered/TrustworthySafe03ghc-lib-parserDriverInferredSafeImport is a warning (controlled by the Opt_WarnInferredSafeImports flag) that occurs when a safe-inferred module is imported from a safe module.Test cases: None.ghc-lib-parserDriverCannotImportUnsafeModule is an error that occurs when an usafe module is being imported from a safe one.Test cases: None.ghc-lib-parserDriverMissingSafeHaskellMode is a warning (controlled by the Opt_WarnMissingSafeHaskellMode flag) that occurs when a module is using SafeHaskell features but SafeHaskell mode is not enabled.Test cases: None.ghc-lib-parserDriverPackageNotTrusted is an error that occurs when a package is required to be trusted but it isn't.Test cases: tests safeHaskellcheck/Check01 tests safeHaskellcheck/Check08 tests safeHaskellcheck/Check06 tests safeHaskellcheckpkg01ImpSafeOnly09 tests safeHaskellcheckpkg01ImpSafe03 tests safeHaskellcheckpkg01ImpSafeOnly07 tests safeHaskellcheckpkg01 ImpSafeOnly08ghc-lib-parserDriverCannotImportFromUntrustedPackage is an error that occurs in the context of Safe Haskell when trying to import a module coming from an untrusted package.Test cases: tests safeHaskellcheck/Check09 tests safeHaskellcheckpkg01ImpSafe01 tests safeHaskellcheckpkg01ImpSafe04 tests safeHaskellcheckpkg01ImpSafeOnly03 tests safeHaskellcheckpkg01ImpSafeOnly05 tests safeHaskellflags/SafeFlags17 tests safeHaskellflags/SafeFlags22 tests safeHaskellflags/SafeFlags23 tests safeHaskellghci/p11 tests safeHaskellghci/p12 tests safeHaskellghci/p17 tests safeHaskellghci/p3 tests safeHaskell'safeInfered/UnsafeInfered01 tests safeHaskell'safeInfered/UnsafeInfered02 tests safeHaskell'safeInfered/UnsafeInfered02 tests safeHaskell'safeInfered/UnsafeInfered03 tests safeHaskell'safeInfered/UnsafeInfered05 tests safeHaskell'safeInfered/UnsafeInfered06 tests safeHaskell'safeInfered/UnsafeInfered09 tests safeHaskell'safeInfered/UnsafeInfered10 tests safeHaskell'safeInfered/UnsafeInfered11 tests safeHaskell$safeInfered/UnsafeWarn01 tests safeHaskell$safeInfered/UnsafeWarn03 tests safeHaskell$safeInfered/UnsafeWarn04 tests safeHaskell$safeInfered/UnsafeWarn05 tests safeHaskell"unsafeLibs/BadImport01 tests safeHaskell"unsafeLibs/BadImport06 tests safeHaskell"unsafeLibs/BadImport07 tests safeHaskell"unsafeLibs/BadImport08 tests safeHaskell"unsafeLibs/BadImport09 tests safeHaskellunsafeLibs/Dep05 tests safeHaskellunsafeLibs/Dep06 tests safeHaskellunsafeLibs/Dep07 tests safeHaskellunsafeLibs/Dep08 tests safeHaskellunsafeLibs/Dep09 tests safeHaskellunsafeLibs/Dep10ghc-lib-parserA collection of driver messagesghc-lib-parserThe umbrella type that encompasses all the different messages that GHC might output during the different compilation stages. See Note [GhcMessage].ghc-lib-parser!A message from the parsing phase.ghc-lib-parser(A message from typecheck/renaming phase.ghc-lib-parser/A message from the desugaring (HsToCore) phase.ghc-lib-parserA message from the driver.ghc-lib-parserAn "escape" hatch which can be used when we don't know the source of the message or if the message is not one of the typed ones. The T and  constraints ensure that if we know, at pattern-matching time, the originating type, we can attempt a cast and access the fully-structured error. This would be the case for a GHC plugin that offers a domain-specific error type but that doesn't want to place the burden on IDEs/application code to "know" it. The T constraint ensures that worst case scenario we can still render this into something which can be eventually converted into a T.ghc-lib-parserA single warning message.  INVARIANT: It must have T severity.ghc-lib-parser!A collection of error messages.  INVARIANT: Each  in the collection should have T severity.ghc-lib-parser#A collection of warning messages.  INVARIANT: Each  in the collection should have T severity.ghc-lib-parserCreates a new  out of any diagnostic. This function is also provided to ease the integration of #18516 by allowing diagnostics to be wrapped into the general (but structured)  type, so that the conversion can happen gradually. This function should not be needed within GHC, as it would typically be used by plugin or library authors (see comment for the  type constructor)ghc-lib-parser9Abstracts away the frequent pattern where we are calling  ioMsgMaybe2 on the result of 'IO (Messages TcRnMessage, a)'.ghc-lib-parser9Abstracts away the frequent pattern where we are calling  ioMsgMaybe0 on the result of 'IO (Messages DsMessage, a)'.ghc-lib-parser Int conv x = fromIntegral x Here calling conv is essentially the identity function, and therefore can be omitted.Test case(s): deSugarshould_compileT4488ghc-lib-parserThe list of unbound bindersghc-lib-parserThe original bindersghc-lib-parserThe original LHSghc-lib-parserThe optimised LHS Safe-Inferred (3(&ghc-lib-parser)Represents the head of a match against a c or literal. Really similar to d.ghc-lib-parserUndecidable semantic equality result. See Note [Undecidable Equality for PmAltCons]ghc-lib-parserLiterals (simple and overloaded ones) for pattern match checking.-See Note [Undecidable Equality for PmAltCons]ghc-lib-parser A data type that caches for the  of x the results of querying dsGetCompleteMatches* and then striking out all occurrences of K for which we already know x D K from these sets.For motivation, see Section 5.3 in Lower Your Guards. See also Note [Implementation of COMPLETE pragmas]ghc-lib-parserThe residual set for the vanilla COMPLETE set from the data defn. Tracked separately from , because it might only be known much later (when we have enough type information to see the %? of the match), or not at all even. Until that happens, it is I.ghc-lib-parserThe residual sets for all COMPLETE sets from pragmas that are visible when compiling this module. Querying that set with dsGetCompleteMatches requires DsM, so we initialise it with I until first needed in a DsM context.ghc-lib-parserSee .ghc-lib-parserInformation about an $. Stores positive () facts, like  x ~ Just 42, and negative (5) facts, like "x is not (:)". Also caches the type (vi_ty), the  of a COMPLETE set ().+Subject to Note [The Pos/Neg invariant] in GHC.HsToCore.Pmc.Solver.ghc-lib-parserThe $ in question. Important for adding new constraints relative to this  when we don't easily have the $ available.ghc-lib-parserPositive info:  apps it is (i.e. x ~ [Just y, PatSyn z]), all at the same time (i.e. conjunctive). We need a list because of nested pattern matches involving pattern synonym case x of { Just y -> case x of PatSyn z -> ... } However, no more than one RealDataCon in the list, otherwise contradiction because of generativity.ghc-lib-parserNegative info: A list of *s that it cannot match. Example, assuming 0 data T = Leaf Int | Branch T T | Node Int T then x D [Leaf, Node] means that x cannot match a Leaf or Node, and hence can only match Branch!. Is orthogonal to anything from , in the sense that ɞ returns PossiblyOverlap for any pairing between  and .ghc-lib-parser8Can this variable be E? Models (mutually contradicting) x ~ E and x D E constraints. E.g. * : Don't know; Neither x ~ E nor x D E. * : x ~ E * : x D Eghc-lib-parserA cache of the associated COMPLETE sets. At any time a superset of possible constructors of each COMPLETE set. So, if it's not in here, we can't possibly match on it. Complementary to . We still need it to recognise completion of a COMPLETE set efficiently for large enums.ghc-lib-parserThe term oracle state. Stores  for encountered $s. These entries are possibly shared when we figure out that two variables must be equal, thus represent the same set of values.!See Note [TmState invariants] in GHC.HsToCore.Pmc.Solver.ghc-lib-parserFacts about term variables. Deterministic env, so that we generate deterministic error messages.ghc-lib-parserAn environment for looking up whether we already encountered semantically equivalent expressions that we want to represent by the same $ representative.ghc-lib-parserWhich  needs to be checked for inhabitants because of new negative constraints (e.g. x D E or x D K).ghc-lib-parserThe type oracle state. An  that we incrementally add local type constraints to, together with a sequence number that counts the number of times we extended it with new facts.ghc-lib-parserA disjunctive bag of "s, representing a refinement type.ghc-lib-parserA normalised refinement type D ("nabla"), comprised of an inert set of canonical (i.e. mutually compatible) term and type constraints that form the refinement type's predicate.ghc-lib-parserType oracle; things like a~Intghc-lib-parser"Term oracle; things like x~Nothingghc-lib-parser+An initial nabla that is always satisfiableghc-lib-parser!Initial state of the term oracle.ghc-lib-parserLike lookupVarInfo ts x, but lookupVarInfo ts x = (y, vi)3 also looks through newtype constructors. We have x ~ N1 (... (Nk y)) such that the returned y doesn't have a positive newtype constructor constraint associated with it (yet). The  returned is that of y's representative.Careful, this means that idType x might be different to idType y", even modulo type normalisation!See also Note [Coverage checking Newtype matches] in GHC.HsToCore.Pmc.Solver.ghc-lib-parserWhen  can be decided. True  = Equal, False  = Disjoint.ghc-lib-parser/Undecidable equality for values represented by 1s. See Note [Undecidable Equality for PmAltCons] Just True ==> Surely equal Just False. ==> Surely different (non-overlapping, even!)Nothing" ==> Equality relation undecidableÞghc-lib-parser Type of a ghc-lib-parser/Undecidable equality for values represented by c4s. See Note [Undecidable Equality for PmAltCons]. cs aren't enforced to be generative, so two syntactically different cs might match the exact same values. Without looking into and reasoning about the pattern synonym's definition, we can't decide if their sets of matched values is different. Just True ==> Surely equal Just False. ==> Surely different (non-overlapping, even!)Nothing" ==> Equality relation undecidableƞghc-lib-parserWhether there is a  in the  that compares  to the given  according to ɞ.ɞghc-lib-parser'We can't in general decide whether two ?s match the same set of values. In addition to the reasons in  and , a 2 might or might not represent the same value as a 1. See Note [Undecidable Equality for PmAltCons]. Just True ==> Surely equal Just False. ==> Surely different (non-overlapping, even!)Nothing" ==> Equality relation undecidable.Examples (omitting some constructor wrapping):/eqPmAltCon (LitInt 42) (LitInt 1) == Just False: Lit equality is decidable0eqPmAltCon (DataCon A) (DataCon B) == Just False": DataCon equality is decidable4eqPmAltCon (LitOverInt 42) (LitOverInt 1) == Nothing$: OverLit equality is undecidable-eqPmAltCon (PatSyn PA) (PatSyn PB) == Nothing#: PatSyn equality is undecidable-eqPmAltCon (DataCon I#) (LitInt 1) == Nothing: DataCon to Lit comparisons are undecidable without reasoning about the wrapped Int#5eqPmAltCon (LitOverInt 1) (LitOverInt 1) == Just True2: We assume reflexivity for overloaded literals/eqPmAltCon (PatSyn PA) (PatSyn PA) == Just True/: We assume reflexivity for Pattern Synonymsʞghc-lib-parser Type of a ˞ghc-lib-parserIs a match on this constructor forcing the match variable? True of data constructors, literals and pattern synonyms (#17357), but not of newtypes. See Note [Coverage checking Newtype matches] in GHC.HsToCore.Pmc.Solver.Ҟghc-lib-parserNot user-facing.؞ghc-lib-parserSyntactic equality.ڞghc-lib-parserSyntactic equality.ݞghc-lib-parserNot user-facing.ޞghc-lib-parserNot user-facing.cžÞĞŞƞǞȞɞʞ˞̞͞ΞϞОўžcÞʞ˞̞ĞŞƞǞȞɞ͞ΞϞОўr Safe-Inferred3Փghc-lib-parserA  whose domain is sets of /s, each of which share a common value of type ele. Every such set ("equivalence class") has a distinct representative . Supports merging the entries of multiple such sets in a union-find like fashion.An accurate model is that of [(Set key, Maybe ele)]!: A finite mapping from sets of keys to possibly absent entries ele+, where the sets don't overlap. Example:  m = [({u1,u3}, Just ele1), ({u2}, Just ele2), ({u4,u7}, Nothing)] 9 On this model we support the following main operations: m u3 == Just ele1,  m u4 == Nothing,  m u5 == Nothing. m u1 u3 is a no-op, but  m u1 u2 merges {u1,u3} and {u2} to point to  Just ele2 and returns the old entry of {u1,u3},  Just ele1. m u3 ele4 sets the entry of {u1,u3} to  Just ele4.8As well as a few means for traversal/conversion to list.ghc-lib-parserEither  Indirect x., meaning the value is represented by that of x , or an Entry6 containing containing the actual value it represents.ghc-lib-parserlookupSUDFM env x looks up an entry for x, looking through all s until it finds a shared .$Examples in terms of the model (see ): >>> lookupUSDFM [({u1,u3}, Just ele1), ({u2}, Just ele2)] u3 == Just ele1 >>> lookupUSDFM [({u1,u3}, Just ele1), ({u2}, Just ele2)] u4 == Nothing >>> lookupUSDFM [({u1,u3}, Just ele1), ({u2}, Nothing)] u2 == Nothingghc-lib-parserequateUSDFM env x y makes x and y+ point to the same entry, thereby merging x's class with y 's. If both x and y$ are in the domain of the map, then y.'s entry will be chosen as the new entry and x's old entry will be returned.$Examples in terms of the model (see ): >>> equateUSDFM [] u1 u2 == (Nothing, [({u1,u2}, Nothing)]) >>> equateUSDFM [({u1,u3}, Just ele1)] u3 u4 == (Nothing, [({u1,u3,u4}, Just ele1)]) >>> equateUSDFM [({u1,u3}, Just ele1)] u4 u3 == (Nothing, [({u1,u3,u4}, Just ele1)]) >>> equateUSDFM [({u1,u3}, Just ele1), ({u2}, Just ele2)] u3 u2 == (Just ele1, [({u2,u1,u3}, Just ele2)])ghc-lib-parseraddToUSDFM env x a sets the entry x is associated with to a1, thereby modifying its whole equivalence class.$Examples in terms of the model (see ): >>> addToUSDFM [] u1 ele1 == [({u1}, Just ele1)] >>> addToUSDFM [({u1,u3}, Just ele1)] u3 ele2 == [({u1,u3}, Just ele2)] Safe-Inferred ?9؝ghc-lib-parserSee Note [Safe Haskell Overlapping Instances Implementation] in GHC.Tc.Solverghc-lib-parserReturns True iff there are no Given constraints that might, potentially, match the given class consraint. This is used when checking to see if a Given might overlap with an instance. See Note [Instance and Given overlap] in GHC.Tc.Solver.Interactghc-lib-parser [3,4], q :-> [0,5]]): (Just p) q where p is not one of {3, 4} q is not one of {0, 5} When the set of refutable shapes contains more than 3 elements, the additional elements are indicated by "...".ghc-lib-parser5Output refutable shapes of a variable in the form of "var is not one of {2, Nothing, 3}. Will never print more than 3 refutable shapes, the tail is indicated by an ellipsis.ghc-lib-parserExtract and assigns pretty names to constraint variables with refutable shapes.ghc-lib-parser*Allocates a new, clean name for the given $! if it doesn't already have one.ghc-lib-parserPretty print a variable, but remember to prettify the names of the variables that refer to neg-literals. The ones that cannot be shown are printed as underscores.ghc-lib-parserExtract a list of $s out of a sequence of cons cells, optionally terminated by a wildcard variable instead of []. Some examples:pmExprAsList (1:2:[]) == Just ( [1,2]), a regular, [].-terminated list. Should be pretty-printed as [1,2].pmExprAsList (1:2:x) == Just ( [1,2] x), a list prefix ending in a wildcard variable x (of list type). Should be pretty-printed as (1:2:_). pmExprAsList [] == Just ( []) Safe-Inferred(8ghc-lib-parserUsed as tree payload post-checking. The redundancy info we elaborated.ghc-lib-parser;Used as tree payload pre-checking. The LYG guards to check.ghc-lib-parser#Pattern-match coverage check resultghc-lib-parser,A hole for redundancy info and covered sets.ghc-lib-parserThe set of uncovered values falling out at the bottom. (for -Wincomplete-patterns, but also important state for the algorithm)ghc-lib-parser&A flag saying whether we ran into the maxPmCheckModels limit for the purpose of suggesting to crank it up in the warning message. Writer state.ghc-lib-parserRedundancy sets, used to determine redundancy of RHSs and bang patterns (later digested into a CIRB).ghc-lib-parserThe Covered= set; the set of values reaching a particular program point.ghc-lib-parserThe  Diverging set; empty if no match can lead to divergence. If it wasn't empty, we have to turn redundancy warnings into inaccessibility warnings for any subclauses.ghc-lib-parserIf any of the  is empty, the corresponding  pin-points a bang pattern in source that is redundant. See Note [Dead bang patterns].ghc-lib-parser(A guard tree denoting a pattern binding.ghc-lib-parser%A guard tree denoting an -XEmptyCase.ghc-lib-parserA guard tree denoting GRHS&: A payload describing the grds and a / useful for printing out in warnings messages.ghc-lib-parserA guard tree denoting GRHSs : A bunch of % guards for local bindings from the GRHSss where clauses and the actual list of GRHS=. See Note [Long-distance information for HsLocalBinds] in GHC.HsToCore.Pmc.Desugar.ghc-lib-parserA guard tree denoting Match5: A payload describing the pats and a bunch of GRHS.ghc-lib-parserA guard tree denoting  MatchGroup.ghc-lib-parserA sequence of s.ghc-lib-parserMeans by which we identify a source construct for later pretty-printing in a warning message.  for the equation to show,  for the location.ghc-lib-parserA very simple language for pattern guards. Let bindings, bang patterns, and matching variables against flat constructor patterns. The LYG guard language.ghc-lib-parserPmCon x K dicts args corresponds to a K dicts args <- x guard. The args" are bound in this construct, the x0 is just a use. For the arguments' meaning see .ghc-lib-parserPmBang x corresponds to a  seq x True guard. If the extra  is present, the bang guard came from a source bang pattern, in which case we might want to report it as redundant. See Note [Dead bang patterns] in GHC.HsToCore.Pmc.Check.ghc-lib-parser PmLet x expr corresponds to a  let x = expr guard. This actually binds x.ghc-lib-parserFormat a LYG sequence (e.g. Matches of a  MatchGroup or GRHSs) as {  firstalt; ...;  lastalt }ghc-lib-parserShould not be user-facing.ghc-lib-parserFormat LYG guards as | True <- x, let x = 42, !zcžÞĞŞƞǞȞɞʞ˞̞͞ΞϞОў1 Safe-Inferredghc-lib-parserGiven a bag of diagnostics, turn them into an exception if any has T, or print them out otherwise.ghc-lib-parser Convert a PsError into a wrapped ; use it for dealing with parse errors when the driver is doing dependency analysis. Defined here to avoid module loops between GHC.Driver.Error.Types and GHC.Driver.Error.Ppr Safe-Inferred Gghc-lib-parserSwitches in the DynFlags and Plugins from the InteractiveContextghc-lib-parserA variant of runHsc that switches in the DynFlags and Plugins from the InteractiveContext before running the Hsc computation.ghc-lib-parser(Retrieve the ExternalPackageState cache.ghc-lib-parserFind all the instance declarations (of classes and families) from the Home Package Table filtered by the provided predicate function. Used in  tcRnImports, to select the instances that are in the transitive closure of imports from the currently compiled module.ghc-lib-parser4Find instances visible from the given set of importsghc-lib-parserGet rules from modules "below" this one (in the dependency sense)ghc-lib-parserGet annotations from modules "below" this one (in the dependency sense)ghc-lib-parserThis function returns all the modules belonging to the home-unit that can be reached by following the given dependencies. Additionally, if both the boot module and the non-boot module can be reached, it only returns the non-boot one.ghc-lib-parserGet things from modules "below" this one (in the dependency sense) C.f Inst.hptInstancesghc-lib-parserDeal with gathering annotations in from all possible places and combining them into a single 7ghc-lib-parser Find the % for the given  by using all the resources at our disposal: the compiled modules in the : and the compiled modules in other packages that live in '. Note that this does NOT look up the % in the module being compiled: you have to do that yourself, if desiredghc-lib-parser Find the  for a , searching in both the loaded home and external package module informationghc-lib-parser$Retrieve the target code interpreter0Fails if no target code interpreter is availableghc-lib-parserUpdate the LogFlags of the Log in hsc_logger from the DynFlags in hsc_dflags. You need to call this when DynFlags are modified.ghc-lib-parser Update Flagsghc-lib-parser Set Flagsghc-lib-parserDiscard the contents of the InteractiveContext, but keep the DynFlags and the loaded plugins. It will also keep ic_int_print and ic_monad if their names are from external packages.4®îĮήŮƮǮȮɮʮˮ̮ͮϮЮѮҮӮ4ҮӮ®îĮήŮƮǮȮɮʮˮ̮ͮϮЮѮ Safe-Inferred %&89: ghc-lib-parserA ' ModuleGraph=' contains all the nodes from the home package (only). See 'ModuleGraphNode"' for information about the nodes.Modules need to be compiled. hs-boots need to be typechecked before the associated "real" module so modules with {-# SOURCE #-} imports can be built. Instantiations also need to be typechecked to ensure that the module fits the signature. Substantiation typechecking is roughly comparable to the check that the module and its hs-boot agree.The graph is not necessarily stored in topologically-sorted order. Use  and  to achieve this.ghc-lib-parserA 'ModuleGraphNode' is a node in the ' ModuleGraph'. Edges between nodes mark dependencies arising from module imports and dependencies arising from backpack instantiations.ghc-lib-parserInstantiation nodes track the instantiation of other units (backpack dependencies) with the holes (signatures) of the current package.ghc-lib-parserThere is a module summary node for each module, signature, and boot module being built.ghc-lib-parserLink nodes are whether are are creating a linked product (ie executable/shared object etc) for a unit.ghc-lib-parserMap a function f over all the  ModSummaries. To preserve invariants f can't change the isBoot status.ghc-lib-parserLook up a ModSummary in the ModuleGraph Looks up the non-boot ModSummary Linear in the size of the module graphghc-lib-parserAdd an ExtendedModSummary to ModuleGraph. Assumes that the new ModSummary is not an element of the ModuleGraph.ghc-lib-parserThis function filters out all the instantiation nodes from each SCC of a topological sort. Use this with care, as the resulting "strongly connected components" may not really be strongly connected in a direct way, as instantiations have been removed. It would probably be best to eliminate uses of this function where possible.ghc-lib-parserCollect the immediate dependencies of a ModuleGraphNode, optionally avoiding hs-boot dependencies. If the drop_hs_boot_nodes flag is False, and if this is a .hs and there is an equivalent .hs-boot, add a link from the former to the latter. This has the effect of detecting bogus cases where the .hs-boot depends on the .hs, by introducing a cycle. Additionally, it ensures that we will always process the .hs-boot before the .hs, and so the HomePackageTable will always have the most up to date information.ghc-lib-parserTurn a list of graph nodes into an efficient queriable graph. The first boolean parameter indicates whether nodes corresponding to hs-boot files should be collapsed into their relevant hs nodes.'' Safe-Inferred*ghc-lib-parser*Compute the output file name of a program.StaticLink boolean is used to indicate if the program is actually a static library (e.g., on iOS).Use the provided filename (if any), otherwise use "main.exe" (Windows), "a.out (otherwise without StaticLink set), "liba.a". In every case, add the extension if it is missing.** Safe-Inferred ghc-lib-parserExternal interpreter instanceghc-lib-parserValues that need to be freed before the next command is sent. Threads can append values to this list asynchronously (by modifying the IServ state MVar).£ghc-lib-parser5Configuration needed to spawn an external interpreterģghc-lib-parserExternal program to runţghc-lib-parserCommand-line optionsƣghc-lib-parserUse Profiling wayǣghc-lib-parserUse Dynamic wayȣghc-lib-parserHookɣghc-lib-parser!Trace action executed after spawnʣghc-lib-parser State of an external interpreterˣghc-lib-parserNot spawned yeṭghc-lib-parserRunningͣghc-lib-parserExternal interpreterThe external interpreter is spawned lazily (on first use) to avoid slowing down sessions that don't require it. The contents of the MVar reflects the state of the interpreter (running or not).Уghc-lib-parserExternal interpreterѣghc-lib-parser Interpreterӣghc-lib-parser)Interpreter instance (internal, external)ԣghc-lib-parserInterpreter loader£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣѣңӣԣϣУͣΣ£ãģţƣǣȣɣʣˣ̣ Safe-Inferred?)!®ghc-lib-parserHscEnv is like , except that some of the fields are immutable. An HscEnv is used to compile a single module from plain Haskell source code (after preprocessing) to either C, assembly or C--. It's also used to store the dynamic linker state to allow for multiple linkers in the same address space. Things like the module graph don't change during a single compilation.Historical note: "hsc" used to be the name of the compiler binary, when there was a separate driver and compiler. To compile a single module, the driver would invoke hsc on the source code... so nowadays we think of hsc as the layer of the compiler that deals with compiling a single module.Įghc-lib-parserThe dynamic flag settingsŮghc-lib-parser-The targets (or roots) of the current sessionƮghc-lib-parser'The module graph of the current sessionǮghc-lib-parser1The context for evaluating interactive statementsȮghc-lib-parserGlobal Name cache so that each Name gets a single Unique. Also track the origin of the Names.ɮghc-lib-parser:The cached result of performing finding in the file systemʮghc-lib-parser7Used for one-shot compilation only, to initialise the IfGblEnv. See  for (. See also Note [hsc_type_env_var hack]ˮghc-lib-parsertarget code interpreter (if any) to use for TH and GHCi. See Note [Target code interpreter]̮ghc-lib-parserPluginsͮghc-lib-parser/Unit environment (unit state, home unit, etc.).)Initialized from the databases cached in  hsc_unit_dbs and from the DynFlags.ήghc-lib-parserLogger with its flags.Don't forget to update the logger flags if the logging related DynFlags change. Or better, use hscSetFlags setter which does it.Ϯghc-lib-parserHooksЮghc-lib-parserTemporary filesѮghc-lib-parserLLVM configuration cache.Үghc-lib-parser:The Hsc monad: Passing an environment and diagnostic state®îĮήŮƮǮȮɮʮˮ̮ͮϮЮѮҮӮҮӮ®îĮήŮƮǮȮɮʮˮ̮ͮϮЮѮ Safe-Inferred0yghc-lib-parser1Locations and information the finder cares about.Should be taken from DynFlags via initFinderOpts.yghc-lib-parser9Where are we allowed to look for Modules and Source filesyghc-lib-parserWhen looking up a home module:K-: search interface files (e.g. in '-c' mode)H-: search source files (e.g. in '--make' mode)yghc-lib-parserDon't check that an imported interface file actually exists if it can only be at one location. The interface will be reported as y even if the file doesn't exist, so this is only useful in specific cases (e.g. to generate dependencies with `ghc -M`)yghc-lib-parserIf we encounter unknown modules, should we suggest modules that have a similar name.yghc-lib-parser/The result of searching for an imported module.NB: FindResult manages both user source-import lookups (which can result in ) as well as direct imports for interfaces (which always result in ).yghc-lib-parserThe module was foundyghc-lib-parser The requested unit was not foundyghc-lib-parser"_Error_: both in multiple packagesyghc-lib-parser Not foundyghc-lib-parserPlaces where I lookedyghc-lib-parserJust p => module is in this unit's manifest, but couldn't find the .hi fileyghc-lib-parser7Module is in these units, but the *module* is hiddenyghc-lib-parser5Module is in these units, but the *unit* is hiddenyghc-lib-parser,Module is in these units, but it is unusableyghc-lib-parserPossible mis-spelled moduleszghc-lib-parserThe y maps modules to the result of searching for that module. It records the results of searching for modules along the search path. On :load., we flush the entire contents of this cache.(yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzz(yzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy Safe-Inferred4~hghc-lib-parserPer-module cache of original  s given shghc-lib-parserThe NameCache makes sure that there is just one Unique assigned for each original name; i.e. (module-name, occ-name) pair and provides something of a lookup mechanism for those names.hghc-lib-parser-Update the name cache with the given functionhghc-lib-parser-Update the name cache with the given functionAdditionally, it ensures that the given Module and OccName are evaluated. If not, chaos can ensue: we read the name-cache then pull on mod (say) which does some stuff that modifies the name cache This did happen, with tycon_mod in GHC.IfaceToCore.tcIfaceAlt (DataAlt..) hhhhhhhhhhhh hhhhhhhhhhhh Safe-Inferred5+ghc-lib-parser3Cache LLVM configuration read from files in top_dir5See Note [LLVM configuration] in GHC.CmmToLlvm.ConfigCurrently implemented with unsafe lazy IO. But it could be implemented with an IORef as the exposed interface is in IO.++++++ Safe-Inferred8 +ghc-lib-parserTarget platform+ghc-lib-parser Context for LLVM code generation+ghc-lib-parser+Fill undefined literals with garbage values+ghc-lib-parserSplit sections+ghc-lib-parser(x86) BMI instructions+ghc-lib-parserversion of Llvm we're using+ghc-lib-parser&True ==> warn unsupported Llvm version+ghc-lib-parsertarget triple passed to LLVM+ghc-lib-parser=Supported LLVM configurations. see Note [LLVM configuration]+ghc-lib-parserThe (inclusive) lower bound on the LLVM Version that is currently supported.+ghc-lib-parserThe (not-inclusive) upper bound bound on the LLVM Version that is currently supported.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Q Safe-Inferred :ghc-lib-parserHooks can be used by GHC API clients to replace parts of the compiler pipeline. If a hook is not installed, GHC uses the default built-in behaviourghc-lib-parserActual type: Maybe ([LForeignDecl GhcTc] -> DsM (ForeignStubs, OrdList (Id, CoreExpr))) Safe-Inferred;̙ghc-lib-parser, meaning generate code for linking against dynamic librariesVghc-lib-parser>decides whether to check array bounds in StgToCmm.Prim or notVghc-lib-parser!Verify tag inference predictions.Vghc-lib-parserAllowed to emit larger than native size arithmetic (only LLVM and C backends)Vghc-lib-parser(Allowed to generate QuotRem instructionsVghc-lib-parserAllowed to generate QuotRemVghc-lib-parser2Allowed to generate AddWordC, SubWordC, Add2, etc.Vghc-lib-parser'Allowed to generate IntMul2 instructionVghc-lib-parser+Disable use of precomputed standard thunks.Vghc-lib-parserError (if any) to raise when vector instructions are used, see #StgToCmm.Prim.checkVecCompatibilityVghc-lib-parser$check for Advanced Vector ExtensionsVghc-lib-parser&check for Advanced Vector Extensions 2Vghc-lib-parser,check for Advanced Vector 512-bit Extensions'UUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'UUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV Safe-Inferred'/16Urghc-lib-parserSTG pretty-printing optionsrghc-lib-parserEnable cost-centresrghc-lib-parser,Used as a data type index for the stgSyn ASTrghc-lib-parser)Use internally by the lambda lifting passrghc-lib-parserTag inference information on binders. See Note [Tag inference passes] in GHC.Stg.InferTagsrghc-lib-parserTag inference information put on relevant StgApp nodes See Note [Tag inference passes] in GHC.Stg.InferTagsrghc-lib-parserWhen `-fdistinct-constructor-tables` is turned on then each usage of a constructor is given an unique number and an info table is generated for each different constructor.rghc-lib-parserLike , but with an  instance that returns .rghc-lib-parserA top-level binding.rghc-lib-parserDoes this constructor application refer to anything in a different *Windows* DLL? If so, we can't allocate it staticallysghc-lib-parser Type of an StgArg8Very half baked because we have lost the type arguments.sghc-lib-parserGiven an alt type and whether the program is unarised, return whether the case binder is in scope.Case binders of unboxed tuple or unboxed sum type always dead after the unariser has run. See Note [Post-unarisation invariants].sghc-lib-parserUsed when constructing a term with an unused extension point that should not appear in pretty-printed output at all.sghc-lib-parser3STG pretty-printing options used for panic messagessghc-lib-parser3STG pretty-printing options used for short messagesghc-lib-parser,Code gen needs to track non-global free varsrghc-lib-parser if a data constructor declaration uses record syntax (i.e., Z ), where fields- are the field selectors. Otherwise, return I.}ghc-lib-parser Convert a ] to a F}ghc-lib-parser Eliminate a ].}ghc-lib-parser Map over the via type if dealing with ]. Otherwise, return the ] unchanged.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}^^^^^^^^^^^^^^^^^^^^^^^^^^]^]]]]]]]]]]]]]}}]]]]}^^^^^^^^^^^^^^^^^^^^^^^^^}}}}^^^^^^^^^^^^^^^}^^^^^}}}}}^}}^^^^^^^^^^^^^^^}}]]]]]]]]]]]]^^^^]]]]]]}]]]]]]}}}]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]}}}}}\\\\\\\\\\\\\\\\\}}}}}}}\\\\\^}}]]]]^^^^^^^]]]]]]]]]]]]]]\\\]]]]]]]]]]]]]]]]]]]]]]]]]]}}}\\\\\\_\\\\\\\\\\\\\\\\\\_\\\\}^^^^^^^^^^}}}^^^^^^^^^^^^^^^}}}^}} Safe-Inferred )*cghc-lib-parser8A wrapper around the interpretation function for phases. Safe-Inferredh Ȗghc-lib-parser(Action to perform in backend compilationɖghc-lib-parser+Update the boot and signature file results.ʖghc-lib-parserRecompile this module.˖ghc-lib-parser#Information for the code generator.̖ghc-lib-parser Module info͖ghc-lib-parserPartial interfaceΖghc-lib-parserOld interface hash for this compilation, if an old interface file exists. Pass to hscMaybeWriteIface when writing the interface to avoid updating the existing interface when the interface isn't changed.ϖghc-lib-parser-Status of a module in incremental compilationЖghc-lib-parser*Nothing to do because code already exists.іghc-lib-parserRecompilation of module, or update of interface is required. Optionally pass the old interface hash to avoid updating the existing interface when it has not changed. Ȗʖɖ˖̖͖ΖϖЖі Ȗʖɖ˖̖͖ΖϖЖіW Safe-Inferred 8qghc-lib-parser Stream m a b is a computation in some Monad m/ that delivers a sequence of elements of type a followed by a result of type b.!More concretely, a value of type  Stream m a b can be run using runStreamInternal in the Monad m, and it delivers eitherthe final result: Done b, or Yield a str where a( is the next element in the stream, and str is the rest of the stream Effect mstr where mstr is some action running in m* which generates the rest of the stream.4Stream is itself a Monad, and provides an operation  that produces a new element of the stream. This makes it convenient to turn existing monadic computations into streams.The idea is that Stream is useful for making a monadic computation that produces values from time to time. This can be used for knitting together two complex monadic operations, so that the producer does not have to produce all its values before the consumer starts consuming them. We make the producer into a Stream, and the consumer pulls on the stream each time it wants a new value. is implemented in the "yoneda" style for efficiency. By representing a stream in this manner  and  operations are accumulated in the function parameters before being applied once when the stream is destroyed. In the old implementation each usage of  and  would traverse the entire stream in order to apply the substitution at the leaves.The >>= operation for . was a hot-spot in the ticky profile for the ManyConstructors test which called the cg function many times in  StgToCmm.hsghc-lib-parserTurn a Stream into an ordinary list, by demanding all the elements.ghc-lib-parserTurn a list into a #, by yielding each element in turn.ghc-lib-parser&Apply a function to each element of a , lazilyghc-lib-parser/Apply a monadic operation to each element of a , lazilyghc-lib-parserNote this is not very efficient because it traverses the whole stream before rebuilding it, avoid using it if you can. mapAccumL used to implemented but it wasn't used anywhere in the compiler and has similar efficiency problems.TT Safe-Inferred)*18vX ghc-lib-parser%Static data, after SRTs are generatedghc-lib-parser8a literal value, size given by cmmLitRep of the literal.ghc-lib-parser uninitialised data, N bytes longghc-lib-parser1string of 8-bit values only, not zero terminated.ghc-lib-parser+an embedded binary file and its byte length҃ghc-lib-parser!Info table as a haskell data type݃ghc-lib-parserCmmTopInfo is attached to each CmmDecl (see defn of CmmGroup), and contains the extra info (beyond the executable code) that belongs to that CmmDecl.ghc-lib-parserA top-level chunk, abstracted over the type of the contents of the basic blocks (Cmm or instructions are the likely instantiations).ghc-lib-parserRaw1 cmm group (TODO (osa): not sure what that means)ghc-lib-parserCmm group with SRTsghc-lib-parserCmm group before SRT generationghc-lib-parser?Should a data in this section be considered constant at runtimeghc-lib-parserThe branch block id is that of the first block in the branch, which is that branch's entry point********++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-...----------------------------------------------------------.....................................................Nځہ܁݁ށ߁؂ۂقڂ܂݂ނ߂ƒÃăŃǃ̓ƃȃɃʃ˃̃΃σуЃ҃ӃԃՃփ׃؃كڃۃ܃݃ރ߃Ńǃ̓ƃȃɃʃ˃̃΃ƒÃă݃ރ߃كڃۃ܃҃ӃԃՃփ׃؃*******σуЃ* Safe-Inferred)*5؂ghc-lib-parserTick scope identifier, allowing us to reason about what annotations in a Cmm block should scope over. We especially take care to allow optimisations to reorganise blocks without losing tick association in the process.قghc-lib-parserThe global scope is the "root" of the scope graph. Every scope is a sub-scope of the global scope. It doesn't make sense to add ticks to this scope. On the other hand, this means that setting this scope on a block means no ticks apply to it.ڂghc-lib-parserConstructs a new sub-scope to an existing scope. This allows us to translate Core-style scoping rules (see  tickishScoped2) into the Cmm world. Suppose the following code:tick 1# case ... of A -> tick 2 ... B -> tick 3 ...We want the top-level tick annotation to apply to blocks generated for the A and B alternatives. We can achieve that by generating tick 1 into a block with scope a, while the code for alternatives A and B gets generated into sub-scopes a/b and a/c respectively.ۂghc-lib-parserA combined scope scopes over everything that the two given scopes cover. It is therefore a sub-scope of either scope. This is required for optimisations. Consider common block elimination: A -> tick 2, case ... of C -> [common] B -> tick 3 case ... of D -> [common]We will generate code for the C and D alternatives, and figure out afterwards that it's actually common code. Scoping rules dictate that the resulting common block needs to be covered by both tick 2 and tick 3, therefore we need to construct a scope that is a child to *both* scope. Now we can do that - if we assign the scopes ac and bd to the common-ed up blocks, the new block could have a combined tick scope ac+bd, which both tick 2 and tick 3 apply to.ghc-lib-parserA convention maps a list of values (function arguments or return values) to registers or stack locations.ghc-lib-parser top-level Haskell functions use NativeDirectCall, which maps arguments to registers starting with R2, according to how many registers are available on the platform. This convention ignores R1, because for a top-level function call the function closure is implicit, and doesn't need to be passed.ghc-lib-parsernon-top-level Haskell functions, which pass the address of the function closure in R1 (regardless of whether R1 is a real register or not), and the rest of the arguments in registers or on the stack.ghc-lib-parsera native return. The convention for returns depends on how many values are returned: for just one value returned, the appropriate register is used (R1, F1, etc.). regardless of whether it is a real register or not. For multiple values returned, they are mapped to registers or the stack.ghc-lib-parser/Slow entry points: all args pushed on the stackghc-lib-parserEntry to the garbage collector: uses the node reg! (TODO: I don't think we need this --SDM)ghc-lib-parserOutput all scope paths.ghc-lib-parserReturns the head uniques of the scopes. This is based on the assumption that the Unique of SubScope identifies the underlying super-scope. Used for efficient equality and comparison, see below.ghc-lib-parserChecks whether two tick scopes are sub-scopes of each other. True if the two scopes are equal.ghc-lib-parserCombine two tick scopes. The new scope should be sub-scope of both parameters. We simplify automatically if one tick scope is a sub-scope of the other already.N؂قڂۂ܂݂ނ߂N܂݂ނ߂؂قڂۂ Safe-Inferredyӂghc-lib-parserReturns K if this global register is stored in a caller-saves machine register.Ԃghc-lib-parserHere is where the STG register map is defined for each target arch. The order matters (for the llvm backend anyway)! We must make sure to maintain the order here with the order used in the LLVM calling conventions. Note that also, this isn't all registers, just the ones that are currently possibly mapped to real registers.ӂԂՂւׂӂԂՂւׂ Safe-Inferred Safe-Inferred=ghc-lib-parser"A register, either virtual or real=ghc-lib-parserRealRegs are machine regs which are available for allocation, in the usual way. We know what class they are, because that's part of the processor's architecture.=ghc-lib-parser4An identifier for a primitive real machine register.=ghc-lib-parserThe patch function supplied by the allocator maps VirtualReg to RealReg regs, but sometimes we want to apply it to plain old Reg.=ghc-lib-parserPrint a reg in a generic manner If you want the architecture specific names, then use the pprReg function from the appropriate Ppr module.================================================ Safe-Inferred=ghc-lib-parserThe class of a register. Used in the register allocator. We treat all registers in a class as being interchangeable.======== Safe-Inferred Safe-Inferredk Safe-Inferred Safe-Inferred  Safe-InferredX‚‚ Safe-InferredĂłƂǂȂĂłƂǂȂ Safe-Inferredɂʂ˂̂͂ɂʂ˂̂͂ Safe-InferredE΂ςЂт҂΂ςЂт҂ Safe-Inferred)*ghc-lib-parserA FlatSwitchPlan is a list of SwitchPlans, with an integer in between every two entries, dividing the range. So if we have (abusing list syntax) [plan1,n,plan2], then we use plan1 if the expression is < n, and plan2 otherwise.Vghc-lib-parserA SwitchPlan abstractly describes how a Switch statement ought to be implemented. See Note [createSwitchPlan]Vghc-lib-parser>A value of type SwitchTargets contains the alternatives for a  CmmSwitch value, and knows whether the value is signed, the possible range, an optional default value and a map from values to jump labels.ghc-lib-parserNumber of consecutive default values allowed in a jump table. If there are more of them, the jump tables are split.Currently 7, as it costs 7 words of additional code when a jump table is split (at least on x64, determined experimentally).ghc-lib-parserMinimum size of a jump table. If the number is smaller, the switch is implemented using conditionals. Currently 5, because an if-then-else tree of 4 values is nice and compact.ghc-lib-parserMinimum non-zero offset for a jump table. See Note [Jump Table Offset].Vghc-lib-parserThe smart constructor mkSwitchTargets normalises the map a bit: * No entries outside the range * No entries equal to the default * No default if all elements have explicit valuesWghc-lib-parser7Changes all labels mentioned in the SwitchTargets valueWghc-lib-parserReturns the list of non-default branches of the SwitchTargets valueWghc-lib-parser3Return the default label of the SwitchTargets valueWghc-lib-parser+Return the range of the SwitchTargets valueWghc-lib-parser.Return whether this is used for a signed valueWghc-lib-parserswitchTargetsToTable creates a dense jump table, usable for code generation.Also returns an offset to add to the value; the list is 0-based on the result of that addition.The conversion from Integer to Int is a bit of a wart, as the actual scrutinee might be an unsigned word, but it just works, due to wrap-around arithmetic (as verified by the CmmSwitchTest test case).Wghc-lib-parser [B,C] B -> D C -> D  Postorder: [D, C, B, A] (or [D, B, C, A]) Reverse postorder: [A, B, C, D] (or [A, C, B, D]) This matters for, e.g., forward analysis, because we want to analyze *both* B and C before we analyze D.Pghc-lib-parser"The label of a first node or blockPghc-lib-parserGives control-flow successorsPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP] Safe-Inferred)*0158 ghc-lib-parser2A sequence of nodes. May be any of four shapes (OO, OC, CO, CC). Open at the entry means single entry, mutatis mutandis for exit. A closedclosed block is a basic/ block and can't be extended further. Clients should avoid manipulating blocks and should stick to either nodes or graphs.ghc-lib-parser!Maybe type indexed by open/closedghc-lib-parser6Either type indexed by closed/open using type familiesghc-lib-parserUsed at the type level to indicate "open" vs "closed" structure.ghc-lib-parserAn "open" structure with a unique, unnamed control-flow edge flowing in or out. "Fallthrough" and concatenation are permitted at an open point.ghc-lib-parserA "closed" structure which supports control transfer only through the use of named labels---no "fallthrough" is permitted. The number of control-flow edges is unconstrained.ghc-lib-parserSplit a closed block into its entry node, open middle block, and exit node.ghc-lib-parser#map a function over the nodes of a ghc-lib-parser A strict ghc-lib-parsermap over a block, with different functions to apply to first nodes, middle nodes and last nodes respectively. The map is strict.ghc-lib-parserFold a function over every node in a block, forward or backward. The fold function must be polymorphic in the shape of the nodes.))~ Safe-Inferred8   Safe-Inferredghc-lib-parser!Initialize LogFlags from DynFlags Safe-Inferred`ghc-lib-parserInitialise the general configuration for printing diagnostic messages For example, this configuration controls things like whether warnings are treated like errors.ghc-lib-parserInitialise the configuration for printing specific diagnostic messages Safe-Inferred%ðghc-lib-parserThe core-to-core simplifier.۰ghc-lib-parser'A description of the plugin pass itself°ذðİŰưǰȰɰʰ˰̰ͰΰϰаѰҰӰ԰հְװٰڰ۰ܰݰ۰°ذðİŰưǰȰɰʰ˰̰ͰΰϰаѰҰӰ԰հְװٰڰܰݰ Safe-Inferredghc-lib-parserConfiguration record for #. The values of this datatype are only( driven by the demands of that function.ghc-lib-parserConfiguration record for #. The values of this datatype are only( driven by the demands of that function. Safe-Inferred?Wghc-lib-parserddump-simpl-statsWghc-lib-parser%History size of the elaborate counterWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Safe-Inferredghc-lib-parser Stop[e] = eghc-lib-parserDescribes how the  will evaluate the hole as a a. This can be more insightful than the limited syntactic context that  provides, because the # constructor might carry a useful a.. For example, when simplifying the argument e in `f e` and f has the demand signature ` MP(S,A)?`, this function will give you back `P(S,A)` when simplifying e.PRECONDITION: Don't call with . We haven't thoroughly thought about what to do then and no call sites so far seem to care.ghc-lib-parser Type of the holeghc-lib-parserTells if there is something interesting about the syntactic context, and hence the inliner should be a bit keener (see interestingCallContext) Specifically: This is an argument of a function that has RULES Inlining the call might allow the rule to fire Never ValAppCxt (use ApplyToVal instead) or CaseCtxt (use Select instead)ghc-lib-parserThe evaluation context of e. Tells how e is evaluated. This fuels eta-expansion or eta-reduction without looking at lambda bodies, for example.See Note [Eta reduction based on evaluation context] The evaluation context for other SimplConts can be reconstructed with ™Ù™Ù Safe-Inferredghc-lib-parser!Max #ticks in this simplifier runghc-lib-parserThe action to retrieve an up-to-date EPS RuleEnv See Note [Overall plumbing for rules]ghc-lib-parserMake a join id with given type and arity but without call-by-value annotations.ghc-lib-parserSize of the bindings, used to limit the number of ticks we allowWWWWWޗߗޗߗWWWWW Safe-Inferredl ghc-lib-parserA substitution result.ghc-lib-parserName(s) of the phaseghc-lib-parserWhether RULES are enabledghc-lib-parserWhether inlining is enabledghc-lib-parser Whether eta-expansion is enabledghc-lib-parser!Do we swizzle casts past lambdas?ghc-lib-parserUnfolding optionsghc-lib-parserWhether case-of-case is enabledghc-lib-parserWhether pre-inlining is enabledghc-lib-parserTrue  = keep ExitJoinIds See Note [Do not inline exit join points] in GHC.Core.Opt.Exitifyghc-lib-parserWhether to enable floating outghc-lib-parserCoercion optimiser optionsghc-lib-parserFast OutVarSet tracking which recursive RHSs we are analysing. See Note [Eta reduction in recursive RHSs] in GHC.Core.Opt.Arity.˜ØĘŘƘǘȘɘʘ˘̘͘ΘϘИјҘӘԘ՘֘טؘ٘ژۘܘݘޘߘØĘ˜Řۘܘߘޘݘ՘͘ϘИјΘ֘ʘȘƘ٘Әǘ˘Ҙژɘؘט̘Ԙ Safe-Inferred aghc-lib-parserPush a TickIt context outwards past applications and cases, as long as this is a non-scoping tick, to let case and application optimisations apply.ghc-lib-parser.A "friendly name" to build the new binder fromșəʙșəʙ Safe-Inferred ghc-lib-parserDiagnostics optsghc-lib-parserTarget platformghc-lib-parserLinting the result of this passghc-lib-parser$*s that should be treated as being in scopeghc-lib-parserAllow  makeStatic to occur anywhere.ghc-lib-parserAllow  makeStatic calls at the top-level only.ghc-lib-parser Reject any  makeStatic occurrence.ghc-lib-parserSee Note [Checking StaticPtrs]ghc-lib-parser,See Note [Linting type synonym applications]ghc-lib-parserSee Note [Linting linearity]ghc-lib-parserTarget platformghc-lib-parserTarget platformghc-lib-parserConfiguration for boilerplate operations at the end of a compilation pass producing Core.ghc-lib-parserWhether core bindings should be dumped with the size of what they are binding (i.e. the size of the RHS of the binding).ghc-lib-parser/Whether we should lint the result of this pass.ghc-lib-parser Type-check a c!. See Note [Core Lint guarantee].ghc-lib-parser1Checks the RHS of bindings. It only differs from 8 in that it doesn't reject occurrences of the function  makeStatic( when they appear at the top level and 'lf_check_static_ptrs == AllowAtTopLevel, and for join points, it skips the outer lambdas that take arguments to the join point.See Note [Checking StaticPtrs].ghc-lib-parser9Lint the RHS of a join point with expected join arity of n (see Note [Join points] in GHC.Core).ghc-lib-parserLint an expression cast through the given coercion, returning the type resulting from the cast.ghc-lib-parserThis function checks that we are able to perform eta expansion for functions with no binding, in order to satisfy invariant I3 from Note [Representation polymorphism invariants] in GHC.Core.ghc-lib-parser'Implements the case rules for linearityghc-lib-parserlintValApp arg fun_ty arg_ty lints an application of fun arg where  fun :: fun_ty and  arg :: arg_ty), returning the type of the application.ghc-lib-parserThis checks whether a pass correctly looks through debug annotations ( SourceNote). This works a bit different from other consistency checks: We check this by running the given task twice, noting all differences between the results.ghc-lib-parserRun the given pass without annotations. This means that we both set the debugLevel setting to 0 in the environment as well as all annotations from incoming modules.ghc-lib-parserIf K!, display linter warnings. If H, ignore linter warnings.ghc-lib-parser The source of the linted programghc-lib-parser"The linted program, pretty-printedghc-lib-parserTrue  = is a compulsory unfoldingghc-lib-parser6the function (head of the application) we are checkingghc-lib-parser the arguments to the applicationghc-lib-parser0the instantiated type of the overall applicationghc-lib-parserThe source of the linted axiomsghc-lib-parser Action to runghc-lib-parser>What sort of casted thing this is ("expression" or "type").ghc-lib-parser:What sort of coercion is being used ("type" or "kind").ghc-lib-parserThe thing being casted.,,T Safe-Inferred  ghc-lib-parser#Like Maybe, but using unboxed sums.Use with care. Using a unboxed maybe is not always a win in execution *time* even when allocations go down. So make sure to benchmark for execution time as well. If the difference in *runtime* for the compiler is too small to measure it's likely better to use a regular Maybe instead.This is since it causes more function arguments to be passed, and potentially more variables to be captured by closures increasing closure size.  Safe-InferredNghc-lib-parser|lookupUE x env| returns the multiplicity assigned to |x| in |env|, if |x| is not bound in |env|, then returns |Zero| or |Bottom|.NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  Safe-Inferred ?ghc-lib-parserLike +, but doesn't catch asynchronous exceptionsghc-lib-parserAtomically update the reference. Does not force the evaluation of the new variable contents. For strict update, use .ghc-lib-parserStrict variant of .ghc-lib-parser2Perform a computation with a different environmentghc-lib-parser1Perform a computation with an altered environment846$"#UTYa Safe-InferredDghc-lib-parser2Edge weights to use when generating a CFG from CMMghc-lib-parserDefault edge weights   Safe-Inferredghc-lib-parser Type-check a c!. See Note [Core Lint guarantee]. Safe-InferredEʤʤ Safe-Inferred56܇ Safe-Inferred156;ghc-lib-parserGHC generates an ; to represent the invisible `import Prelude` that appears in any file that omits `import Prelude`, setting this field to indicate that the import doesn't appear in the original source. True => implicit import (of Prelude);ghc-lib-parserGiven two possible located  qualified tokens, compute a style (in a conforming Haskell program only one of the two can be not I). This is called from  GHC.Parser.;ghc-lib-parserConvenience function to answer the question if an import decl. is qualified.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;` Safe-Inferredcghc-lib-parserThe predicates below look costly, but aren't, GHC+GCC do a great job at the big case below. Safe-Inferred ¸ghc-lib-parser The type constructor for queriesghc-lib-parser,Should EpAnnotations be removed from output.ghc-lib-parser+Should source spans be removed from output.ghc-lib-parser*Show the full AST as the compiler sees it.ghc-lib-parserShow a GHC syntax tree. This parameterised because it is also used for comparing ASTs in ppr roundtripping tests, where the SrcSpan's are blanked out, to avoid comparing locations, only structureøghc-lib-parser.Extend a generic query by a type-specific caseĸghc-lib-parser/Type extension of queries for type constructorsŸghc-lib-parser/Type extension of queries for type constructorsƸghc-lib-parserFlexible type extensionǸghc-lib-parserFlexible type extension   Safe-Inferredtghc-lib-parserRename a module from one name to another. The identity renaming means that the module should be brought into scope.ghc-lib-parserAn include of another unit¡ghc-lib-parser Is this a dependency signature include? If so, we don't compile this include when we instantiate this unit (as there should not be any modules brought into scope.)ġghc-lib-parserA declaration in a package, e.g. a module or signature definition, or an include.ȡghc-lib-parser Top level unit declaration in a Backpack file. ¡áġšơǡȡɡʡˡ̡͡ϡΡСѡҡӡԡա֡סء ӡԡҡѡС͡ϡΡ̡ա֡סءǡȡɡʡˡáġšơ¡ Safe-Inferred)ghc-lib-parserAn mtl-style class for monads that support parsing-related operations. For example, sometimes we make a second pass over the parsing results to validate, disambiguate, or rearrange them, and we do so in the PV monad which cannot consume input but can report parsing errors, check for extension bits, and accumulate parsing annotations. Both P and PV are instances of MonadP.MonadP grants us convenient overloading. The other option is to have separate operations for each monad: addErrorP vs addErrorPV, getBitP vs getBitPV, and so on.ghc-lib-parserAdd a non-fatal error. Use this when the parser can produce a result despite the error.#For example, when GHC encounters a forall in a type, but -XExplicitForAll$ is disabled, the parser constructs ForAllTy as if -XExplicitForAll= was enabled, adding a non-fatal error to the accumulator.Control flow wise, non-fatal errors act like warnings: they are added to the accumulator and parsing continues. This allows GHC to report more than one parse error per file.ghc-lib-parser)Add a warning to the accumulator. Use ߬! to get the accumulated warnings.ghc-lib-parserAdd a fatal error. This will be the last error reported by the parser, and the parser will not produce any result, ending in a ì state.ghc-lib-parser5Check if a given flag is currently set in the bitmap.ghc-lib-parserGo through the  comment_q in PState; and remove all comments that belong within the given spanghc-lib-parserGo through the  comment_q in PState and remove all comments that come before or within the given spanªghc-lib-parserGo through the  comment_q in PState8 and remove all comments that come after the given spanêghc-lib-parserVarious boolean flags, mostly language extensions, that impact lexing and parsing. Note that a handful of these can change during lexing/parsing.ghc-lib-parserIf this is enabled, '{-# LINE ... -#}' and '{-# COLUMN ... #-}' update the internal position. Otherwise, those pragmas are lexed as tokens of their own.ȸghc-lib-parserFor reasons of efficiency, boolean parsing flags (eg, language extensions or whether we are currently in a RULE2 pragma) are represented by a bitmap stored in a Word64.ghc-lib-parser!The parsing monad, isomorphic to StateT PState Maybe.ghc-lib-parserHaddock comment as produced by the lexer. These are accumulated in  and then processed in GHC.Parser.PostProcess.Haddock. The location of the  s spans over the contents of the docstring - i.e. it does not include the decorator ("-- |", "{-|" etc.)ghc-lib-parserParser options.See լ to construct this.ghc-lib-parserbitmap of permitted extensionsghc-lib-parser)Options to construct diagnostic messages.ghc-lib-parsersupported extensions (only used for suggestions in error messages)ghc-lib-parserThe result of running a parser.ɸghc-lib-parserDo we want to generate ';' layout tokens? In some cases we just want to generate '}', e.g. in MultiWayIf we don't need ';'s because '|'# separates alternatives (unlike a `case` expression where we need ';' to as a separator between alternatives).ghc-lib-parser (|ghc-lib-parser |)ghc-lib-parser -<ghc-lib-parser >-ghc-lib-parser -<<ghc-lib-parser >>-ghc-lib-parser*Used when the lexer can't make sense of itghc-lib-parserend of file tokenghc-lib-parserThe HsDocString contains more details about what this is and how to pretty print itghc-lib-parser(doc options (prune, ignore-exports, etc)ghc-lib-parsercomment starting by "--"¬ghc-lib-parsercomment in {- -}ìghc-lib-parserThe parser has consumed a (possibly empty) prefix of the input and failed.The carried parsing state can be used to resume parsing. It is the state right before failure, including the fatal parse error. ߬ and ެ' must return a non-empty bag of errors.Ĭghc-lib-parserThe parser has consumed a (possibly empty) prefix of the input and produced a result. Use ߬9 to check for accumulated warnings and non-fatal errors.8The carried parsing state can be used to resume parsing.ʸghc-lib-parserIncludes the trailing '-}' decorators drop the last two elements with the callback if you don't want them to be includedŬghc-lib-parserTest whether a ! is setլghc-lib-parser1Given exactly the information needed, set up the ׬ghc-lib-parser.Set parser options for parsing OPTIONS pragmasجghc-lib-parserCreates a parse state from a  valueެghc-lib-parserGet a bag of the errors that have been accumulated so far. Does not take -Werror into account.߬ghc-lib-parserGet the warnings and errors accumulated so far. Does not take -Werror into account.ghc-lib-parserGiven a  that surrounds a HsPar or HsParTy , generate 8 values for the opening and closing bordering on the start and end of the spanʸghc-lib-parserContinuation that gets the rest of the input and the lexed commentghc-lib-parserstarting value for accumulator (reversed) - When we want to include a decorator '{-' in the commentլghc-lib-parser%permitted language extensions enabledghc-lib-parserdiagnostic optionsghc-lib-parser"Supported Languages and Extensionsghc-lib-parserare safe imports on?ghc-lib-parserkeeping Haddock comment tokensghc-lib-parserkeep regular comment tokensghc-lib-parserIf this is enabled, '{-# LINE ... -#}' and '{-# COLUMN ... #-}' update the internal position kept by the parser. Otherwise, those pragmas are lexed as ۫ and ܫ tokens.ªêϪɪتǪʪ˪ԪѪЪӪΪתĪުŪƪܪ٪ڪݪȪ̪ͪҪժ֪۪ߪĬì«ëīūƫǫȫɫʫ˫̫ͫΫϫЫѫҫӫԫի֫׫ث٫ګ۫ܫݫޫ߫¬ŬƬǬȬɬʬˬ̬ͬάϬЬѬҬӬԬլ֬׬ج٬ڬ۬ܬݬެ߬«ëīūƫǫȫɫʫ˫̫ͫΫϫЫѫҫӫԫի֫׫ث٫ګ۫ܫݫޫ߫¬լج׬ĬìĬìªʬȬƬǬެ߬ˬɬѬͬЬϬάêϪɪتǪʪ˪ԪѪЪӪΪתĪުŪƪܪ٪ڪݪȪ̪ͪҪժ֪۪ߪҬԬӬ֬٬ڬ۬ܬŬ̬ݬ Safe-Inferred()*/189:">ghc-lib-parserDisambiguate constructs that may appear when we do not know ahead of time whether we are parsing a type or a newtype/data constructor.?See Note [Ambiguous syntactic categories] for the general idea.See Note [Parsing data constructors is hard] for the specific issue this particular class is solving.ghc-lib-parserProcess the head of a type-level function/constructor application, i.e. the H in H a b c.ghc-lib-parser Disambiguate f x3 (function application or prefix data constructor).ghc-lib-parser Disambiguate f @t (visible kind application)ghc-lib-parser Disambiguate f # x (infix operator)ghc-lib-parser Disambiguate {-# UNPACK #-} t (unpack/nounpack pragma)ghc-lib-parserDisambiguate constructs that may appear when we do not know ahead of time whether we are parsing an expression, a command, or a pattern. See Note [Ambiguous syntactic categories]ghc-lib-parserSee Note [Body in DisambECP]ghc-lib-parserInfix operator representationghc-lib-parser Function argument representationghc-lib-parserReturn a command without ambiguity, or fail in a non-command context.ghc-lib-parserReturn an expression without ambiguity, or fail in a non-expression context.ghc-lib-parser"Disambiguate "... -> ..." (lambda)ghc-lib-parserDisambiguate "let ... in ..."ghc-lib-parserBring superclass constraints on InfixOp into scope. See Note [UndecidableSuperClasses for associated types]ghc-lib-parser%Disambiguate "f # x" (infix operator)ghc-lib-parserDisambiguate "case ... of ..."ghc-lib-parserDisambiguate "case" and "cases"ghc-lib-parserBring superclass constraints on FunArg into scope. See Note [UndecidableSuperClasses for associated types]ghc-lib-parser)Disambiguate "f x" (function application)ghc-lib-parser.Disambiguate "f @t" (visible type application)ghc-lib-parser'Disambiguate "if ... then ... else ..."ghc-lib-parser'Disambiguate "do { ... }" (do notation)ghc-lib-parser$Disambiguate "( ... )" (parentheses)ghc-lib-parser2Disambiguate a variable "f" or a data constructor MkF.ghc-lib-parser"Disambiguate a monomorphic literalghc-lib-parser"Disambiguate an overloaded literalghc-lib-parserDisambiguate a wildcardghc-lib-parser'Disambiguate "a :: t" (type annotation)ghc-lib-parser$Disambiguate "[a,b,c]" (list syntax)ghc-lib-parser5Disambiguate "$(...)" and "[quasi|...|]" (TH splices)ghc-lib-parserDisambiguate "f { a = b, ... }" syntax (record construction and record updates)ghc-lib-parserDisambiguate "-a" (negation)ghc-lib-parser-Disambiguate "(# a)" (right operator section)ghc-lib-parser&Disambiguate "(a -> b)" (view pattern)ghc-lib-parserDisambiguate "a@b" (as-pattern)ghc-lib-parser Disambiguate "~a" (lazy pattern)ghc-lib-parser Disambiguate "!a" (bang pattern)ghc-lib-parser,Disambiguate tuple sections and unboxed sumsghc-lib-parserValidate infixexp LHS to reject unwanted {-# SCC ... #-} pragmasghc-lib-parserDisambiguate infix operators. See Note [Ambiguous syntactic categories]ghc-lib-parserResult of parsing {-# UNPACK #-} or {-# NOUNPACK #-}.ghc-lib-parserEssentially a wrapper for a RuleBndr GhcPsghc-lib-parsermkClassDecl builds a RdrClassDecl, filling in the names for tycon and datacon by deriving them from the name of the class. We fill in the names for the tycon and datacon corresponding to the class, by deriving them from the name of the class itself. This saves recording the names in the interface file (which would be equally good).ghc-lib-parserConverts a list of [s annotated with their $ to binders without annotations. Only accepts specified variables, and errors if any of the provided binders has an 1 annotation.­ghc-lib-parser Converts [ annotated with its $ to one without annotations. Only accepts specified variables, and errors if the provided binder has an 1 annotation.íghc-lib-parserAdd the annotation for a 'where' keyword to existing  HsLocalBindsŭghc-lib-parserThe 7 for a stmtlist is based on either the location or the first semicolon annotion.ǭghc-lib-parserFunction definitions are restructured here. Each is assumed to be recursive initially, and non recursive definitions are discovered by the dependency analyser.˸ghc-lib-parserReinterpret a type constructor, including type operators, as a data constructor. See Note [Parsing data constructors is hard]̭ghc-lib-parserConstruct a GADT-style data constructor from the constructor names and their type. Some interesting aspects of this function:This splits up the constructor type into its quantified type variables (if provided), context (if provided), argument types, and result type, and records whether this is a prefix or record GADT constructor. See Note [GADT abstract syntax] in  GHC.Hs.Decls for more details.ͭghc-lib-parserThis rather gruesome function is used mainly by the parser. When parsing: data T a = T | T1 Int"we parse the data constructors as types? because of parser ambiguities, so then we need to change the  type constr to a  data constrThe exact-name case can occur when parsing: data [] a = [] | a : [a]3For the exact-name case we return an original name.̸ghc-lib-parserCheck whether the given list of type parameters are all type variables (possibly with a kind signature).ҭghc-lib-parserCheck if the gadt_constrlist is empty. Only raise parse error for `data T where` to avoid affecting existing error message, see #8258.ӭghc-lib-parserYield a parse error if we have a function applied directly to a do block etc. and BlockArguments is not enabled.խghc-lib-parserValidate the context constraints and break up a context into a list of predicates.  (Eq a, Ord b) --> [Eq a, Ord b] Eq a --> [Eq a] (Eq a) --> [Eq a] (((Eq a))) --> [Eq a] ݭghc-lib-parserAnnotate a type with either an {-# UNPACK #-} or a {-# NOUNPACK #-} pragma.ޭghc-lib-parserCheck for monad comprehensions1If the flag MonadComprehensions is set, return a _# context, otherwise use the usual _ context͸ghc-lib-parserEnsure that a literal pattern isn't of type Addr#, Float#, Double#.θghc-lib-parserRejects declarations such as  data T = 'MkT (note the leading tick).ghc-lib-parserCheck if a fixity is valid. We support bypassing the usual bound checks for some special operators.ghc-lib-parser#Hint about bang patterns, assuming  BangPatterns is off.ghc-lib-parser precedenceghc-lib-parser operators͟ΟϟПܠ­íĭŭƭǭȭɭʭ˭̭ͭέϭЭѭҭӭԭխ֭׭ح٭ڭۭܭݭޭ߭ʭͭ­íĭŭƭȭɭǭ٭̭˭֭ӭԭխ׭حܠ͟ΟϟПޭڭۭέϭЭѭҭܭ߭ݭ Safe-Inferred 'rϸghc-lib-parser#Extract identifier from Alex state.ghc-lib-parserLex  for warning messagesghc-lib-parser!Lex identifiers from a docstring.ϸghc-lib-parseradornment lengthghc-lib-parser Token lengthghc-lib-parser2The remaining input beginning with the found tokenghc-lib-parserA precise identifier parserghc-lib-parserA precise identifier parser Safe-Inferred)*1,иghc-lib-parserConstruct an AddEpAnn from the annotation keyword and the location of the keyword itselfѸghc-lib-parserConstruct an AddEpAnn from the annotation keyword and the location of the keyword itself, provided the span is not zero widthҸghc-lib-parserConstruct an AddEpAnn from the annotation keyword and the Located Token. If the token has a unicode equivalent and this has been used, provide the unicode variant of the annotation.Ӹghc-lib-parserIf the  is using its unicode variant return the unicode variant of the annotationԸghc-lib-parser6Synonyms for AddEpAnn versions of AnnOpen and AnnCloseոghc-lib-parser6Synonyms for AddEpAnn versions of AnnOpen and AnnCloseghc-lib-parserParse a Haskell module with Haddock comments. This is done in two steps: to build the AST# to insert Haddock comments into itThis is the only parser entry point that deals with Haddock comments. The other entry points (, (, etc) do not insert them into the AST.ָghc-lib-parserInstead of getting the *enclosed* comments, this includes the *preceding* ones. It is used at the top level to get comments between top level declarations.׸9 ظ9  Safe-Inferred'38?0Yٸghc-lib-parser,Represents a predicate on the column number.ColumnBound | Int -> Bool --------------+----------------- ColumnFrom n | (>=n)+The semigroup instance corresponds to (&&).ڸghc-lib-parserWarnings accumulated in HdkM.۸ghc-lib-parserThe state of HdkM.ghc-lib-parserAdd Haddock documentation accumulated in the parser state to a parsed HsModule.Reports badly positioned comments when -Winvalid-haddock is enabled.ܸghc-lib-parserThe inverse of } that merges partitioned items back into a flat list. Elements are put back into the order in which they appeared in the original program before partitioning, using BufPos to order them.=Precondition (unchecked): the input lists are already sorted. Safe-Inferred5jghc-lib-parser#Parse the imports of a source file. Throws a ݮ if parsing fails.ghc-lib-parser6Parse OPTIONS and LANGUAGE pragmas of the source file. Throws a ݮ5 if flag parsing fails (including unsupported flags.)ghc-lib-parser6Parse OPTIONS and LANGUAGE pragmas of the source file. Throws a ݮ5 if flag parsing fails (including unsupported flags.)ghc-lib-parser4Complain about non-dynamic flags in OPTIONS pragmas. Throws a ݮ if the input list is non-empty claiming that the input flags are unknown.ghc-lib-parserParser optionsghc-lib-parserImplicit Prelude?ghc-lib-parser Parse this.ghc-lib-parserFilename the buffer came from. Used for reporting parse error locations.ghc-lib-parserThe original source filename (used for locations in the function result)ghc-lib-parserThe source imports and normal imports (with optional package names from -XPackageImports), and the module name.ghc-lib-parser Input fileghc-lib-parserParsed options, if any.ghc-lib-parser Input Bufferghc-lib-parser)Source filename. Used for location info.ghc-lib-parserwarnings and parsed options. Safe-Inferred5߰ghc-lib-parser%Extracts the flags needed for parsing߰߰ Safe-Inferred %&@Cףghc-lib-parser/Number of parallel jobs doing BCO serializationأghc-lib-parser3Run a command in the interpreter's context. With -fexternal-interpreter, the command is serialized and sent to an external iserv process, and the response is deserialized (hence the Binary constraint). With -fno-external-interpreter' we execute the command directly here.٣ghc-lib-parserGrab a lock on the ͣ and do something with it. Overloaded because this is used from TcM as well as IO.ۣghc-lib-parserExecute an action of type IO [a] , returning  s for each of the results.ޣghc-lib-parserExecute an action of type IO ()ߣghc-lib-parserExecute an action of type  IO Stringghc-lib-parserExecute an action of type String -> IO Stringghc-lib-parserAllocate and store the given bytes in memory, returning a pointer to the memory in the remote process.ghc-lib-parser4Create a set of BCOs that may be mutually recursive.ghc-lib-parserSend a Seq message to the iserv process to force a value #2950ݸghc-lib-parserProcess the result of a Seq or ResumeSeq message. #2950ghc-lib-parserloadDLL loads a dynamic library using the OS's native linker (i.e. dlopen() on Unix, LoadLibrary() on Windows). It takes either an absolute pathname to the file, or a relative filename (e.g. "libfoo.so" or "foo.dll"). In the latter case, loadDLL searches the standard locations for the appropriate library.Returns:0Nothing => success Just err_msg => failureghc-lib-parserSend a 0 and receive the response from the iserv processghc-lib-parser#Read a value from the iserv processghc-lib-parser!Send a value to the iserv process޸ghc-lib-parserSpawn an external interpreterghc-lib-parserStop the interpreterghc-lib-parser Creates a  & that will automatically release the  ! when it is no longer referenced.ghc-lib-parser Convert a   to the value it references directly. This only works when the interpreter is running in the same process as the compiler, so it fails when -fexternal-interpreter is on.ghc-lib-parser Convert an   to the value it references directly. This only works when the interpreter is running in the same process as the compiler, so it fails when -fexternal-interpreter is on.ghc-lib-parserInterpreter uses Profiling wayghc-lib-parserInterpreter uses Dynamic way£ɣȣǣƣţãģʣˣ̣ͣΣϣУѣԣңӣգ֣ףأ٣ڣۣܣݣޣߣգ֣ףۣܣݣޣߣأ٣ڣ Safe-InferredDˤghc-lib-parser9Initialise coercion optimiser configuration from DynFlags̤ghc-lib-parser7Initialise Simple optimiser configuration from DynFlagsͤghc-lib-parser!Extract BCO options from DynFlagsΤghc-lib-parser+Extract GHCi options from DynFlags and stepˤ̤ͤΤˤ̤ͤΤ߸                                                                                                                                                                                                                                                                                                                                                                                       ! " " " " " " " # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $  % % % % % & & & & & & & & & & & ' ' ' ' ' ' ( ( ( ( ( ( ( ( ) ) ) ) ) * * * * + + + + + + + + + + + + + + + + + + + , , , , , , - - - - - - - - -- ----------.....................................................................///////////011111111111111111111111111122222234444455555555555555555555 666666666666666666666666666666666666666666666666666666666666666677777777778888888888888888888888888888888888888888888888888888888888888888888888888888888999999::;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<==========================>>>>>>>>>>>>>>>>>>>>>????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAACCCCCCCCCCCCCCCBBBBBBBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFGGGGGGGGGGGGGHHHHHHHHHHHHHHHIIIIIKKKKKKKKLLLLLLLLLMNNNNNNNNNNOOOOOOOPPPPPQQQQQQSSSSSSSSSTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXX                 YYYYYZZZZZZZZZ[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^____``````````````aaaaaaaaaaaabbbbbbbbbbbbbcccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeefffffffffggggggggghhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrssssssssssssssssssssssssssssttttttttttttttttttttttttuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v w w w w w w w w w w B B B B B B B B B B BB B B B B B B B B B B B B B B B B B B B B BB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!x!x!x!x!y!y!y!y!y!y!y!y!y!y!y!y!y!y!y!y!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!z!{!{!{!{!{!{!{!{!{!{!{!{!{!{!|!|!|!|!}!}!}!}!}!}!}!}!}!}!}"}"}"}"}"}"}"}"}"}"}"}"}"}"}"}"}"~"~"~"~"~"~"~"~"~"~"~"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '  '''''''''''''''''''''''''''' ' ' ' ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------------------------------------------------------------------------------------------(- -----------------------------------.....................................................................................................................................//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929293939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u3u4u4u44444444444444444442444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666677777777777777777777777777777777777777777777777777777777777777777775755577777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH(HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII5IIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMM M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRR(RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUU U UUUUUUUU9UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZQZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]=]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^1^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_______________________________________________________>>________________________________________________________________________________```````````````A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`ASA`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`AA`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`AA`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`AA`A`A`A`A`A`A`A`AaAaAaAaAaAaAaAaAaAaAaAAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAOAOAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc(cccccccccccccccdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd'ddddddX(ddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefefefefefefe4efe4efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefeffffffffff44f4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhZZhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii iiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll;lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmm^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^m^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^o^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^p^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^q^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^r^rrrrrrrrrrrrrrrrrrrrrrrrrrrrsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuZuZuZuZuZuZuZuZuZuZuZuZZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJuJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJvJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJwJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxJxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyPyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                       g€ÀĀŀƀǀȀɀʀˀ̀̀΀πЀррҀӀԀՀր׀؀ـڀۀ܀݀ހ߀ÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁӁԁՁցׁ؁فځہ܁݁ށ߁/‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂ނ߂ƒÃăŃƃǃȃɃʃ˃̃̓΃σЃу҃ӃԃՃփ׃؃كڃۃ܃݃ރ߃----„ÄĄńƄDŽDŽȄɄʄ˄̄̈́΄΄τЄф҄ӄԄՄքׄ؄لڄۄ܄݄ބ߄$(JJJ______'44\Y9^((((((…ÅąŅƅDž#ȅɅʅ˅#̅ͅ΅υЅх>>҅҅ӅӅԅ^^^^^ՅՅօ))))ׅ؅_مڅۅ܅݅_ޅ߅_`R``(d######()†ÆĆņņƆdžȆɆʆˆ̆͆ΆφІцц҆ӆԆՆֆ׆؆ن#چ2ۆ܆݆ކ߆‡ÇćŇƇLJȇɇʇˇ͇̇·χ2Їч3҇ӇԇՇևׇ؇هڇۇ܇݇އ߇##3ˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈՈֈ׈؈وڈۈ܈݈ވ߈KKK555‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщ҉ӉԉՉ։׉؉ىډ##ۉ#܉݉މ߉####33333333))))}3ŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊(S׊؊يڊۊ܊(݊ފߊ_‹ËċŋƋNjȋɋʋˋ̋͋΋ϋЋыҋӋԋՋ֋׋؋ًڋۋ܋݋ދߋŒÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌڌی܌݌ތߌbҌƋaÍčōƍƍǍȍɍʍˍ͍̍̍΍ύύЍээҍӍԍՍ֍֍׍؍ٍٍڍۍ܍ݍݍލߍg;ŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎÏďŏƏǏȏɏʏˏ̏͏ΏϏЏяҏӏԏՏ֏׏؏ُڏۏ܏ݏޏߏÐĐŐƐǐȐɐʐː̐͐ΐϐАѐҐӐԐՐ֐אِؐڐېܐݐސߐ߈‘ÑđőƑǑȑɑʑˑ̑͑ΑϑБёґӑԑՑ֑בّؑڑۑܑݑޑߑ’ÒĒŒƒǒȒɒʒ˒̒͒ΒϒВђҒӒԒՒ֒גْؒڒےےܒݒޒߒ“ÓēœƓǓǓȓɓʓʓ˓͓̓ΓϓГѓғӓԓՓ֓דؓٓړۓܓݓޓߓ”ÔĔŔƔǔȔȔɔʔ˔͔̔ΔϔДєҔӔԔՔՔ֔הؔٔٔڔ۔ܔݔޔߔߔ•ÕĕŕƕǕȕɕʕ˕͕̕ΕϕЕѕҕҕӕԕՕ֕וٕؕڕەܕݕޕߕtMMuNNNN-–ÖĖŖƖǖȖɖʖ˖̖͖ΖϖЖіҖӖԖՖ֖זٖؖږۖܖݖޖߖ)))))))))))))))))))))))))))))))))))))))) )))))))))))))))))))—)×)ė)ŗ)Ɨ)Ǘ)ȗ)ɗ)ʗ)˗)̗)͗)Η)ϗ)З)ї)җ)ӗ)ԗ)՗)֗)ח)ؗ)ٗ)ڗ)ۗ)ܗ)ݗ)ޗ)ߗ))))))))))))))))))))))))))))))))))))))))))) )))))))))))))))))))))))))))))))))))))))))))))))))))))))))˜)Ø)Ę)Ř)Ƙ)ǘ)Ș)ɘ)ʘ)˘̘̘͘ΘϘИјҘӘԘ՘֘֘טؘ٘ژۘܘݘޘߘ™ÙęřƙǙșəʙ˙̙͙ΙϙЙљҙәԙՙ֙יؙٙڙۙܙݙޙߙšÚĚŚƚǚȚɚʚ˚͚̚ΚϚКњҚӚԚ՚֚ךؚٚښۚܚݚޚߚ›ÛěśƛǛțɛʛ˛̛͛ΛϛЛћқӛԛ՛֛כ؛ٛڛۛܛݛޛߛœÜĜŜƜǜȜɜʜ˜̜͜ΜϜМќҜӜԜ՜֜ל؜ٜڜۜܜݜޜߜÝĝŝƝǝȝɝʝ˝̝͝ΝϝНѝҝӝԝ՝֝ם؝ٝڝ۝ܝݝޝߝžÞĞŞƞǞȞȞɞʞ˞˞̞͞ΞϞОўҞӞԞԞ՞֞מ؞ٞ؞ڞ۞ܞݞݞޞޞߞ 3##9#>533ŸßğşƟǟȟɟʟ˟̟͟ΟϟПџҟӟԟ՟֟ן؟ٟڟ۟ܟݟޟߟ8  àĠŠŠƠǠȠȠɠʠˠ̠͠ΠϠРѠҠӠԠՠ֠נؠ٠ڠ۠ܠݠޠߠΠ¡áġšơǡȡɡʡˡ̡͡ΡϡСѡҡӡԡա֡סء١ڡۡܡݡޡߡ¢âĢŢƢǢȢɢʢˢ̢͢΢ϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ £ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣߣd¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤߤ¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥߥ¦æĦŦƦǦȦɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צئ٦٦ڦۦܦݦަߦ§çħŧƧǧȧȧɧʧʧ˧̧ͧΧϧЧѧҧӧԧէ֧קا٧ڧۧܧݧާߧ¨èĨŨƨǨȨɨʨ˨̨ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨިߨ©éĩũƩǩȩɩʩ˩̩ͩΩϩЩѩҩөԩթR֩שة٩ک۩ܩݩީߩªêĪŪƪǪȪɪʪ˪̪ͪΪϪЪѪҪӪԪժ֪תت٪ڪ۪ܪݪުߪ--«ëīūƫǫȫɫʫ˫̫ͫΫϫЫѫҫӫԫի֫׫ث٫ګ۫ܫݫޫ߫WWWW[[[[[[[[[[[[¬ìĬŬƬǬȬɬʬˬ̬ͬάϬЬЬѬҬӬԬլ֬׬׬ج٬ڬ۬ܬݬެ߬­íĭŭƭǭȭɭʭ˭̭ͭέϭЭѭҭӭԭխ֭׭ح٭ڭۭܭݭݭޭ߭~®îĮŮƮǮȮɮʮˮ̮ͮήϮЮѮҮӮԮծծ֮׮خٮڮۮܮݮݮޮ߮~PPPPPPPP¯PïPPPįPůPƯPǯPȯPPɯPʯPʯP˯P̯PͯPPίPϯPЯPЯPѯPүPPӯPԯPկP֯PׯPدPٯPگPۯPܯPݯPޯPޯP߯PPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQ+,..568888BvvlE°dðdİuŰuưuǰuȰpɰpɰʰ˰̰eͰeΰeϰeаѰҰӰ԰հYְװذٰڰ۰ܰݰް߰9HHHHHmmiiiz±ñıűƱDZȱɱʱ˱̱ͱαϱбѱұӱԱձֱ ױرٱڱ۱ܱݱޱ߱;ұӱZZZZZZZZ²òIJŲƲDzȲɲʲ˲̲Ͳβϲв ѲҲӲԲղֲײزٲڲ۲ܲݲ޲߲U)))JJJJJJJJJJJJJJJJJJJJJJJ³JóJijJųJƳJdzJȳJɳJʳ˳̳ͳγϳгѳMҳӳԳRճGֳ׳سٳڳ۳ܳݳ޳߳rrzrҲ]´ôĴŴƴǴȴɴʴ˴ ̴`ʹδϴдѴҴӴԴմִ״شٴڴ۴ܴݴ޴ߴ0ghc-lib-parser-0.20221201-GXhFoTW1UmzGzhmRRPn1cRGHC.Prelude.BasicGHC.Utils.TraceGHC.Utils.MonadGHC.Utils.FingerprintGHC.Utils.Misc GHC.Platform GHC.Unit.InfoGHC.Utils.ExceptionGHC.Data.IOEnvGHC.Core.TyCo.FVsGHC.Data.Graph.DirectedGHC.Data.Maybe GHC.BaseDirGHC.Data.List.InfiniteGHC.Data.SizedSeqGHC.Exts.Heap.ClosureTypesGHC.Exts.Heap.ConstantsGHC.Exts.Heap.InfoTable.TypesGHC.Exts.Heap.InfoTableGHC.Exts.Heap.InfoTableProfGHC.Exts.Heap.ProfInfo.Types4GHC.Exts.Heap.ProfInfo.PeekProfInfo_ProfilingEnabled5GHC.Exts.Heap.ProfInfo.PeekProfInfo_ProfilingDisabledGHC.Exts.Heap.Closures*GHC.Exts.Heap.FFIClosures_ProfilingEnabled+GHC.Exts.Heap.FFIClosures_ProfilingDisabledGHC.Exts.Heap.Utils GHC.Exts.HeapGHC.ForeignSrcLang.TypeGHC.ForeignSrcLangGHC.Iface.TypeGHC.LanguageExtensions.TypeGHC.LanguageExtensions GHC.LexemeGHC.Platform.ArchOSGHC.Platform.ConstantsGHC.Data.FastMutInt GHC.Data.BoolGHC.SerializedGHC.Settings.UtilsGHC.Tc.Types.OriginGHC.Utils.ConstantsGHC.Utils.Encoding.UTF8GHC.Utils.EncodingGHC.Data.ShortTextGHC.Unit.DatabaseGHC.Utils.GlobalVarsGHC.Utils.IO.UnsafeGHC.Utils.Ppr.Colour GHC.VersionGHC.UniqueSubdirGHC.Settings.ConfigGHC.Utils.Panic.PlainGHC.Data.FastStringGHC.Utils.BufHandle GHC.Utils.PprGHC.Types.Name.OccurrenceGHCi.BinaryArrayGHCi.BreakArrayGHCi.FFIGHCi.RemoteTypesGHCi.ResolvedBCOLanguage.Haskell.Syntax.Basic!Language.Haskell.Syntax.ExtensionLanguage.Haskell.Syntax.ExprGHC.Unit.Types#Language.Haskell.Syntax.Module.NameGHC.Utils.OutputableGHC.Utils.Panic Language.Haskell.Syntax.ConcreteGHC.Utils.Monad.State.StrictGHC.Utils.LexemeGHC.Utils.CliOptionGHC.Driver.SessionGHC.Types.ProfAutoGHC.Types.HpcInfoGHC.SysTools.TerminalGHC.Settings.ConstantsGHC.Driver.Plugins.ExternalGHC.Driver.PluginsGHC.Driver.HooksGHC.Driver.BackendGHC.Driver.Backend.InternalGHC.Data.UnboxedGHC.Data.StringBufferGHC.Data.StrictGHC.Data.StreamGHC.Data.SmallArrayGHC.Data.FiniteMapGHC.Core.UnfoldGHC.Core.Opt.CallerCCGHC.Cmm.Dataflow.CollectionsGHC.Cmm.Dataflow.BlockGHC.Builtin.PrimOpsGHC.SysTools.BaseDirGHC.Parser.CharClassGHC.CmmToAsm.CFG.WeightGHC.Utils.Json GHC.Unit.PprGHC.Types.SrcLocGHC.Types.Id.InfoGHC.Tc.Types.RankGHC.Parser.Errors.Basic GHC.Data.PairGHC.Data.OrdListGHC.Data.List.SetOps GHC.Data.BagGHC.Types.UniqueGHC.Types.Unique.SupplyGHC.Types.Unique.FMGHC.Types.Unique.MapGHC.Types.Unique.DFMGHC.Types.Unique.SetGHC.Types.Unique.SDFMGHC.Types.Unique.DSetGHC.Data.FastString.EnvGHC.Types.NameGHC.Utils.BinaryGHC.Utils.Binary.TypeableGHC.Unit.ParserGHC.Unit.Module.LocationGHC.Unit.Module.EnvGHC.Unit.ModuleGHC.Types.BreakInfo GHC.Unit.HomeGHC.Driver.Env.KnotVarsGHC.Types.SourceTextGHC.Types.PkgQualGHC.Types.SourceFileGHC.Types.SafeHaskellGHC.Types.ForeignCallGHC.Types.FixityGHC.Types.CostCentre.StateGHC.Iface.Ext.FieldsGHC.Hs.DocStringGHC.Data.EnumSetGHC.Driver.Flags GHC.Types.VarGHC.Tc.Utils.TcTypeGHC.Core GHC.Types.IdGHC.Types.FieldLabelGHC.Core.TyConGHC.Types.TyThingGHC.Core.Coercion GHC.Core.TypeGHC.Core.TyCo.RepGHC.Core.MultiplicityGHC.Core.TyCo.PprLanguage.Haskell.Syntax.PatGHC.Types.Basic GHC.SettingsGHC.Platform.WaysGHC.Platform.ProfileGHC.Runtime.Heap.LayoutGHC.Linker.Static.UtilsGHC.Driver.PhasesGHC.Core.Rules.ConfigGHC.CmmToLlvm.ConfigGHC.Driver.LlvmConfigCache GHC.Cmm.Type GHC.Cmm.Expr GHC.Cmm.RegGHC.Cmm.MachOpGHC.Cmm.CLabelGHC.Types.ForeignStubsGHC.Core.DataConGHC.Builtin.TypesGHC.Builtin.UniquesGHC.Types.Var.Set GHC.Utils.FVGHC.Stg.InferTags.TagSigGHC.Data.Graph.UnVarGHC.Types.Var.EnvGHC.Types.Name.SetGHC.Types.Name.EnvGHC.Types.Fixity.EnvGHC.Types.CostCentreGHC.Types.Name.ReaderGHC.Types.AvailGHC.Unit.Module.ImportedGHC.Types.AnnotationsGHC.Parser.AnnotationGHC.Data.BooleanFormulaGHC.Iface.Recomp.BinaryGHC.Hs.Extension GHC.Hs.DocLanguage.Haskell.Syntax.ImpExp GHC.Hs.ImpExpGHC.Unit.Module.WarningsGHC.Core.Coercion.AxiomGHC.Core.ClassGHC.Types.Id.MakeGHC.Platform.Reg.ClassGHC.Platform.RegGHC.Builtin.NamesGHC.Types.RepTypeGHC.CoreToIfaceGHC.Core.TyCon.EnvGHC.Core.TyCon.RecWalkGHC.Builtin.Types.PrimGHC.Core.TyCo.TidyGHC.Core.TyCo.SubstLanguage.Haskell.Syntax.LitGHC.Types.TickishGHC.Core.UsageEnvGHC.Core.TyCo.CompareGHC.Types.LiteralGHC.Data.TrieMapGHC.Core.Map.TypeGHC.Cmm.Dataflow.LabelGHC.Cmm.Dataflow.GraphGHC.Cmm.BlockIdGHC.Core.PatSynGHC.Core.RoughMapGHC.Types.HintGHC.Types.ErrorGHC.Utils.ErrorGHC.Utils.LoggerGHC.Utils.TmpFsGHC.StgToCmm.ConfigGHC.Driver.Pipeline.MonadGHC.Cmm.SwitchGHC.Driver.CmdLineGHC.Core.Opt.StatsGHC.Core.PredicateGHC.Core.ReductionGHC.Core.UnifyGHC.Core.FamInstEnvLanguage.Haskell.Syntax.Type GHC.Hs.PatLanguage.Haskell.Syntax.BindsLanguage.Haskell.Syntax.Decls GHC.Hs.ExprGHC.HsGHC.Types.Demand GHC.Types.CprGHC.StgToCmm.TypesGHC.Core.ConLike GHC.Tc.TypesGHC.Types.CompleteMatchGHC.Types.TypeEnvGHC.Core.StatsGHC.Core.SimpleOpt GHC.Core.Seq GHC.Core.Ppr GHC.Hs.LitGHC.Core.Map.ExprGHC.Types.Name.CacheGHC.Iface.Syntax!GHC.Unit.Module.WholeCoreBindings GHC.Hs.Type GHC.Hs.Utils GHC.Core.FVsGHC.Stg.SyntaxGHC.Core.Utils GHC.Core.TidyGHC.Core.SubstGHC.Core.Opt.ArityGHC.Core.Opt.OccurAnal GHC.Core.MakeGHC.Unit.StateGHC.Unit.Module.DepsGHC.Unit.Finder.TypesGHC.Types.TargetGHC.Tc.Types.Evidence GHC.Hs.Binds GHC.Hs.DeclsGHC.Tc.Errors.Hole.FitTypesGHC.Core.InstEnvGHC.Unit.Module.ModDetailsGHC.Core.Coercion.OptGHC.Parser.TypesGHC.Driver.PprGHC.Driver.Config.LoggerGHC.Core.Unfold.MakeGHC.Core.Opt.ConstantFold GHC.Types.IPEGHC.Platform.X86_64GHC.Platform.X86GHC.Platform.Wasm32GHC.Platform.S390XGHC.Platform.RISCV64GHC.Platform.PPCGHC.Platform.NoRegsGHC.Platform.ARMGHC.Platform.AArch64GHC.Platform.Regs GHC.Cmm.NodeGHC.CmmGHC.ByteCode.TypesGHC.Linker.TypesGHC.Builtin.PrimOps.IdsLanguage.Haskell.TH.Lib.MapLanguage.Haskell.TH.SyntaxLanguage.Haskell.TH.PprLibLanguage.Haskell.TH.Ppr Language.Haskell.TH.Lib.InternalLanguage.Haskell.TH.LibGHC.Types.Hint.PprGHC.Hs.InstancesGHC.Unit.Module.ModSummaryGHC.Unit.Module.GraphGHC.Unit.Module.ModIfaceGHC.Unit.Home.ModInfoGHC.Unit.Module.ModGutsGHC.Unit.Module.StatusGHC.Core.RulesGHC.Unit.External GHC.Unit.EnvGHC.Types.Name.PprGHC.Core.Opt.Simplify.MonadGHC.Core.Opt.Simplify.EnvGHC.Core.Opt.Simplify.UtilsGHC.Core.Opt.Simplify.IterationGHC.Types.MetaGHC.Tc.Types.ConstraintGHC.Tc.Solver.TypesGHC.Tc.Solver.InertSetGHC.HsToCore.Pmc.Solver.TypesGHC.HsToCore.Pmc.TypesGHC.HsToCore.Pmc.PprGHC.Parser.Errors.TypesGHC.HsToCore.Errors.Types GHC.Hs.DumpGHC.Driver.Backpack.SyntaxGHCi.TH.Binary GHCi.MessageGHC.Runtime.Interpreter.TypesGHC.Runtime.InterpreterGHC.Runtime.Eval.TypesGHC.Runtime.ContextGHC.Core.Lint.InteractiveGHC.Driver.ConfigGHC.Tc.Errors.TypesGHC.Driver.Errors.TypesGHC.Types.Error.CodesGHC.Tc.Errors.PprGHC.Parser.Errors.PprGHC.Parser.LexerGHC.Parser.PostProcessGHC.Parser.HaddockLex GHC.ParserGHC.Parser.PostProcess.HaddockGHC.HsToCore.Errors.PprGHC.Driver.EnvGHC.Driver.Env.TypesGHC.Driver.Errors.PprGHC.Types.SourceErrorGHC.Parser.HeaderGHC.Driver.ErrorsGHC.Driver.Config.DiagnosticGHC.Driver.MonadGHC.Core.Opt.Monad GHC.Core.LintGHC.Core.Opt.SimplifyGHC.Core.Opt.Pipeline.TypesGHC.Driver.Config.ParserGHC.Driver.Config.Core.LintGHC.Driver.Pipeline.Phases#GHC.Exts.Heap.ProfInfo.PeekProfInfoGHC.Exts.Heap.FFIClosuresHeapc GhcExceptionSDoc&Language.Haskell.TH.LanguageExtensions pprPatSynType thisModuledynLanguage.Haskell.THprepareForeignCall GHC.Tc.Errors mkErrorReportGHC.Tc.Utils.TcMTypecheckTypeHasFixedRuntimeRep GHC.Tc.UtilsMonadpprWithUnitState AnnKeywordIdAnnType AnnPattern AnnotationAnnValAnnOpen AnnDotdotAnnCloseAnnComma AnnModule AnnImportAnnSafe AnnQualifiedAnnPackageNameAnnAs AnnHidingAnnSemiHsImpExpIE GHC.PreludeputIfaceTopBndrgetIfaceTopBndr AnnHeader AnnDcolon AnnForallAnnDot AnnDarrow AnnRarrowAnnBangAnnUnitAnnVbarAnnEqualAnnWhereAnnThenAnnByAnnGroupAnnUsingAnnLetAnnRec Annlarrowtail Annrarrowtail AnnLarrowtail AnnRarrowtailAnnOpenB AnnCloseBAnnLamAnnCaseAnnOfAnnCasesAnnIfAnnElseAnnInAnnDoAnnColonAnnMinusAnnAtAnnOpenE AnnOpenEQ AnnCloseQAnnProc AnnStaticAnnTildetypeLevity_maybe GHC.UtilsError Data.KindTypeDriverUnexpectedSignature PsWarnTabPsWarnOperatorWhitespaceDsMaxPmCheckModelsReachedDataKindPsWarnStarIsTypePsWarnImportPreQualifiedPsErrEmptyDoubleQuotesPsErrIllegalRoleNamePsWarnStarBinderPsErrInvalidTypeSignatureTcRnOrphanInstanceDerivBadErrConstructorTcRnForallIdentifierTcRnIncorrectNameSpaceTcRnTypeCannotBeMarshaled AnnBackquoteMxGHC.Tc.Gen.Exportexports_from_avail mkTyConTy ModBreaks cc_flavourCoreMapHsExprRdrNamesUniqueRdrNameId mkCoreApps mkCoreConApps mkIntExpr mkWordExpr mkCharExpr mkStringExpr mkFloatExpr mkDoubleExpr mkCoreLams mkCoreLets mkCoreLetAnnDecl Data.ListunconsheadtailnullLanguage.Haskell.SyntaxAnnRole AnnForeign AnnExport AnnDefault AnnDeriving AnnInstanceAnnStock AnnAnyClass AnnNewtypeAnnData AnnNewTypeAnnCLose AnnFamilyAnnOpenP AnnClosePAnnClassAnnInfix AnnLarrowGHC.Tc.Gen.Bind tcMonoBindsAnnFunIdaddModFinalizerGHC.Tc.Gen.ExprcheckClosedInStaticFormdecideGeneralisationPlanData.MapStrict GHC.StgToCmmConfigFloatOutSwitchesGHC.Driver.Pipeline setDumpPrefixGHCrunGhcGHC.Unit imp_dep_modsBitsshiftRGHC.Driver.Main HscNoRecompGHC.Runtime.LoaderinitializePluginsHeader initGhcMonad GHC.DriverMakeGHC.Tc.Solver.MonadInertSetexpandTypeSynonyms ConPatOuttopSortModuleGraphSessiontcg_type_env_varTcGblEnv SourceNoteCoreSyn NoExtFieldcvBindsAndSigsbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwise Debug.Tracetracemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=>>fmapreturnControl.Monad.FixmfixControl.Monad.Failfail fromIntegral realToFrac toInteger toRationalmemptymappendmconcat<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowMonadFix MonadFail Applicative Data.FoldableFoldableData.Traversable Traversable SemigroupMonoid GHC.TypesBoolStringCharDoubleFloatInt ghc-bignumGHC.Num.IntegerInteger GHC.MaybeMaybeOrderingRationalIOWord Data.EitherEitherFalseNothingJustTrueLeftRightLTEQGTGHC.Fingerprint.Type FingerprintGHC.ExtssortWith Data.Data mkNoRepTypeControl.Monad.IO.ClassliftIOMonadIO GHC.ByteOrder LittleEndian BigEndian ByteOrder Control.Monad mapAndUnzipM Data.Version versionTags versionBranchVersiontraverse sequenceAsequencemapMGHC.Fingerprint getFileHashfingerprintData fingerprint0 writeFilereadLnreadIOreadFileputStrLnputStrputCharinteractgetLine getContentsgetChar appendFileControl.ExceptionHandlercatchesallowInterruptControl.Exception.Base TypeError RecUpdError RecSelError RecConErrorPatternMatchFailNonTermination NoMethodErrorNestedAtomicallytryJusttry onException mapException handleJusthandlefinally catchJustbracket_bracketOnErrorbracket GHC.Conc.SyncthrowToGHC.IO.ExceptionSomeAsyncExceptionDeadlockCompactionFailedBlockedIndefinitelyOnSTMBlockedIndefinitelyOnMVar UserInterrupt ThreadKilled StackOverflow HeapOverflowAsyncExceptionAssertionFailedUndefinedElementIndexOutOfBoundsArrayExceptionAllocationLimitExceededioErrorasyncExceptionToExceptionasyncExceptionFromException GHC.IORefIORefGHC.IOUnmaskedMaskedUninterruptibleMaskedInterruptible MaskingStateFilePathuninterruptibleMask_uninterruptibleMaskthrowIOmask_mask interruptiblegetMaskingStateevaluatecatch IOExceptionIOError userError GHC.ExceptionErrorCallWithLocation ErrorCallthrowGHC.Exception.Type SomeException toException fromExceptiondisplayException Exception UnderflowRatioZeroDenominatorOverflowLossOfPrecision DivideByZeroDenormalArithExceptionsumproductminimummaximumlengthfoldr1foldrfoldl1foldl'foldlfoldMapelem sequence_ornotElemmapM_foldrMfoldlM concatMapconcatanyandall Data.OldListwordsunwordsunlineslinesData.Semigroup.InternalappEndoEndo Text.ReadreadsreadeitherfingerprintStringfingerprintFingerprints readsPrecreadList readParenlexText.ParserCombinators.ReadPReadS significand scaleFloatisNegativeZeroisNaN isInfiniteisIEEEisDenormalized floatRange floatRadix floatDigitsexponent encodeFloat decodeFloatatan2tanhtansqrtsinhsinpilogBaselogexpcoshcosatanhatanasinhasinacoshacos**GHC.Bits finiteBitSizecountTrailingZeroscountLeadingZeros FiniteBitszeroBitsxor unsafeShiftR unsafeShiftLtestBitshiftsetBitrotateRrotateLrotatepopCountisSigned complementBit complementclearBit bitSizeMaybebitSizebit.|..&.toIntegralSizedtestBitDefaultpopCountDefault bitDefaulttruncateroundproperFractionfloorceilingremquotRemquotmoddivModdivrecip/oddlcmgcdeven^^^toEnumsuccpredfromEnumminBoundmaxBoundShowS showsPrecshowListshowshows showString showParenshowCharzipWith3zipWithzip3unzip3unzip takeWhiletakesplitAtspanscanr1scanrscanl1scanlreverse replicaterepeatlookuplastiterateinitfoldl1' dropWhiledropcyclebreak!! Data.Maybemaybe Data.Functor<$>uncurrycurrysignumabs+*subtract<$liftA2<*untilidflipconstasTypeOf=<<.$!GHC.Err undefinederrorWithoutStackTraceerrorGHC.Stack.Types HasCallStack&&not||/=<<=>comparemaxmincontainers-0.6.5.1 Data.Graph CyclicSCC AcyclicSCCSCC flattenSCCs flattenSCCtransformers-0.5.6.2Control.Monad.Trans.MaybeMaybeT runMaybeT expandTopDir expandPathVar getBaseDirInfiniteInfunfoldrgroupBydropList allListsOftoList$fApplicativeInfinite$fFoldableInfinite$fFunctorInfinite$fTraversableInfiniteSizedSeqemptySSaddToSS addListToSSssEltssizeSS$fNFDataSizedSeq$fBinarySizedSeq$fTraversableSizedSeq$fFoldableSizedSeq$fFunctorSizedSeq$fGenericSizedSeq$fShowSizedSeq ClosureTypeINVALID_OBJECTCONSTR CONSTR_1_0 CONSTR_0_1 CONSTR_2_0 CONSTR_1_1 CONSTR_0_2 CONSTR_NOCAFFUNFUN_1_0FUN_0_1FUN_2_0FUN_1_1FUN_0_2 FUN_STATICTHUNK THUNK_1_0 THUNK_0_1 THUNK_2_0 THUNK_1_1 THUNK_0_2 THUNK_STATICTHUNK_SELECTORBCOAPPAPAP_STACKIND IND_STATICRET_BCO RET_SMALLRET_BIGRET_FUN UPDATE_FRAME CATCH_FRAMEUNDERFLOW_FRAME STOP_FRAMEBLOCKING_QUEUE BLACKHOLE MVAR_CLEAN MVAR_DIRTYTVAR ARR_WORDSMUT_ARR_PTRS_CLEANMUT_ARR_PTRS_DIRTYMUT_ARR_PTRS_FROZEN_DIRTYMUT_ARR_PTRS_FROZEN_CLEAN MUT_VAR_CLEAN MUT_VAR_DIRTYWEAKPRIMMUT_PRIMTSOSTACK TREC_CHUNKATOMICALLY_FRAMECATCH_RETRY_FRAMECATCH_STM_FRAME WHITEHOLESMALL_MUT_ARR_PTRS_CLEANSMALL_MUT_ARR_PTRS_DIRTYSMALL_MUT_ARR_PTRS_FROZEN_DIRTYSMALL_MUT_ARR_PTRS_FROZEN_CLEANCOMPACT_NFDATA CONTINUATIONN_CLOSURE_TYPESclosureTypeHeaderSize$fEnumClosureType$fEqClosureType$fOrdClosureType$fShowClosureType$fGenericClosureType wORD_SIZEwORD_SIZE_IN_BITStAG_MASK StgInfoTableentryptrsnptrstipesrtlencode EntryFunPtrHalfWord ItblCodes$fShowStgInfoTable$fGenericStgInfoTablepeekItblpokeItblitblSize IndexTableit_ccit_ccsit_next it_back_edge CostCentrecc_ccIDcc_label cc_module cc_srcloc cc_mem_alloc cc_time_ticks cc_is_cafcc_linkCostCentreStack ccs_ccsIDccs_cc ccs_prevStackccs_indexTableccs_root ccs_depth ccs_scc_count ccs_selectedccs_time_ticks ccs_mem_allocccs_inherited_allocccs_inherited_ticksStgTSOProfInfocccs$fShowStgTSOProfInfo$fGenericStgTSOProfInfo$fEqStgTSOProfInfo$fOrdStgTSOProfInfo$fShowIndexTable$fGenericIndexTable$fEqIndexTable$fOrdIndexTable$fShowCostCentreStack$fGenericCostCentreStack$fEqCostCentreStack$fOrdCostCentreStack$fShowCostCentre$fGenericCostCentre$fEqCostCentre$fOrdCostCentrepeekStgTSOProfInfo peekTopCCSTsoFlags TsoLocked TsoBlockxTsoInterruptibleTsoStoppedOnBreakpoint TsoMarked TsoSqueezed TsoAllocLimitTsoFlagsUnknownValue WhyBlocked NotBlocked BlockedOnMVarBlockedOnMVarReadBlockedOnBlackHole BlockedOnReadBlockedOnWriteBlockedOnDelay BlockedOnSTMBlockedOnDoProcBlockedOnCCallBlockedOnCCall_InterruptibleBlockedOnMsgThrowToThreadMigratingWhyBlockedUnknownValueWhatNext ThreadRunGHCThreadInterpretThreadCompleteWhatNextUnknownValuePrimTypePIntPWordPInt64PWord64PAddrPFloatPDouble GenClosure ConstrClosure FunClosure ThunkClosureSelectorClosure PAPClosure APClosureAPStackClosure IndClosure BCOClosureBlackholeClosureArrWordsClosure MutArrClosureSmallMutArrClosure MVarClosure IOPortClosure MutVarClosureBlockingQueueClosure WeakClosure TSOClosure StackClosure IntClosure WordClosure Int64Closure Word64Closure AddrClosure FloatClosure DoubleClosure OtherClosureUnsupportedClosureinfoptrArgsdataArgspkgmodlnameselecteearityn_argsfunpayload indirecteeinstrsliteralsbcoptrssizebitmapbytesarrWordsmccPtrsmccSize mccPayload queueHead queueTailvaluevarlink blackHoleownerqueue cfinalizerskey finalizerweakLink global_linktsoStacktrecblocked_exceptionsbq thread_label what_next why_blockedflagsthreadId saved_errno tso_dirty alloc_limittot_stack_sizeprof stack_size stack_dirty stack_markingptipeintValwordValint64Val word64ValaddrValfloatVal doubleValhvaluesrawWordsClosureBoxasBox areBoxesEqual allClosures closureSize $fShowBox$fShowGenClosure$fGenericGenClosure$fFunctorGenClosure$fFoldableGenClosure$fTraversableGenClosure $fEqTsoFlags$fShowTsoFlags$fGenericTsoFlags $fOrdTsoFlags$fEqWhyBlocked$fShowWhyBlocked$fGenericWhyBlocked$fOrdWhyBlocked $fEqWhatNext$fShowWhatNext$fGenericWhatNext $fOrdWhatNext $fEqPrimType$fShowPrimType$fGenericPrimType $fOrdPrimType StackFieldsstack_sp TSOFields tso_what_nexttso_why_blocked tso_flags tso_threadIdtso_saved_errnotso_alloc_limittso_tot_stack_sizetso_prof peekTSOFields parseWhatNextparseWhyBlocked parseTsoFlagsisSetunsetpeekStackFields dataConNames HasHeapRepgetClosureDatagetClosureDataFromHeapRepgetClosureDataFromHeapRepPrimgetBoxedClosureData$fHasHeapRepDoubleRepa$fHasHeapRepFloatRepa$fHasHeapRepAddrRepa$fHasHeapRepWord64Repa$fHasHeapRepInt64Repa$fHasHeapRepWordRepa$fHasHeapRepIntRepa$fHasHeapRepBoxedRepa$fHasHeapRepBoxedRepa0ForeignSrcLangLangCLangCxxLangObjc LangObjcxxLangAsmLangJs RawObject$fEqForeignSrcLang$fShowForeignSrcLang$fGenericForeignSrcLang$fBinaryForeignSrcLang IfaceBndr IfaceCoercion IfaceTyLit IfaceTyCon IfaceType IfaceAppArgs ExtensionCppOverlappingInstancesUndecidableInstancesIncoherentInstancesUndecidableSuperClassesMonomorphismRestrictionMonoLocalBindsDeepSubsumptionRelaxedPolyRecExtendedDefaultRulesForeignFunctionInterfaceUnliftedFFITypesInterruptibleFFICApiFFIGHCForeignImportPrim JavaScriptFFIParallelArraysArrowsTemplateHaskellTemplateHaskellQuotes QualifiedDo QuasiQuotesImplicitParamsImplicitPreludeScopedTypeVariablesAllowAmbiguousTypes UnboxedTuples UnboxedSumsUnliftedNewtypesUnliftedDatatypes BangPatterns TypeFamiliesTypeFamilyDependencies TypeInTypeOverloadedStringsOverloadedLists NumDecimalsDisambiguateRecordFieldsRecordWildCardsNamedFieldPuns ViewPatternsGADTs GADTSyntaxNPlusKPatternsDoAndIfThenElseBlockArgumentsRebindableSyntaxConstraintKinds PolyKinds DataKindsTypeData InstanceSigs ApplicativeDo LinearTypesStandaloneDerivingDeriveDataTypeableAutoDeriveTypeable DeriveFunctorDeriveTraversableDeriveFoldable DeriveGenericDefaultSignaturesDeriveAnyClass DeriveLiftDerivingStrategies DerivingViaTypeSynonymInstancesFlexibleContextsFlexibleInstancesConstrainedClassMethodsMultiParamTypeClassesNullaryTypeClassesFunctionalDependencies UnicodeSyntaxExistentialQuantification MagicHashEmptyDataDeclsKindSignaturesRoleAnnotationsParallelListCompTransformListCompMonadComprehensionsGeneralizedNewtypeDeriving RecursiveDoPostfixOperators TupleSections PatternGuardsLiberalTypeSynonyms RankNTypesImpredicativeTypes TypeOperatorsExplicitNamespacesPackageImportsExplicitForAllAlternativeLayoutRule!AlternativeLayoutRuleTransitionalDatatypeContextsNondecreasingIndentation RelaxedLayoutTraditionalRecordSyntax LambdaCase MultiWayIfBinaryLiteralsNegativeLiteralsHexFloatLiteralsDuplicateRecordFieldsOverloadedLabels EmptyCasePatternSynonymsPartialTypeSignaturesNamedWildCardsStaticPointersTypeApplications StrictDataEmptyDataDerivingNumericUnderscoresQuantifiedConstraints StarIsTypeImportQualifiedPostCUSKsStandaloneKindSignaturesLexicalNegationFieldSelectorsOverloadedRecordDotOverloadedRecordUpdate$fOrdExtension $fEqExtension$fEnumExtension$fShowExtension$fGenericExtension$fBoundedExtension$fBinaryExtension okSymChar startsVarSym startsConSym startsVarId startsConIdstartsVarSymASCII isVarSymCharOS OSUnknownOSLinuxOSDarwin OSSolaris2 OSMinGW32 OSFreeBSD OSDragonFly OSOpenBSDOSNetBSD OSKFreeBSDOSHaikuOSQNXNTOOSAIXOSHurdOSWasi PPC_64ABIELF_V1ELF_V2ArmABISOFTSOFTFPHARD ArmISAExtVFPv2VFPv3VFPv3D16NEONIWMMX2ArmISAARMv5ARMv6ARMv7Arch ArchUnknownArchX86 ArchX86_64ArchPPC ArchPPC_64 ArchS390XArchARM ArchAArch64 ArchAlpha ArchMipseb ArchMipsel ArchRISCV64ArchJavaScript ArchWasm32ArchOS archOS_arch archOS_OSstringEncodeArchstringEncodeOS $fReadArchOS $fShowArchOS $fEqArchOS $fOrdArchOS$fReadOS$fShowOS$fEqOS$fOrdOS $fReadArch $fShowArch$fEqArch $fOrdArch$fReadPPC_64ABI$fShowPPC_64ABI $fEqPPC_64ABI$fOrdPPC_64ABI $fReadArmABI $fShowArmABI $fEqArmABI $fOrdArmABI$fReadArmISAExt$fShowArmISAExt $fEqArmISAExt$fOrdArmISAExt $fReadArmISA $fShowArmISA $fEqArmISA $fOrdArmISAPlatformConstantspc_CONTROL_GROUP_CONST_291pc_STD_HDR_SIZEpc_PROF_HDR_SIZE pc_BLOCK_SIZEpc_BLOCKS_PER_MBLOCKpc_TICKY_BIN_COUNTpc_OFFSET_StgRegTable_rR1pc_OFFSET_StgRegTable_rR2pc_OFFSET_StgRegTable_rR3pc_OFFSET_StgRegTable_rR4pc_OFFSET_StgRegTable_rR5pc_OFFSET_StgRegTable_rR6pc_OFFSET_StgRegTable_rR7pc_OFFSET_StgRegTable_rR8pc_OFFSET_StgRegTable_rR9pc_OFFSET_StgRegTable_rR10pc_OFFSET_StgRegTable_rF1pc_OFFSET_StgRegTable_rF2pc_OFFSET_StgRegTable_rF3pc_OFFSET_StgRegTable_rF4pc_OFFSET_StgRegTable_rF5pc_OFFSET_StgRegTable_rF6pc_OFFSET_StgRegTable_rD1pc_OFFSET_StgRegTable_rD2pc_OFFSET_StgRegTable_rD3pc_OFFSET_StgRegTable_rD4pc_OFFSET_StgRegTable_rD5pc_OFFSET_StgRegTable_rD6pc_OFFSET_StgRegTable_rXMM1pc_OFFSET_StgRegTable_rXMM2pc_OFFSET_StgRegTable_rXMM3pc_OFFSET_StgRegTable_rXMM4pc_OFFSET_StgRegTable_rXMM5pc_OFFSET_StgRegTable_rXMM6pc_OFFSET_StgRegTable_rYMM1pc_OFFSET_StgRegTable_rYMM2pc_OFFSET_StgRegTable_rYMM3pc_OFFSET_StgRegTable_rYMM4pc_OFFSET_StgRegTable_rYMM5pc_OFFSET_StgRegTable_rYMM6pc_OFFSET_StgRegTable_rZMM1pc_OFFSET_StgRegTable_rZMM2pc_OFFSET_StgRegTable_rZMM3pc_OFFSET_StgRegTable_rZMM4pc_OFFSET_StgRegTable_rZMM5pc_OFFSET_StgRegTable_rZMM6pc_OFFSET_StgRegTable_rL1pc_OFFSET_StgRegTable_rSppc_OFFSET_StgRegTable_rSpLimpc_OFFSET_StgRegTable_rHppc_OFFSET_StgRegTable_rHpLimpc_OFFSET_StgRegTable_rCCCS!pc_OFFSET_StgRegTable_rCurrentTSO%pc_OFFSET_StgRegTable_rCurrentNurserypc_OFFSET_StgRegTable_rHpAllocpc_OFFSET_stgEagerBlackholeInfopc_OFFSET_stgGCEnter1pc_OFFSET_stgGCFunpc_OFFSET_Capability_rpc_OFFSET_bdescr_startpc_OFFSET_bdescr_freepc_OFFSET_bdescr_blockspc_OFFSET_bdescr_flagspc_SIZEOF_CostCentreStack#pc_OFFSET_CostCentreStack_mem_alloc pc_REP_CostCentreStack_mem_alloc#pc_OFFSET_CostCentreStack_scc_count pc_REP_CostCentreStack_scc_countpc_OFFSET_StgHeader_ccspc_OFFSET_StgHeader_ldvwpc_SIZEOF_StgSMPThunkHeaderpc_OFFSET_StgEntCounter_allocspc_REP_StgEntCounter_allocspc_OFFSET_StgEntCounter_allocdpc_REP_StgEntCounter_allocd#pc_OFFSET_StgEntCounter_registeredppc_OFFSET_StgEntCounter_link#pc_OFFSET_StgEntCounter_entry_countpc_SIZEOF_StgUpdateFrame_NoHdrpc_SIZEOF_StgMutArrPtrs_NoHdrpc_OFFSET_StgMutArrPtrs_ptrspc_OFFSET_StgMutArrPtrs_size"pc_SIZEOF_StgSmallMutArrPtrs_NoHdr!pc_OFFSET_StgSmallMutArrPtrs_ptrspc_SIZEOF_StgArrBytes_NoHdrpc_OFFSET_StgArrBytes_bytespc_OFFSET_StgTSO_alloc_limitpc_OFFSET_StgTSO_cccspc_OFFSET_StgTSO_stackobjpc_OFFSET_StgStack_sppc_OFFSET_StgStack_stack pc_OFFSET_StgUpdateFrame_updatee"pc_OFFSET_StgFunInfoExtraFwd_aritypc_REP_StgFunInfoExtraFwd_aritypc_SIZEOF_StgFunInfoExtraRev"pc_OFFSET_StgFunInfoExtraRev_aritypc_REP_StgFunInfoExtraRev_aritypc_MAX_SPEC_SELECTEE_SIZEpc_MAX_SPEC_AP_SIZEpc_MIN_PAYLOAD_SIZEpc_MIN_INTLIKEpc_MAX_INTLIKEpc_MIN_CHARLIKEpc_MAX_CHARLIKEpc_MUT_ARR_PTRS_CARD_BITSpc_MAX_Vanilla_REGpc_MAX_Float_REGpc_MAX_Double_REGpc_MAX_Long_REGpc_MAX_XMM_REGpc_MAX_Real_Vanilla_REGpc_MAX_Real_Float_REGpc_MAX_Real_Double_REGpc_MAX_Real_XMM_REGpc_MAX_Real_Long_REGpc_RESERVED_C_STACK_BYTESpc_RESERVED_STACK_WORDSpc_AP_STACK_SPLIM pc_WORD_SIZE pc_CINT_SIZE pc_CLONG_SIZEpc_CLONG_LONG_SIZEpc_BITMAP_BITS_SHIFT pc_TAG_BITS pc_LDV_SHIFTpc_ILDV_CREATE_MASKpc_ILDV_STATE_CREATEpc_ILDV_STATE_USEpc_USE_INLINE_SRT_FIELDparseConstantsHeader$fShowPlatformConstants$fReadPlatformConstants$fEqPlatformConstants$fOrdPlatformConstantsshiftL FastMutInt newFastMutIntreadFastMutIntwriteFastMutIntatomicFetchAddFastMutOverridingBoolAutoNeverAlways overrideWith$fShowOverridingBool$fReadOverridingBool$fEqOverridingBool$fOrdOverridingBool$fEnumOverridingBool$fBoundedOverridingBool Serialized toSerializedfromSerializedserializeWithDatadeserializeWithData RawSettings maybeReadmaybeReadFuzzygetTargetArchOS getRawSettinggetRawFilePathSettinggetRawBooleanSettingreadRawSettingFixedRuntimeRepOriginFixedRuntimeRepContext SkolemInfoSkolemInfoAnonunkSkol ghciSupported debugIsOn isWindowsHost isDarwinHost utf8PrevChar utf8CharStartutf8CountCharsShortByteStringutf8DecodeShortByteStringutf8DecodeByteStringutf8EncodeShortByteStringutf8EncodeByteStringutf8UnconsByteStringutf8CompareShortByteStringutf8DecodeCharAddr#utf8DecodeCharPtrutf8DecodeCharByteArray#utf8DecodeForeignPtrutf8DecodeByteArray#utf8CompareByteArray#utf8CountCharsByteArray# utf8EncodePtrutf8EncodeByteArray#utf8EncodedLength EncodedString UserString zEncodeString zDecodeStringtoBase62PaddedtoBase62 ShortTextcontentscodepointLength byteLengthpack singletonunpack splitFilePath stripPrefix$fIsStringShortText$fShowShortText $fEqShortText$fOrdShortText$fBinaryShortText$fSemigroupShortText$fMonoidShortText$fNFDataShortText DbOpenModeDbOpenReadOnlyDbOpenReadWriteDbMode DbReadOnly DbReadWrite PackageDbLock DbInstUnitIdDbUnitIdDbModule DbModuleVardbModuleUnitId dbModuleNamedbModuleVarNameGenericUnitInfounitIdunitInstanceOfunitInstantiations unitPackageIdunitPackageNameunitPackageVersionunitComponentName unitAbiHash unitDependsunitAbiDependsunitImportDirs unitLibrariesunitExtDepLibsSysunitExtDepLibsGhcunitLibraryDirsunitLibraryDynDirsunitExtDepFrameworksunitExtDepFrameworkDirsunitLinkerOptions unitCcOptions unitIncludesunitIncludeDirsunitHaddockInterfacesunitHaddockHTMLsunitExposedModulesunitHiddenModulesunitIsIndefinite unitIsExposed unitIsTrusted DbUnitInfomapGenericUnitInfo lockPackageDbunlockPackageDbisDbOpenReadModereadPackageDbForGhcreadPackageDbForGhcPkgwritePackageDbmkMungePathUrlmungeUnitInfoPaths$fBinaryDbInstUnitId$fBinaryDbModule$fBinaryGenericUnitInfo$fEqDbInstUnitId$fShowDbInstUnitId $fEqDbModule$fShowDbModule$fEqGenericUnitInfo$fShowGenericUnitInfo$fTraversableDbOpenMode$fFoldableDbOpenMode$fFunctorDbOpenModeExceptionMonadcatchIOhandleIOtryIOreadHexFingerprintfingerprintByteStringv_unsafeHasPprDebugv_unsafeHasNoDebugOutputv_unsafeHasNoStateHackunsafeHasPprDebugunsafeHasNoDebugOutputunsafeHasNoStateHackglobal consIORefglobalM sharedGlobal sharedGlobalMinlinePerformIOSchemesHeadersMessagesWarningsErrorsFatalsMargin PprColour renderColourrenderColourAfresh colCustomcolResetcolBold colBlackFgcolRedFg colGreenFg colYellowFg colBlueFg colMagentaFg colCyanFg colWhiteFg defaultScheme parseScheme$fMonoidPprColour$fSemigroupPprColourcProjectGitCommitIdcProjectVersioncProjectVersionIntcProjectPatchLevelcProjectPatchLevel1cProjectPatchLevel2 uniqueSubdircBuildPlatformStringcHostPlatformString cProjectNamecBooterVersioncStagePlainGhcException PlainSignalPlainUsageErrorPlainCmdLineError PlainPanic PlainSorryPlainInstallationErrorPlainProgramErrorshowPlainGhcExceptionpanicsorrypgmError cmdLineErrorcmdLineErrorIO assertPanicassertmassertassertM$fShowPlainGhcException$fExceptionPlainGhcExceptionHasDebugCallStack DirectionForwards BackwardsSuffix applyWhennTimesconst2fstOf3sndOf3thdOf3fst3snd3third3uncurry3 filterOut partitionWith chkAppendzipEqual zipWithEqual zipWith3Equal zipWith4Equal filterByList filterByListspartitionByListstretchZipWithmapFstmapSnd mapAndUnzip mapAndUnzip3zipWithAndUnzip zipAndUnzipatLength lengthExceeds lengthAtLeastlengthIs lengthIsNot lengthAtMostlengthLessThan listLengthCmp equalLength compareLengthleLengthltLength isSingletonnotNullonly expectOnly chunkListholes changeLastmapLastM whenNonEmpty mergeListsBy isSortedByminWithnubSortordNubordNubOntransitiveClosurefoldl2all2count countWhiletakeList splitAtListdropTaildropWhileEndLEspanEndlast2 lastMaybeonJustsnocViewsplit capitaliseisEqual removeSpaces<&&><||> fuzzyMatch fuzzyLookup unzipWithseqList strictMap strictZipWithstrictZipWith3looksLikeModuleNamelooksLikePackageName exactLog2 readRationalreadSignificandExponentPairreadHexRationalreadHexSignificandExponentPairdoesDirNameExistgetModificationUTCTimemodificationTimeIfExistsfileHashIfExistswithAtomicRenamesplitLongestPrefix escapeSpacesreslashmakeRelativeToabstractConstrabstractDataTypecharToC hashString mapMaybe' PtrStringLexicalFastStringNonDetFastString FastStringuniqn_charsfs_sbsfs_zenc FastZStringbytesFSfastStringToByteStringfastStringToShortByteStringfastZStringToByteStringunsafeMkByteStringhPutFZSzString zStringTakeN lengthFZSlexicalCompareFS uniqCompareFS mkFastString#mkFastStringBytesmkFastStringByteStringmkFastStringShortByteString mkFastStringmkFastStringByteListlengthFSnullFSunpackFS zEncodeFSappendFSconcatFSconsFSunconsFS uniqueOfFSnilFSgetFastStringTablegetFastStringZEncCounterhPutFS mkPtrString#unpackPtrStringunpackPtrStringTakeNlengthPSfsLit$fNFDataFastString$fDataFastString$fShowFastString$fMonoidFastString$fSemigroupFastString$fIsStringFastString$fEqFastString$fOrdNonDetFastString$fOrdLexicalFastString$fEqLexicalFastString$fShowLexicalFastString$fDataLexicalFastString$fEqNonDetFastString$fShowNonDetFastString$fDataNonDetFastString$fNFDataFastZString BufHandle newBufHandlebPutCharbPutStrbPutFSbPutFZS bPutPtrString bPutReplicatebFlushModePageMode ZigZagModeLeftMode OneLineMode asciiSpaceStylemode lineLengthribbonsPerLine TextDetailsChrStrPStrZStrLStrRStrDocchartextftextptextztext sizedText zeroWidthText emptyTextemptyisEmptydocHeadsemicommacolonspaceequalslparenrparenlbrackrbracklbracerbraceintintegerfloatdoublerationalhexquotessquotesquote doubleQuotesparensbracketsbraces maybeParenshcathsepvcatnesthang hangNotEmpty punctuate$$$+$<><+>sepcatfcatfsepstyle renderStyle txtPrinter fullRenderprintDoc printDoc_printLeftRender bufLeftRender $fShowDoc HasOccNameoccNameOccName mkVarOccFSmkRecFldSelOcc occNameFSputArraygetArray BreakArrayBAbreakOnbreakOffshowBreakArraysetupBreakpointgetBreak newBreakArray C_ffi_cifFFIConvFFICCall FFIStdCallFFITypeFFIVoid FFIPointerFFIFloat FFIDoubleFFISInt8 FFISInt16 FFISInt32 FFISInt64FFIUInt8 FFIUInt16 FFIUInt32 FFIUInt64prepForeignCallfreeForeignCallInfo $fShowFFIConv$fGenericFFIConv$fBinaryFFIConv $fShowFFIType$fGenericFFIType$fBinaryFFIType ForeignHValue ForeignRef HValueRef RemoteRefHValue RemotePtr toRemotePtr fromRemotePtr castRemotePtr toHValueRef mkRemoteReflocalRef freeRemoteRef mkForeignRefwithForeignRefunsafeForeignRefToRemoteReffinalizeForeignRef $fShowHValue$fNFDataForeignRef$fShowRemoteRef$fBinaryRemoteRef$fNFDataRemotePtr$fBinaryRemotePtr$fShowRemotePtrResolvedBCOPtrResolvedBCORefResolvedBCOStaticPtrResolvedBCOPtrBCOResolvedBCOPtrBreakArray ResolvedBCOresolvedBCOIsLEresolvedBCOArityresolvedBCOInstrsresolvedBCOBitmapresolvedBCOLitsresolvedBCOPtrsisLittleEndian$fBinaryResolvedBCOPtr$fBinaryResolvedBCO$fGenericResolvedBCOPtr$fShowResolvedBCOPtr$fGenericResolvedBCO$fShowResolvedBCOSrcUnpackedness SrcUnpack SrcNoUnpack NoSrcUnpack SrcStrictnessSrcLazy SrcStrict NoSrcStrictRoleNominalRepresentationalPhantomFieldLabelString field_labelConTagSumWidthBoxityBoxedUnboxedisBoxed$fEqSrcUnpackedness$fDataSrcUnpackedness$fEqSrcStrictness$fDataSrcStrictness$fEqRole $fOrdRole $fDataRole$fDataFieldLabelString$fEqFieldLabelString $fEqBoxity $fDataBoxityNoGhcTcXXIEWrappedNameXIEType XIEPatternXIENameXXIE XIEDocNamedXIEDocXIEGroupXIEModuleContents XIEThingWith XIEThingAll XIEThingAbsXIEVarImportDeclPkgQual XXImportDecl XCImportDecl XXFieldOcc XCFieldOccXXConDeclField XConDeclField XXTyVarBndr XKindedTyVar XUserTyVarXXHsForAllTelescopeXHsForAllInvis XHsForAllVisXXTyLitXCharTyXStrTyXNumTyXXType XWildCardTyXTyLitXExplicitTupleTyXExplicitListTyXRecTyXBangTyXDocTy XSpliceTyXKindSigXStarTy XIParamTyXParTyXOpTyXSumTyXTupleTyXListTyXFunTy XAppKindTyXAppTyXTyVarXQualTy XForAllTyXXHsPatSigTypeXHsPSXXHsWildCardBndrsXHsWC XXHsSigTypeXHsSigXXHsOuterTyVarBndrsXHsOuterExplicitXHsOuterImplicit XXLHsQTyVarsXHsQTvs XHsFieldBindXXPatXCoPatXSigPat XNPlusKPatXNPatXLitPat XSplicePatXViewPatXConPatXSumPat XTuplePatXListPatXBangPatXParPatXAsPatXLazyPatXVarPatXWildPat XXOverLitXOverLitXXLit XHsDoublePrim XHsFloatPrimXHsRat XHsInteger XHsWord64Prim XHsInt64Prim XHsWordPrim XHsIntPrimXHsInt XHsStringPrim XHsString XHsCharPrimXHsCharXXApplicativeArgXApplicativeArgManyXApplicativeArgOneXXParStmtBlock XParStmtBlockXXCmdXCmdWrapXCmdDoXCmdLetXCmdIf XCmdLamCaseXCmdCaseXCmdParXCmdLamXCmdApp XCmdArrForm XCmdArrAppXXStmtLRXRecStmt XTransStmtXParStmtXLetStmt XBodyStmtXApplicativeStmt XBindStmt XLastStmtXXGRHSXCGRHSXXGRHSsXCGRHSsXXMatchXCMatch XXMatchGroupXMGXXCmdTopXCmdTopXXQuoteXVarBrXTypBrXDecBrGXDecBrLXPatBrXExpBrXXUntypedSplice XQuasiQuoteXUntypedSpliceExprXXTupArgXMissingXPresentXXAmbiguousFieldOcc XAmbiguous XUnambiguousXXPragEXSCC XXDotFieldOcc XCDotFieldOccXXExprXPragEXBinTickXTickXStaticXProcXUntypedSplice XTypedSpliceXUntypedBracket XTypedBracket XArithSeqXExprWithTySig XProjection XGetField XRecordUpd XRecordCon XExplicitListXDoXLetXMultiIfXIfXCase XExplicitSumXExplicitTuple XSectionR XSectionLXParXNegAppXOpApp XAppTypeEXAppXLamCaseXLamXLitE XOverLitEXIPVar XOverLabelXRecSel XUnboundVarXVarXXModuleXCModuleXXInjectivityAnnXCInjectivityAnnXXRoleAnnotDeclXCRoleAnnotDecl XXAnnDecl XHsAnnotation XXWarnDeclXWarning XXWarnDecls XWarnings XXRuleBndr XRuleBndrSig XCRuleBndr XXRuleDeclXHsRule XXRuleDecls XCRuleDeclsXXForeignExportXCExportXXForeignImportXCImport XXForeignDeclXForeignExportXForeignImport XXDefaultDecl XCDefaultDecl XViaStrategyXNewtypeStrategyXAnyClassStrategyXStockStrategy XXDerivDecl XCDerivDecl XXInstDecl XTyFamInstD XDataFamInstD XClsInstD XXClsInstDecl XCClsInstDeclXXTyFamInstDeclXCTyFamInstDeclXXFamEqnXCFamEqn XXConDecl XConDeclH98 XConDeclGADTXXDerivClauseTys XDctMulti XDctSingleXXHsDerivingClauseXCHsDerivingClause XXHsDataDefn XCHsDataDefn XXFamilyDecl XCFamilyDeclXXFamilyResultSig XTyVarSig XCKindSigXNoSig XXTyClGroup XCTyClGroupXXFunDepXCFunDep XXTyClDecl XClassDecl XDataDeclXSynDeclXFamDecl XXSpliceDecl XSpliceDecl XXHsGroup XCHsGroupXXHsDecl XRoleAnnotDXDocDXSpliceDXRuleDXAnnD XWarningDXForDXDefD XKindSigDXSigDXValDXDerivDXInstDXTyClDXXStandaloneKindSigXStandaloneKindSig XXFixitySig XFixitySigXXSigXCompleteMatchSig XSCCFunSig XMinimalSig XSpecInstSigXSpecSig XInlineSigXFixSigXIdSig XClassOpSig XPatSynSigXTypeSigXXIPBindXCIPBind XXHsIPBindsXIPBinds XXPatSynBindXPSB XXHsBindsLR XPatSynBindXVarBindXPatBindXFunBind XXValBindsLR XValBindsXXHsLocalBindsLRXEmptyLocalBinds XHsIPBinds XHsValBindsLIdPIdPWrapXRecwrapXRecMapXRecmapXRecUnXRecunXRecAnnoXRecDataConCantHappen noExtFielddataConCantHappen$fDataDataConCantHappen$fEqDataConCantHappen$fOrdDataConCantHappen$fDataNoExtField$fEqNoExtField$fOrdNoExtFieldLHsExpr SyntaxExprGRHSs MatchGroupHsUntypedSpliceIsBootInterfaceNotBootIsBoot ModuleNamestableModuleNameCmp moduleNameFSmoduleNameString mkModuleNamemkModuleNameFSmoduleNameSlashesmoduleNameColonsparseModuleName$fNFDataModuleName$fDataModuleName$fOrdModuleName$fShowModuleName$fEqModuleNameUnitModuleGenUnit GenModuleUnitId moduleUnit moduleNameIsDocLinelinelines_dualDocIsLinedualLineIsOutputdocWithContextHDocHLineOutputableBndrpprBndr pprPrefixOcc pprInfixOccbndrIsJoin_maybe BindingSite LambdaBindCaseBind CasePatBindLetBindPDoc OutputablePpdoc Outputableppr SDocContextSDC sdocStyle sdocColSchemesdocLastColoursdocShouldUseColorsdocDefaultDepthsdocLineLengthsdocCanUseUnicodesdocHexWordLiterals sdocPprDebugsdocPrintUnicodeSyntaxsdocPrintCaseAsLetsdocPrintTypecheckerElaborationsdocPrintAxiomIncompssdocPrintExplicitKindssdocPrintExplicitCoercionssdocPrintExplicitRuntimeRepssdocPrintExplicitForallssdocPrintPotentialInstancessdocPrintEqualityRelationssdocSuppressTickssdocSuppressTypeSignaturessdocSuppressTypeApplicationssdocSuppressIdInfosdocSuppressCoercionssdocSuppressCoercionTypessdocSuppressUnfoldingssdocSuppressVarKindssdocSuppressUniquessdocSuppressModulePrefixessdocSuppressStgExtssdocSuppressStgRepssdocErrorSpanssdocStarIsTypesdocLinearTypessdocListTuplePunssdocPrintTypeAbbreviationssdocUnitIdForUser QualifyName NameUnqualNameQualNameNotInScope1NameNotInScope2IsEmptyOrSingleton PromotedItemPromotedItemListSyntaxPromotedItemTupleSyntaxPromotedItemDataConPromotionTickContext PromTickCtxptcListTuplePunsptcPrintRedundantPromTicksQueryPromotionTickQueryQualifyPackageQueryQualifyModuleQueryQualifyName NamePprCtx QueryQualifyqueryQualifyNamequeryQualifyModulequeryQualifyPackagequeryPromotionTickDepth AllTheWayPartWay DefaultDepthPprStylePprUserPprDumpPprCodeisListEmptyOrSingletonreallyAlwaysQualifyNamesalwaysQualifyNamesneverQualifyNamesalwaysQualifyModulesneverQualifyModulesalwaysQualifyPackagesneverQualifyPackagesalwaysPrintPromTickreallyAlwaysQualify alwaysQualify neverQualifydefaultUserStyledefaultDumpStyle mkDumpStyledefaultErrStyle mkErrStylecmdlineParserStyle mkUserStyle withUserStyle withErrStylesetStyleColouredrunSDocdefaultSDocContexttraceSDocContext withPprStyle pprDeeper pprDeeperList pprSetDepth getPprStylesdocWithContext sdocOptionupdSDocContextqualName qualModule qualPackagepromTick queryQual codeStyle dumpStyle userStyle getPprDebug ifPprDebug whenPprDebug printSDoc printSDocLnbufLeftRenderSDocpprCoderenderWithContextshowSDocOneLineshowSDocUnsafe showPprUnsafepprDebugAndThen docToSDocword doublePrec angleBracketscparen blankLinedcolonarrowlollipoplarrowdarrowarrowtlarrowtarrowttlarrowttlambda underscoredotvbar forAllLitbullet unicodeSyntaxppWhenppUnless ppWhenOptionppUnlessOptioncolouredkeyword pprModuleName pprHsChar pprHsString pprHsBytesprimCharSuffixprimFloatSuffix primIntSuffixprimDoubleSuffixprimWordSuffixprimInt8SuffixprimWord8SuffixprimInt16SuffixprimWord16SuffixprimInt32SuffixprimWord32SuffixprimInt64SuffixprimWord64Suffix pprPrimChar pprPrimInt pprPrimWord pprPrimInt8 pprPrimInt16 pprPrimInt32 pprPrimInt64 pprPrimWord8 pprPrimWord16 pprPrimWord32 pprPrimWord64 pprPrefixVar pprInfixVarpprFastFilePathpprFilePathString pprWithCommas pprWithBarsspaceIfSingleQuote interppSP interpp'SP interpp'SP' pprQuotedListquotedListWithOrquotedListWithNor intWithCommasspeakNthspeakNspeakNOfpluralsingularisOrAredoOrDoes itsOrTheir thisOrThese hasOrHavebPutHDoc$fOutputableModuleName$fOutputableIntMap$fOutputableMap$fOutputableIntSet$fOutputableSet$fOutputableNonEmpty$fOutputable[]$fOutputableDouble$fOutputableFloat$fOutputableWord$fOutputableWord64$fOutputableWord32$fOutputableWord16$fOutputableInteger$fOutputableInt$fOutputableInt64$fOutputableInt32$fOutputableSDoc$fOutputablePenvSDoc$fOutputablePenvSCC$fOutputablePenvMap$fOutputablePenv(,,)$fOutputablePenv(,)$fOutputablePenvMaybe$fOutputablePenv[]$fOutputablePenvPDoc$fIsOutputHDoc$fIsOutputHLine$fIsOutputSDoc $fIsLineHLine $fIsLineSDoc$fOutputablePenvSet$fOutputableExtension$fOutputableSerialized$fOutputableFingerprint$fOutputableFastString$fOutputable(,,,,,,)$fOutputable(,,,,,)$fOutputable(,,,,)$fOutputable(,,,)$fOutputable(,,)$fOutputableEither$fOutputableMaybe$fOutputable(,)$fOutputableUTCTime$fOutputable()$fOutputableOrdering$fOutputableBool$fIsStringSDoc$fOutputablePprStyle$fOutputableQualifyName $fIsDocHDoc $fIsDocSDoc$fOutputableSCC$fEqBindingSite$fOutputableLexicalFastString$fOutputableNonDetFastStringSignal UsageError CmdLineErrorPanicPprPanicSorryPprSorryInstallationError ProgramErrorPprProgramError showExceptionsafeShowExceptionshowGhcExceptionUnsafeshowGhcExceptionthrowGhcExceptionthrowGhcExceptionIOhandleGhcExceptionpprPanicpanicDocsorryDoc pgmErrorDoctryMostwithSignalHandlers callStackDocprettyCallStackDocassertPprPanic assertPprassertPprMaybe massertPpr assertPprM$fShowGhcException$fExceptionGhcExceptionpprTrace pprTraceM pprTraceDebug pprTraceWith pprTraceItpprTraceException pprSTrace warnPprTracepprTraceUserWarning LayoutInfoExplicitBraces VirtualBraces NoLayoutInfo HsUniToken HsNormalTok HsUnicodeTokHsTokenHsTok LHsUniTokenLHsToken$fDataHsUniToken $fDataHsTokenStatestategetgetsputmodify evalState execStaterunState $fMonadState$fApplicativeState$fFunctorState zipWith3M zipWith3M_ zipWith4MzipWithAndUnzipM mapAndUnzip3M mapAndUnzip4M mapAndUnzip5M mapAccumLMmapSndM concatMapM mapMaybeManyMallMorMfoldlM_whenMunlessM filterOutM partitionMisLexConisLexVarisLexIdisLexSym isLexConId isLexVarId isLexConSym isLexVarSymokVarOccokConOccokTcOcc okVarIdOcc okVarSymOcc okConIdOcc okConSymOccOption FileOptionshowOpt $fEqOptionProfAuto NoProfAuto ProfAutoAll ProfAutoTopProfAutoExports ProfAutoCalls $fEqProfAuto$fEnumProfAuto AnyHpcUsageHpcInfo NoHpcInfohpcInfoTickCount hpcInfoHashhpcUsed emptyHpcInfo isHpcUsedstderrSupportsAnsiColors hiVersionmAX_TUPLE_SIZEmAX_CTUPLE_SIZE mAX_SUM_SIZEmAX_REDUCTION_DEPTHmAX_SOLVER_ITERATIONS wORD64_SIZE fLOAT_SIZE dOUBLE_SIZEtARGET_MAX_CHARExternalPluginSpecesp_lib esp_unit_id esp_moduleesp_argsparseExternalPluginSpec StaticPlugin LoadedPluginPluginsPlugin emptyPlugins ContainsHooks extractHooksHasHooksgetHooksHooks emptyHooks BackendNameNCGLLVMViaC JavaScript Interpreter NoBackend$fEqBackendName$fShowBackendNameMaybeUB NothingUBJustUB fromMaybeUB apMaybeUB fmapMaybeUBmaybeUB StringBufferbuflencurhGetStringBufferhGetStringBufferBlockhPutStringBufferappendStringBuffersstringToStringBufferstringBufferFromByteStringnextCharbidirectionalFormatCharscontainsBidirectionalFormatChar currentCharprevCharstepOn offsetBytesbyteDiffatEndfingerprintStringBufferatLinelexemeToStringlexemeToFastStringdecodePrevNCharsparseUnsignedInteger$fShowStringBufferPairAnd fromMaybe$fAlternativeMaybe$fApplicativeMaybe $fMonoidMaybe$fSemigroupMaybe$fEqPair $fOrdPair $fShowPair $fFunctorPair$fFoldablePair$fTraversablePair $fDataPair $fEqMaybe $fOrdMaybe $fShowMaybe$fFunctorMaybe$fFoldableMaybe$fTraversableMaybe $fDataMaybeStreamSYieldDoneEffectStreamrunStreamInternal runStreamyieldcollectconsumefromList mapAccumL_$fMonadStreamS$fApplicativeStreamS$fMonadIOStream $fMonadStream$fApplicativeStream$fFunctorStream$fFunctorStreamSSmallMutableArray SmallArray newSmallArraywriteSmallArrayfreezeSmallArrayunsafeFreezeSmallArrayindexSmallArray listToArrayMaybeErr SucceededFailed firstJust firstJusts firstJustsM expectJust whenIsJustorElse rightToMaybe liftMaybeT tryMaybeT isSuccessfailME$fMonadMaybeErr$fApplicativeMaybeErr$fFunctorMaybeErr insertListinsertListWith deleteList foldRightfoldRightWithKey UnfoldingOptsupdateCaseScalingupdateCaseThresholdupdateVeryAggressiveupdateDictDiscountupdateFunAppDiscountupdateUseThresholdupdateCreationThresholddefaultUnfoldingOptsCallerCcFilterparseCallerCcFilter UniqueMap UniqueSetIsMapKeyOfmapNullmapSize mapMember mapLookupmapFindWithDefaultmapEmpty mapSingleton mapInsert mapInsertWith mapDeletemapAlter mapAdjustmapUnionmapUnionWithKey mapDifferencemapIntersection mapIsSubmapOfmapMap mapMapWithKeymapFoldlmapFoldrmapFoldlWithKeymapFoldMapWithKey mapFiltermapFilterWithKeymapElemsmapKeys mapToList mapFromListmapFromListWithIsSetElemOfsetNullsetSize setMembersetEmpty setSingleton setInsert setDeletesetUnion setDifferencesetIntersection setIsSubsetOf setFiltersetFoldlsetFoldrsetElems setFromList setInsertList setDeleteList setUnions mapInsertList mapDeleteList mapUnions$fIsSetUniqueSet$fIsMapUniqueMap $fEqUniqueMap$fOrdUniqueMap$fShowUniqueMap$fFunctorUniqueMap$fFoldableUniqueMap$fTraversableUniqueMap $fEqUniqueSet$fOrdUniqueSet$fShowUniqueSet$fSemigroupUniqueSet$fMonoidUniqueSetBlockBlockCOBlockCCBlockOCBNilBMiddleBCatBSnocBConsMaybeOJustONothingO IndexedCOCO ExtensibilityOpenClosed isEmptyBlock emptyBlock blockCons blockSnoc blockJoinHead blockJoinTail blockJoin blockAppend firstNodelastNodeblockSplitHeadblockSplitTail blockSplit blockToList blockFromListreplaceFirstNodereplaceLastNodemapBlock mapBlock' mapBlock3'foldBlockNodesFfoldBlockNodesB3foldBlockNodesB$fFunctorMaybeOPrimOp expandToolDir findTopDir tryFindTopDir findToolDiris_ident is_symbolis_anyis_spaceis_loweris_upperis_digit is_alphanumhexDigit octDecDigit is_decdigit is_hexdigit is_octdigit is_bindigitWeights uncondWeightcondBranchWeight switchWeight callWeightlikelyCondWeightunlikelyCondWeightinfoTablePenalty backEdgeBonusdefaultWeights parseWeightsToJsonjsonJsonDocJSNullJSBoolJSIntJSStringJSArrayJSObject renderJSONescapeJsonString $fToJsonInt $fToJson[] UnitPprInfo unitPprIdunitPprPackageNameunitPprPackageVersionunitPprComponentName$fOutputableUnitPprInfo PsLocatedPsSpan psRealSpan psBufSpanPsLoc psRealLocpsBufPos RealLocatedLocated GenLocatedLUnhelpfulSpanReasonUnhelpfulNoLocationInfoUnhelpfulWiredInUnhelpfulInteractiveUnhelpfulGeneratedUnhelpfulOtherSrcSpan RealSrcSpan UnhelpfulSpanBufSpan bufSpanStart bufSpanEnd srcSpanFileSrcLoc RealSrcLoc UnhelpfulLocBufPosbufPosmkSrcLoc mkRealSrcLocleftmostColumn getBufPosnoSrcLocgeneratedSrcLocinteractiveSrcLocmkGeneralSrcLoc srcLocFile srcLocLine srcLocCol advanceSrcLoc advanceBufPos sortLocatedsortRealLocated lookupSrcLoc lookupSrcSpan removeBufSpan getBufSpan noSrcSpanwiredInSrcSpaninteractiveSrcSpangeneratedSrcSpanisGeneratedSrcSpan isNoSrcSpanmkGeneralSrcSpan srcLocSpanrealSrcLocSpan mkRealSrcSpan mkSrcSpancombineSrcSpanscombineRealSrcSpanssrcSpanFirstCharacter isGoodSrcSpan isOneLineSpanisZeroWidthSpan containsSpansrcSpanStartLinesrcSpanEndLinesrcSpanStartCol srcSpanEndCol srcSpanStart srcSpanEndrealSrcSpanStartrealSrcSpanEndsrcSpanFileName_maybesrcSpanToRealSrcSpanunhelpfulSpanFSpprUnhelpfulSpanReason pprUserSpanpprUserRealSpanunLocgetLocnoLocmkGeneralLocated combineLocsaddCLoc eqLocated cmpLocated cmpBufSpan pprLocatedpprLocatedAlwaysrightmost_smallestleftmost_smallestleftmost_largestspans isSubspanOfisRealSubspanOfgetRealSrcSpan unRealSrcSpanpsLocatedToLocated advancePsLocmkPsSpan psSpanStart psSpanEnd mkSrcSpanPs$fShowRealSrcLoc$fOutputableRealSrcLoc$fOutputableSrcLoc$fOutputableRealSrcSpan$fShowRealSrcSpan$fOrdRealSrcSpan$fToJsonRealSrcSpan$fDataRealSrcSpan$fSemigroupBufSpan$fOutputableUnhelpfulSpanReason$fOutputableSrcSpan$fNFDataSrcSpan$fToJsonSrcSpan $fDataSrcSpan$fOutputableGenLocated$fOutputableGenLocated0 $fEqPsSpan $fOrdPsSpan $fShowPsSpan $fDataPsSpan $fEqPsLoc $fOrdPsLoc $fShowPsLoc$fEqGenLocated$fOrdGenLocated$fShowGenLocated$fDataGenLocated$fFunctorGenLocated$fFoldableGenLocated$fTraversableGenLocated $fEqSrcSpan $fShowSrcSpan$fEqUnhelpfulSpanReason$fShowUnhelpfulSpanReason $fEqBufSpan $fOrdBufSpan $fShowBufSpan $fDataBufSpan$fEqRealSrcSpan $fEqSrcLoc $fShowSrcLoc $fEqBufPos $fOrdBufPos $fShowBufPos $fDataBufPos$fEqRealSrcLoc$fOrdRealSrcLoc IdDetailsIdInfo pprIdDetailsisCoVarDetails coVarDetails vanillaIdInfoRank ArbitraryRank LimitedRankMonoTypeRankZeroMonoTypeTyConArgMonoTypeSynArgMonoTypeConstraintMustBeMonoType$fOutputableRankOperatorWhitespaceOccurrence#OperatorWhitespaceOccurrence_Prefix#OperatorWhitespaceOccurrence_Suffix'OperatorWhitespaceOccurrence_TightInfixOperatorWhitespaceSymbol&OperatorWhitespaceSymbol_PrefixPercent%OperatorWhitespaceSymbol_PrefixDollar+OperatorWhitespaceSymbol_PrefixDollarDollarpprOperatorWhitespaceSymbolpFstpSndunPairtoPairswappLiftFstpLiftSnd$fOutputablePair $fMonoidPair$fSemigroupPair$fApplicativePairOrdListSnocOLConsOLNilOLnilOLunitOLsnocOLconsOLconcatOLheadOLlastOLisNilOLappOLfromOL fromOLReversemapOLmapOL'foldrOLfoldlOLtoOL reverseOL strictlyEqOL strictlyOrdOL$fTraversableOrdList$fFoldableOrdList$fMonoidOrdList$fSemigroupOrdList$fOutputableOrdList$fFunctorOrdListAssocgetNth unionListsOrd unionLists minusListassocDefaultUsingassoc assocDefault assocUsing assocMaybe hasNoDups equivClasses removeDupsnubOrdBy findDupsEqisInisn'tInBagemptyBagunitBag lengthBagelemBag unionManyBags unionBagsconsBagsnocBag isEmptyBagisSingletonBag filterBag filterBagMallBaganyBaganyBagM concatBag catBagMaybes partitionBagpartitionBagWithfoldBagmapBag concatMapBagconcatMapBagPair mapMaybeBagmapBagMmapBagM_ flatMapBagMflatMapBagPairMmapAndUnzipBagM mapAccumBagL mapAccumBagLM listToBag nonEmptyToBag bagToListunzipBag headMaybe $fMonoidBag$fSemigroupBag $fIsListBag $fDataBag$fOutputableBag $fFoldableBag $fFunctorBag$fTraversableBag Uniquable getUnique uNIQUE_BITSmkUniqueGrimilygetKey incrUnique stepUnique mkLocalUniqueminLocalUniquemaxLocalUnique newTagUniquemkUnique unpkUniqueisValidKnownKeyUniquehasKeyeqUniqueltUniquenonDetCmpUniquepprUniqueAlways $fShowUnique$fOutputableUnique $fEqUnique$fUniquableUnique$fUniquableModuleName$fUniquableInt$fUniquableFastString MonadUniquegetUniqueSupplyM getUniqueM getUniquesMUniqSM UniqSupplymkSplitUniqSupplyinitUniqSupply uniqFromMasksplitUniqSupplylistSplitUniqSupplyuniqFromSupplyuniqsFromSupplytakeUniqFromSupplyinitUsinitUs_$fMonadFixUniqSM$fMonadFailUniqSM$fApplicativeUniqSM $fMonadUniqSM$fFunctorUniqSM$fMonadUniqueUniqSM NonDetUniqFM getNonDetUniqFMemptyUFM isNullUFMunitUFMunitDirectlyUFMzipToUFM listToUFMlistToUFM_DirectlylistToIdentityUFM listToUFM_CaddToUFM addListToUFMaddListToUFM_DirectlyaddToUFM_Directly addToUFM_C addToUFM_Acc addToUFM_LalterUFMaddListToUFM_C adjustUFMadjustUFM_Directly delFromUFMdelListFromUFMdelListFromUFM_DirectlydelFromUFM_DirectlyplusUFM plusUFM_C plusUFM_CD plusUFM_CD2mergeUFMplusMaybeUFM_C plusUFMListsequenceUFMListminusUFM minusUFM_C intersectUFMintersectUFM_C disjointUFMfoldUFMmapUFM mapMaybeUFMmapUFM_Directly filterUFMfilterUFM_Directly partitionUFMsizeUFMelemUFMelemUFM_Directly lookupUFMlookupUFM_DirectlylookupWithDefaultUFMlookupWithDefaultUFM_DirectlyufmToSet_DirectlyanyUFMallUFM seqEltsUFM nonDetEltsUFM nonDetKeysUFMnonDetStrictFoldUFMnonDetStrictFoldUFM_DirectlyMnonDetStrictFoldUFM_DirectlynonDetUFMToList ufmToIntMapunsafeIntMapToUFMunsafeCastUFMKey equalKeysUFM pprUniqFMpprUFMpprUFMWithKeys pluralUFM$fOutputableUniqFM$fMonoidUniqFM$fSemigroupUniqFM$fTraversableNonDetUniqFM$fFoldableNonDetUniqFM$fFunctorNonDetUniqFM $fDataUniqFM $fEqUniqFM$fFunctorUniqFMUniqMap getUniqMap emptyUniqMap isNullUniqMap unitUniqMap listToUniqMaplistToUniqMap_C addToUniqMapaddListToUniqMapaddToUniqMap_CaddToUniqMap_AccaddToUniqMap_L alterUniqMapaddListToUniqMap_C adjustUniqMapdelFromUniqMapdelListFromUniqMap plusUniqMap plusUniqMap_CplusMaybeUniqMap_CplusUniqMapList minusUniqMapintersectUniqMapintersectUniqMap_CdisjointUniqMap mapUniqMap filterUniqMappartitionUniqMap sizeUniqMap elemUniqMap lookupUniqMaplookupWithDefaultUniqMap anyUniqMap allUniqMapnonDetEltsUniqMapnonDetFoldUniqMap$fOutputableUniqMap$fMonoidUniqMap$fSemigroupUniqMap $fDataUniqMap $fEqUniqMap$fFunctorUniqMapUniqDFM emptyUDFMunitUDFM addToUDFMaddToUDFM_DirectlyaddToUDFM_C_Directly addToUDFM_C addListToUDFM delFromUDFM plusUDFM_CplusUDFM lookupUDFMlookupUDFM_DirectlyelemUDFMfoldUDFMnonDetStrictFoldUDFMeltsUDFM filterUDFMfilterUDFM_DirectlyudfmRestrictKeysudfmRestrictKeysSet udfmToList equalKeysUDFM isNullUDFMsizeUDFM intersectUDFMudfmIntersectUFM disjointUDFMdisjointUdfmUfm minusUDFM udfmMinusUFM ufmMinusUDFM partitionUDFMdelListFromUDFM udfmToUfm listToUDFMlistToUDFM_Directly adjustUDFMadjustUDFM_Directly alterUDFMmapUDFM mapMaybeUDFManyUDFMallUDFMalwaysUnsafeUfmToUdfmunsafeCastUDFMKey pprUniqDFMpprUDFM $fEqTaggedVal$fOutputableUniqDFM$fTraversableUniqDFM$fFoldableUniqDFM $fDataUniqDFM$fFunctorUniqDFM$fDataTaggedVal$fFunctorTaggedVal$fFoldableTaggedVal$fTraversableTaggedValUniqSet emptyUniqSet unitUniqSet mkUniqSetaddOneToUniqSetaddListToUniqSetdelOneFromUniqSetdelOneFromUniqSet_DirectlydelListFromUniqSetdelListFromUniqSet_Directly unionUniqSetsunionManyUniqSets minusUniqSetintersectUniqSetsdisjointUniqSetsrestrictUniqSetToUFMuniqSetMinusUFMuniqSetMinusUDFMelementOfUniqSetelemUniqSet_Directly filterUniqSetfilterUniqSet_DirectlypartitionUniqSet uniqSetAny uniqSetAll sizeUniqSetisEmptyUniqSet lookupUniqSetlookupUniqSet_DirectlynonDetEltsUniqSetnonDetKeysUniqSetnonDetStrictFoldUniqSet mapUniqSet getUniqSetunsafeUFMToUniqSet pprUniqSet$fOutputableUniqSet $fEqUniqSet $fDataUniqSet$fSemigroupUniqSet$fMonoidUniqSetUniqSDFM emptyUSDFM lookupUSDFM equateUSDFM addToUSDFM traverseUSDFM$fOutputableShared$fOutputableUniqSDFMUniqDSet emptyUniqDSet unitUniqDSet mkUniqDSetaddOneToUniqDSetaddListToUniqDSetdelOneFromUniqDSetdelListFromUniqDSetunionUniqDSetsunionManyUniqDSets minusUniqDSetuniqDSetMinusUniqSetintersectUniqDSetsuniqDSetIntersectUniqSetnonDetStrictFoldUniqDSetelementOfUniqDSetfilterUniqDSet sizeUniqDSetisEmptyUniqDSetlookupUniqDSetuniqDSetToListpartitionUniqDSet mapUniqDSet getUniqDSet pprUniqDSet$fOutputableUniqDSet $fEqUniqDSet$fDataUniqDSetDFastStringEnv FastStringEnv emptyFsEnv unitFsEnv extendFsEnvextendFsEnvList lookupFsEnv alterFsEnvmkFsEnv elemFsEnv plusFsEnv plusFsEnv_C extendFsEnv_CmapFsEnvextendFsEnv_AccextendFsEnvList_C delFromFsEnvdelListFromFsEnv filterFsEnvlookupFsEnv_NF emptyDFsEnv dFsEnvEltsmkDFsEnv lookupDFsEnv NamedThing getOccNamegetNameName tidyNameOcc nameOccName setNameUnique nameUnique BinSrcSpan unBinSrcSpanBinSpan unBinSpan BinLocated unBinLocated SymbolTableFSTable DictionaryUserData ud_get_name ud_get_fsud_put_nonbinding_nameud_put_binding_name ud_put_fsFixedLengthEncoding unFixedLengthBinaryput_Bin BinHandleBinData dataHandle handleData getUserData setUserData withBinBufferunsafeUnpackBinBuffercastBinputAtgetAt openBinMemtellBinseekBin writeBinMem readBinMem readBinMemNfoldGetputBytegetByte putULEB128 getULEB128 putSLEB128 getSLEB128 forwardPut forwardPut_ forwardGetlazyPutlazyGet lazyPutMaybe lazyGetMaybe newReadState newWriteState noUserData putDictionary getDictionarygetDictFastString initFSTableputDictFastStringputFS$fNFDataBinData$fBinaryIntMap$fBinaryUnhelpfulSpanReason$fBinaryModuleName$fBinaryFingerprint$fBinaryFastString$fBinaryByteString $fBinaryBin $fBinaryRatio$fBinaryInteger$fBinaryDiffTime $fBinaryDay$fBinaryUTCTime$fBinaryEither $fBinaryMaybe$fBinaryMaybe0$fBinary(,,,,,,)$fBinary(,,,,,)$fBinary(,,,,) $fBinary(,,,) $fBinary(,,) $fBinary(,) $fBinaryArray$fBinaryNonEmpty $fBinarySet $fBinary[] $fBinaryInt $fBinaryChar $fBinaryBool $fBinary() $fBinaryInt64 $fBinaryInt32 $fBinaryInt16 $fBinaryInt8$fBinaryWord64$fBinaryWord32$fBinaryWord16 $fBinaryWord8$fBinaryFixedLengthEncoding$fBinaryFixedLengthEncoding0$fBinaryFixedLengthEncoding1$fBinaryFixedLengthEncoding2$fBinaryBinData$fBinaryBinSpan$fBinaryBinSrcSpan$fBinaryBinLocated$fEqFixedLengthEncoding$fOrdFixedLengthEncoding$fShowFixedLengthEncoding$fEqBin$fOrdBin $fShowBin $fBoundedBin$fBinaryLexicalFastString$fBinaryNonDetFastStringgetSomeTypeRep$fBinarySerialized$fBinaryTypeLitSort$fBinaryKindRep$fBinaryRuntimeRep$fBinaryVecElem$fBinaryVecCount$fBinaryTypeRep$fBinarySomeTypeRep $fBinaryTyConModuleWithIsBootModuleNameWithIsBoot GenWithIsBootGWIBgwib_mod gwib_isBootDefinite unDefinite DefUnitIdunitIdFSInstantiationsGenInstantiationsInstantiatedUnitGenInstantiatedUnit instUnitFS instUnitKeyinstUnitInstanceOf instUnitInsts instUnitHolesRealUnitVirtUnitHoleUnitUnitKeyIsUnitIdunitFSInstantiatedModuleHomeUnitModuleInstalledModule moduleUnitIdmkModule pprModulepprInstantiatedModule isHoleUnit stableUnitCmppprUnitunitFreeModuleHolesmoduleFreeHolesmkInstantiatedUnit mkVirtUnitmkInstantiatedUnitHashfsToUnit unitString stringToUnit mapGenUnitmapInstantiationstoUnitId virtualUnitIdunitIsDefinite unitIdStringstringToUnitId primUnitId bignumUnitId baseUnitId rtsUnitId thisGhcUnitIdinteractiveUnitIdthUnitIdthUnitprimUnit bignumUnitbaseUnitrtsUnit thisGhcUnitinteractiveUnit mainUnitIdmainUnitisInteractiveModulewiredInUnitIds$fBinaryIsBootInterface$fNFDataGenModule$fBinaryGenModule$fIsUnitIdUnitKey$fOutputableUnitId$fUniquableUnitId $fOrdUnitId $fEqUnitId$fBinaryUnitId$fIsUnitIdUnitId$fOutputableGenModule$fUniquableGenUnit $fEqGenUnit$fOrdGenInstantiatedUnit$fEqGenInstantiatedUnit$fIsUnitIdGenUnit$fBinaryGenInstantiatedUnit$fOutputableGenInstantiatedUnit$fOutputableGenModule0$fBinaryGenUnit $fShowGenUnit$fOutputableGenUnit$fNFDataGenUnit $fDataGenUnit $fOrdGenUnit$fOutputableGenModule1$fUniquableGenModule$fOutputableGenWithIsBoot$fBinaryGenWithIsBoot$fEqGenWithIsBoot$fOrdGenWithIsBoot$fShowGenWithIsBoot$fFunctorGenWithIsBoot$fFoldableGenWithIsBoot$fTraversableGenWithIsBoot$fFunctorDefinite $fEqDefinite $fOrdDefinite$fOutputableDefinite$fBinaryDefinite$fUniquableDefinite$fIsUnitIdDefinite $fDataUnitId $fEqGenModule$fOrdGenModule$fDataGenModule$fFunctorGenModule parseUnit parseUnitIdparseHoleyModule parseModSubst ModLocation ml_hs_file ml_hi_fileml_dyn_hi_file ml_obj_fileml_dyn_obj_file ml_hie_file addBootSuffixremoveBootSuffixaddBootSuffix_maybeaddBootSuffixLocn_maybeaddBootSuffixLocnaddBootSuffixLocnOut$fOutputableModLocation$fShowModLocationInstalledModuleEnvDModuleNameEnv ModuleNameEnv ModuleSet ModuleEnvfilterModuleEnvmapMaybeModuleEnv elemModuleEnvextendModuleEnvextendModuleEnvWithextendModuleEnvListextendModuleEnvList_CplusModuleEnv_CdelModuleEnvList delModuleEnv plusModuleEnvlookupModuleEnvlookupWithDefaultModuleEnv mapModuleEnvpartitionModuleEnv mkModuleEnvemptyModuleEnv moduleEnvKeys moduleEnvEltsmoduleEnvToList unitModuleEnvisEmptyModuleEnv mkModuleSetextendModuleSetextendModuleSetListemptyModuleSetisEmptyModuleSet moduleSetElts elemModuleSetintersectModuleSetminusModuleSet delModuleSetunionModuleSetunionManyModuleSets unitModuleSetemptyInstalledModuleEnvlookupInstalledModuleEnvextendInstalledModuleEnvfilterInstalledModuleEnvdelInstalledModuleEnvinstalledModuleEnvEltsmergeInstalledModuleEnvplusInstalledModuleEnv $fOrdNDModule$fOutputableNDModule$fOutputableModuleEnv$fOutputableInstalledModuleEnv $fEqNDModule HasModule getModuleContainsModule extractModulemoduleIsDefinitemoduleStableStringstableModuleCmpinstalledModuleEqgetModuleInstantiationgetUnitInstantiationsuninstantiateInstantiatedUnituninstantiateInstantiatedModule isHoleModule mkHoleModule BreakInfobreakInfo_modulebreakInfo_numberHomeUnit GenHomeUnitDefiniteHomeUnitIndefiniteHomeUnit homeUnitIdhomeUnitInstantiationshomeUnitInstanceOfhomeUnitInstanceOfMaybehomeUnitAsUnit homeUnitMapisHomeUnitIndefiniteisHomeUnitDefiniteisHomeUnitInstantiating isHomeUnit isHomeUnitId notHomeUnitIdisHomeUnitInstanceOf isHomeModuleisHomeInstalledModulenotHomeInstalledModulenotHomeInstalledModuleMaybe notHomeModulenotHomeModuleMaybe mkHomeModulemkHomeInstalledModulehomeModuleNameInstantiationhomeModuleInstantiationKnotVars NoKnotVars kv_domain kv_lookup emptyKnotVarsknotVarsFromModuleEnv knotVarElemslookupKnotVarsknotVarsWithout$fOutputableKnotVars$fFunctorKnotVars StringLiteralsl_stsl_fssl_tcFractionalExponentBaseBase2Base10 FractionalLitFLfl_textfl_negfl_signifl_exp fl_exp_base IntegralLitILil_textil_negil_value SourceText NoSourceTextpprWithSourceText mkIntegralLitnegateIntegralLitmkFractionalLitfractionalLitFromRationalrationalFromFractionalLitmkTHFractionalLitnegateFractionalLitintegralFractionalLitmkSourceFractionalLit$fBinarySourceText$fOutputableSourceText$fOutputableIntegralLit$fOrdIntegralLit$fEqIntegralLit$fOutputableFractionalLit$fOrdFractionalLit$fEqFractionalLit$fBinaryStringLiteral$fOutputableStringLiteral$fEqStringLiteral$fDataStringLiteral$fDataFractionalLit$fShowFractionalLit$fEqFractionalExponentBase$fOrdFractionalExponentBase$fDataFractionalExponentBase$fShowFractionalExponentBase$fDataIntegralLit$fShowIntegralLit$fDataSourceText$fShowSourceText$fEqSourceTextPkgQual NoPkgQualThisPkgOtherPkg RawPkgQual NoRawPkgQual$fOutputableRawPkgQual$fOutputablePkgQual $fDataPkgQual $fOrdPkgQual $fEqPkgQual$fDataRawPkgQual HscSource HsSrcFile HsBootFileHsigFilehscSourceToIsBoothscSourceString isHsBootOrSig isHsigFile$fBinaryHscSource $fEqHscSource$fOrdHscSource$fShowHscSourceIfaceTrustInfoSafeHaskellModeSf_None Sf_UnsafeSf_TrustworthySf_SafeSf_SafeInferred Sf_Ignore IsSafeImport getSafeMode setSafeModenoIfaceTrustInfo$fOutputableSafeHaskellMode$fShowSafeHaskellMode$fBinaryIfaceTrustInfo$fOutputableIfaceTrustInfo$fEqSafeHaskellModeCType CLabelString CCallConvCApiConv StdCallConv PrimCallConvJavaScriptCallConv CCallTarget StaticTarget DynamicTarget CCallSpec CExportSpec CExportStaticSafetyPlaySafePlayInterruptible PlayRisky ForeignCallCCallisSafeForeignCallplaySafeplayInterruptibleisDynamicTargetdefaultCCallConvccallConvToIntccallConvAttributepprCLabelStringisCLabelString$fBinarySafety$fOutputableSafety$fBinaryCCallConv$fOutputableCCallConv$fBinaryCCallTarget$fBinaryCCallSpec$fOutputableCCallSpec$fBinaryForeignCall$fOutputableForeignCall$fBinaryCExportSpec$fOutputableCExportSpec$fBinaryHeader$fOutputableHeader $fBinaryCType$fOutputableCType $fEqCType $fDataCType $fEqHeader $fDataHeader$fDataCExportSpec$fEqForeignCall $fEqCCallSpec$fEqCCallTarget$fDataCCallTarget $fEqCCallConv$fDataCCallConv$fEnumCCallConv $fEqSafety $fShowSafety $fDataSafety $fEnumSafety LexicalFixityPrefixInfixFixityDirectionInfixLInfixRInfixNFixity maxPrecedence minPrecedence defaultFixity negateFixity funTyFixity compareFixity$fBinaryFixityDirection$fOutputableFixityDirection$fBinaryFixity $fEqFixity$fOutputableFixity$fOutputableLexicalFixity$fDataLexicalFixity$fEqLexicalFixity $fDataFixity$fEqFixityDirection$fDataFixityDirectionCostCentreIndexunCostCentreIndexCostCentreStatenewCostCentreState getCCIndex$fEqCostCentreIndex$fOrdCostCentreIndex$fDataCostCentreIndex$fBinaryCostCentreIndexExtensibleFieldsgetExtensibleFields FieldNameemptyExtensibleFields readField readFieldWith writeFieldwriteFieldWith deleteField$fNFDataExtensibleFields$fBinaryExtensibleFieldsHsDocStringChunkLHsDocStringChunkHsDocStringDecoratorHsDocStringNextHsDocStringPreviousHsDocStringNamedHsDocStringGroup HsDocStringMultiLineDocStringNestedDocStringGeneratedDocString LHsDocStringpprWithDocStringmkHsDocStringChunk mkHsDocStringChunkUtf8ByteString unpackHDSCmkGeneratedHsDocStringisEmptyDocStringdocStringChunkspprHsDocStringpprHsDocStringsexactPrintHsDocStringrenderHsDocStringrenderHsDocStrings$fBinaryHsDocStringDecorator $fOutputableHsDocStringDecorator$fOutputableHsDocStringChunk$fBinaryHsDocStringChunk$fBinaryHsDocString$fOutputableHsDocString$fEqHsDocString$fDataHsDocString$fShowHsDocString$fEqHsDocStringChunk$fOrdHsDocStringChunk$fDataHsDocStringChunk$fShowHsDocStringChunk$fEqHsDocStringDecorator$fOrdHsDocStringDecorator$fShowHsDocStringDecorator$fDataHsDocStringDecoratorEnumSetmemberinsertdelete difference$fBinaryEnumSet$fSemigroupEnumSet$fMonoidEnumSet WarningFlagOpt_WarnDuplicateExportsOpt_WarnDuplicateConstraintsOpt_WarnRedundantConstraintsOpt_WarnHiShadowsOpt_WarnImplicitPreludeOpt_WarnIncompletePatternsOpt_WarnIncompleteUniPatterns Opt_WarnIncompletePatternsRecUpdOpt_WarnOverflowedLiteralsOpt_WarnEmptyEnumerationsOpt_WarnMissingFieldsOpt_WarnMissingImportListOpt_WarnMissingMethodsOpt_WarnMissingSignaturesOpt_WarnMissingLocalSignaturesOpt_WarnNameShadowingOpt_WarnOverlappingPatternsOpt_WarnTypeDefaultsOpt_WarnMonomorphismOpt_WarnUnusedTopBindsOpt_WarnUnusedLocalBindsOpt_WarnUnusedPatternBindsOpt_WarnUnusedImportsOpt_WarnUnusedMatchesOpt_WarnUnusedTypePatternsOpt_WarnUnusedForallsOpt_WarnUnusedRecordWildcardsOpt_WarnRedundantBangPatterns Opt_WarnRedundantRecordWildcardsOpt_WarnWarningsDeprecationsOpt_WarnDeprecatedFlags!Opt_WarnMissingMonadFailInstancesOpt_WarnSemigroupOpt_WarnDodgyExportsOpt_WarnDodgyImportsOpt_WarnOrphansOpt_WarnAutoOrphansOpt_WarnIdentities Opt_WarnTabsOpt_WarnUnrecognisedPragmasOpt_WarnMisplacedPragmasOpt_WarnDodgyForeignImportsOpt_WarnUnusedDoBindOpt_WarnWrongDoBind)Opt_WarnAlternativeLayoutRuleTransitionalOpt_WarnUnsafe Opt_WarnSafeOpt_WarnTrustworthySafeOpt_WarnMissedSpecsOpt_WarnAllMissedSpecs%Opt_WarnUnsupportedCallingConventionsOpt_WarnUnsupportedLlvmVersionOpt_WarnMissedExtraSharedLibOpt_WarnInlineRuleShadowingOpt_WarnTypedHolesOpt_WarnPartialTypeSignatures!Opt_WarnMissingExportedSignatures$Opt_WarnUntickedPromotedConstructorsOpt_WarnDerivingTypeableOpt_WarnDeferredTypeErrors#Opt_WarnDeferredOutOfScopeVariables"Opt_WarnNonCanonicalMonadInstances&Opt_WarnNonCanonicalMonadFailInstances#Opt_WarnNonCanonicalMonoidInstances'Opt_WarnMissingPatternSynonymSignatures Opt_WarnUnrecognisedWarningFlags$Opt_WarnSimplifiableClassConstraintsOpt_WarnCPPUndefOpt_WarnUnbangedStrictPatternsOpt_WarnMissingHomeModulesOpt_WarnPartialFieldsOpt_WarnMissingExportListOpt_WarnInaccessibleCodeOpt_WarnStarIsTypeOpt_WarnStarBinderOpt_WarnImplicitKindVarsOpt_WarnSpaceAfterBang!Opt_WarnMissingDerivingStrategies"Opt_WarnPrepositiveQualifiedModuleOpt_WarnUnusedPackagesOpt_WarnInferredSafeImportsOpt_WarnMissingSafeHaskellMode Opt_WarnCompatUnqualifiedImportsOpt_WarnDerivingDefaultsOpt_WarnInvalidHaddock%Opt_WarnOperatorWhitespaceExtConflictOpt_WarnOperatorWhitespaceOpt_WarnAmbiguousFieldsOpt_WarnImplicitLiftOpt_WarnMissingKindSignatures/Opt_WarnMissingExportedPatternSynonymSignatures Opt_WarnRedundantStrictnessFlagsOpt_WarnForallIdentifier,Opt_WarnUnicodeBidirectionalFormatCharactersOpt_WarnGADTMonoLocalBindsOpt_WarnTypeEqualityOutOfScope%Opt_WarnTypeEqualityRequiresOperators GeneralFlagOpt_DumpToFileOpt_DumpWithWaysOpt_D_dump_minimal_importsOpt_DoCoreLintingOpt_DoLinearCoreLintingOpt_DoStgLintingOpt_DoCmmLintingOpt_DoAsmLintingOpt_DoAnnotationLintingOpt_DoBoundsCheckingOpt_NoLlvmMangler Opt_FastLlvmOpt_NoTypeableBindsOpt_DistinctConstructorTablesOpt_InfoTableMapOpt_WarnIsErrorOpt_ShowWarnGroupsOpt_HideSourcePathsOpt_PrintExplicitForallsOpt_PrintExplicitKindsOpt_PrintExplicitCoercionsOpt_PrintExplicitRuntimeRepsOpt_PrintEqualityRelationsOpt_PrintAxiomIncompsOpt_PrintUnicodeSyntaxOpt_PrintExpandedSynonymsOpt_PrintPotentialInstances Opt_PrintRedundantPromotionTicksOpt_PrintTypecheckerElaboration Opt_CallArityOpt_ExitificationOpt_StrictnessOpt_LateDmdAnalOpt_KillAbsenceOpt_KillOneShotOpt_FullLaziness Opt_FloatInOpt_LocalFloatOutOpt_LocalFloatOutTopLevelOpt_LateSpecialiseOpt_SpecialiseOpt_SpecialiseAggressivelyOpt_CrossModuleSpecialiseOpt_InlineGenericsOpt_InlineGenericsAggressively Opt_StaticArgumentTransformationOpt_CSE Opt_StgCSEOpt_StgLiftLamsOpt_LiberateCaseOpt_SpecConstrOpt_SpecConstrKeenOpt_DoLambdaEtaExpansionOpt_IgnoreAssertsOpt_DoEtaReduction Opt_CaseMergeOpt_CaseFoldingOpt_UnboxStrictFieldsOpt_UnboxSmallStrictFieldsOpt_DictsCheapOpt_EnableRewriteRulesOpt_EnableThSpliceWarnings Opt_RegsGraphOpt_RegsIterativeOpt_PedanticBottoms Opt_LlvmTBAAOpt_LlvmFillUndefWithGarbageOpt_IrrefutableTuples Opt_CmmSinkOpt_CmmStaticPredOpt_CmmElimCommonBlocksOpt_CmmControlFlowOpt_AsmShortcuttingOpt_OmitYieldsOpt_FunToThunkOpt_DictsStrictOpt_DmdTxDictSelOpt_LoopificationOpt_CfgBlocklayoutOpt_WeightlessBlocklayout Opt_CprAnalOpt_WorkerWrapperOpt_WorkerWrapperUnliftOpt_SolveConstantDictsOpt_AlignmentSanitisationOpt_CatchNonexhaustiveCasesOpt_NumConstantFoldingOpt_CoreConstantFoldingOpt_FastPAPCallsOpt_DoTagInferenceChecksOpt_SimplPreInliningOpt_IgnoreInterfacePragmasOpt_OmitInterfacePragmasOpt_ExposeAllUnfoldingsOpt_WriteInterface Opt_WriteHieOpt_AutoSccsOnIndividualCafsOpt_ProfCountEntriesOpt_ProfLateInlineCcsOpt_ProfLateCcsOpt_ProfManualCcsOpt_PpOpt_ForceRecompOpt_IgnoreOptimChangesOpt_IgnoreHpcChangesOpt_ExcessPrecisionOpt_EagerBlackHoling Opt_NoHsMainOpt_SplitSections Opt_StgStatsOpt_HideAllPackagesOpt_HideAllPluginPackagesOpt_PrintBindResult Opt_HaddockOpt_HaddockOptionsOpt_BreakOnExceptionOpt_BreakOnErrorOpt_PrintEvldWithShowOpt_PrintBindContentsOpt_GenManifestOpt_EmbedManifestOpt_SharedImplibOpt_BuildingCabalPackageOpt_IgnoreDotGhciOpt_GhciSandboxOpt_GhciHistoryOpt_GhciLeakCheckOpt_ValidateHieOpt_LocalGhciHistoryOpt_NoItOpt_HelpfulErrorsOpt_DeferTypeErrorsOpt_DeferTypedHolesOpt_DeferOutOfScopeVariablesOpt_PICOpt_PIEOpt_PICExecutableOpt_ExternalDynamicRefs Opt_TickyOpt_Ticky_Allocd Opt_Ticky_LNEOpt_Ticky_Dyn_Thunk Opt_Ticky_Tag Opt_Ticky_AP Opt_RPathOpt_RelativeDynlibPathsOpt_CompactUnwindOpt_HpcOpt_FamAppCacheOpt_ExternalInterpreterOpt_OptimalApplicativeDoOpt_VersionMacrosOpt_WholeArchiveHsLibsOpt_SingleLibFolderOpt_ExposeInternalSymbols Opt_KeepCAFs Opt_KeepGoing Opt_ByteCodeOpt_ByteCodeAndObjectCode Opt_LinkRtsOpt_ErrorSpansOpt_DeferDiagnosticsOpt_DiagnosticsShowCaretOpt_PprCaseAsLetOpt_PprShowTicksOpt_ShowHoleConstraintsOpt_ShowValidHoleFitsOpt_SortValidHoleFitsOpt_SortBySizeHoleFitsOpt_SortBySubsumHoleFitsOpt_AbstractRefHoleFitsOpt_UnclutterValidHoleFitsOpt_ShowTypeAppOfHoleFitsOpt_ShowTypeAppVarsOfHoleFitsOpt_ShowDocsOfHoleFitsOpt_ShowTypeOfHoleFitsOpt_ShowProvOfHoleFitsOpt_ShowMatchesOfHoleFitsOpt_ShowLoadedModulesOpt_HexWordLiteralsOpt_SuppressCoercionsOpt_SuppressCoercionTypesOpt_SuppressVarKindsOpt_SuppressModulePrefixesOpt_SuppressTypeApplicationsOpt_SuppressIdInfoOpt_SuppressUnfoldingsOpt_SuppressTypeSignaturesOpt_SuppressUniquesOpt_SuppressStgExtsOpt_SuppressStgRepsOpt_SuppressTicksOpt_SuppressTimestampsOpt_SuppressCoreSizesOpt_ShowErrorContextOpt_AutoLinkPackagesOpt_ImplicitImportQualifiedOpt_KeepHscppFilesOpt_KeepHiDiffsOpt_KeepHcFilesOpt_KeepSFilesOpt_KeepTmpFilesOpt_KeepRawTokenStreamOpt_KeepLlvmFilesOpt_KeepHiFilesOpt_KeepOFilesOpt_BuildDynamicTooOpt_WriteIfSimplifiedCore Opt_UseBytecodeRatherThanObjectsOpt_DistrustAllPackagesOpt_PackageTrustOpt_PluginTrustworthyOpt_G_NoStateHackOpt_G_NoOptCoercionDumpFlagOpt_D_dump_cmmOpt_D_dump_cmm_from_stgOpt_D_dump_cmm_rawOpt_D_dump_cmm_verbose_by_procOpt_D_dump_cmm_verboseOpt_D_dump_cmm_cfgOpt_D_dump_cmm_cbeOpt_D_dump_cmm_switchOpt_D_dump_cmm_procOpt_D_dump_cmm_spOpt_D_dump_cmm_sinkOpt_D_dump_cmm_cafOpt_D_dump_cmm_procmapOpt_D_dump_cmm_splitOpt_D_dump_cmm_infoOpt_D_dump_cmm_cpsOpt_D_dump_cfg_weightsOpt_D_dump_asmOpt_D_dump_asm_nativeOpt_D_dump_asm_livenessOpt_D_dump_asm_regallocOpt_D_dump_asm_regalloc_stagesOpt_D_dump_asm_conflictsOpt_D_dump_asm_statsOpt_D_dump_c_backendOpt_D_dump_llvm Opt_D_dump_jsOpt_D_dump_core_statsOpt_D_dump_deriv Opt_D_dump_dsOpt_D_dump_ds_preoptOpt_D_dump_foreignOpt_D_dump_inliningsOpt_D_dump_verbose_inliningsOpt_D_dump_rule_firingsOpt_D_dump_rule_rewritesOpt_D_dump_simpl_traceOpt_D_dump_occur_analOpt_D_dump_parsedOpt_D_dump_parsed_ast Opt_D_dump_rnOpt_D_dump_rn_astOpt_D_dump_simplOpt_D_dump_simpl_iterationsOpt_D_dump_specOpt_D_dump_prepOpt_D_dump_late_ccOpt_D_dump_stg_from_coreOpt_D_dump_stg_unarisedOpt_D_dump_stg_cgOpt_D_dump_stg_tagsOpt_D_dump_stg_finalOpt_D_dump_call_arityOpt_D_dump_exitifyOpt_D_dump_stranalOpt_D_dump_str_signaturesOpt_D_dump_cpranalOpt_D_dump_cpr_signatures Opt_D_dump_tcOpt_D_dump_tc_astOpt_D_dump_hieOpt_D_dump_typesOpt_D_dump_rulesOpt_D_dump_cseOpt_D_dump_worker_wrapperOpt_D_dump_rn_traceOpt_D_dump_rn_statsOpt_D_dump_opt_cmmOpt_D_dump_simpl_statsOpt_D_dump_cs_traceOpt_D_dump_tc_traceOpt_D_dump_ec_traceOpt_D_dump_if_traceOpt_D_dump_splicesOpt_D_th_dec_fileOpt_D_dump_BCOsOpt_D_dump_tickedOpt_D_dump_rttiOpt_D_source_statsOpt_D_verbose_stg2stg Opt_D_dump_hiOpt_D_dump_hi_diffsOpt_D_dump_mod_cyclesOpt_D_dump_mod_mapOpt_D_dump_timings!Opt_D_dump_view_pattern_commoningOpt_D_verbose_core2coreOpt_D_dump_debugOpt_D_dump_jsonOpt_D_ppr_debugOpt_D_no_debug_outputOpt_D_dump_faststringsOpt_D_faststring_statsLanguage Haskell98 Haskell2010GHC2021getDumpFlagFromenabledIfVerboseoptimisationFlags warnFlagNames warningGroupswarningHierarchiessmallestWarningGroupsstandardWarnings minusWOpts minusWallOptsminusWeverythingOptsminusWcompatOptsunusedBindsFlags$fBinaryLanguage$fOutputableLanguage$fEqWarningFlag$fOrdWarningFlag$fShowWarningFlag$fEnumWarningFlag$fEqGeneralFlag$fShowGeneralFlag$fEnumGeneralFlag $fEqDumpFlag$fShowDumpFlag$fEnumDumpFlag $fEqLanguage$fEnumLanguage$fShowLanguage$fBoundedLanguage InvisTVBinderTcTyVarTyCoVarTyVar SpecificityVarBndrVar FunTyFlag ForAllTyFlagTcTyVarDetails MetaDetailsisConcreteTyVarisTyConableTyVar isMetaTyVarvanillaSkolemTvUnkpprTcTyVarDetailsCoreExprCoreBndrExpridNameNoFieldSelectorsNoDuplicateRecordFields FieldLabelflLabelflHasDuplicateRecordFieldsflHasFieldSelector flSelector FieldLabelEnvfieldSelectorOccNamefieldLabelPrintableNameflIsOverloaded$fUniquableFieldLabelString$fOutputableFieldLabelString!$fOutputableDuplicateRecordFields$fBinaryDuplicateRecordFields$fOutputableFieldSelectors$fBinaryFieldSelectors$fBinaryFieldLabel$fOutputableFieldLabel$fHasOccNameFieldLabel$fDataFieldLabel$fEqFieldLabel$fShowFieldSelectors$fEqFieldSelectors$fDataFieldSelectors$fShowDuplicateRecordFields$fEqDuplicateRecordFields$fDataDuplicateRecordFieldsEdgeTypeForwardCrossBackwardSelfLoopNode DigraphNode node_payloadnode_keynode_dependenciesGraphgraphFromEdgedVerticesOrdgraphFromEdgedVerticesUniq findCyclestronglyConnCompG$stronglyConnCompFromEdgedVerticesOrd%stronglyConnCompFromEdgedVerticesUniq%stronglyConnCompFromEdgedVerticesOrdR&stronglyConnCompFromEdgedVerticesUniqRtopologicalSortG reachableG outgoingG reachablesG allReachable hasVertexG verticesGedgesG transposeGemptyG classifyEdgesgraphFromVerticesAndAdjacency$fOutputableEdge$fOutputableNode$fOutputableGraph$fOutputableEdgeType$fEqTime $fOrdTime $fNumTime$fOutputableTime $fEqEdgeType $fOrdEdgeType TyConRepNameTyCon tyConNamemkPrelTyConRepNametyConRepName_maybeisUnboxedTupleTyCon isTupleTyConTyThingmkAnIdmkATyCon MCoercionN CoercionN ThetaTypeRuntimeRepTypePredTypeMultScaled MCoercionTyLitUnivCoProvenanceCoSelCoercion mkNakedFunTymkNakedTyConTy mkForAllTy scaledThingpprTyVarpprTyLitpprCopprKind debugPprTypepprTypeLPatPat PromotionFlag NotPromoted IsPromoted isPromotedDefaultingStrategyDefaultKindVarsNonStandardDefaultingNonStandardDefaultingStrategyDefaultNonStandardTyVars TryNotToDefaultNonStandardTyVarsTypeOrConstraintTypeLikeConstraintLikeLevityLiftedUnlifted TypeOrKind TypeLevel KindLevel IntWithInfUnfoldingSource VanillaSrc StableUserSrcStableSystemSrc CompulsorySrc InlineSpecInline InlinableNoInlineOpaqueNoUserInlinePrag RuleMatchInfoConLikeFunLike InlinePragmainl_src inl_inlineinl_satinl_actinl_rule Activation AlwaysActive ActiveBefore ActiveAfter FinalActive NeverActive CompilerPhase InitialPhasePhase FinalPhasePhaseNum SuccessFlag DefMethSpec VanillaDM GenericDM TailCallInfoAlwaysTailCalledNoTailCallInfo InsideLam IsInsideLam NotInsideLamInterestingCxt IsInterestingNotInteresting BranchCountOccInfoManyOccsIAmDeadOneOccIAmALoopBreakerocc_tail occ_in_lamocc_n_br occ_int_cxtocc_rules_onlyEPfromEPtoEPUnboxedTupleOrSumUnboxedTupleTypeUnboxedSumType TupleSort BoxedTuple UnboxedTupleConstraintTuplePprPrec OverlapMode NoOverlap Overlappable OverlappingOverlaps Incoherent OverlapFlag overlapMode isSafeOverlapOrigin FromSource GeneratedRecFlag Recursive NonRecursiveCbvMark MarkedCbv NotMarkedCbv TopLevelFlagTopLevel NotTopLevelRuleNameFunctionOrData IsFunctionIsDataSwapFlag NotSwapped IsSwapped OneShotInfo NoOneShotInfo OneShotLam AlignmentalignmentBytesConTagZ FullArgCount JoinArityRepArityArity LeftOrRightCLeftCRightpickLR fIRST_TAG mkAlignment alignmentOf noOneShotInfo isOneShotInfohasNoOneShotInfo worstOneShot bestOneShotflipSwap isSwappedunSwap pprRuleName isNotTopLevel isTopLevel isMarkedCbvisRecisNonRec boolToRecFlag isGeneratedsetOverlapModeMaybehasIncoherentFlaghasOverlappableFlaghasOverlappingFlagtopPrecsigPrecfunPrecopPrecstarPrecappPrecmaxPrec maybeParentupleSortBoxityboxityTupleSort tupleParens sumParenspprAlternativeunboxedTupleOrSumExtension oneBranch noOccInfo isNoOccInfo isManyOccs seqOccInfo tailCallInfozapOccTailCallInfoisAlwaysTailCalledstrongLoopBreakerweakLoopBreakerisWeakLoopBreakerisStrongLoopBreaker isDeadOccisOneOcc zapFragileOcc successIf succeededfailed beginPhase activeAfter nextPhase laterPhaseactivateAfterInitialactivateDuringFinalisActiveactiveInFinalPhase isNeverActiveisAlwaysActive competesWith isConLike isFunLikenoUserInlineSpecdefaultInlinePragmaalwaysInlinePragmaneverInlinePragmaalwaysInlineConLikePragmainlinePragmaSpecinlinePragmaSourceinlineSpecSourcedfunInlinePragmaisDefaultInlinePragmaisInlinePragmaisInlinablePragmaisNoInlinePragmaisAnyInlinePragmaisOpaquePragmainlinePragmaSatinlinePragmaActivationinlinePragmaRuleMatchInfosetInlinePragmaActivationsetInlinePragmaRuleMatchInfoinlinePragmaName pprInlinepprInlineDebugisStableUserSourceisStableSystemSourceisCompulsorySourceisStableSourceinfinity intGtLimit subWithInftreatZeroAsInf mkIntWithInf isTypeLevel isKindLevel mightBeLiftedmightBeUnlifteddefaultNonStandardTyVars$fBinaryBoxity$fOutputableBoxity$fBinaryPromotionFlag$fOutputablePromotionFlag$fBinaryLeftOrRight$fOutputableLeftOrRight$fOutputablePenvAlignment$fOutputableAlignment$fOutputableOneShotInfo$fOutputableSwapFlag$fBinaryFunctionOrData$fOutputableFunctionOrData$fOutputableTopLevelFlag$fBinaryCbvMark$fOutputableCbvMark$fBinaryRecFlag$fOutputableRecFlag$fOutputableOrigin$fBinaryOverlapMode$fOutputableOverlapMode$fBinaryOverlapFlag$fOutputableOverlapFlag$fBinaryTupleSort$fOutputableTupleSort$fOutputableUnboxedTupleOrSum$fMonoidInterestingCxt$fSemigroupInterestingCxt$fMonoidInsideLam$fSemigroupInsideLam$fOutputableTailCallInfo$fOutputableOccInfo$fOutputableDefMethSpec$fOutputableSuccessFlag$fSemigroupSuccessFlag$fOutputableCompilerPhase$fBinaryActivation$fOutputableActivation$fBinaryRuleMatchInfo$fOutputableRuleMatchInfo$fBinaryInlineSpec$fOutputableInlineSpec$fBinaryInlinePragma$fOutputableInlinePragma$fOutputableUnfoldingSource$fBinaryUnfoldingSource$fNumIntWithInf$fOutputableIntWithInf$fOrdIntWithInf$fOutputableTypeOrKind$fOutputableLevity)$fOutputableNonStandardDefaultingStrategy$fOutputableDefaultingStrategy$fEqTypeOrConstraint$fOrdTypeOrConstraint$fDataTypeOrConstraint $fEqLevity$fEqTypeOrKind$fEqIntWithInf$fEqInlinePragma$fDataInlinePragma$fEqInlineSpec$fDataInlineSpec$fShowInlineSpec$fEqRuleMatchInfo$fDataRuleMatchInfo$fShowRuleMatchInfo$fEqActivation$fDataActivation$fEqCompilerPhase $fEqOccInfo$fEqTailCallInfo $fEqInsideLam$fEqInterestingCxt$fEqUnboxedTupleOrSum $fEqTupleSort$fDataTupleSort $fEqPprPrec $fOrdPprPrec $fShowPprPrec$fEqOverlapFlag$fDataOverlapFlag$fEqOverlapMode$fDataOverlapMode $fEqOrigin $fDataOrigin $fEqRecFlag $fDataRecFlag $fEqCbvMark$fDataTopLevelFlag$fEqFunctionOrData$fOrdFunctionOrData$fDataFunctionOrData$fEqOneShotInfo $fEqAlignment$fOrdAlignment$fEqLeftOrRight$fDataLeftOrRight PlatformMisc!platformMisc_targetPlatformStringplatformMisc_ghcWithInterpreterplatformMisc_libFFIplatformMisc_llvmTarget BmiVersionBMI1BMI2 SseVersionSSE1SSE2SSE3SSE4SSE42PlatformWordSizePW4PW8PlatformplatformArchOSplatformWordSizeplatformByteOrderplatformUnregisterisedplatformHasGnuNonexecStackplatformHasIdentDirective platformHasSubsectionsViaSymbolsplatformIsCrossCompilingplatformLeadingUnderscoreplatformTablesNextToCodeplatformHasLibmplatform_constants wordAlignment isSseEnabled isSse2EnabledplatformConstantsgenericPlatformplatformWordSizeInBytesplatformWordSizeInBits platformArch platformOSisARM target32Bit osElfTarget osMachOTargetplatformUsesFrameworksosSubsectionsViaSymbolsplatformMinIntplatformMaxIntplatformMaxWordplatformInIntRangeplatformInWordRangeplatformCConvNeedsExtensionplatformSONameplatformHsSOName platformSOExtlookupPlatformConstants$fReadPlatformWordSize$fShowPlatformWordSize$fEqBmiVersion$fOrdBmiVersion$fEqSseVersion$fOrdSseVersion$fReadPlatform$fShowPlatform $fEqPlatform $fOrdPlatform$fEqPlatformWordSize$fOrdPlatformWordSizeGhcNameVersionghcNameVersion_programNameghcNameVersion_projectVersion FileSettingsfileSettings_ghcUsagePathfileSettings_ghciUsagePathfileSettings_toolDirfileSettings_topDir"fileSettings_globalPackageDatabase ToolSettings$toolSettings_ldSupportsCompactUnwindtoolSettings_ldSupportsFilelisttoolSettings_ldIsGnuLdtoolSettings_ccSupportsNoPietoolSettings_useInplaceMinGWtoolSettings_arSupportsDashLtoolSettings_pgm_LtoolSettings_pgm_PtoolSettings_pgm_FtoolSettings_pgm_ctoolSettings_pgm_cxxtoolSettings_pgm_atoolSettings_pgm_ltoolSettings_pgm_lmtoolSettings_pgm_dlltoolSettings_pgm_TtoolSettings_pgm_windrestoolSettings_pgm_artoolSettings_pgm_otool"toolSettings_pgm_install_name_tooltoolSettings_pgm_ranlibtoolSettings_pgm_lotoolSettings_pgm_lctoolSettings_pgm_lcctoolSettings_pgm_itoolSettings_opt_LtoolSettings_opt_PtoolSettings_opt_P_fingerprinttoolSettings_opt_FtoolSettings_opt_ctoolSettings_opt_cxxtoolSettings_opt_atoolSettings_opt_ltoolSettings_opt_lmtoolSettings_opt_windrestoolSettings_opt_lotoolSettings_opt_lctoolSettings_opt_lcctoolSettings_opt_itoolSettings_extraGccViaCFlagsSettingssGhcNameVersion sFileSettingssTargetPlatform sToolSettings sPlatformMisc sRawSettings dynLibSuffix sProgramNamesProjectVersion sGhcUsagePathsGhciUsagePathsToolDirsTopDirsGlobalPackageDatabasePathsLdSupportsCompactUnwindsLdSupportsFilelist sLdIsGnuLdsGccSupportsNoPiesUseInplaceMinGWsArSupportsDashLsPgm_LsPgm_PsPgm_FsPgm_csPgm_cxxsPgm_asPgm_lsPgm_lmsPgm_dllsPgm_T sPgm_windressPgm_ar sPgm_otoolsPgm_install_name_tool sPgm_ranlibsPgm_losPgm_lcsPgm_lccsPgm_isOpt_LsOpt_PsOpt_P_fingerprintsOpt_FsOpt_csOpt_cxxsOpt_asOpt_lsOpt_lm sOpt_windressOpt_losOpt_lcsOpt_lccsOpt_isExtraGccViaCFlagssTargetPlatformStringsGhcWithInterpretersLibFFIWaysWay WayCustom WayThreadedWayDebugWayProfWayDynhasWay hasNotWayaddWay removeWayallowed_combinationwaysTag waysBuildTagwayTag wayRTSOnlyfullWaysrtsWayswayDescwayGeneralFlagswayUnsetGeneralFlagswayOptcwayOptlwayOptPhostIsProfiled hostIsDynamichostIsThreadedhostIsDebugged hostIsTracinghostWays hostFullWays$fEqWay$fOrdWay $fShowWay $fReadWay PackageName unPackageName PackageIdUnitInfo UnitKeyInfo GenUnitInfo mkUnitKeyInfo mapUnitInfounitPackageIdStringunitPackageNameString pprUnitInfomkUnit mkUnitPprInfocollectIncludeDirscollectExtraCcOptscollectLibraryDirscollectFrameworkscollectFrameworksDirs unitHsLibs$fOutputablePackageId$fUniquablePackageId$fOutputablePackageName$fUniquablePackageName$fEqPackageName $fEqPackageIdProfileprofilePlatform profileWaysprofileConstantsprofileIsProfilingprofileWordSizeInBytesprofileBuildTag $fEqProfile $fOrdProfile $fShowProfile $fReadProfileArgDescrArgSpecArgGen ArgUnknownLivenessConstrDescriptionClosureTypeInfoConstrFunThunk ThunkSelector BlackHole IndStaticIsStaticSMRepHeapRep ArrayPtrsRepSmallArrayPtrsRep ArrayWordsRepStackRepRTSRep StgHalfWordStgWordWordOffByteOffroundUpToWords roundUpTo wordsToBytesbytesToWordsRoundUp fromStgWord toStgWordfromStgHalfWord toStgHalfWord halfWordSizehalfWordSizeInBits mkHeapRepmkRTSRep mkStackRep blackHoleRep indStaticRep arrPtrsRepsmallArrPtrsRep arrWordsRep isStaticRep isStackRepisConRep isThunkRepisFunRepisStaticNoCafCon fixedHdrSize fixedHdrSizeW profHdrSizearrWordsHdrSizearrWordsHdrSizeWarrPtrsHdrSizearrPtrsHdrSizeWsmallArrPtrsHdrSizesmallArrPtrsHdrSizeW thunkHdrSizehdrSizehdrSizeW nonHdrSize nonHdrSizeWheapClosureSizeWcard cardRoundUpcardTableSizeBcardTableSizeWrtsClosureType rET_SMALLrET_BIGaRG_GEN aRG_GEN_BIG$fOutputableStgWord$fOutputableStgHalfWord$fOutputableArgDescr$fOutputableClosureTypeInfo$fOutputableSMRep $fEqSMRep$fEqClosureTypeInfo $fEqArgDescr$fEqStgHalfWord $fEqStgWord $fBitsStgWord exeFileNameUnlitHsPpHscCcxxCcCobjcCobjcxxHCcAsLlvmOptLlvmLlc LlvmMangleCmmCppCmm MergeForeignJsStopLn StopPhaseStopPreprocessStopCStopAsNoStopstopPhaseToPhaseisStopLneqPhase happensBefore startPhase phaseInputExtisHaskellishSuffixisBackpackishSuffixisHaskellSigSuffixisHaskellSrcSuffix isCishSuffixisHaskellUserSrcSuffixisObjectSuffixisDynLibSuffixisSourceSuffixisHaskellishTargetisHaskellishFilenameisHaskellSrcFilenameisCishFilenameisHaskellUserSrcFilenameisSourceFilenameisHaskellSigFilenameisObjectFilenameisDynLibFilenamephaseForeignLanguage$fOutputablePhase $fEqPhase $fShowPhaseRuleOpts roPlatformroNumConstantFoldingroExcessRationalPrecision roBignumRules LlvmVersion llvmVersionNE LlvmConfig llvmTargets llvmPasses LlvmTarget lDataLayoutlCPU lAttributes LlvmCgConfigllvmCgPlatform llvmCgContextllvmCgFillUndefWithGarbagellvmCgSplitSectionllvmCgBmiVersionllvmCgLlvmVersion llvmCgDoWarnllvmCgLlvmTargetllvmCgLlvmConfiginitLlvmConfigparseLlvmVersionsupportedLlvmVersionLowerBoundsupportedLlvmVersionUpperBoundllvmVersionSupportedllvmVersionStrllvmVersionList$fEqLlvmVersion$fOrdLlvmVersionLlvmConfigCacheinitLlvmConfigCachereadLlvmConfigCacheDoAlignSanitisation ForeignHintNoHintAddrHint SignedHintLengthWidthW8W16W32W64W128W256W512CmmType cmmEqTypecmmEqType_ignoring_ptrhood typeWidthcmmBitscmmFloatb8b16b32b64b128b256b512f32f64bWord bHalfWordgcWordcInt isFloatType isGcPtrType isBitsType isWordAnyisWord64isWord32 isFloat32 isFloat64 wordWidth halfWordWidth halfWordMask cIntWidth widthInBits widthInByteswidthFromBytes widthInLognarrowUnarrowSvecvec2vec4vec8vec16vec2f64vec2b64vec4f32vec4b32vec8b16vec16b8cmmVec vecLength vecElemType isVecTyperEP_CostCentreStack_mem_allocrEP_CostCentreStack_scc_countrEP_StgEntCounter_allocsrEP_StgEntCounter_allocd$fOutputableWidth$fOutputableCmmCat$fOutputableCmmType$fOutputableForeignHint$fEqForeignHint $fShowCmmType $fEqCmmCat $fShowCmmCat $fEqWidth $fOrdWidth $fShowWidth GlobalReg VanillaRegFloatReg DoubleRegLongRegXmmRegYmmRegZmmRegSpSpLimHpHpLimCCCS CurrentTSOCurrentNurseryHpAllocEagerBlackholeInfoGCEnter1GCFunBaseRegMachSpUnwindReturnReg PicBaseRegVGcPtr VNonGcPtrLocalRegCmmRegCmmLocal CmmGlobal cmmRegType cmmRegWidth localRegType pprGlobalRegbaseRegspReghpReghpLimRegspLimRegnodeReg currentTSORegcurrentNurseryReg hpAllocRegcccsRegnode globalRegTypeisArgReg$fUniquableLocalReg $fOrdLocalReg$fOutputableLocalReg $fEqLocalReg$fOutputablePenvGlobalReg$fOutputableGlobalReg$fOrdGlobalReg $fEqGlobalReg$fOutputableCmmReg $fEqCmmReg $fOrdCmmReg $fShowCmmReg$fShowGlobalReg $fEqVGcPtr $fShowVGcPtr$fShowLocalReg AtomicMachOpAMO_AddAMO_SubAMO_AndAMO_NandAMO_OrAMO_Xor CallishMachOp MO_F64_Pwr MO_F64_Sin MO_F64_Cos MO_F64_Tan MO_F64_Sinh MO_F64_Cosh MO_F64_Tanh MO_F64_Asin MO_F64_Acos MO_F64_Atan MO_F64_Asinh MO_F64_Acosh MO_F64_Atanh MO_F64_Log MO_F64_Log1P MO_F64_Exp MO_F64_ExpM1 MO_F64_Fabs MO_F64_Sqrt MO_F32_Pwr MO_F32_Sin MO_F32_Cos MO_F32_Tan MO_F32_Sinh MO_F32_Cosh MO_F32_Tanh MO_F32_Asin MO_F32_Acos MO_F32_Atan MO_F32_Asinh MO_F32_Acosh MO_F32_Atanh MO_F32_Log MO_F32_Log1P MO_F32_Exp MO_F32_ExpM1 MO_F32_Fabs MO_F32_Sqrt MO_I64_ToI MO_I64_FromI MO_W64_ToW MO_W64_FromW MO_x64_Neg MO_x64_Add MO_x64_Sub MO_x64_Mul MO_I64_Quot MO_I64_Rem MO_W64_Quot MO_W64_Rem MO_x64_And MO_x64_Or MO_x64_Xor MO_x64_Not MO_x64_Shl MO_I64_Shr MO_W64_Shr MO_x64_Eq MO_x64_Ne MO_I64_Ge MO_I64_Gt MO_I64_Le MO_I64_Lt MO_W64_Ge MO_W64_Gt MO_W64_Le MO_W64_Lt MO_UF_Conv MO_S_Mul2 MO_S_QuotRem MO_U_QuotRem MO_U_QuotRem2MO_Add2 MO_AddWordC MO_SubWordC MO_AddIntC MO_SubIntC MO_U_Mul2MO_ReadBarrierMO_WriteBarrierMO_TouchMO_Prefetch_Data MO_Memcpy MO_Memset MO_Memmove MO_Memcmp MO_PopCntMO_PdepMO_PextMO_ClzMO_CtzMO_BSwapMO_BRev MO_AtomicRMW MO_AtomicReadMO_AtomicWrite MO_CmpxchgMO_XchgMO_SuspendThreadMO_ResumeThreadMachOpMO_AddMO_SubMO_EqMO_NeMO_MulMO_S_MulMayOflo MO_S_QuotMO_S_RemMO_S_Neg MO_U_QuotMO_U_RemMO_S_GeMO_S_LeMO_S_GtMO_S_LtMO_U_GeMO_U_LeMO_U_GtMO_U_LtMO_F_AddMO_F_SubMO_F_NegMO_F_Mul MO_F_QuotMO_F_EqMO_F_NeMO_F_GeMO_F_LeMO_F_GtMO_F_LtMO_AndMO_OrMO_XorMO_NotMO_ShlMO_U_ShrMO_S_Shr MO_SF_Conv MO_FS_Conv MO_SS_Conv MO_UU_Conv MO_XX_Conv MO_FF_Conv MO_V_Insert MO_V_ExtractMO_V_AddMO_V_SubMO_V_Mul MO_VS_Quot MO_VS_Rem MO_VS_Neg MO_VU_Quot MO_VU_Rem MO_VF_Insert MO_VF_Extract MO_VF_Add MO_VF_Sub MO_VF_Neg MO_VF_Mul MO_VF_QuotMO_AlignmentCheck pprMachOp mo_wordAdd mo_wordSub mo_wordEq mo_wordNe mo_wordMul mo_wordSQuot mo_wordSRem mo_wordSNeg mo_wordUQuot mo_wordURem mo_wordSGe mo_wordSLe mo_wordSGt mo_wordSLt mo_wordUGe mo_wordULe mo_wordUGt mo_wordULt mo_wordAnd mo_wordOr mo_wordXor mo_wordNot mo_wordShl mo_wordSShr mo_wordUShr mo_u_8To32 mo_s_8To32 mo_u_16To32 mo_s_16To32 mo_u_8ToWord mo_s_8ToWord mo_u_16ToWord mo_s_16ToWord mo_s_32ToWord mo_u_32ToWord mo_WordTo8 mo_WordTo16 mo_WordTo32 mo_WordTo64mo_32To8 mo_32To16isCommutableMachOpisAssociativeMachOpisComparisonMachOpmaybeIntComparisonisFloatComparisonmaybeInvertComparisonmachOpResultType machOpArgRepspprCallishMachOpcallishMachOpHintsmachOpMemcpyishAlign$fEqCallishMachOp$fShowCallishMachOp$fEqAtomicMachOp$fShowAtomicMachOp $fEqMachOp $fShowMachOpCLabel pprCLabel ForeignStubsNoStubsCHeader getCHeaderCStubgetCStubgetInitializers getFinalizersinitializerCStubfinalizerCStub appendStubC$fSemigroupCStub $fMonoidCStub$fSemigroupCHeader$fMonoidCHeaderEqSpec DataConRepDataConpromoteDataCon dataConWrapId isTypeDataConisUnboxedSumDataCondataConFullSigdataConStupidThetadataConInstOrigArgTysdataConFieldLabelsdataConSourceAritydataConUserTyVarBindersdataConUserTyVarsdataConExTyCoVars dataConTyCon dataConWorkId dataConNamesumTyCon sumDataConcTupleSelIdNamecTupleTyConNamecTupleDataConName cTupleDataCon tupleTyCon tupleDataConpromotedTupleDataCon integerTy naturalTytupleTyConName multMulTyConunrestrictedFunTyConmanyDataConTyCon manyDataConTyoneDataConTyCon oneDataConTymultiplicityTymultiplicityTyConunboxedTupleKind anyTypeOfKindint8ElemRepDataConTyint16ElemRepDataConTyint32ElemRepDataConTyint64ElemRepDataConTyword8ElemRepDataConTyword16ElemRepDataConTyword32ElemRepDataConTyword64ElemRepDataConTyfloatElemRepDataConTydoubleElemRepDataConTy vec2DataConTy vec4DataConTy vec8DataConTyvec16DataConTyvec32DataConTyvec64DataConTyintRepDataConTyint8RepDataConTyint16RepDataConTyint32RepDataConTyint64RepDataConTywordRepDataConTyword8RepDataConTyword16RepDataConTyword32RepDataConTyword64RepDataConTyaddrRepDataConTyfloatRepDataConTydoubleRepDataConTyliftedDataConTyunliftedDataConTy liftedRepTy unliftedRepTy zeroBitRepTyvecRepDataConTyContupleRepDataConTyConboxedRepDataConTyConliftedDataConTyCon runtimeRepTylevityTyruntimeRepTyCon levityTyCon vecCountTyCon vecElemTyConconstraintKindliftedRepTyConunliftedRepTyConliftedTypeKindTyConunliftedTypeKindTyConliftedTypeKindunliftedTypeKindzeroBitTypeKindconstraintKindTyConNameliftedTypeKindTyConNameunitTycoercibleTyConheqTyConmkBoxedTupleTycharTytypeSymbolKind listTyConknownUniqueNamemkSumTyConUniquemkSumDataConUniquemkCTupleTyConUniquemkCTupleDataConUniquemkCTupleSelIdUniquemkTupleDataConUniquemkTupleTyConUniquemkAlphaTyVarUniquemkPreludeClassUniquemkPrimOpIdUniquemkPrimOpWrapperUniquemkPreludeMiscIdUniquemkBuiltinUniquemkPseudoUniqueEmkRegSingleUniquemkRegSubUniquemkRegPairUniquemkRegClassUniquemkCostCentreUniquemkVarOccUniquemkDataOccUnique mkTvOccUnique mkTcOccUniqueinitExitJoinUniquemkPreludeTyConUniquetyConRepNameUniquemkPreludeDataConUniquedataConWorkerUniquedataConTyRepNameUniquemkBoxingTyConUniqueboxingDataConUnique TidyOccEnvOccSetOccEnv occNameSpace NameSpacetcNameclsName tcClsNamedataName srcDataNametvNamevarNameisDataConNameSpaceisTcClsNameSpace isTvNameSpaceisVarNameSpaceisValNameSpace pprNameSpacepprNonVarNameSpacepprNameSpaceBrief pprOccName mkOccName mkOccNameFSmkVarOcc mkDataOcc mkDataOccFS mkTyVarOcc mkTyVarOccFSmkTcOcc mkTcOccFSmkClsOcc mkClsOccFS demoteOccNamepromoteOccName emptyOccEnv unitOccEnv extendOccEnvextendOccEnvList lookupOccEnvmkOccEnv elemOccEnv foldOccEnvnonDetOccEnvElts plusOccEnv plusOccEnv_CextendOccEnv_CextendOccEnv_Acc mapOccEnv mkOccEnv_C delFromOccEnvdelListFromOccEnv filterOccEnv alterOccEnv minusOccEnv minusOccEnv_C pprOccEnv emptyOccSet unitOccSetmkOccSet extendOccSetextendOccSetList unionOccSetsunionManyOccSets minusOccSet elemOccSet isEmptyOccSetintersectOccSet filterOccSet occSetToEnv occNameStringsetOccNameSpaceisVarOccisTvOccisTcOccisValOcc isDataOcc isDataSymOccisSymOcc parenSymOccstartsWithUnderscoreisDerivedOccNameisDefaultMethodOccisTypeableBindOccmkDataConWrapperOcc mkWorkerOcc mkMatcherOcc mkBuilderOccmkDefaultMethodOccmkClassOpAuxOcc mkDictOccmkIPOcc mkSpecOccmkForeignExportOcc mkRepEqOccmkClassDataConOcc mkNewTyCoOcc mkInstTyCoOcc mkEqPredCoOcc mkCon2TagOcc mkTag2ConOcc mkMaxTagOcc mkDataTOcc mkDataCOcc mkTyConRepOccmkGenRmkGen1RmkDataConWorkerOccmkSuperDictAuxOccmkSuperDictSelOcc mkLocalOcc mkInstTyTcOcc mkDFunOcc mkMethodOccemptyTidyOccEnvinitTidyOccEnvdelTidyOccEnvListavoidClashesOccEnv tidyOccName$fBinaryNameSpace$fBinaryOccName$fUniquableOccName$fOutputableBndrOccName$fOutputableOccName$fNFDataOccName $fDataOccName $fOrdOccName $fEqOccName$fHasOccNameOccName$fOutputableOccEnv $fDataOccEnv $fEqNameSpace$fOrdNameSpace BuiltInSyntax UserSyntax nameNameSpace nameSrcLoc nameSrcSpan isWiredInName isWiredInwiredInNameTyThing_maybeisBuiltInSyntaxisExternalNameisInternalName isHoleName isDynLinkName nameModulenameModule_maybe namePun_maybenameIsLocalOrFromnameIsExternalOrFromnameIsHomePackagenameIsHomePackageImportnameIsFromExternalPackage isTyVarName isTyConName isDataConName isValName isVarName isSystemNamemkInternalNamemkClonedInternalNamemkDerivedInternalNamemkExternalName mkWiredInName mkSystemNamemkSystemNameAtmkSystemVarName mkSysTvName mkFCallName setNameLoc localiseName stableNameCmppprName pprFullName pprTickyNamepprNameUnqualifiedpprModulePrefix pprDefinedAtpprNameDefnLocnameStableString getSrcLoc getSrcSpan getOccStringgetOccFS pprInfixName pprPrefixName$fNFDataNameSort$fOutputableNameSort$fOutputableBndrName$fOutputableName $fBinaryName $fDataName$fUniquableName $fOrdName$fEqName$fHasOccNameName $fNFDataName$fNamedThingGenLocated$fNamedThingName PiTyVarBinder PiTyBinderNamedAnon ReqTVBinder TyVarBinder ReqTyBinder InvisTyBinderForAllTyBinderBndrFTF_T_TFTF_T_CFTF_C_TFTF_C_C InferredSpec SpecifiedSpec InvisibleRequiredvarTypevarMultOutIdOutCoVarOutTyVarOutVarInIdInCoVarInTyVarInVarJoinIdEqVarIpIdDictIdDFunIdEvVarEvIdKindVarTypeVarTKVarNcIdCoVar SpecifiedInferred nonDetCmpVar varUnique varMultMaybe setVarUnique setVarName setVarType updateVarTypeupdateVarTypeMisVisibleForAllTyFlagisInvisibleForAllTyFlagisInferredForAllTyFlag mkFunTyFlagvisArgvisArgTypeLikevisArgConstraintLikeinvisArginvisArgTypeLikeinvisArgConstraintLikeisInvisibleFunArgisVisibleFunArgisFUNArgfunTyFlagResultTypeOrConstrainttyVarSpecToBinderstyVarSpecToBindertyVarReqToBinderstyVarReqToBinder binderVar binderVars binderFlag binderFlags binderType isTyVarBindermkForAllTyBinder mkTyVarBindermkForAllTyBindersmkTyVarBinders mapVarBndr mapVarBndrsisInvisiblePiTyBinderisVisiblePiTyBinderisNamedPiTyBindernamedPiTyBinder_maybeisAnonPiTyBinderanonPiTyBinderType_maybe isTyBinderpiTyBinderType tyVarName tyVarKindsetTyVarUnique setTyVarName setTyVarKindupdateTyVarKindupdateTyVarKindMmkTyVar mkTcTyVartcTyVarDetailssetTcTyVarDetailsidInfo idDetails mkGlobalVar mkLocalVarmkCoVarmkExportedLocalVar lazySetIdInfo setIdDetails globaliseId setIdExportedsetIdNotExportedupdateIdTypeButNotMultupdateIdTypeAndMultupdateIdTypeAndMultM setIdMultisTyVar isTcTyVar isTyCoVarisIdisCoVar isNonCoVarId isLocalId isLocalVar isGlobalIdmustHaveLocalBinding isExportedId$fHasOccNameVar $fDataVar$fOrdVar$fEqVar$fUniquableVar$fNamedThingVar$fOutputableVar$fBinarySpecificity$fBinaryForAllTyFlag$fOutputableForAllTyFlag$fBinaryFunTyFlag$fOutputableFunTyFlag$fNamedThingVarBndr$fBinaryVarBndr$fOutputableVarBndr$fOutputableVarBndr0$fOutputablePiTyBinder$fDataPiTyBinder $fDataVarBndr $fEqFunTyFlag$fOrdFunTyFlag$fDataFunTyFlag$fEqForAllTyFlag$fOrdForAllTyFlag$fDataForAllTyFlag$fEqSpecificity$fOrdSpecificity$fDataSpecificity DTyCoVarSet DTyVarSetDIdSetDVarSet TyCoVarSetCoVarSetTyVarSetIdSetVarSet emptyVarSet unitVarSet extendVarSetextendVarSetListintersectVarSet unionVarSet unionVarSets elemVarSet minusVarSet delVarSet delVarSetList isEmptyVarSetmkVarSetlookupVarSet_Directly lookupVarSetlookupVarSetByName sizeVarSet filterVarSetdelVarSetByKeyelemVarSetByKeypartitionVarSetmapUnionVarSetintersectsVarSetdisjointVarSet subVarSet anyVarSet allVarSet mapVarSetnonDetStrictFoldVarSet fixVarSettransCloVarSet seqVarSet pluralVarSet pprVarSet emptyDVarSet unitDVarSet mkDVarSet extendDVarSet elemDVarSet dVarSetElems subDVarSet unionDVarSet unionDVarSetsmapUnionDVarSetintersectDVarSetdVarSetIntersectVarSetdisjointDVarSetintersectsDVarSetisEmptyDVarSet delDVarSet minusDVarSetdVarSetMinusVarSetnonDetStrictFoldDVarSet anyDVarSet allDVarSet mapDVarSet filterDVarSet sizeDVarSetpartitionDVarSetdelDVarSetList seqDVarSetextendDVarSetListdVarSetToVarSettransCloDVarSetFVInterestingVarFun fvVarList fvDVarSetfvVarSetunitFVemptyFVunionFVdelFVdelFVsfilterFV mapUnionFVunionsFVmkFVsTagSigTagInfoTagDunnoTagTuple TagProper TagTagged isTaggedSig seqTagSig seqTagInfo$fBinaryTagInfo$fOutputableTagInfo$fBinaryTagSig$fOutputableBndr(,)$fOutputableTagSig $fEqTagSig $fEqTagInfo UnVarGraphUnVarSetdomUFMUnVarSet emptyUnVarSet elemUnVarSetisEmptyUnVarSet delUnVarSetdelUnVarSetList mkUnVarSetextendUnVarSetextendUnVarSetList unionUnVarSetunionUnVarSetsemptyUnVarGraphunionUnVarGraphunionUnVarGraphscompleteBipartiteGraph completeGraph neighbors hasLoopAtdelNode$fOutputableUnVarSet$fOutputableUnVarGraph $fEqUnVarSet DTyVarEnvDIdEnvDVarEnvCoVarEnv TyCoVarEnvTyVarEnvIdEnvVarEnvTidyEnvRnEnv2 InScopeSetInScopeemptyInScopeSetgetInScopeVars mkInScopeSetmkInScopeSetListextendInScopeSetextendInScopeSetListextendInScopeSetSet delInScopeSetelemInScopeSet lookupInScopelookupInScope_Directly unionInScope varSetInScopeuniqAwayunsafeGetFreshLocalUniquemkRnEnv2extendRnInScopeSetList rnInScope rnInScopeSetrnEnvLrnEnvRrnBndrs2rnBndr2 rnBndr2_varrnBndrLrnBndrRrnEtaLrnEtaRdelBndrLdelBndrR delBndrsL delBndrsRrnOccLrnOccR rnOccL_maybe rnOccR_maybeinRnEnvLinRnEnvR anyInRnEnvRlookupRnInScope nukeRnEnvL nukeRnEnvRrnSwap emptyTidyEnvmkEmptyTidyEnvdelTidyEnvList elemVarEnvelemVarEnvByKeydisjointVarEnv alterVarEnv extendVarEnvextendVarEnv_CextendVarEnv_AccextendVarEnvList plusVarEnv_C plusVarEnv_CDplusMaybeVarEnv_C delVarEnvList delVarEnv minusVarEnv plusVarEnvplusVarEnvList lookupVarEnvlookupVarEnv_Directly filterVarEnv anyVarEnvlookupWithDefaultVarEnv mapVarEnvmkVarEnvmkVarEnv_Directly emptyVarEnv unitVarEnv isEmptyVarEnvpartitionVarEnv varEnvDomainrestrictVarEnv zipVarEnvlookupVarEnv_NF modifyVarEnvmodifyVarEnv_Directly emptyDVarEnv dVarEnvElts mkDVarEnv extendDVarEnv minusDVarEnv lookupDVarEnv foldDVarEnvnonDetStrictFoldDVarEnv mapDVarEnv filterDVarEnv alterDVarEnv plusDVarEnv plusDVarEnv_C unitDVarEnv delDVarEnvdelDVarEnvListisEmptyDVarEnv elemDVarEnvextendDVarEnv_C modifyDVarEnvpartitionDVarEnvextendDVarEnvList anyDVarEnv$fOutputableInScopeSetchooseFunTyFlagpartitionInvisibleTypes getLevitygetTyVar_maybetyConAppTyCon_maybesplitTyConApp_maybeisLiftedTypeKindisMultiplicityTy isLevityTyisRuntimeRepTycoreViewtypeTypeOrConstrainttypeKind piResultTy mkCoercionTy mkTyConAppmkCastTymkAppTy isCoercionTyisPredTy NonCaffySet ncs_nameSetDefUsesDefUseUsesDefsFreeVarsNameSetisEmptyNameSet emptyNameSet unitNameSet mkNameSetextendNameSetList extendNameSet unionNameSet unionNameSets minusNameSet elemNameSetdelFromNameSet filterNameSetintersectNameSetdisjointNameSetdelListFromNameSetintersectsNameSet nameSetAny nameSetAllnameSetElemsStable isEmptyFVsemptyFVsplusFVsplusFVaddOneFV intersectFVsemptyDUsusesOnlymkDUsplusDUduDefsallUsesduUsesfindUses$fSemigroupNonCaffySet$fMonoidNonCaffySetDNameEnvNameEnvdepAnalnonDetNameEnvElts emptyNameEnvisEmptyNameEnv unitNameEnv extendNameEnvextendNameEnvList lookupNameEnv alterNameEnv mkNameEnv mkNameEnvWith elemNameEnv plusNameEnv plusNameEnv_CplusNameEnv_CDplusNameEnv_CD2extendNameEnv_C mapNameEnvextendNameEnv_AccextendNameEnvList_CdelFromNameEnvdelListFromNameEnv filterNameEnvmapMaybeNameEnv anyNameEnvdisjointNameEnvseqEltsNameEnvlookupNameEnv_NF emptyDNameEnvisEmptyDNameEnvlookupDNameEnvdelFromDNameEnvfilterDNameEnv mapDNameEnvadjustDNameEnv alterDNameEnvextendDNameEnvextendDNameEnv_C eltsDNameEnv foldDNameEnvplusDNameEnv_CnonDetStrictFoldDNameEnvFixItem FixityEnvemptyFixityEnv lookupFixitymkIfaceFixCacheemptyIfaceFixCache$fOutputableFixItem CollectedCCs CCFlavourCafCCExprCCDeclCCHpcCCLateCCCcNameNormalCC AllCafsCCcc_namecc_modcc_loc cmpCostCentreisCafCC isSccCountCC sccAbleCCccFromThisModulemkUserCCmkAutoCC mkAllCafsCCemptyCollectedCCs collectCC currentCCS dontCareCCS isCurrentCCSisCafCCSmaybeSingletonCCSmkSingletonCCSpprCostCentreStack pprCostCentrepprCostCentreCorecostCentreUserNamecostCentreUserNameFScostCentreSrcSpan$fBinaryCCFlavour$fBinaryCostCentre$fOutputableCostCentre$fOutputableCostCentreStack$fDataCostCentre $fEqCCFlavour$fOrdCCFlavour$fDataCCFlavourGreName NormalGreName FieldGreNameAvails AvailInfoAvailAvailTCstableAvailCmpstableGreNameCmpavail availFieldavailTCavailsToNameSetavailsToNameSetWithSelectorsavailsToNameEnvavailExportsDecl availName availGreName availNamesavailNamesWithSelectorsavailNonFldNames availFlds availGreNamesavailSubordinateGreNamesgreNameMangledNamegreNamePrintableNamegreNameSrcSpangreNameFieldLabelpartitionGreNames plusAvail trimAvail filterAvails filterAvail nubAvails$fBinaryGreName $fOrdGreName$fHasOccNameGreName$fOutputableGreName$fBinaryAvailInfo$fOutputableAvailInfo $fEqAvailInfo$fDataAvailInfo $fDataGreName $fEqGreName ImpItemSpecImpAllImpSome is_explicitis_iloc ImpDeclSpecis_modis_asis_qualis_dloc ImportSpecImpSpecis_declis_itemParentNoParentParentIspar_is GlobalRdrEltGREgre_namegre_pargre_lclgre_imp GlobalRdrEnv LocalRdrEnvUnqualQualOrigExact rdrNameOcc rdrNameSpace demoteRdrNamepromoteRdrName mkRdrUnqual mkRdrQualmkOrigmkUnqual mkVarUnqualmkQual getRdrName nameRdrName isRdrDataCon isRdrTyVarisRdrTc isSrcRdrNameisUnqualisQual isQual_maybeisOrig isOrig_maybeisExact isExact_maybeemptyLocalRdrEnvextendLocalRdrEnvextendLocalRdrEnvListlookupLocalRdrEnvlookupLocalRdrOccelemLocalRdrEnvlocalRdrEnvEltsinLocalRdrEnvScopeminusLocalRdrEnvgresFromAvailslocalGREsFromAvail gresFromAvail greOccNamegreMangledNamegrePrintableNamegreDefinitionSrcSpangreDefinitionModulegreQualModName greRdrNames greSrcSpangreParent_maybegresToAvailInfo availFromGREemptyGlobalRdrEnvglobalRdrEnvEltspprGlobalRdrEnvlookupGlobalRdrEnvlookupGRE_RdrNamelookupGRE_RdrName'lookupGRE_NamelookupGRE_GreNamelookupGRE_FieldLabellookupGRE_Name_OccNamegetGRE_NameQualifier_maybes isLocalGRE isRecFldGREisDuplicateRecFldGREisNoFieldSelectorGREisFieldSelectorGRE greFieldLabelunQualOKpickGREspickGREsModExpplusGlobalRdrEnvmkGlobalRdrEnv transformGREsextendGlobalRdrEnv shadowNames bestImport unQualSpecOK qualSpecOK importSpecLocimportSpecModuleisExplicitItempprNameProvenanceopIsAt $fOrdRdrName $fEqRdrName$fOutputableBndrRdrName$fOutputableRdrName$fHasOccNameRdrName$fOutputableLocalRdrEnv$fOutputableParent$fOutputableImportSpec$fOutputableGlobalRdrElt$fHasOccNameGlobalRdrElt$fDataGlobalRdrElt$fEqImportSpec$fDataImportSpec$fEqImpItemSpec$fDataImpItemSpec$fEqImpDeclSpec$fDataImpDeclSpec $fEqParent $fDataParent $fDataRdrNameImportedModsValimv_nameimv_span imv_is_safe imv_is_hidingimv_all_exports imv_qualified ImportedByImportedByUserImportedBySystem ImportedModsimportedByUserAnnEnv CoreAnnTarget AnnTarget NamedTarget ModuleTarget AnnPayload ann_target ann_value emptyAnnEnvmkAnnEnvextendAnnEnvList plusAnnEnvfindAnnsfindAnnsByTypeRepdeserializeAnns$fBinaryAnnTarget$fOutputableAnnTarget$fOutputableAnnotation$fFunctorAnnTargetNoEpAnnsEpAnnCO AnnSortKey NoAnnSortKey AnnPragmaapr_open apr_closeapr_rest NameAdornment NameParensNameParensHashNameBackquotes NameSquareNameAnn NameAnnCommas NameAnnBars NameAnnOnly NameAnnRArrow NameAnnQuoteNameAnnTrailingnann_adornment nann_open nann_name nann_close nann_trailing nann_commas nann_bars nann_quote nann_quoted AnnContext ac_darrowac_openac_close ParenType AnnParens AnnParensHashAnnParensSquareAnnParen ap_adornmentap_openap_closeAnnList al_anchoral_openal_closeal_rest al_trailing AnnListItem lann_trailing TrailingAnn AddSemiAnn AddCommaAnn AddVbarAnn LocatedAn SrcSpanAnnC SrcSpanAnnP SrcSpanAnnL SrcSpanAnnN SrcSpanAnnALocatedCLocatedPLocatedLLocatedNLocatedASrcAnn SrcSpanAnn' SrcSpanAnnannlocA LEpaComment EpAnnComments EpaCommentsEpaCommentsBalanced priorCommentsfollowingCommentsAnchorOperationUnchangedAnchor MovedAnchorAnchoranchor anchor_opEpAnn EpAnnNotUsedannscommentsDeltaPosSameLine DifferentLine deltaColumn deltaLine TokenLocation NoTokenLocTokenLoc EpaLocationEpaSpanEpaDeltaAddEpAnn EpaCommentTok EpaDocComment EpaDocOptionsEpaLineCommentEpaBlockComment EpaEofComment EpaCommentac_tok ac_prior_tokHasENoEIsUnicodeSyntax NormalSyntax AnnAnyclass AnnCloseBU AnnCloseC AnnCloseQU AnnClosePH AnnCloseS AnnCommaTuple AnnDarrowU AnnDcolonU AnnForallU AnnLarrowU AnnLollyUAnnMdoAnnName AnnOpenBUAnnOpenC AnnOpenEQUAnnOpenS AnnOpenPH AnnDollarAnnDollarDollar AnnPercent AnnPercentOne AnnRarrowUAnnSimpleQuote AnnSignature AnnThTyQuote AnnValStrAnnViaAnnlarrowtailUAnnrarrowtailUAnnLarrowtailUAnnRarrowtailU unicodeAnndeltaPos getDeltaLineepaLocationRealSrcSpanepaLocationFromSrcAnn spanAsAnchorrealSpanAsAnchor emptyComments parenTypeKwstrailingAnnToAddEpAnnaddTrailingAnnToLaddTrailingAnnToAaddTrailingCommaToNl2nn2lla2nala2lal2lna2lareLocreLocAreLocLreLocCreLocN realSrcSpanla2rextraToAnnListreAnnreAnnCreAnnL getLocAnngetLocAnoLocA noAnnSrcSpan noSrcSpanAnoAnnaddAnnsaddAnnsA widenSpan widenAnchor widenAnchorRwidenLocatedAn epAnnAnnsL epAnnAnnsannParen2AddEpAnn epAnnComments sortLocatedAmapLocA combineLocsAcombineSrcSpansAaddCLocA addCLocAAgetFollowingCommentssetFollowingCommentssetPriorComments noCommentsplaceholderRealSpancommentaddCommentsToSrcAnnsetCommentsSrcAnnaddCommentsToEpAnnsetCommentsEpAnn transferAnnsA commentsOnlyAremoveCommentsA$fOutputableAnnKeywordId$fOutputableIsUnicodeSyntax$fOutputableEpaComment$fOutputableDeltaPos$fOutputableAnchorOperation$fOutputableAnchor$fSemigroupAnchor $fOrdAnchor$fOutputableEpAnnComments$fSemigroupEpAnnComments$fOutputableEpAnn $fMonoidEpAnn$fSemigroupEpAnn$fOutputableEpaLocation$fOutputableAddEpAnn$fOutputableBndrGenLocated$fOutputableGenLocated1$fOutputableSrcSpanAnn'$fSemigroupSrcSpanAnn'$fOutputableTrailingAnn$fOutputableAnnListItem$fMonoidAnnListItem$fSemigroupAnnListItem$fOutputableAnnList$fMonoidAnnList$fSemigroupAnnList$fOutputableAnnContext$fOutputableNameAdornment$fOutputableNameAnn$fMonoidNameAnn$fSemigroupNameAnn$fOutputableAnnPragma$fOutputableAnnSortKey$fMonoidAnnSortKey$fSemigroupAnnSortKey$fOutputableNoEpAnns$fSemigroupNoEpAnns$fDataNoEpAnns $fEqNoEpAnns $fOrdNoEpAnns$fDataAnnSortKey$fEqAnnSortKey$fDataAnnPragma $fEqAnnPragma $fDataNameAnn $fEqNameAnn$fEqNameAdornment$fOrdNameAdornment$fDataNameAdornment$fDataAnnContext$fDataAnnParen $fEqParenType$fOrdParenType$fDataParenType $fDataAnnList $fEqAnnList$fDataAnnListItem$fEqAnnListItem$fDataTrailingAnn$fEqTrailingAnn$fDataSrcSpanAnn'$fEqSrcSpanAnn'$fDataAddEpAnn $fEqAddEpAnn$fDataTokenLocation$fEqTokenLocation$fDataEpaLocation$fEqEpaLocation $fDataEpAnn $fEqEpAnn$fFunctorEpAnn$fDataEpAnnComments$fEqEpAnnComments $fDataAnchor $fEqAnchor $fShowAnchor$fDataAnchorOperation$fEqAnchorOperation$fShowAnchorOperation$fShowDeltaPos $fEqDeltaPos $fOrdDeltaPos$fDataDeltaPos$fEqEpaComment$fDataEpaComment$fShowEpaComment$fEqEpaCommentTok$fDataEpaCommentTok$fShowEpaCommentTok$fEqHasE $fOrdHasE $fDataHasE $fShowHasE$fEqIsUnicodeSyntax$fOrdIsUnicodeSyntax$fDataIsUnicodeSyntax$fShowIsUnicodeSyntax$fEqAnnKeywordId$fOrdAnnKeywordId$fDataAnnKeywordId$fShowAnnKeywordIdBooleanFormulaOrParensLBooleanFormulamkVarmkFalsemkTruemkAndmkOrisFalseisTrueevalsimplify isUnsatisfied impliesAtomimpliespprBooleanFormulapprBooleanFormulaNice$fBinaryBooleanFormula$fOutputableBooleanFormula$fEqBooleanFormula$fDataBooleanFormula$fFunctorBooleanFormula$fFoldableBooleanFormula$fTraversableBooleanFormulafingerprintBinMemcomputeFingerprintputNameLiterallyOutputableBndrId NoGhcTcPassIdGhcPIsPassghcPassGhcTcGhcRnGhcPsPassParsedRenamed TypecheckedGhcPass IsSrcSpanAnnpprIfPspprIfRnpprIfTcnoHsTok noHsUniTok$fOutputableHsUniToken$fOutputableHsToken$fOutputableDataConCantHappen$fOutputableNoExtField $fDataGhcPass$fMapXRecGhcPass$fUnXRecGhcPass$fIsPassTypechecked$fIsPassRenamed$fIsPassParsed $fDataPass$fDataLayoutInfoExtractedTHDocsethd_mod_headerethd_decl_docs ethd_arg_docsethd_inst_docsDocs docs_mod_hdr docs_decls docs_argsdocs_structuredocs_named_chunksdocs_haddock_opts docs_languagedocs_extensions DocStructureDocStructureItemDsiSectionHeading DsiDocChunkDsiNamedChunkRef DsiExports DsiModExportLHsDocWithHsDocIdentifiers hsDocStringhsDocIdentifiersHsDochsDocIds pprWithDocpprMaybeWithDoc pprHsDocDebug emptyDocs$fBinaryWithHsDocIdentifiers $fOutputableWithHsDocIdentifiers$fOutputableDocStructureItem$fBinaryDocStructureItem$fOutputableDocs $fBinaryDocs$fEqWithHsDocIdentifiers$fDataWithHsDocIdentifiersLIEWrappedName IEWrappedNameIEName IEPatternIETypeXIEWrappedName IEWildcard NoIEWildcardIEVar IEThingAbs IEThingAll IEThingWithIEModuleContentsIEGroupIEDoc IEDocNamedXIELIEImportListInterpretationExactly EverythingBut ImportDecl XImportDeclideclExt ideclName ideclPkgQual ideclSource ideclSafeideclQualifiedideclAsideclImportListImportDeclQualifiedStyle QualifiedPre QualifiedPost NotQualified LImportDecl$fEqIEWildcard$fDataIEWildcard$fEqImportListInterpretation$fDataImportListInterpretation$fEqIsBootInterface$fOrdIsBootInterface$fShowIsBootInterface$fDataIsBootInterface$fEqImportDeclQualifiedStyle$fDataImportDeclQualifiedStyleEpAnnImportDeclimportDeclAnnImportimportDeclAnnPragmaimportDeclAnnSafeimportDeclAnnQualifiedimportDeclAnnPackageimportDeclAnnAsXImportDeclPassideclAnnideclSourceText ideclImplicitimportDeclQualifiedStyleisImportDeclQualifiedsimpleImportDeclieNameieNamesieWrappedLName ieWrappedNamelieWrappedNameieLWrappedNamereplaceWrappedNamereplaceLWrappedName pprImpExp$fOutputableIEWrappedName$fOutputableBndrIEWrappedName$fHasOccNameIEWrappedName$fOutputableIE$fOutputableImportDecl$fDataXImportDeclPass$fDataEpAnnImportDecl$fEqIEWrappedName$fEqIEWrappedName0$fEqIEWrappedName1$fDataIEWrappedName$fDataIEWrappedName0$fDataIEWrappedName1Warnings NoWarningsWarnAllWarnSome WarningTxt DeprecatedTxtpprWarningTxtForMsgmkIfaceWarnCacheemptyIfaceWarnCache plusWarns$fBinaryWarningTxt$fOutputableWarningTxt$fBinaryWarnings$fGenericWarningTxt $fEqWarnings$fDataWarningTxt$fEqWarningTxtBuiltInSynFamily sfMatchFam sfInteractTopsfInteractInert CoAxiomRule coaxrNamecoaxrAsmpRoles coaxrRole coaxrProvesTypeEqn CoAxBranchcab_loccab_tvs cab_eta_tvscab_cvs cab_rolescab_lhscab_rhs cab_incompsCoAxiom co_ax_unique co_ax_name co_ax_roleco_ax_tcco_ax_branchesco_ax_implicitBranches MkBranches unMkBranches UnbranchedBranched BranchFlag BranchIndex manyBranches unbranched fromBranches numBranchesmapAccumBranchestoBranchedAxiomtoUnbranchedAxiomcoAxiomNumPatscoAxiomNthBranch coAxiomArity coAxiomName coAxiomRolecoAxiomBranchescoAxiomSingleBranch_maybecoAxiomSingleBranch coAxiomTyConcoAxBranchTyVarscoAxBranchCoVars coAxBranchLHS coAxBranchRHScoAxBranchRolescoAxBranchSpanisImplicitCoAxiomcoAxBranchIncompsplaceHolderIncomps fsFromRoletrivialBuiltInFamily $fBinaryRole$fOutputableRole$fOutputableCoAxBranch $fDataCoAxiom$fNamedThingCoAxiom$fOutputableCoAxiom$fUniquableCoAxiom $fEqCoAxiom$fOutputableCoAxiomRule$fOrdCoAxiomRule$fEqCoAxiomRule$fUniquableCoAxiomRule$fDataCoAxiomRule$fDataCoAxBranchLiftingContexttopNormaliseNewType_maybe coercionType coercionRKind coercionLKind coercionKindseqCo liftCoSubstmkCoercionType coVarRolecoVarKindsTypesRoledecomposePiCos isReflexiveCoisReflCo isGReflCo mkAxiomRuleComkProofIrrelComkSubComkKindCo mkNomReflCo mkGReflComkInstComkLRComkSelCo mkTransComkSymComkUnivCo mkPhantomCo mkAxiomInstCo mkCoVarComkFunCo2 mkNakedFunCo1mkFunCo1 mkForAllComkAppCo mkTyConAppComkReflCoClassMinimalDefATValidityInfoNoATVIATVI ClassATItemATI DefMethInfo ClassOpItemFunDepClass classTyCon classNameclassKey classTyVarsclassMinimalDefmkClassmkAbstractClass classArityclassAllSelIds classSCSelIds classSCSelId classMethods classOpItemsclassATs classATItems classSCTheta classTvsFds classHasFds classBigSigclassExtraBigSigisAbstractClasspprDefMethInfo pprFundeps pprFunDep $fDataClass$fOutputableClass$fNamedThingClass$fUniquableClass $fEqClass DataConBoxer mkDictSelIdmkDataConWorkIdRegClass RcIntegerRcFloatRcDouble$fOutputableRegClass$fUniquableRegClass $fEqRegClassReg RegVirtualRegRealRealReg RealRegSingle VirtualReg VirtualRegI VirtualRegHi VirtualRegF VirtualRegDRegNorenameVirtualRegclassOfVirtualReggetHiVirtualRegFromLogetHiVRegFromLoregNosOfRealReg realRegsAlias regSingle realRegSingle isRealReg takeRealReg isVirtualRegtakeVirtualRegliftPatchFnToRegReg$fOutputableVirtualReg$fUniquableVirtualReg$fOrdVirtualReg$fOutputableRealReg$fUniquableRealReg$fOutputableReg$fUniquableReg$fEqReg$fOrdReg $fShowReg $fEqRealReg $fShowRealReg $fOrdRealReg$fEqVirtualReg$fShowVirtualRegallNameStringsallNameStringListitName mkUnboundName isUnboundNamebasicKnownKeyNamesgenericTyConNamespRELUDEgHC_PRIMgHC_PRIM_PANIC gHC_TYPES gHC_MAGICgHC_MAGIC_DICT gHC_CSTRING gHC_CLASSESgHC_PRIMOPWRAPPERSgHC_BASEgHC_ENUMgHC_GHCIgHC_GHCI_HELPERSgHC_SHOWgHC_READgHC_NUM gHC_MAYBEgHC_NUM_INTEGERgHC_NUM_NATURALgHC_NUM_BIGNATgHC_LIST gHC_TUPLEgHC_TUPLE_PRIM dATA_EITHER dATA_LIST dATA_STRING dATA_FOLDABLEdATA_TRAVERSABLEgHC_CONCgHC_IOgHC_IO_ExceptiongHC_STgHC_IX gHC_STABLEgHC_PTRgHC_ERRgHC_REAL gHC_FLOATgHC_TOP_HANDLER sYSTEM_IOdYNAMICtYPEABLEtYPEABLE_INTERNALgENERICS rEAD_PREClEXgHC_INTgHC_WORDmONAD mONAD_FIX mONAD_ZIP mONAD_FAILaRROW gHC_DESUGARrANDOMgHC_EXTS gHC_IS_LISTcONTROL_EXCEPTION_BASE gHC_GENERICS gHC_TYPEERROR gHC_TYPELITSgHC_TYPELITS_INTERNAL gHC_TYPENATSgHC_TYPENATS_INTERNAL dATA_COERCE dEBUG_TRACE uNSAFE_COERCEfOREIGN_C_TYPES gHC_SRCLOC gHC_STACKgHC_STACK_TYPES gHC_STATICPTRgHC_STATICPTR_INTERNALgHC_FINGERPRINT_TYPEgHC_OVER_LABELS gHC_RECORDS rOOT_MAINmkInteractiveModule pRELUDE_NAME mAIN_NAME mkPrimModulemkBignumModule mkBaseModule mkBaseModule_mkThisGhcModulemkThisGhcModule_ mkMainModule mkMainModule_main_RDR_Unqualeq_RDRge_RDRle_RDRlt_RDRgt_RDR compare_RDR ltTag_RDR eqTag_RDR gtTag_RDR eqClass_RDR numClass_RDR ordClass_RDR enumClass_RDRmonadClass_RDRmap_RDR append_RDR foldr_RDR build_RDR returnM_RDR bindM_RDR failM_RDRleft_RDR right_RDR fromEnum_RDR toEnum_RDR enumFrom_RDRenumFromTo_RDRenumFromThen_RDRenumFromThenTo_RDRratioDataCon_RDRintegerAdd_RDRintegerMul_RDR ioDataCon_RDRnewStablePtr_RDR bindIO_RDR returnIO_RDRfromInteger_RDRfromRational_RDR minus_RDR times_RDRplus_RDR toInteger_RDRtoRational_RDRfromIntegral_RDRfromString_RDR fromList_RDR fromListN_RDR toList_RDR compose_RDRand_RDRnot_RDR dataToTag_RDRsucc_RDRpred_RDR minBound_RDR maxBound_RDR range_RDR inRange_RDR index_RDRunsafeIndex_RDRunsafeRangeSize_RDR readList_RDRreadListDefault_RDRreadListPrec_RDRreadListPrecDefault_RDR readPrec_RDR parens_RDR choose_RDRlexP_RDR expectP_RDR readField_RDRreadFieldHash_RDRreadSymField_RDRpunc_RDR ident_RDR symbol_RDRstep_RDRalt_RDR reset_RDRprec_RDR pfail_RDR showsPrec_RDR shows_RDRshowString_RDR showSpace_RDRshowCommaSpace_RDR showParen_RDR error_RDR u1DataCon_RDRpar1DataCon_RDRrec1DataCon_RDR k1DataCon_RDR m1DataCon_RDR l1DataCon_RDR r1DataCon_RDRprodDataCon_RDRcomp1DataCon_RDR unPar1_RDR unRec1_RDRunK1_RDR unComp1_RDRfrom_RDR from1_RDRto_RDRto1_RDRdatatypeName_RDRmoduleName_RDRpackageName_RDRisNewtypeName_RDR selName_RDR conName_RDR conFixity_RDRconIsRecord_RDRprefixDataCon_RDRinfixDataCon_RDRleftAssocDataCon_RDRrightAssocDataCon_RDRnotAssocDataCon_RDRuAddrDataCon_RDRuCharDataCon_RDRuDoubleDataCon_RDRuFloatDataCon_RDRuIntDataCon_RDRuWordDataCon_RDR uAddrHash_RDR uCharHash_RDRuDoubleHash_RDRuFloatHash_RDR uIntHash_RDR uWordHash_RDRfmap_RDR replace_RDRpure_RDRap_RDR liftA2_RDRfoldable_foldr_RDR foldMap_RDRnull_RDRall_RDR traverse_RDR mempty_RDR mappend_RDR varQual_RDR tcQual_RDR clsQual_RDR dataQual_RDR wildCardName runMainIOName runRWNameorderingTyConNameordLTDataConNameordEQDataConNameordGTDataConName specTyConNameeitherTyConNameleftDataConNamerightDataConName voidTyConName v1TyConName u1TyConName par1TyConName rec1TyConName k1TyConName m1TyConName sumTyConName prodTyConName compTyConName rTyConName dTyConName cTyConName sTyConName rec0TyConName d1TyConName c1TyConName s1TyConName repTyConName rep1TyConName uRecTyConNameuAddrTyConNameuCharTyConNameuDoubleTyConNameuFloatTyConName uIntTyConNameuWordTyConNameprefixIDataConNameinfixIDataConNameleftAssociativeDataConNamerightAssociativeDataConNamenotAssociativeDataConNamesourceUnpackDataConNamesourceNoUnpackDataConNamenoSourceUnpackednessDataConNamesourceLazyDataConNamesourceStrictDataConNamenoSourceStrictnessDataConNamedecidedLazyDataConNamedecidedStrictDataConNamedecidedUnpackDataConNamemetaDataDataConNamemetaConsDataConNamemetaSelDataConName divIntName modIntNamecstringLengthName eqStringNameunpackCStringNameunpackCStringAppendNameunpackCStringFoldrNameunpackCStringUtf8NameunpackCStringAppendUtf8NameunpackCStringFoldrUtf8Name inlineIdName eqClassNameeqName ordClassNamegeNamefunctorClassNamefmapNamemonadClassName thenMName bindMName returnMNamemonadFailClassName failMNameapplicativeClassNameapAName pureAName thenANamefoldableClassNametraversableClassNamesemigroupClassName sappendNamemonoidClassName memptyName mappendName mconcatName joinMNamealternativeClassName joinMIdKey apAClassOpKeypureAClassOpKeythenAClassOpKeyalternativeClassKeyconsiderAccessibleName dollarNameotherwiseIdName foldrName buildName augmentNamemapName appendName assertNamefromStringName numClassNamefromIntegerName minusName negateName bnbVarQual bnnVarQual bniVarQualbignatFromWordListName bignatEqNamebignatCompareNamebignatCompareWordNamenaturalToWordNamenaturalPopCountNamenaturalShiftRNamenaturalShiftLNamenaturalAddNamenaturalSubNamenaturalSubThrowNamenaturalSubUnsafeNamenaturalMulNamenaturalQuotRemNamenaturalQuotNamenaturalRemNamenaturalAndNamenaturalAndNotName naturalOrNamenaturalXorNamenaturalTestBitNamenaturalBitNamenaturalGcdNamenaturalLcmNamenaturalLog2NamenaturalLogBaseWordNamenaturalLogBaseNamenaturalPowModNamenaturalSizeInBaseNameintegerFromNaturalNameintegerToNaturalClampNameintegerToNaturalThrowNameintegerToNaturalNameintegerToWordNameintegerToIntNameintegerToWord64NameintegerToInt64NameintegerFromWordNameintegerFromWord64NameintegerFromInt64NameintegerAddNameintegerMulNameintegerSubNameintegerNegateNameintegerAbsNameintegerPopCountNameintegerQuotNameintegerRemNameintegerDivNameintegerModNameintegerDivModNameintegerQuotRemNameintegerEncodeFloatNameintegerEncodeDoubleNameintegerGcdNameintegerLcmNameintegerAndName integerOrNameintegerXorNameintegerComplementNameintegerBitNameintegerTestBitNameintegerShiftLNameintegerShiftRNamerationalTyConNameratioTyConNameratioDataConName realClassNameintegralClassNamerealFracClassNamefractionalClassNamefromRationalName toIntegerNametoRationalNamefromIntegralNamerealToFracNamemkRationalBase2NamemkRationalBase10NamefloatingClassNamerealFloatClassNameintegerToFloatNameintegerToDoubleNamenaturalToFloatNamenaturalToDoubleNamerationalToFloatNamerationalToDoubleName ixClassNametrModuleTyConNametrModuleDataConNametrNameTyConNametrNameSDataConNametrNameDDataConNametrTyConTyConNametrTyConDataConNamekindRepTyConNamekindRepTyConAppDataConNamekindRepVarDataConNamekindRepAppDataConNamekindRepFunDataConNamekindRepTYPEDataConNamekindRepTypeLitSDataConNamekindRepTypeLitDDataConNametypeLitSortTyConNametypeLitSymbolDataConNametypeLitNatDataConNametypeLitCharDataConNametypeableClassNametypeRepTyConNamesomeTypeRepTyConNamesomeTypeRepDataConName typeRepIdName mkTrTypeName mkTrConName mkTrAppName mkTrFunNametypeNatTypeRepNametypeSymbolTypeRepNametypeCharTypeRepNametrGhcPrimModuleNamestarKindRepNamestarArrStarKindRepNamestarArrStarArrStarKindRepNameconstraintKindRepNamewithDictClassNamenonEmptyTyConNameerrorMessageTypeErrorFamNametypeErrorTextDataConNametypeErrorAppendDataConNametypeErrorVAppendDataConNametypeErrorShowTypeDataConNameunsafeEqualityProofNameunsafeEqualityTyConNameunsafeReflDataConNameunsafeCoercePrimName toDynName dataClassNameassertErrorName traceName enumClassName enumFromNameenumFromToNameenumFromThenNameenumFromThenToNameboundedClassName concatName filterNamezipNameisListClassName fromListName fromListNName toListName getFieldName setFieldName showClassName readClassName genClassName gen1ClassNamedatatypeClassNameconstructorClassNameselectorClassNamegenericClassNamesghciIoClassNameghciStepIoMName ioTyConName ioDataConName thenIOName bindIOName returnIOName failIOName printName int8TyConNameint16TyConNameint32TyConNameint64TyConNameword8TyConNameword16TyConNameword32TyConNameword64TyConName ptrTyConNamefunPtrTyConNamestablePtrTyConNamenewStablePtrNamemonadFixClassNamemfixNamearrAName composeAName firstANameappAName choiceAName loopAName guardMName liftMNamemzipNametoAnnotationWrapperNamemonadPlusClassNameisStringClassNameknownNatClassNameknownSymbolClassNameknownCharClassNamefromLabelClassOpName ipClassNamehasFieldClassNamecallStackTyConNameemptyCallStackNamepushCallStackNamesrcLocDataConNamepLUGINSpluginTyConNamefrontendPluginTyConNamemakeStaticNamestaticPtrInfoTyConNamestaticPtrInfoDataConNamestaticPtrTyConNamestaticPtrDataConNamefromStaticPtrNamefingerprintDataConNameconstPtrConNamevarQualtcQualclsQualdcQualmk_known_key_nameboundedClassKey enumClassKey eqClassKeyfloatingClassKeyfractionalClassKeyintegralClassKey monadClassKey dataClassKeyfunctorClassKey numClassKey ordClassKey readClassKey realClassKeyrealFloatClassKeyrealFracClassKey showClassKey ixClassKeytypeableClassKeywithDictClassKeymonadFixClassKeymonadFailClassKeymonadPlusClassKeyrandomClassKeyrandomGenClassKeyisStringClassKeyapplicativeClassKeyfoldableClassKeytraversableClassKey genClassKey gen1ClassKeydatatypeClassKeyconstructorClassKeyselectorClassKeyknownNatClassNameKeyknownSymbolClassNameKeyknownCharClassNameKeyghciIoClassKeysemigroupClassKeymonoidClassKey ipClassKeyhasFieldClassNameKeyaddrPrimTyConKeyarrayPrimTyConKey boolTyConKeybyteArrayPrimTyConKeystringTyConKeycharPrimTyConKey charTyConKeydoublePrimTyConKeydoubleTyConKeyfloatPrimTyConKey floatTyConKey fUNTyConKeyintPrimTyConKey intTyConKeyint8PrimTyConKey int8TyConKeyint16PrimTyConKey int16TyConKeyint32PrimTyConKey int32TyConKeyint64PrimTyConKey int64TyConKeyintegerTyConKeynaturalTyConKey listTyConKeyforeignObjPrimTyConKey maybeTyConKeyweakPrimTyConKeymutableArrayPrimTyConKeymutableByteArrayPrimTyConKeyorderingTyConKeymVarPrimTyConKeyioPortPrimTyConKey ratioTyConKeyrationalTyConKeyrealWorldTyConKeystablePtrPrimTyConKeystablePtrTyConKey eqTyConKey heqTyConKeyctArrowTyConKeyccArrowTyConKeytcArrowTyConKeystatePrimTyConKeystableNamePrimTyConKeystableNameTyConKeyeqPrimTyConKeyeqReprPrimTyConKeyeqPhantPrimTyConKeymutVarPrimTyConKey ioTyConKeywordPrimTyConKey wordTyConKeyword8PrimTyConKey word8TyConKeyword16PrimTyConKeyword16TyConKeyword32PrimTyConKeyword32TyConKeyword64PrimTyConKeyword64TyConKey kindConKey boxityConKey typeConKeythreadIdPrimTyConKeybcoPrimTyConKey ptrTyConKeyfunPtrTyConKeytVarPrimTyConKeycompactPrimTyConKeystackSnapshotPrimTyConKeypromptTagPrimTyConKeyeitherTyConKey voidTyConKeynonEmptyTyConKey dictTyConKeyliftedTypeKindTyConKeyunliftedTypeKindTyConKey tYPETyConKeycONSTRAINTTyConKeyconstraintKindTyConKeylevityTyConKeyruntimeRepTyConKeyvecCountTyConKeyvecElemTyConKeyliftedRepTyConKeyunliftedRepTyConKeyzeroBitRepTyConKeyzeroBitTypeTyConKeypluginTyConKeyfrontendPluginTyConKeytrTyConTyConKeytrModuleTyConKeytrNameTyConKeykindRepTyConKeytypeLitSortTyConKey v1TyConKey u1TyConKey par1TyConKey rec1TyConKey k1TyConKey m1TyConKey sumTyConKey prodTyConKey compTyConKey rTyConKey dTyConKey cTyConKey sTyConKey rec0TyConKey d1TyConKey c1TyConKey s1TyConKey repTyConKey rep1TyConKey uRecTyConKey uAddrTyConKey uCharTyConKeyuDoubleTyConKeyuFloatTyConKey uIntTyConKey uWordTyConKeyerrorMessageTypeErrorFamKeycoercibleTyConKeyproxyPrimTyConKey specTyConKey anyTyConKeysmallArrayPrimTyConKeysmallMutableArrayPrimTyConKeystaticPtrTyConKeystaticPtrInfoTyConKeycallStackTyConKeytypeRepTyConKeysomeTypeRepTyConKeysomeTypeRepDataConKeytypeSymbolAppendFamNameKeyunsafeEqualityTyConKeymultiplicityTyConKeyunrestrictedFunTyConKeymultMulTyConKeyint8X16PrimTyConKeyint16X8PrimTyConKeyint32X4PrimTyConKeyint64X2PrimTyConKeyint8X32PrimTyConKeyint16X16PrimTyConKeyint32X8PrimTyConKeyint64X4PrimTyConKeyint8X64PrimTyConKeyint16X32PrimTyConKeyint32X16PrimTyConKeyint64X8PrimTyConKeyword8X16PrimTyConKeyword16X8PrimTyConKeyword32X4PrimTyConKeyword64X2PrimTyConKeyword8X32PrimTyConKeyword16X16PrimTyConKeyword32X8PrimTyConKeyword64X4PrimTyConKeyword8X64PrimTyConKeyword16X32PrimTyConKeyword32X16PrimTyConKeyword64X8PrimTyConKeyfloatX4PrimTyConKeydoubleX2PrimTyConKeyfloatX8PrimTyConKeydoubleX4PrimTyConKeyfloatX16PrimTyConKeydoubleX8PrimTyConKeytypeSymbolKindConNameKeytypeCharKindConNameKeytypeNatAddTyFamNameKeytypeNatMulTyFamNameKeytypeNatExpTyFamNameKeytypeNatSubTyFamNameKeytypeSymbolCmpTyFamNameKeytypeNatCmpTyFamNameKeytypeCharCmpTyFamNameKeytypeLeqCharTyFamNameKeytypeNatDivTyFamNameKeytypeNatModTyFamNameKeytypeNatLogTyFamNameKeytypeConsSymbolTyFamNameKeytypeUnconsSymbolTyFamNameKeytypeCharToNatTyFamNameKeytypeNatToCharTyFamNameKeyconstPtrTyConKeycharDataConKeyconsDataConKeydoubleDataConKeyfalseDataConKeyfloatDataConKey intDataConKeynothingDataConKeyjustDataConKey eqDataConKey nilDataConKeyratioDataConKeyword8DataConKeystableNameDataConKeytrueDataConKeywordDataConKey ioDataConKey heqDataConKeycrossDataConKey inlDataConKey inrDataConKeygenUnitDataConKeyleftDataConKeyrightDataConKeyordLTDataConKeyordEQDataConKeyordGTDataConKeymkDictDataConKeycoercibleDataConKeystaticPtrDataConKeystaticPtrInfoDataConKeyfingerprintDataConKeysrcLocDataConKeytrTyConDataConKeytrModuleDataConKeytrNameSDataConKeytrNameDDataConKeytrGhcPrimModuleKeytypeErrorTextDataConKeytypeErrorAppendDataConKeytypeErrorVAppendDataConKeytypeErrorShowTypeDataConKeyprefixIDataConKeyinfixIDataConKeyleftAssociativeDataConKeyrightAssociativeDataConKeynotAssociativeDataConKeysourceUnpackDataConKeysourceNoUnpackDataConKeynoSourceUnpackednessDataConKeysourceLazyDataConKeysourceStrictDataConKeynoSourceStrictnessDataConKeydecidedLazyDataConKeydecidedStrictDataConKeydecidedUnpackDataConKeymetaDataDataConKeymetaConsDataConKeymetaSelDataConKeyvecRepDataConKeytupleRepDataConKeysumRepDataConKeyboxedRepDataConKeyboxedRepDataConTyConKeytupleRepDataConTyConKeyruntimeRepSimpleDataConKeysliftedDataConKeyunliftedDataConKeyvecCountDataConKeysvecElemDataConKeyskindRepTyConAppDataConKeykindRepVarDataConKeykindRepAppDataConKeykindRepFunDataConKeykindRepTYPEDataConKeykindRepTypeLitSDataConKeykindRepTypeLitDDataConKeytypeLitSymbolDataConKeytypeLitNatDataConKeytypeLitCharDataConKeyunsafeReflDataConKey oneDataConKeymanyDataConKeyintegerISDataConKeyintegerINDataConKeyintegerIPDataConKeynaturalNSDataConKeynaturalNBDataConKey wildCardKeyabsentErrorIdKey augmentIdKey appendIdKey buildIdKeyabsentConstraintErrorIdKey foldrIdKeyrecSelErrorIdKeyseqIdKeyabsentSumFieldErrorIdKey eqStringIdKeynoMethodBindingErrorIdKeynonExhaustiveGuardsErrorIdKeyruntimeErrorIdKey patErrorIdKeyrealWorldPrimIdKeyrecConErrorIdKeyunpackCStringUtf8IdKeyunpackCStringAppendUtf8IdKeyunpackCStringFoldrUtf8IdKeyunpackCStringIdKeyunpackCStringAppendIdKeyunpackCStringFoldrIdKey voidPrimIdKeytypeErrorIdKey divIntIdKey modIntIdKeycstringLengthIdKey concatIdKey filterIdKeyzipIdKey bindIOIdKey returnIOIdKeynewStablePtrIdKey printIdKey failIOIdKey nullAddrIdKey voidArgIdKeyotherwiseIdKey assertIdKeyleftSectionKeyrightSectionKey rootMainKey runMainKey thenIOIdKey lazyIdKeyassertErrorIdKey oneShotKeyrunRWKeytraceKey nospecIdKey inlineIdKeymapIdKey dollarIdKeycoercionTokenIdKeyconsiderAccessibleIdKey noinlineIdKeynoinlineConstraintIdKeyintegerToFloatIdKeyintegerToDoubleIdKeynaturalToFloatIdKeynaturalToDoubleIdKeyrationalToFloatIdKeyrationalToDoubleIdKey coerceKey unboundKeyfromIntegerClassOpKeyminusClassOpKeyfromRationalClassOpKeyenumFromClassOpKeyenumFromThenClassOpKeyenumFromToClassOpKeyenumFromThenToClassOpKey eqClassOpKey geClassOpKeynegateClassOpKeybindMClassOpKeythenMClassOpKeyfmapClassOpKeyreturnMClassOpKey mfixIdKeyfailMClassOpKeyfromLabelClassOpKey arrAIdKey composeAIdKey firstAIdKey appAIdKey choiceAIdKey loopAIdKeyfromStringClassOpKeytoAnnotationWrapperIdKeyfromIntegralIdKeyrealToFracIdKeytoIntegerClassOpKeytoRationalClassOpKey guardMIdKey liftMIdKey mzipIdKeyghciStepIoMClassOpKeyisListClassKeyfromListClassOpKeyfromListNClassOpKeytoListClassOpKey proxyHashKey mkTyConKey mkTrTypeKey mkTrConKey mkTrAppKeytypeNatTypeRepKeytypeSymbolTypeRepKeytypeCharTypeRepKey typeRepIdKey mkTrFunKey trTYPEKeytrTYPE'PtrRepLiftedKeytrRuntimeRepKeytr'PtrRepLiftedKeytrLiftedRepKeystarKindRepKeystarArrStarKindRepKeystarArrStarArrStarKindRepKeyconstraintKindRepKey toDynIdKeybitIntegerIdKey eqSCSelIdKey heqSCSelIdKeycoercibleSCSelIdKeysappendClassOpKeymemptyClassOpKeymappendClassOpKeymconcatClassOpKeyemptyCallStackKeypushCallStackKeyfromStaticPtrClassOpKey makeStaticKeyunsafeEqualityProofIdKeyunsafeCoercePrimIdKeygetFieldClassOpKeysetFieldClassOpKeyintegerFromNaturalIdKeyintegerToNaturalClampIdKeyintegerToNaturalThrowIdKeyintegerToNaturalIdKeyintegerToWordIdKeyintegerToIntIdKeyintegerToWord64IdKeyintegerToInt64IdKeyintegerAddIdKeyintegerMulIdKeyintegerSubIdKeyintegerNegateIdKeyintegerAbsIdKeyintegerPopCountIdKeyintegerQuotIdKeyintegerRemIdKeyintegerDivIdKeyintegerModIdKeyintegerDivModIdKeyintegerQuotRemIdKeyintegerEncodeFloatIdKeyintegerEncodeDoubleIdKeyintegerGcdIdKeyintegerLcmIdKeyintegerAndIdKeyintegerOrIdKeyintegerXorIdKeyintegerComplementIdKeyintegerBitIdKeyintegerTestBitIdKeyintegerShiftLIdKeyintegerShiftRIdKeyintegerFromWordIdKeyintegerFromWord64IdKeyintegerFromInt64IdKeynaturalToWordIdKeynaturalPopCountIdKeynaturalShiftRIdKeynaturalShiftLIdKeynaturalAddIdKeynaturalSubIdKeynaturalSubThrowIdKeynaturalSubUnsafeIdKeynaturalMulIdKeynaturalQuotRemIdKeynaturalQuotIdKeynaturalRemIdKeynaturalAndIdKeynaturalAndNotIdKeynaturalOrIdKeynaturalXorIdKeynaturalTestBitIdKeynaturalBitIdKeynaturalGcdIdKeynaturalLcmIdKeynaturalLog2IdKeynaturalLogBaseWordIdKeynaturalLogBaseIdKeynaturalPowModIdKeynaturalSizeInBaseIdKeybignatFromWordListIdKey bignatEqIdKeybignatCompareIdKeybignatCompareWordIdKeymkRationalBase2IdKeymkRationalBase10IdKeynumericClassKeysfractionalClassKeysstandardClassKeysderivableClassKeysinteractiveClassNamesinteractiveClassKeyspretendNameIsInScope TyConFlavour ClassFlavour TupleFlavour SumFlavourDataTypeFlavourNewtypeFlavourAbstractTypeFlavourDataFamilyFlavourOpenTypeFamilyFlavourClosedTypeFamilyFlavourTypeSynonymFlavourBuiltInTypeFlavourPromotedDataConFlavourExpandSynResult NoExpansion ExpandsSyn PrimElemRep Int8ElemRep Int16ElemRep Int32ElemRep Int64ElemRep Word8ElemRep Word16ElemRep Word32ElemRep Word64ElemRep FloatElemRep DoubleElemRepPrimRepVoidRep LiftedRep UnliftedRepInt8RepInt16RepInt32RepInt64RepIntRepWord8Rep Word16Rep Word32Rep Word64RepWordRepAddrRepFloatRep DoubleRepVecRep FamTyConFlavDataFamilyTyConOpenSynFamilyTyConClosedSynFamilyTyConAbstractClosedSynFamilyTyConBuiltInSynFamTyCon Injectivity NotInjective Injective AlgTyConFlavVanillaAlgTyConUnboxedSumTyCon ClassTyConDataFamInstTyConPromDataConInfo NoPromInfo RuntimeRepVecCountVecElem AlgTyConRhs AbstractTyCon DataTyCon TupleTyConSumTyConNewTyCon data_consdata_cons_sizeis_enum is_type_datadata_fixed_levdata_contup_sortnt_rhs nt_etad_rhsnt_co nt_fixed_rep tyConUnique tyConBinders tyConTyVars tyConResKind tyConKind tyConAritytyConNullaryTy tyConCType algTcFields famTcResVartcTyConScopedTyVars tcTyConIsPoly TyConBndrVisNamedTCBAnonTCBTyConPiTyBinder TyConBindermkAnonTyConBindermkAnonTyConBindersmkInvisAnonTyConBindermkNamedTyConBindermkNamedTyConBindersmkRequiredTyConBindertyConBinderForAllTyFlagtyConBndrVisForAllTyFlagisNamedTyConBinderisVisibleTyConBinderisVisibleTcbVisisInvisibleTyConBinder mkTyConKindtyConInvisTVBinderstyConVisibleTyVarsmkLevPolyDataTyConRhsmkDataTyConRhsvisibleDataCons isNoParenttyConRepModOcc isVoidRep isGcPtrRepprimRepCompatibleprimRepsCompatible primRepSizeBprimElemRepSizeBprimElemRepToPrimRepprimRepIsFloat primRepIsWord primRepIsInttyConFieldLabelslookupTyConFieldLabel mkAlgTyCon mkClassTyCon mkTupleTyCon mkSumTyCon mkTcTyConnoTcTyConScopedTyVars mkPrimTyConmkSynonymTyCon mkFamilyTyConmkPromotedDataConisAbstractTyCon isPrimTyCon isAlgTyConisVanillaAlgTyCon isDataTyConisTypeDataTyConisInjectiveTyConisGenerativeTyConisGenInjAlgRhs isNewTyConunwrapNewTyCon_maybeunwrapNewTyConEtad_maybeisTypeSynonymTyCon isTauTyConisFamFreeTyConisForgetfulSynTyContyConMustBeSaturatedisGadtSyntaxTyConisEnumerationTyCon isFamilyTyConisOpenFamilyTyConisTypeFamilyTyConisDataFamilyTyConisOpenTypeFamilyTyCon%isClosedSynFamilyTyConWithAxiom_maybetyConInjectivityInfoisBuiltInSynFamTyCon_maybe isTyConAssoctyConAssoc_maybetyConFlavourAssoc_maybetyConTuple_maybeisBoxedTupleTyConisUnboxedSumTyConisLiftedAlgTyConisPromotedTupleTyConisPromotedDataConisDataKindsPromotedDataConisPromotedDataCon_maybe isKindTyConisLiftedTypeKindTyConNameisImplicitTyContyConCType_maybe isTcTyConsetTcTyConKindtcHasFixedRuntimeRepisConcreteTyConexpandSynTyCon_maybeisTyConWithSrcDataCons tyConDataConstyConDataCons_maybetyConSingleDataCon_maybetyConSingleDataContyConSingleAlgDataCon_maybetyConAlgDataCons_maybetyConFamilySize algTyConRhstyConFamilyResVar_maybe tyConRoles newTyConRhsnewTyConEtadAritynewTyConEtadRhsnewTyConCo_maybe newTyConConewTyConDataCon_maybetyConStupidThetasynTyConDefn_maybesynTyConRhs_maybefamTyConFlav_maybe isClassTyContyConClass_maybetyConATsisFamInstTyContyConFamInstSig_maybetyConFamInst_maybetyConFamilyCoercion_maybetyConPromDataConInfo mkTyConTagMap tyConFlavourtcFlavourIsOpenpprPromotionQuote tyConSkolem$fBinaryTyConBndrVis$fOutputableTyConBndrVis$fBinaryInjectivity$fOutputableFamTyConFlav$fBinaryPrimElemRep$fOutputablePrimElemRep$fBinaryPrimRep$fOutputablePrimRep $fDataTyCon$fNamedThingTyCon$fOutputableTyConFlavour$fOutputableTyCon$fUniquableTyCon $fEqTyCon$fOutputableAlgTyConFlav$fEqTyConFlavour $fDataPrimRep $fEqPrimRep $fOrdPrimRep $fShowPrimRep$fDataPrimElemRep$fEqPrimElemRep$fOrdPrimElemRep$fShowPrimElemRep$fEnumPrimElemRep$fEqInjectivitytidyToIfaceTcArgstoIfaceCoercionX toIfaceTcArgs toIfaceTyContoIfaceForAllBndrs toIfaceTyLit toIfaceTypeX DTyConEnvTyConEnvnonDetTyConEnvElts emptyTyConEnvisEmptyTyConEnv unitTyConEnvextendTyConEnvextendTyConEnvListlookupTyConEnv alterTyConEnv mkTyConEnvmkTyConEnvWith elemTyConEnv plusTyConEnvplusTyConEnv_CplusTyConEnv_CDplusTyConEnv_CD2extendTyConEnv_C mapTyConEnvextendTyConEnv_AccextendTyConEnvList_CdelFromTyConEnvdelListFromTyConEnvfilterTyConEnv anyTyConEnvdisjointTyConEnvlookupTyConEnv_NFemptyDTyConEnvisEmptyDTyConEnvlookupDTyConEnvdelFromDTyConEnvfilterDTyConEnv mapDTyConEnvmapMaybeDTyConEnvadjustDTyConEnvalterDTyConEnvextendDTyConEnv foldDTyConEnv RecTcChecker initRecTcdefaultRecTcMaxBoundsetRecTcMaxBound checkRecTc$fOutputableRecTcChecker TyCoFoldertcf_view tcf_tyvar tcf_covartcf_holetcf_tycobinder CoercionHole ch_co_varch_ref PhantomProvProofIrrelProv PluginProv CorePrepProv MCoercionRMReflMCo KindCoercion CoercionP CoercionRFunSelSelMultSelArgSelResSelTyConSelFun SelForAllReflGRefl TyConAppCoAppCoForAllCoFunCoCoVarCo AxiomInstCo AxiomRuleCoUnivCoSymCoTransCoSelCoLRCoInstCoKindCoSubCoHoleCofco_rolefco_aflfco_afrfco_multfco_argfco_resKnotTiedNumTyLitStrTyLit CharTyLitTyVarTyAppTyTyConAppForAllTyFunTyLitTyCastTy CoercionTyft_afft_multft_argft_resFRRType LevityType KindOrTypenonDetCmpTyLitcmpTyLit mkTyVarTy mkTyVarTys mkTyCoVarTy mkTyCoVarTysmkFunTy mkInvisFunTy mkInvisFunTys tcMkVisFunTytcMkInvisFunTy mkVisFunTymkVisFunTyManymkVisFunTysManymkScaledFunTystcMkScaledFunTys mkForAllTysmkInvisForAllTysmkPiTymkPiTys coHoleCoVarsetCoHoleCoVarfoldTyConoViewtypeSize coercionSizeprovSize scaledMult mapScaledType$fOutputableTyLit$fOutputableFunSel $fNFDataCoSel $fBinaryCoSel$fOutputableCoSel$fUniquableCoercionHole$fOutputableCoercionHole$fDataCoercionHole$fOutputableUnivCoProvenance$fOutputableMCoercion$fOutputableCoercion$fOutputableType$fOutputableScaled $fDataScaled $fDataType$fDataCoercion$fDataUnivCoProvenance$fDataMCoercion $fEqCoSel $fDataCoSel $fEqFunSel $fDataFunSel $fEqTyLit $fDataTyLit primTyConsunexposedPrimTyConsexposedPrimTyConscharPrimTyConNameintPrimTyConNameint8PrimTyConNameint16PrimTyConNameint32PrimTyConNameint64PrimTyConNamewordPrimTyConNameword8PrimTyConNameword16PrimTyConNameword32PrimTyConNameword64PrimTyConNameaddrPrimTyConNamefloatPrimTyConNamedoublePrimTyConNamemkTemplateKindVarmkTemplateKindVarsmkTemplateTyVarsFrommkTemplateTyVarsmkTemplateTyConBindersmkTemplateKiTyVarsmkTemplateKiTyVarmkTemplateKindTyConBindersmkTemplateAnonTyConBinders alphaTyVars alphaTyVar betaTyVar gammaTyVar deltaTyVaralphaTyVarSpec betaTyVarSpecgammaTyVarSpecdeltaTyVarSpecalphaConstraintTyVaralphaConstraintTyalphaTysalphaTybetaTygammaTydeltaTyalphaTyVarsUnliftedRepalphaTyVarUnliftedRepalphaTysUnliftedRepalphaTyUnliftedRepruntimeRep1TyVarruntimeRep2TyVarruntimeRep3TyVarruntimeRep1TyVarInfruntimeRep2TyVarInf runtimeRep1Ty runtimeRep2Ty runtimeRep3TyopenAlphaTyVar openBetaTyVaropenGammaTyVaropenAlphaTyVarSpecopenBetaTyVarSpecopenGammaTyVarSpec openAlphaTy openBetaTy openGammaTy levity2TyVar levity1TyVarlevity1TyVarInflevity2TyVarInf levity1Ty levity2TylevPolyAlphaTyVarlevPolyBetaTyVarlevPolyAlphaTyVarSpeclevPolyBetaTyVarSpeclevPolyAlphaTy levPolyBetaTymultiplicityTyVar1multiplicityTyVar2funTyFlagTyCon isArrowTyCon fUNTyConNamectArrowTyConNameccArrowTyConNametcArrowTyConNamefUNTyCon ctArrowTyCon ccArrowTyCon tcArrowTyCon tYPETyCon tYPETyConNametYPEKindcONSTRAINTTyConcONSTRAINTTyConNamecONSTRAINTKind charPrimTy charPrimTyCon intPrimTy intPrimTyCon int8PrimTy int8PrimTyCon int16PrimTyint16PrimTyCon int32PrimTyint32PrimTyCon int64PrimTyint64PrimTyCon wordPrimTy wordPrimTyCon word8PrimTyword8PrimTyCon word16PrimTyword16PrimTyCon word32PrimTyword32PrimTyCon word64PrimTyword64PrimTyCon addrPrimTy addrPrimTyCon floatPrimTyfloatPrimTyCon doublePrimTydoublePrimTyCon mkStatePrimTystatePrimTyConrealWorldTyCon realWorldTyrealWorldStatePrimTy mkProxyPrimTyproxyPrimTyCon eqPrimTyConeqReprPrimTyConeqPhantPrimTyCon equalityTyConarrayPrimTyConmutableArrayPrimTyConmutableByteArrayPrimTyConbyteArrayPrimTyConsmallArrayPrimTyConsmallMutableArrayPrimTyCon mkArrayPrimTybyteArrayPrimTymkSmallArrayPrimTymkMutableArrayPrimTymkMutableByteArrayPrimTymkSmallMutableArrayPrimTymutVarPrimTyConmkMutVarPrimTyioPortPrimTyConmkIOPortPrimTy mVarPrimTyCon mkMVarPrimTy tVarPrimTyCon mkTVarPrimTystablePtrPrimTyConmkStablePtrPrimTystableNamePrimTyConmkStableNamePrimTycompactPrimTyCon compactPrimTystackSnapshotPrimTyConstackSnapshotPrimTy bcoPrimTy bcoPrimTyCon weakPrimTyCon mkWeakPrimTythreadIdPrimTythreadIdPrimTyConpromptTagPrimTyConmkPromptTagPrimTy int8X16PrimTyint8X16PrimTyCon int16X8PrimTyint16X8PrimTyCon int32X4PrimTyint32X4PrimTyCon int64X2PrimTyint64X2PrimTyCon int8X32PrimTyint8X32PrimTyConint16X16PrimTyint16X16PrimTyCon int32X8PrimTyint32X8PrimTyCon int64X4PrimTyint64X4PrimTyCon int8X64PrimTyint8X64PrimTyConint16X32PrimTyint16X32PrimTyConint32X16PrimTyint32X16PrimTyCon int64X8PrimTyint64X8PrimTyConword8X16PrimTyword8X16PrimTyConword16X8PrimTyword16X8PrimTyConword32X4PrimTyword32X4PrimTyConword64X2PrimTyword64X2PrimTyConword8X32PrimTyword8X32PrimTyConword16X16PrimTyword16X16PrimTyConword32X8PrimTyword32X8PrimTyConword64X4PrimTyword64X4PrimTyConword8X64PrimTyword8X64PrimTyConword16X32PrimTyword16X32PrimTyConword32X16PrimTyword32X16PrimTyConword64X8PrimTyword64X8PrimTyCon floatX4PrimTyfloatX4PrimTyCondoubleX2PrimTydoubleX2PrimTyCon floatX8PrimTyfloatX8PrimTyCondoubleX4PrimTydoubleX4PrimTyConfloatX16PrimTyfloatX16PrimTyCondoubleX8PrimTydoubleX8PrimTyCon runTyCoVarstyCoVarsOfTypetyCoVarsOfTypes tyCoVarsOfCo tyCoVarsOfMCo tyCoVarsOfCos deepTcvFoldershallowTyCoVarsOfTypeshallowTyCoVarsOfTypesshallowTyCoVarsOfCoshallowTyCoVarsOfCosshallowTyCoVarsOfTyVarEnvshallowTyCoVarsOfCoVarEnv coVarsOfType coVarsOfTypes coVarsOfCo coVarsOfCoscloseOverKindscloseOverKindsListcloseOverKindsDSettyCoVarsOfTypeDSettyCoVarsOfTypeListtyCoVarsOfTypesDSettyCoVarsOfTypesList tyCoFVsOfType tyCoFVsBndrtyCoFVsVarBndrstyCoFVsVarBndrtyCoFVsOfTypestyCoVarsOfCoDSettyCoVarsOfCoList tyCoFVsOfCo tyCoFVsOfCosalmostDevoidCoVarOfCo visVarsOfTypevisVarsOfTypesinjectiveVarsOfTypeinjectiveVarsOfTypesinvisibleVarsOfTypeinvisibleVarsOfTypesanyFreeVarsOfTypeanyFreeVarsOfTypesanyFreeVarsOfConoFreeVarsOfTypenoFreeVarsOfTypesnoFreeVarsOfCo scopedSorttyCoVarsOfTypeWellScopedtyCoVarsOfTypesWellScoped tyConsOfTypeoccCheckExpand tidyVarBndrs tidyVarBndravoidNameClashestidyForAllTyBindertidyForAllTyBinderstidyFreeTyCoVarstidyOpenTyCoVarstidyOpenTyCoVartidyTyCoVarOcc tidyTypestidyType tidyOpenTypes tidyOpenType tidyTopTypetidyCotidyCos CvSubstEnv TvSubstEnv IdSubstEnvSubstemptyIdSubstEnvemptyTvSubstEnvemptyCvSubstEnvcomposeTCvSubst emptySubst mkEmptySubst isEmptySubstisEmptyTCvSubstmkSubst mkIdSubst mkTvSubst mkCvSubst getIdSubstEnv getTvSubstEnv getCvSubstEnvgetSubstInScope setInScopegetSubstRangeTyCoFVs isInScope elemSubst notElemSubstzapSubstextendSubstInScopeextendSubstInScopeListextendSubstInScopeSetextendTCvSubstextendTCvSubstWithClone extendTvSubstextendTvSubstBinderAndInScopeextendTvSubstWithClone extendCvSubstextendCvSubstWithCloneextendTvSubstAndInScopeextendTvSubstListextendTCvSubstList unionSubst zipTvSubst zipCvSubst zipTCvSubst mkTvSubstPrszipTyEnvzipCoEnv substTyWithsubstTyWithUncheckedsubstTyWithInScope substCoWithsubstCoWithUncheckedsubstTyWithCoVars substTysWithsubstTysWithCoVarssubstTyAddInScopeisValidTCvSubstcheckValidSubstsubstTysubstTyUnchecked substScaledTysubstScaledTyUncheckedsubstTyssubstScaledTyssubstTysUncheckedsubstScaledTysUnchecked substThetasubstThetaUnchecked substTyVarsubstTyVarToTyVar substTyVars substTyCoVars lookupTyVarsubstCosubstCoUncheckedsubstCossubstForAllCoBndrsubstForAllCoBndrUsing substCoVar substCoVars lookupCoVarsubstTyVarBndrsubstTyVarBndrs substVarBndr substVarBndrssubstCoVarBndrsubstVarBndrUsingcloneTyVarBndrcloneTyVarBndrs substTyCoBndr$fOutputableSubst TyCoMapper tcm_tyvar tcm_covartcm_holetcm_tycobinder tcm_tyconManyTyOneTykindRep kindRep_maybeisUnliftedTypeKindpickyIsLiftedTypeKindkindBoxedRepLevity_maybeisLiftedRuntimeRepisUnliftedRuntimeRepisLiftedLevityisUnliftedLevityisRuntimeRepVar isLevityVarisMultiplicityVarsplitRuntimeRep_maybeisBoxedRuntimeRepruntimeRepLevity_maybelevityType_maybemapTyComapTyCoXgetTyVarrepGetTyVar_maybe isTyVarTygetCastedTyVar_maybemkAppTyssplitAppTy_maybe splitAppTysplitAppTyNoView_maybetcSplitAppTyNoView_maybe splitAppTyssplitAppTysNoView mkNumLitTy isNumLitTy mkStrLitTy isStrLitTy mkCharLitTy isCharLitTyisLitTyuserTypeError_maybepprUserTypeErrorTyfunTyConAppTy_maybetyConAppFunTy_maybetyConAppFunCo_maybemkFunctionTypemkScaledFunctionTys splitFunTysplitFunTy_maybe splitFunTys funResultTyfunArgTy piResultTys applyTysXtyConAppTyConPicky_maybe tyConAppTyContyConAppArgs_maybe tyConAppArgs splitTyConAppsplitTyConAppNoView_maybetcSplitTyConApp_maybetcSplitTyConAppnewTyConInstRhssplitCastTy_maybeisCoercionTy_maybestripCoercionTytyConBindersPiTyBindersmkTyCoInvForAllTy mkInfForAllTymkTyCoInvForAllTysmkInfForAllTysmkSpecForAllTymkSpecForAllTysmkVisForAllTysmkTyConBindersPreferAnonsplitForAllForAllTyBinderssplitForAllTyCoVarssplitForAllReqTyBinderssplitForAllInvisTyBinders isForAllTy isForAllTy_ty isForAllTy_coisPiTyisFunTysplitForAllTyCoVar dropForAllssplitForAllTyCoVar_maybesplitForAllTyVar_maybesplitForAllCoVar_maybesplitPiTy_maybe splitPiTy splitPiTysgetRuntimeArgTysinvisibleTyBndrCountsplitInvisPiTyssplitInvisPiTysNfilterOutInvisibleTypesfilterOutInferredTypespartitionInvisiblestyConForAllTyFlagsappTyForAllTyFlagsisTauTy isAtomicTymkFamilyTyConApp coAxNthLHS isFamFreeTy isCoVarType buildSynTyConisUnliftedTypemightBeLiftedTypemightBeUnliftedType isBoxedTypeisRuntimeRepKindedTydropRuntimeRepArgs getRuntimeRepisUnboxedTupleTypeisUnboxedSumType isAlgTypeisDataFamilyAppType isStrictTypeisPrimitiveTypeisValidJoinPointTypeseqTypeseqTypessORTKind_maybeisTYPEorCONSTRAINTisConstraintLikeKindisConstraintKindtcIsLiftedTypeKindtcIsBoxedTypeKindisTypeLikeKindreturnsConstraintKindtypeHasFixedRuntimeRepargsHaveFixedRuntimeRepisFixedRuntimeRepKind isConcretetyConAppNeedsKindSig unrestrictedlineartymultirrelevantMultmkScaled scaledSetisManyTyisOneTy isLinearType mkTYPEappmkTYPEapp_maybemkCONSTRAINTappmkCONSTRAINTapp_maybemkBoxedRepApp_maybemkTupleRepApp_maybetypeOrConstraintKind OverLitVal HsIntegral HsFractional HsIsString HsOverLitOverLitol_extol_valHsLitHsChar HsCharPrimHsString HsStringPrimHsInt HsIntPrim HsWordPrim HsInt64Prim HsWord64Prim HsIntegerHsRat HsFloatPrim HsDoublePrimXLitnegateOverLitVal $fEqHsLit$fOrdOverLitVal$fEqOverLitVal$fOrdHsOverLit $fEqHsOverLit$fDataOverLitValTickishPlacement PlaceRuntime PlaceNonLamPlaceCostCentreTickishScopingNoScope SoftScopeCostCentreScope GenTickishProfNoteHpcTick Breakpoint profNoteCC profNoteCount profNoteScope tickModuletickId breakpointExt breakpointId breakpointFVs sourceSpan sourceName CmmTickish StgTickish CoreTickish XTickishId tickishCounts tickishScopedtickishScopesLiketickishFloatabletickishCanSplit mkNoCount mkNoScope tickishIsCode isProfTick tickishPlacetickishContains$fOutputableTickishPlacement$fEqTickishPlacement$fShowTickishPlacement$fEqTickishScoping$fDataGenTickish$fOrdGenTickish$fEqGenTickish$fDataGenTickish0$fDataGenTickish1$fOrdGenTickish0$fEqGenTickish0 IsSubmultSubmultUnknown isMultMul mkMultAdd mkMultMul scaleScaled mkMultSupsubmultpprArrowWithMultiplicity$fOutputableIsSubmult$fShowIsSubmult $fEqIsSubmultUsageEnvUsageZeroBottomMUsageaddUsage scaleUsageunitUEzeroUEbottomUEaddUEscaleUEsupUEsupUEsdeleteUElookupUE$fOutputableUsage$fOutputableUsageEnvtcEqKindtcEqTypetcEqTypeNoKindCheck tcEqTyConApps tcEqTypeVis pickyEqType eqForAllVis cmpForAllViseqTypeeqTypeXeqTypes eqVarBndrs nonDetCmpTypenonDetCmpTypesnonDetCmpTypeXnonDetCmpTypesX nonDetCmpTc$fEqTypeOrdering$fOrdTypeOrdering$fEnumTypeOrdering$fBoundedTypeOrdering LitNumType LitNumBigNat LitNumInt LitNumInt8 LitNumInt16 LitNumInt32 LitNumInt64 LitNumWord LitNumWord8 LitNumWord16 LitNumWord32 LitNumWord64LiteralLitChar LitNumber LitString LitNullAddr LitRubbishLitFloat LitDoubleLitLabellitNumIsSigned litNumBitSizemkLitNumberWrap litNumWrap litNumCoerce litNumNarrowlitNumCheckRange litNumRange mkLitNumbermkLitInt mkLitIntWrapmkLitIntUnchecked mkLitIntWrapC mkLitWord mkLitWordWrapmkLitWordUncheckedmkLitWordWrapC mkLitInt8 mkLitInt8WrapmkLitInt8Unchecked mkLitWord8mkLitWord8WrapmkLitWord8Unchecked mkLitInt16mkLitInt16WrapmkLitInt16Unchecked mkLitWord16mkLitWord16WrapmkLitWord16Unchecked mkLitInt32mkLitInt32WrapmkLitInt32Unchecked mkLitWord32mkLitWord32WrapmkLitWord32Unchecked mkLitInt64mkLitInt64WrapmkLitInt64Unchecked mkLitWord64mkLitWord64WrapmkLitWord64Unchecked mkLitFloat mkLitDouble mkLitChar mkLitString mkLitBigNat isLitRubbish isMinBound isMaxBound inCharRange isZeroLitisOneLitlitValueisLitValue_maybe mapLitValue narrowInt8LitnarrowInt16LitnarrowInt32LitnarrowInt64LitnarrowWord8LitnarrowWord16LitnarrowWord32LitnarrowWord64LitconvertToWordLitconvertToIntLit charToIntLit intToCharLit floatToIntLit intToFloatLitdoubleToIntLitintToDoubleLitfloatToDoubleLitdoubleToFloatLit nullAddrLit litIsTrivial litIsDupable litFitsInChar litIsLifted literalType pprLiteral$fBinaryLitNumType $fOrdLiteral $fEqLiteral$fOutputableLiteral$fBinaryLiteral $fDataLiteral$fDataLitNumType$fEnumLitNumType$fEqLitNumType$fOrdLitNumTypeGenMap LiteralMapListMapMaybeMapTrieMapKeyemptyTMlookupTMalterTMfilterTMfoldTMXTinsertTMdeleteTM foldMapTM isEmptyTM>.>|>|>> foldMaybe filterMaybelkListxtListlkGxtGmapGfdG$fTrieMapUniqDFM $fTrieMapMap$fTrieMapIntMap$fFoldableMaybeMap$fTrieMapMaybeMap$fFunctorMaybeMap$fOutputableListMap$fFoldableListMap$fTrieMapListMap$fFunctorListMap$fFoldableGenMap$fTrieMapGenMap$fFunctorGenMap$fOutputableGenMapFactBaseLabelMapLabelSetLabel mkHooplLabel lookupFact$fOutputablePenvLabel$fOutputableLabel$fUniquableLabel $fShowLabel$fOutputableLabelSet$fIsSetLabelSet$fTrieMapLabelMap$fOutputablePenvLabelMap$fOutputableLabelMap$fIsMapLabelMap $fEqLabelMap $fOrdLabelMap$fShowLabelMap$fFunctorLabelMap$fFoldableLabelMap$fTraversableLabelMap $fEqLabelSet $fOrdLabelSet$fShowLabelSet$fMonoidLabelSet$fSemigroupLabelSet $fEqLabel $fOrdLabelGraph'GNilGUnitGManyNonLocal entryLabel successorsBody emptyBodybodyListbodyToBlockListaddBlockmapGraphmapGraphBlocks labelsDefinedrevPostorderFrom$fNonLocalBlockBlockId mkBlockIdShowForAllFlagShowForAllMustShowForAllWhenPrintExplicitKinds UseBndrParensSuppressBndrSigIfaceUnivCoProvIfacePhantomProvIfaceProofIrrelProvIfacePluginProvIfaceCorePrepProv IfaceReflCo IfaceGReflCo IfaceFunCoIfaceTyConAppCo IfaceAppCo IfaceForAllCo IfaceCoVarCoIfaceAxiomInstCoIfaceAxiomRuleCo IfaceUnivCo IfaceSymCo IfaceTransCo IfaceSelCo IfaceLRCo IfaceInstCo IfaceKindCo IfaceSubCoIfaceFreeCoVar IfaceHoleCoIfaceMCoercion IfaceMReflIfaceMCoIfaceTyConInfoifaceTyConIsPromotedifaceTyConSortIfaceTyConSortIfaceNormalTyConIfaceTupleTyCon IfaceSumTyConIfaceEqualityTyConifaceTyConNameifaceTyConInfoIA_NilIA_ArgIfaceForAllSpecBndrIfaceForAllBndrIfaceTyConBinder IfaceNumTyLit IfaceStrTyLitIfaceCharTyLit IfaceContext IfacePredType IfaceMultIfaceFreeTyVar IfaceTyVar IfaceLitTy IfaceAppTy IfaceFunTy IfaceForAllTy IfaceTyConApp IfaceCastTyIfaceCoercionTy IfaceTupleTy IfaceKind IfaceOneShotIfaceNoOneShot IfaceLamBndr IfaceTvBndr IfaceIdBndr IfExtName IfLclName ifaceBndrNamemkIfaceForAllTvBndrmkIfaceTyConKindifaceForAllSpecToBndrsifaceForAllSpecToBndrmkIfaceTyConInfoisIfaceLiftedTypeKindsplitIfaceSigmaTysuppressIfaceInvisiblesstripIfaceInvisVarsifForAllBndrVarifForAllBndrNameifTyConBinderVarifTyConBinderNamemkIfaceTySubstinDomIfaceTySubstsubstIfaceAppArgssubstIfaceTyVarstripInvisArgsappArgsIfaceTypesappArgsIfaceTypesForAllTyFlagspprIfacePrefixAppisIfaceRhoType pprIfaceBndrspprIfaceLamBndrpprIfaceIdBndrpprIfaceTvBndrpprIfaceTyConBinders pprIfaceTypepprParendIfaceTypepprPrecIfaceType pprTypeArrowmany_typprIfaceAppArgspprParendIfaceAppArgspprIfaceForAllPartpprIfaceForAllPartMustpprIfaceForAllpprIfaceSigmaTypepprUserIfaceForAllpprIfaceTypeApp pprTyTcApppprIfaceCoTcApp pprIfaceTyLitpprIfaceCoercionpprParendIfaceCoercionpprIfaceContextArrpprIfaceContext$fNFDataIfaceOneShot$fBinaryIfaceOneShot$fOutputableIfaceOneShot$fNFDataIfaceTyLit$fBinaryIfaceTyLit$fOutputableIfaceTyLit$fNFDataIfaceTyConSort$fBinaryIfaceTyConSort$fOutputableIfaceTyConSort$fNFDataIfaceTyConInfo$fBinaryIfaceTyConInfo$fOutputableIfaceTyConInfo$fNFDataIfaceTyCon$fBinaryIfaceTyCon$fOutputableIfaceTyCon$fNFDataIfaceAppArgs$fNFDataIfaceBndr$fNFDataIfaceMCoercion$fNFDataIfaceUnivCoProv$fNFDataIfaceCoercion$fNFDataIfaceType$fBinaryDefMethSpec$fBinaryIfaceUnivCoProv$fBinaryIfaceCoercion$fBinaryIfaceMCoercion$fBinaryIfaceType$fBinaryIfaceAppArgs$fOutputableIfaceCoercion$fOutputableIfaceAppArgs$fOutputableIfaceType$fBinaryIfaceBndr$fMonoidIfaceAppArgs$fSemigroupIfaceAppArgs$fOutputableIfaceBndr$fEqIfaceTyCon$fEqIfaceTyConInfo$fEqIfaceTyConSort$fEqIfaceTyLit pprParendType pprTidiedType pprPrecType pprPrecTypeX pprParendKind pprParendCo pprClassPredpprThetapprParendThetapprThetaArrowTy pprSigmaType pprForAll pprUserForAll pprTCvBndrs pprTCvBndr pprTyVars pprDataCons pprTypeApppprWithExplicitKindsWhen pprWithTYPEpprSourceTyCon PatSynBuilder PatSynMatcherPatSynmkPatSyn patSynName patSynIsInfix patSynArityisVanillaPatSyn patSynArgspatSynFieldLabelspatSynFieldTypepatSynUnivTyVarBinderspatSynExTyVarspatSynExTyVarBinders patSynSigBndr patSynSig patSynMatcher patSynBuilderpatSynResultTypepatSynInstArgTyspatSynInstResTy $fDataPatSyn$fOutputableBndrPatSyn$fOutputablePatSyn$fNamedThingPatSyn$fUniquablePatSyn $fEqPatSynRoughMapRoughMatchLookupTc RML_KnownTc RML_NoKnownTc RML_WildCard RoughMatchTc RM_KnownTc RM_WildCardinstanceCantMatchroughMatchTcToLookupisRoughWildcard roughMatchTcsroughMatchTcsLookuptypeToRoughMatchLookupTctypeToRoughMatchTcemptyRMlookupRM lookupRM'unionRMinsertRMfilterRMfilterMatchingRMelemsRMfoldRMsizeRM$fOutputableRoughMatchTc$fOutputableRoughMatchLookupTc$fOutputableRoughMap$fFunctorRoughMap$fDataRoughMatchLookupTc$fDataRoughMatchTc LiftCoEnvLCNormaliseStepResultNS_DoneNS_AbortNS_StepNormaliseStepper coVarNamesetCoVarUnique setCoVarNameetaExpandCoAxBranch pprCoAxiompprCoAxBranchUserpprCoAxBranchLHS pprCoAxBranchtidyCoAxBndrsForUsercoToMCocheckReflexiveMCo isGReflMCo mkTransMCo mkTransMCoL mkTransMCoRmkSymMCo mkCastTyMComkHomoForAllMComkPiMCos mkFunResMComkGReflLeftMComkGReflRightMComkCoherenceRightMCo isReflMCo decomposeCodecomposeFunCogetCoVar_maybemultToCosplitAppCo_maybesplitFunCo_maybesplitForAllCo_maybesplitForAllCo_ty_maybesplitForAllCo_co_maybe coVarLType coVarRType coVarTypes coVarKindmkRuntimeRepCoisReflCoVar_maybeisGReflCo_maybeisReflCo_maybeisReflexiveCo_maybe mkRepReflCo mkFunCoNoFTF mkNakedFunCo2mkAppCos mkForAllCosmkHomoForAllCos mkCoVarCos mkAxInstComkUnbranchedAxInstCo mkAxInstRHSmkUnbranchedAxInstRHS mkAxInstLHSmkUnbranchedAxInstLHSmkHoleCo getNthFunmkGReflRightCo mkGReflLeftComkCoherenceLeftComkCoherenceRightCo downgradeRolesetNominalRole_maybe tyConRolesXtyConRoleListXtyConRolesRepresentationaltyConRoleListRepresentational tyConRolefunRoleltRolepromoteCoercioncastCoercionKind2castCoercionKind1castCoercionKindmkPiCosmkPiCo mkFunResComkCoCastinstNewTyCon_maybecomposeSteppersunwrapNewTypeSteppertopNormaliseTypeX eqCoercion eqCoercionXliftCoSubstWithExliftCoSubstWithemptyLiftingContextmkSubstLiftingContextextendLiftingContextextendLiftingContextAndInScopezapLiftingContextsubstForAllCoBndrUsingLCliftCoSubstTyVarliftCoSubstVarBndrUsing isMappedByLC substLeftCo substRightCo swapLiftCoEnv lcSubstLeft lcSubstRightliftEnvSubstLeftliftEnvSubstRightlcSubst lcInScopeSet coercionKindscoercionKindRolegetNthFromType coercionRole mkPrimEqPredmkPrimEqPredRolemkHeteroPrimEqPredmkHeteroReprPrimEqPredmkReprPrimEqPred buildCoercionhasCoercionHoleTyhasCoercionHoleCohasThisCoercionHoleTy setCoHoleType$fOutputableNormaliseStepResult$fOutputableLiftingContext$fFunctorNormaliseStepResult StarIsNotTypeUntickedPromotedThingUntickedConstructorUntickedExplicitList SimilarNameSimilarRdrName HowInScopeLocallyBoundAtImportSuggestionCouldImportFromCouldUnhideFromInstantiationSuggestionGhcHint UnknownHintSuggestExtensionSuggestCorrectPragmaNameSuggestMissingDoSuggestLetInDoSuggestAddSignatureCabalFileSuggestSignatureInstantiationsSuggestUseSpacesSuggestUseWhitespaceAfterSuggestUseWhitespaceAroundSuggestParenthesesSuggestIncreaseMaxPmCheckModelsSuggestAddTypeSignaturesSuggestBindToWildcard SuggestAddInlineOrNoInlinePragmaSuggestAddPhaseToCompetingRuleSuggestAddToHSigExportList#SuggestIncreaseSimplifierIterationsSuggestUseTypeFromDataKindSuggestQualifiedAfterModuleNameSuggestThQuotationSyntax SuggestRolesSuggestQualifyStarOperatorSuggestTypeSignatureFormSuggestFixOrphanInstanceSuggestAddStandaloneDerivationSuggestFillInWildcardConstraintSuggestRenameForallSuggestAppropriateTHTickSuggestDumpSlicesSuggestAddTickSuggestMoveToDeclarationSiteSuggestSimilarNamesRemindFieldSelectorSuppressedSuggestImportingDataConSuggestPlacePragmaInHeaderSuggestPatternMatchingSyntax SuggestSpecialiseVisibilityHintssuppressed_selectorsuppressed_parentsLanguageExtensionHintSuggestSingleExtensionSuggestAnyExtensionSuggestExtensionsSuggestExtensionInOrderToAvailableBindings NamedBindingsUnnamedBindingsuggestExtensionsuggestExtensionWithInfosuggestExtensionssuggestExtensionsWithInfosuggestAnyExtensionsuggestAnyExtensionWithInfouseExtensionInOrderTopprUntickedConstructor isBareSymbolnoStarIsTypeHintsDiagnosticCodediagnosticCodeNameSpacediagnosticCodeNumberSeverity SevIgnore SevWarningSevError MessageClassMCOutputMCFatal MCInteractiveMCDumpMCInfo MCDiagnostic MsgEnvelope errMsgSpan errMsgContexterrMsgDiagnosticerrMsgSeverityDiagnosticReasonWarningWithoutFlagWarningWithFlagErrorWithoutFlagDiagnosticMessage diagMessage diagReason diagHintsDiagnosticHintNoDiagnosticOptsUnknownDiagnostic DiagnosticDiagnosticOptsdefaultDiagnosticOptsdiagnosticMessagediagnosticReasondiagnosticHintsdiagnosticCode DecoratedSDoc unDecoratedMessages getMessages emptyMessages mkMessagesisEmptyMessages singleMessage addMessage unionMessagesunionManyMessages mkDecoratedmkSimpleDecoratedunionDecoratedSDocmapDecoratedSDocnoHintsmkPlainDiagnostic mkPlainErrormkDecoratedDiagnosticmkDecoratedError pprMessageBag mkLocMessagemkLocMessageWarningGroupsgetCaretDiagnosticisIntrinsicErrorMessageisWarningMessage errorsFoundisExtrinsicErrorMessageerrorsOrFatalWarningsFoundgetWarningMessagesgetErrorMessagespartitionMessages$fOutputableDiagnosticHint$fOutputableDiagnosticReason$fToJsonSeverity$fOutputableSeverity$fShowMsgEnvelope$fOutputableDiagnosticCode$fToJsonMessageClass$fDiagnosticDiagnosticMessage$fOutputableMessages$fDiagnosticUnknownDiagnostic$fSemigroupMessages$fMonoidMessages$fFunctorMessages$fFoldableMessages$fTraversableMessages$fFunctorMsgEnvelope$fFoldableMsgEnvelope$fTraversableMsgEnvelope $fEqSeverity$fShowSeverity$fEqDiagnosticReason$fShowDiagnosticReasonContainsLogger extractLogger HasLogger getLoggerLoggerlogFlags DumpFormat FormatHaskell FormatCore FormatSTGFormatByteCode FormatCMM FormatASMFormatC FormatLLVMFormatJS FormatText TraceAction DumpAction LogActionLogFlagslog_default_user_contextlog_default_dump_contextlog_dump_flagslog_show_caretlog_show_warn_groupslog_enable_timestampslog_dump_to_file log_dump_dirlog_dump_prefixlog_dump_prefix_override log_with_wayslog_enable_debug log_verbositylog_waysdefaultLogFlagslog_dopt log_set_doptlogHasDumpFlaglogVerbAtLeastupdateLogFlags setLogFlagsloggerTraceFlushUpdateloggerTraceFlush initLogger putLogMsg putDumpFile putTraceMsg pushLogHook popLogHook pushDumpHook popDumpHook pushTraceHook popTraceHookmakeThreadSafe jsonLogActiondefaultLogActiondefaultLogActionHPrintDocdefaultLogActionHPutStrDocdefaultDumpActionwithDumpFileHandledefaultTraceActionlogMsg logDumpFile logTraceMsg logDumpMsgputDumpFileMaybeputDumpFileMaybe' touchDumpFile$fShowDumpFormat$fEqDumpFormatValidity Validity'IsValidNotValidDiagOptsdiag_warning_flagsdiag_fatal_warning_flagsdiag_warn_is_errordiag_reverse_errorsdiag_max_errors diag_ppr_ctx diag_woptdiag_fatal_woptdiagReasonSeveritymkMCDiagnosticerrorDiagnostic mkMsgEnvelopemkErrorMsgEnvelopemkPlainMsgEnvelopemkPlainErrorMsgEnvelopeandValidallValid getInvalidsformatBulleted pprMessagespprMsgEnvelopeBagWithLocpprMsgEnvelopeBagWithLocDefaultpprLocMsgEnvelopeDefaultpprLocMsgEnvelope sortMsgBagghcExiterrorMsg fatalErrorMsgcompilationProgressMsgshowPass withTimingwithTimingSilent debugTraceMsgputMsgprintInfoForUserprintOutputForUserlogInfo logOutputprettyPrintGhcErrorstraceCmdtraceSystoolCommand$fEqPrintTimings$fShowPrintTimings$fFunctorValidity'TempDirTempFileLifetimeTFL_CurrentModuleTFL_GhcSession FilesToClean ftcGhcSessionftcCurrentModuleTmpFsemptyFilesToClean initTmpFs forkTmpFsFrommergeTmpFsInto cleanTempDirscleanTempFilescleanCurrentModuleTempFilesaddFilesToCleanchangeTempFilesLifetime newTempName newTempDirnewTempLibNamewithSystemTempDirectorywithTempDirectory$fShowTempFileLifetimeStgToCmmConfigstgToCmmProfilestgToCmmThisModulestgToCmmTmpDirstgToCmmContextstgToCmmEmitDebugInfostgToCmmBinBlobThreshstgToCmmMaxInlAllocSizestgToCmmDoTickystgToCmmTickyAllocdstgToCmmTickyLNEstgToCmmTickyDynThunkstgToCmmTickyTagstgToCmmLoopificationstgToCmmAlignCheckstgToCmmOptHpcstgToCmmFastPAPCallsstgToCmmSCCProfilingstgToCmmEagerBlackHolestgToCmmInfoTableMapstgToCmmOmitYieldsstgToCmmOmitIfPragmas stgToCmmPIC stgToCmmPIEstgToCmmExtDynRefsstgToCmmDoBoundsCheckstgToCmmDoTagCheckstgToCmmAllowBigArithstgToCmmAllowQuotRemInstrstgToCmmAllowQuotRem2!stgToCmmAllowExtendedAddSubInstrsstgToCmmAllowIntMul2InstrstgToCmmTickyAPstgToCmmVecInstrsErr stgToCmmAvx stgToCmmAvx2stgToCmmAvx512fstgToCmmPlatformPipelineOutput Temporary Persistent SpecificFile NoOutputFilePipeEnv stop_phase src_filename src_basename src_suffix start_phase output_specMonadUseuseTPipelineClass$fShowPipelineOutputDefunctionalizedCDefsNoCDefs LlvmCDefsDefunctionalizedPostHscPipelineNcgPostHscPipelineViaCPostHscPipelineLlvmPostHscPipelineJSPostHscPipelineNoPostHscPipelineDefunctionalizedCodeOutput NcgCodeOutputViaCCodeOutputLlvmCodeOutput JSCodeOutput#DefunctionalizedAssemblerInfoGetterStandardAssemblerInfoGetterJSAssemblerInfoGetterDarwinClangAssemblerInfoGetterDefunctionalizedAssemblerProgStandardAssemblerProgJSAssemblerProgDarwinClangAssemblerProgPrimitiveImplementationLlvmPrimitives NcgPrimitives JSPrimitivesGenericPrimitivesBackendplatformDefaultBackendplatformNcgSupported ncgBackend llvmBackend jsBackend viaCBackendinterpreterBackend noBackendbackendDescriptionbackendWritesFilesbackendPipelineOutputbackendCanReuseLoadedCodebackendGeneratesCodebackendSupportsInterfaceWritingbackendRespectsSpecialisebackendWantsGlobalBindingsbackendHasNativeSwitchbackendPrimitiveImplementationbackendSimdValiditybackendSupportsEmbeddedBlobsbackendNeedsPlatformNcgSupport backendSupportsUnsplitProcPointsbackendSwappableWithViaCbackendUnregisterisedAbiOnlybackendGeneratesHcbackendSptIsDynamicbackendWantsBreakpointTicksbackendForcesOptimization0backendNeedsFullWaysbackendSpecialModuleSourcebackendSupportsHpcbackendSupportsCImportbackendSupportsCExportbackendAssemblerProgbackendAssemblerInfoGetter backendCDefsbackendCodeOutputbackendUseJSLinkerbackendPostHscPipelinebackendNormalSuccessorPhase backendName allBackendsbackendValidityOfCImportbackendValidityOfCExport $fShowBackend$fShowPrimitiveImplementation SwitchPlanUnconditionallyIfEqualIfLT JumpTable SwitchTargetsmkSwitchTargetsmapSwitchTargetsswitchTargetsCasesswitchTargetsDefaultswitchTargetsRangeswitchTargetsSignedswitchTargetsToTableswitchTargetsToListswitchTargetsFallThrougheqSwitchTargetWithcreateSwitchPlan$fShowSwitchPlan$fShowSwitchTargets$fEqSwitchTargetsEwMWarn warnReasonwarnMsgErrerrMsg WarnReasonNoReasonReasonDeprecatedFlagReasonUnrecognisedFlagOptKindNoArgHasArgSepArg OptPrefix OptIntSuffix IntSuffix WordSuffix FloatSuffixPassFlag AnySuffix GhcFlagModeOnlyGhcOnlyGhciAllModes HiddenFlagFlagflagName flagOptKind flagGhcModedefFlag defGhcFlag defGhciFlag defHiddenFlag hoistFlagrunEwMaddErraddWarn addFlagWarngetArg getCurLocliftEwM processArgsparseResponseFileerrorsToGhcException$fToJsonWarnReason$fOutputableWarnReason $fMonadIOEwM $fMonadEwM$fApplicativeEwM $fFunctorEwM$fEqWarnReason$fShowWarnReasonTickPreInlineUnconditionallyPostInlineUnconditionally UnfoldingDone RuleFiredLetFloatFromLet EtaExpansion EtaReduction BetaReduction CaseOfCase KnownBranch CaseMergeAltMergeCaseElim CaseIdentityFillInCaseDefaultSimplifierDone SimplCount simplCountNzeroSimplCountisZeroSimplCounthasDetailedCountsdoFreeSimplTick doSimplTickplusSimplCount pprSimplCount $fOrdTick$fEqTick$fOutputableTickEqRelNomEqReprEqPred ClassPredEqPred IrredPred ForAllPredclassifyPredType mkClassPredisDictTytypeDeterminesValuegetClassPredTysgetClassPredTys_maybe classMethodTyclassMethodInstTy eqRelRole getEqPredTysgetEqPredTys_maybe getEqPredRole predTypeEqRel isEvVarType isEqPredClass isClassPredisEqPred isEqPrimPred isCTupleClass isIPTyCon isIPClass isIPLikePredhasIPSuperClassesisCallStackPredTyisCallStackPred isCallStackTyisIPPred_maybeisEvVarisDictId$fOutputableEqRel $fEqEqRel $fOrdEqRelArgsReductions Reductions ReductionR ReductionN HetReduction ReductionreductionCoercionreductionReducedTypemkHetReductionhomogeniseHetRedn mkReductionreductionOriginalType coercionRedn downgradeRedn mkSubRedn mkTransRedn mkReflRednmkGReflRightRednmkGReflRightMRednmkGReflLeftRednmkGReflLeftMRednmkCoherenceRightRednmkCoherenceRightMRedn mkCastRedn1 mkCastRedn2 mkAppRedn mkFunRedn mkForAllRednmkHomoForAllRednmkProofIrrelRedn mkReflCoRedn mkReductions mkAppRednsmkTyConAppRednmkClassPredRedn unzipRednssimplifyArgsWorker$fOutputableReductionVarMapBndrMapDeBruijnDCmEnv LooseTypeMapTypeMapTypeMapG CoercionMapGeqDeBruijnType eqDeBruijnVar foldTypeMap emptyTypeMap lookupTypeMap extendTypeMaplookupTypeMapWithScopeextendTypeMapWithScopemkDeBruijnContextemptyCME extendCME extendCMEs lookupCME deBruijnizelkBndrxtBndrlkVarxtVar lkDFreeVar xtDFreeVarlkDNamedxtDNamed$fTrieMapTyLitMap$fFunctorTyLitMap $fEqDeBruijn $fEqDeBruijn0 $fEqDeBruijn1 $fEqDeBruijn2 $fEqDeBruijn3$fTrieMapVarMap$fFunctorVarMap$fTrieMapBndrMap$fFunctorBndrMap$fTrieMapTypeMapX$fFunctorTypeMapX$fTrieMapLooseTypeMap$fFunctorLooseTypeMap$fTrieMapTypeMap$fFunctorTypeMap$fTrieMapCoercionMapX$fFunctorCoercionMapX$fTrieMapCoercionMap$fFunctorCoercionMapBindFlagBindMeApartMaybeApartReason MARTypeFamily MARInfiniteMARTypeVsConstraint UnifyResultM Unifiable MaybeApart SurelyApart UnifyResultBindFun tcMatchTy tcMatchTyX_BM tcMatchTyKi tcMatchTyX tcMatchTys tcMatchTyKis tcMatchTysX tcMatchTyKisXruleMatchTyKiX matchBindFun alwaysBindFuntypesCantMatch typesAreApart tcUnifyTy tcUnifyTyKitcUnifyTyWithTFs tcUnifyTys tcUnifyTyKis tcUnifyTysFG liftCoMatch flattenTys flattenTysX$fSemigroupMaybeApartReason$fOutputableMaybeApartReason$fOutputableUnifyResultM$fMonadUnifyResultM$fApplicativeUnifyResultM $fMonadFailUM $fMonadUM$fApplicativeUM $fFunctorUM $fEqBindFlag$fFunctorUnifyResultM FamInstMatch fim_instancefim_tysfim_cosInjectivityCheckResultInjectivityAcceptedInjectivityUnified FamInstEnv FamInstEnvs FamFlavor SynFamilyInstDataFamilyInstFamInstfi_axiom fi_flavorfi_famfi_tcsfi_tvsfi_cvsfi_tysfi_rhs famInstAxiom famInstRHS famInstTyConfamInstsRepTyConsfamInstRepTyCon_maybedataFamInstRepTyCon pprFamInst pprFamInstsmkImportedFamInstfamInstEnvSizeemptyFamInstEnvsemptyFamInstEnvfamInstEnvEltsfamilyInstancesfamilyNameInstancesunionFamInstEnvextendFamInstEnvListextendFamInstEnvinjectiveBranches mkCoAxBranchmkBranchedCoAxiommkUnbranchedCoAxiommkSingleCoAxiommkNewTypeCoAxiomlookupFamInstEnvByTyConlookupFamInstEnvlookupFamInstEnvConflicts$lookupFamInstEnvInjectivityConflicts isDominatedByreduceTyFamApp_maybeapartnessChecktopNormaliseTypetopNormaliseType_maybetopReduceTyFamApp_maybe normaliseTypenormaliseTcApp$fOutputableFamInst$fNamedThingFamInst$fOutputableFamInstEnv$fOutputableFamInstMatch$fApplicativeNormM $fMonadNormM$fFunctorNormMStrictnessMark MarkedStrictNotMarkedStrict HsImplBangHsLazyHsStrictHsUnpack HsSrcBang DataConEnv NoDataConRepDCR dcr_wrap_id dcr_boxer dcr_arg_tys dcr_stricts dcr_bangsmkEqSpec eqSpecTyVar eqSpecType eqSpecPair eqSpecPredseqHsBangisBanged isSrcStrict isSrcUnpackedisMarkedStrictcbvFromStrictMark mkDataCon dataConTag dataConTagZdataConOrigTyCondataConRepTypedataConIsInfixdataConUnivTyVarsdataConUnivAndExTyCoVars dataConThetadataConWrapId_maybedataConImplicitTyThingsdataConFieldTypedataConFieldType_maybedataConSrcBangsdataConRepArityisNullarySrcDataConisNullaryRepDataCondataConRepStrictnessdataConImplBangs dataConBoxerdataConInstSigdataConOrigResTydataConWrapperTypedataConNonlinearTypedataConDisplayTypedataConInstArgTysdataConInstUnivsdataConOrigArgTysdataConOtherThetadataConRepArgTysdataConIdentityisTupleDataConisBoxedTupleDataConisUnboxedTupleDataConisVanillaDataCon isNewDataConisCovertGadtDataConspecialPromotedDc classDataCondataConCannotMatchdataConResRepTyArgscheckDataConTyVarsdataConUserTyVarsNeedWrappersplitDataProductType_maybe$fBinarySrcUnpackedness$fBinarySrcStrictness$fOutputableSrcUnpackedness$fOutputableSrcStrictness$fOutputableHsSrcBang$fOutputableHsImplBang$fBinaryStrictnessMark$fOutputableStrictnessMark$fOutputableEqSpec $fDataDataCon$fOutputableBndrDataCon$fOutputableDataCon$fNamedThingDataCon$fUniquableDataCon $fEqDataCon$fEqStrictnessMark$fDataHsImplBang$fDataHsSrcBangAmbiguousFieldOcc Unambiguous AmbiguousXAmbiguousFieldOccLAmbiguousFieldOccFieldOcc XFieldOccfoExtfoLabel LFieldOcc LHsTypeArgHsArgHsValArg HsTypeArgHsArgPar HsConDetails PrefixConRecConInfixCon ConDeclField cd_fld_ext cd_fld_names cd_fld_type cd_fld_doc LConDeclField HsTupleSortHsUnboxedTupleHsBoxedOrConstraintTupleHsScaledHsLinearArrowTokensHsPct1HsLollyHsArrowHsUnrestrictedArrow HsLinearArrowHsExplicitMultHsTyLitHsNumTyHsStrTyHsCharTyHsType HsForAllTyHsQualTyHsTyVarHsAppTy HsAppKindTyHsFunTyHsListTy HsTupleTyHsSumTyHsOpTyHsParTy HsIParamTyHsStarTy HsKindSig HsSpliceTyHsDocTyHsBangTyHsRecTyHsExplicitListTyHsExplicitTupleTy HsWildCardTyXHsType hst_xforallhst_telehst_body hst_xqualhst_ctxt HsTyVarBndr UserTyVar KindedTyVar XTyVarBndrHsIPName HsSigTypeHsSig XHsSigTypesig_ext sig_bndrssig_body LHsSigWcType LHsWcType LHsSigType HsPatSigTypeHsPS XHsPatSigTypehsps_ext hsps_bodyHsWildCardBndrsHsWCXHsWildCardBndrshswc_ext hswc_bodyHsOuterFamEqnTyVarBndrsHsOuterSigTyVarBndrsHsOuterTyVarBndrsHsOuterImplicitHsOuterExplicitXHsOuterTyVarBndrs hso_ximplicit hso_xexplicit hso_bndrs LHsQTyVarsHsQTvs XLHsQTyVarshsq_ext hsq_explicit LHsTyVarBndrHsForAllTelescope HsForAllVis HsForAllInvisXHsForAllTelescopehsf_xvis hsf_vis_bndrs hsf_xinvishsf_invis_bndrsLHsKindHsKindLHsType HsContext LHsContextBangType LBangType hsQTvExplicit hsPatSigTypemapHsOuterImplicit hsIPNameFSisHsKindedTyVarhsMult hsScaledThing noTypeArgs$fDataHsConDetails$fDataHsTupleSort $fEqHsIPName$fDataHsIPName$fEqPromotionFlag$fDataPromotionFlag $fEqFieldOcc HsFieldBindhfbAnnhfbLHShfbRHShfbPun HsRecUpdField HsRecFieldLHsRecUpdField LHsRecField LHsFieldBindRecFieldsDotDotunRecFieldsDotDot HsRecFieldsrec_flds rec_dotdotHsConPatDetails HsConPatTyArgConLikePWildPatVarPatLazyPatAsPatParPatBangPatListPatTuplePatSumPatConPatViewPat SplicePatLitPatNPat NPlusKPatSigPatXPat pat_con_extpat_conpat_args hsConPatArgs hsRecFieldshsRecFieldsArgs hsRecFieldSel$fFunctorHsFieldBind$fFoldableHsFieldBind$fTraversableHsFieldBind$fDataRecFieldsDotDot$fEqRecFieldsDotDot$fOrdRecFieldsDotDotpprLPat HsPatSynDirUnidirectionalImplicitBidirectionalExplicitBidirectionalRecordPatSynFieldrecordPatSynFieldrecordPatSynPatVarHsPatSynDetails FixitySig LFixitySigSigTypeSig PatSynSig ClassOpSigFixSig InlineSigSpecSig SpecInstSig MinimalSig SCCFunSigCompleteMatchSigXSigLSigIPBindXIPBindLIPBind HsIPBindsIPBinds PatSynBindPSBpsb_extpsb_idpsb_argspsb_defpsb_dirHsBindLRFunBindPatBindVarBind XHsBindsLRfun_extfun_id fun_matchespat_extpat_lhspat_rhsvar_extvar_idvar_rhs LHsBindLR LHsBindsLRHsBindLHsBindsLHsBind HsValBindsLRValBinds XValBindsLR HsValBindsLHsLocalBindsLRHsLocalBindsLREmptyLocalBindsXHsLocalBindsLR LHsLocalBinds HsLocalBinds isFixityLSig isTypeLSig isSpecLSigisSpecInstLSig isPragLSig isInlineLSig isMinimalLSig isSCCFunSigisCompleteMatchSig RoleAnnotDeclXRoleAnnotDeclLRoleAnnotDecl AnnProvenanceValueAnnProvenanceTypeAnnProvenanceModuleAnnProvenance HsAnnotationXAnnDeclLAnnDeclWarnDeclWarning XWarnDecl LWarnDecl WarnDecls XWarnDeclswd_ext wd_warnings LWarnDeclsDocDeclDocCommentNextDocCommentPrevDocCommentNamedDocGroupLDocDeclRuleBndr RuleBndrSig XRuleBndr LRuleBndrRuleDeclHsRule XRuleDeclrd_extrd_namerd_actrd_tyvsrd_tmvsrd_lhsrd_rhs LRuleDecl RuleDeclsHsRules XRuleDeclsrds_ext rds_rules LRuleDecls ForeignExportCExport CImportSpec CFunctionCWrapper ForeignImportCImport ForeignDecl XForeignDeclfd_i_extfd_name fd_sig_tyfd_fifd_e_extfd_fe LForeignDecl DefaultDecl XDefaultDecl LDefaultDecl DerivStrategy StockStrategyAnyclassStrategyNewtypeStrategy ViaStrategyLDerivStrategy DerivDecl XDerivDecl deriv_ext deriv_typederiv_strategyderiv_overlap_mode LDerivDeclInstDeclClsInstD DataFamInstD TyFamInstD XInstDecl cid_d_extcid_instdfid_ext dfid_insttfid_ext tfid_inst LInstDecl ClsInstDecl XClsInstDeclcid_ext cid_poly_ty cid_bindscid_sigscid_tyfam_instscid_datafam_instscid_overlap_mode LClsInstDeclFamEqnXFamEqnfeqn_ext feqn_tycon feqn_bndrs feqn_pats feqn_fixityfeqn_rhsDataFamInstDecldfid_eqnLDataFamInstDecl TyFamInstDeclXTyFamInstDecltfid_xtntfid_eqnLTyFamInstDeclLTyFamDefltDeclTyFamDefltDecl TyFamInstEqnHsTyPats LTyFamInstEqnHsConDeclGADTDetails PrefixConGADT RecConGADTHsConDeclH98DetailsConDecl ConDeclGADT ConDeclH98XConDecl con_g_ext con_names con_dcolon con_bndrs con_mb_cxt con_g_args con_res_tycon_doccon_extcon_name con_forall con_ex_tvscon_argsLConDecl DataDefnCons NewTypeCon DataTypeCons NewOrDataNewTypeDataTypeStandaloneKindSigLStandaloneKindSigDerivClauseTys DctSingleDctMultiXDerivClauseTysLDerivClauseTysHsDerivingClauseXHsDerivingClausederiv_clause_extderiv_clause_strategyderiv_clause_tysLHsDerivingClause HsDeriving HsDataDefn XHsDataDefndd_extdd_ctxtdd_cType dd_kindSigdd_cons dd_derivs FamilyInfo DataFamilyOpenTypeFamilyClosedTypeFamilyInjectivityAnnXInjectivityAnnLInjectivityAnn FamilyDecl XFamilyDeclfdExtfdInfo fdTopLevelfdLNamefdTyVarsfdFixity fdResultSigfdInjectivityAnn LFamilyDeclFamilyResultSigNoSigKindSigTyVarSigXFamilyResultSigLFamilyResultSig TyClGroup XTyClGroup group_ext group_tyclds group_roles group_kisigs group_instds LHsFunDepXFunDepTyClDeclFamDeclSynDeclDataDecl ClassDecl XTyClDecltcdFExttcdFamtcdSExttcdLName tcdTyVars tcdFixitytcdRhstcdDExt tcdDataDefntcdCExt tcdLayouttcdCtxttcdFDstcdSigstcdMethstcdATs tcdATDefstcdDocs LTyClDeclSpliceDecoration DollarSplice BareSplice SpliceDecl LSpliceDeclHsGroupXHsGrouphs_exths_valds hs_splcds hs_tyclds hs_derivdshs_fixdshs_defdshs_fords hs_warndshs_annds hs_ruledshs_docsHsDeclTyClDInstDDerivDValDSigDKindSigDDefDForDWarningDAnnDRuleDSpliceDDocD RoleAnnotDXHsDeclLHsDeclhsGroupInstDecls isDataDecl isSynDecl isClassDecl isFamilyDeclisTypeFamilyDeclisOpenTypeFamilyInfoisClosedTypeFamilyInfoisDataFamilyDecltyClDeclTyVarstyClGroupTyClDeclstyClGroupInstDeclstyClGroupRoleDeclstyClGroupKindSigsdataDefnConsNewOrDataisTypeDataDefnConscollectRuleBndrSigTys docDeclDocannProvenanceName_maybe$fDataCImportSpec$fEqDataDefnCons$fDataDataDefnCons$fFoldableDataDefnCons$fFunctorDataDefnCons$fTraversableDataDefnCons $fEqNewOrData$fDataNewOrData$fDataSpliceDecoration$fEqSpliceDecoration$fShowSpliceDecoration $fDataDocDecl HsDoFlavourDoExprMDoExpr GhciStmtCtxtListComp MonadCompHsArrowMatchContextProcExpr ArrowCaseAltArrowLamCaseAlt KappaExpr HsStmtContextHsDoStmtPatGuard ParStmtCtxt TransStmtCtxt ArrowExprHsMatchContextFunRhs LambdaExprCaseAlt LamCaseAltIfAltArrowMatchCtxt PatBindRhs PatBindGuardsRecUpdStmtCtxt ThPatSplice ThPatQuotemc_fun mc_fixity mc_strictness ArithSeqInfoFromFromThenFromTo FromThenToHsQuoteExpBrPatBrDecBrLDecBrGTypBrVarBrXQuoteHsUntypedSpliceExpr HsQuasiQuoteApplicativeArgApplicativeArgOneApplicativeArgManyXApplicativeArgxarg_app_arg_oneapp_arg_patternarg_expr is_body_stmtxarg_app_arg_many app_stmts final_expr bv_pattern stmt_context FailOperator ParStmtBlock TransFormThenForm GroupFormStmtLRLastStmtBindStmtApplicativeStmtBodyStmtLetStmtParStmt TransStmtRecStmtXStmtLRtrS_exttrS_form trS_stmts trS_bndrs trS_usingtrS_bytrS_rettrS_bindtrS_fmaprecS_ext recS_stmtsrecS_later_ids recS_rec_ids recS_bind_fn recS_ret_fn recS_mfix_fnGhciStmt GhciLStmt GuardStmt GuardLStmtExprStmt ExprLStmtCmdStmtCmdLStmtStmtLStmtLRLStmtGRHSXGRHSLGRHSXGRHSsgrhssExt grhssGRHSsgrhssLocalBindsMatchXMatchm_extm_ctxtm_patsm_grhssLMatchMG XMatchGroupmg_extmg_alts HsRecordBindsHsCmdTop LHsCmdTop HsArrAppTypeHsHigherOrderAppHsFirstOrderAppHsCmd HsCmdArrApp HsCmdArrFormHsCmdAppHsCmdLamHsCmdPar HsCmdCase HsCmdLamCaseHsCmdIfHsCmdLetHsCmdDoXCmdLHsCmdLamCaseVariantLamCaseLamCasesHsTupArgPresentMissingXTupArg LHsTupArgHsPragE HsPragSCCXHsPragE DotFieldOcc XDotFieldOccdfoExtdfoLabelHsVar HsUnboundVarHsRecSel HsOverLabelHsIPVarHsLam HsLamCaseHsApp HsAppTypeOpAppNegAppHsParSectionLSectionR ExplicitTuple ExplicitSumHsCaseHsIf HsMultiIfHsLetHsDo ExplicitList RecordCon RecordUpd HsGetField HsProjection ExprWithTySigArithSeqHsTypedBracketHsUntypedBracket HsTypedSpliceHsProcHsStaticXExprrcon_extrcon_con rcon_fldsrupd_ext rupd_expr rupd_fldsgf_extgf_exprgf_fieldproj_ext proj_flds LHsRecUpdProj RecUpdProj LHsRecProjRecProjFieldLabelStringsLFieldLabelStrings isInfixMatch isPatSynCtxtqualifiedDoModuleName_maybeisComprehensionContextisDoComprehensionContextisMonadStmtContextisMonadDoStmtContextisMonadCompContextisMonadDoCompContext$fDataTransForm$fDataHsArrAppType$fDataLamCaseVariant$fEqLamCaseVariantHsUntypedSpliceResultHsUntypedSpliceTopHsUntypedSpliceNestedutsplice_result_finalizersutsplice_resultThModFinalizersSplicePointName pprFunBind pprPatBindpprUntypedSplicepprTypedSplicepprExprpprLExprHsModuleXModulehsmodExt hsmodName hsmodExports hsmodImports hsmodDeclsSlotTy PtrLiftedSlotPtrUnliftedSlotWordSlot Word64Slot FloatSlot DoubleSlotVecSlot UnaryType NvUnaryType isNvUnaryTypetypePrimRepArgs unwrapTypecountFunRepArgscountConRepArgsdataConRuntimeRepStrictness isZeroBitTy ubxSumRepType layoutUbxSum typeSlotTy primRepSlot slotPrimRep typePrimReptypePrimRep_maybe typePrimRep1 tyConPrimRep tyConPrimRep1kindPrimRep_mayberuntimeRepPrimRepruntimeRepPrimRep_maybeprimRepToRuntimeRep primRepToType mightBeFunTy$fOutputableSlotTy $fEqSlotTy $fOrdSlotTy TypeShapeTsFunTsProdTsUnkDmdTransformerDmdSig PlusDmdArgDmdTypedt_envdt_argsdt_divDmdEnv DivergenceDivergesExnOrDivDunno SubDemandPolyProdDemandBotDmdAbsDmd CardNonOnce CardNonAbsCard:*C_0NC_1NC_01C_11C_10C_00isStrictisAbs isUsedOnce oneifyCardlubCardplusCardmultCard topSubDmdmkProdviewProdtopDmdabsDmdbotDmdseqDmdunboxDeeplyDmdmultDmd multSubDmdlubDmd lubSubDmdplusDmd plusSubDmdisTopDmdisAbsDmd isStrictDmd isStrUsedDmd isUsedOnceDmd isWeakDmdevalDmdstrictOnceApply1DmdstrictManyApply1Dmd lazyApply1Dmd lazyApply2Dmd oneifyDmd strictifyDmdstrictifyDictDmd lazifyDmdmkCalledOnceDmdmkCalledOnceDmds peelCallDmd peelManyCallssubDemandIfEvaluatedmkWorkerDemand argsOneShots argOneShotssaturatedByOneShots lubDivergencetopDivexnDivbotDiv isDeadEndDiv emptyDmdEnvreuseEnvkeepAliveDmdEnv lubDmdType mkPlusDmdArg toPlusDmdArg plusDmdType botDmdType nopDmdType dmdTypeDepth splitDmdTy multDmdTypepeelFV addDemand findIdDemanddeferAfterPreciseExceptionkeepAliveDmdTypemkDmdSigForAritymkClosedDmdSigmkVanillaDmdSig splitDmdSig dmdSigDmdEnvhasDemandEnvSigbotSignopSigisNopSig isDeadEndSigisBottomingSigonlyBoxedArgumentsisDeadEndAppSigtrimBoxityDmdSigtransferArgBoxityDmdSigprependArgsDmdSigetaConvertDmdSigdmdTransformSigdmdTransformDataConSigdmdTransformDictSelSig zapDmdEnvSigzapUsageDemandzapUsedOnceDemandzapUsedOnceSig trimToType trimBoxity seqDemand seqDemandList seqDmdType seqDmdSig $fBinaryCard$fOutputableCard $fShowCard$fBinarySubDemand$fBinaryDemand$fOutputableSubDemand$fOutputableDemand $fEqSubDemand$fBinaryDivergence$fOutputableDivergence$fBinaryDmdType$fOutputableDmdType $fEqDmdType$fBinaryDmdSig$fOutputableDmdSig$fOutputableTypeShape $fEqDmdSig$fEqDivergence $fEqDemand$fEqCardCprSig getCprSigUnpackConFieldsResult AllFieldsSame ForeachFieldCprTypect_artyct_cprCprConCprtopCprbotCpr flatConCprasConCpr topCprType botCprTypeflatConCprType lubCprType applyCprTy abstractCprTy trimCprTyunpackConFieldsCprmkCprSigForArity topCprSig isTopCprSigmkCprSig seqCprSigprependArgsCprSig $fBinaryCpr$fOutputableCpr$fBinaryCprType$fOutputableCprType $fEqCprType$fOutputableCprSig $fEqCprSig$fBinaryCprSig$fEqCpr DoExtDynRefsDoSCCProfilingStandardFormInfoNonStandardThunk SelectorThunkApThunkLambdaFormInfo LFReEntrantLFThunkLFCon LFUnknown LFUnlifted LFLetNoEscape ModuleLFInfos CmmCgInfos cgNonCafs cgLFInfos cgIPEStub$fOutputableStandardFormInfo$fOutputableLambdaFormInfo$fEqStandardFormInfo RealDataCon PatSynConisVanillaConLike conLikeArityconLikeFieldLabelsconLikeInstOrigArgTysconLikeUserTyVarBindersconLikeExTyCoVars conLikeNameconLikeStupidThetaconLikeHasBuilderconLikeImplBangs conLikeResTyconLikeFullSigconLikeFieldTypeconLikesWithFieldsconLikeIsInfix $fDataConLike$fOutputableBndrConLike$fOutputableConLike$fNamedThingConLike$fUniquableConLike $fEqConLikeCompleteMatches CompleteMatch cmConLikes cmResultTyConvanillaCompleteMatchcompleteMatchAppliesAtType$fOutputableCompleteMatchAnnBind AnnNonRecAnnAltAnnExpr'AnnVarAnnLitAnnAppAnnCastAnnTick AnnCoercionAnnExpr TaggedAlt TaggedArg TaggedExpr TaggedBind TaggedBndrTBCoreAltCoreBindCoreArg CoreProgramUnfoldingGuidanceUnfWhen UnfIfGoodArgsUnfNeverug_arity ug_unsat_ok ug_boring_okug_argsug_sizeug_res Unfolding NoUnfolding BootUnfoldingOtherCon DFunUnfolding CoreUnfoldingdf_bndrsdf_condf_argsuf_tmpluf_src uf_is_top uf_is_value uf_is_conlikeuf_is_work_free uf_expandable uf_guidanceIdUnfoldingFun InScopeEnvRuleFunCoreRuleRule BuiltinRuleru_nameru_actru_fnru_roughru_bndrsru_argsru_rhsru_auto ru_origin ru_orphanru_localru_nargsru_tryIsOrphan NotOrphan MOutCoercionOutArgOutAltOutExprOutBind OutCoercionOutKindOutTypeOutBndr InCoercionInArgInAltInExprInBindInKindInTypeInBndrBindNonRecRecAltConDataAltLitAltDEFAULTAltArgLitAppLamLetCaseCastisOrphan notOrphanchooseOrphanAnchor isBuiltinRule isAutoRule ruleArityruleName ruleModuleruleActivation ruleIdName isLocalRule setRuleIdName needSaturated unSaturatedOk boringCxtOkboringCxtNotOk noUnfoldingevaldUnfolding bootUnfolding mkOtherConunfoldingTemplatemaybeUnfoldingTemplate otherConsisValueUnfoldingisEvaldUnfoldingisConLikeUnfoldingisCheapUnfoldingisExpandableUnfoldingexpandUnfolding_maybeisCompulsoryUnfoldingisStableUnfoldingisStableUserUnfoldingisStableSystemUnfoldingisInlineUnfoldinghasSomeUnfoldingisBootUnfoldingneverUnfoldGuidancehasCoreUnfolding canUnfoldcmpAltltAlt cmpAltCon deTagExprmkAppsmkCoApps mkVarAppsmkConAppmkTyApps mkConApp2mkTyArgmkIntLit mkIntLitWrap mkWordLit mkWordLitWrap mkWord8LitmkWord64LitWord64mkInt64LitInt64 mkCharLit mkStringLit mkFloatLitmkFloatLitFloat mkDoubleLitmkDoubleLitDoublemkLamsmkLetsmkLet mkLetNonRecmkLetRecmkTyBindmkCoBind varToCoreExprvarsToCoreExprs exprToType bindersOfbindersOfBindsfoldBindersOfBindStrictfoldBindersOfBindsStrict rhssOfBind rhssOfAlts flattenBindscollectBinderscollectTyBinderscollectTyAndValBinderscollectNBinderscollectNValBinders_maybe collectArgscollectFunSimple wrapLamBody stripNArgscollectArgsTicks isRuntimeVar isRuntimeArgisValArg isTyCoArgisCoArg isTypeArg valBndrCount valArgCountcollectAnnArgscollectAnnArgsTicks deAnnotate deAnnotate'deAnnAlt deAnnBindcollectAnnBndrscollectNAnnBndrs$fOutputableAltCon $fOrdAltCon$fBinaryIsOrphan$fOutputableTaggedBndr$fEqUnfoldingGuidance$fDataIsOrphan $fDataBind $fDataExpr $fDataAlt $fEqAltCon $fDataAltCon TickBoxOpTickBox TickBoxIdCafInfoMayHaveCafRefs NoCafRefsRuleInfoInlinePragInfo ArityInforuleInforealUnfoldingInfoinlinePragInfooccInfo dmdSigInfo cprSigInfo demandInfolfInfotagSig RecSelParent RecSelData RecSelPatSyn VanillaIdRecSelId DataConWorkId DataConWrapId ClassOpIdPrimOpIdFCallId TickBoxOpIdCoVarId WorkerLikeId sel_tycon sel_naughtyisJoinIdDetails_maybe oneShotInfo arityInfocafInfo callArityInfo tagSigInfo setRuleInfosetInlinePragInfo setOccInfo unfoldingInfosetUnfoldingInfohasInlineUnfolding setArityInfosetCallArityInfo setCafInfo setLFInfo setTagSigsetOneShotInfo setDemandInfo setDmdSigInfo setCprSigInfo noCafIdInfo unknownArity ppArityInfo pprStrictness emptyRuleInfoisEmptyRuleInforuleInfoFreeVars ruleInfoRulessetRuleInfoHeadmayHaveCafRefs ppCafInfo zapLamInfo zapDemandInfo zapUsageInfozapUsageEnvInfozapUsedOnceInfozapFragileInfo trimUnfoldingzapTailCallInfozapCallArityInfo$fOutputableRecSelParent$fOutputableCafInfo$fOutputableTickBoxOp$fOutputableIdDetails $fEqCafInfo $fOrdCafInfo$fEqRecSelParentidUniqueidTypeidMult idScaledType scaleIdBy scaleVarBy setIdName setIdUnique setIdType localiseId setIdInfo modifyIdInfomaybeModifyIdInfo mkGlobalIdmkVanillaGlobalmkVanillaGlobalWithInfo mkLocalId mkLocalCoVarmkLocalIdOrCoVarmkLocalIdWithInfomkExportedLocalIdmkExportedVanillaId mkSysLocalmkSysLocalOrCoVar mkSysLocalMmkSysLocalOrCoVarM mkUserLocalmkUserLocalOrCoVar mkWorkerIdmkTemplateLocalmkScaledTemplateLocalmkTemplateLocalsmkTemplateLocalsNumrecordSelectorTyConrecordSelectorTyCon_maybeisRecordSelectorisDataConRecordSelectorisPatSynRecordSelectorisNaughtyRecordSelector isClassOpIdisClassOpId_maybe isPrimOpIdisDFunIdisPrimOpId_maybe isFCallIdisFCallId_maybeisDataConWorkIdisDataConWorkId_maybeisDataConWrapIdisDataConWrapId_maybeisDataConId_maybeisWorkerLikeIdisJoinIdisJoinId_maybe idDataCon hasNoBinding isImplicitIdidIsFrom isDeadBinder idJoinArityasJoinId zapJoinIdasJoinId_maybeidArity setIdArity idCallAritysetIdCallArity idFunRepArity isDeadEndIdidDmdSig setIdDmdSigidCprSig setIdCprSig zapIdDmdSig isStrictIdidTagSig_maybe idUnfoldingrealIdUnfoldingsetIdUnfolding idDemandInfosetIdDemandInfo setIdTagSig setIdCbvMarksidCbvMarks_maybeidCbvMarkArityasNonWorkerLikeIdasWorkerLikeIdsetCaseBndrEvaldzapIdUnfoldingidSpecialisation idCoreRules idHasRulessetIdSpecialisation idCafInfo setIdCafInfoidLFInfo_maybe setIdLFInfo idOccInfo setIdOccInfo zapIdOccInfoidInlinePragmasetInlinePragmamodifyInlinePragmaidInlineActivationsetInlineActivationidRuleMatchInfo isConLikeId idOneShotInfosetOneShotLambdaclearOneShotLambdasetIdOneShotInfoupdOneShotInfo zapLamIdInfozapFragileIdInfozapIdDemandInfozapIdUsageInfozapIdUsageEnvInfozapIdUsedOnceInfozapIdTailCallInfozapStableUnfoldingtransferPolyIdInfo MonadThings lookupThinglookupId lookupDataCon lookupTyConAnIdAConLikeATyConACoAxiompprShortTyThingpprTyThingCategorytyThingCategoryimplicitTyThingsimplicitConLikeThingsimplicitClassThingsimplicitTyConThingsimplicitCoTyConisImplicitTyThingtyThingParent_maybetyThingsTyCoVarstyThingAvailInfo tyThingTyContyThingCoAxiomtyThingDataContyThingConLike tyThingId$fNamedThingTyThing$fOutputableTyThing$fMonadThingsReaderTTypeEnv emptyTypeEnv typeEnvElts typeEnvTyConstypeEnvCoAxioms typeEnvIdstypeEnvPatSynstypeEnvDataConstypeEnvClasses mkTypeEnvmkTypeEnvWithImplicitstypeEnvFromEntities lookupTypeEnv extendTypeEnvextendTypeEnvListextendTypeEnvWithIds plusTypeEnv CoreStatsCScs_tmcs_tycs_cocs_vbcs_jbcoreBindsStats exprStats coreBindsSizeexprSize$fOutputableCoreStats SimpleOpts simpleOptExpr so_uf_opts megaSeqIdInfo seqRuleInfoseqRulesseqExprseqExprsseqBinds seqUnfoldingpprCoreBindingspprCoreBindingpprCoreBindingsWithSizepprCoreBindingWithSize pprParendExpr pprCoreExprpprOptCo pprCoreAltpprOccpprOccWithTick pprCoreBinderpprCoreBinderspprIdpprIdspprRulespprRule$fOutputableGenTickish$fOutputableCoreRule$fOutputableUnfolding$fOutputableUnfoldingGuidance$fOutputableIdInfo$fOutputableBndrTaggedBndr$fOutputableBndrVar$fOutputableAlt$fOutputableExpr$fOutputableBind OverLitTc$sel:ol_rebindable:OverLitTc$sel:ol_witness:OverLitTc$sel:ol_type:OverLitTc OverLitRn$sel:ol_rebindable:OverLitRn$sel:ol_from_fun:OverLitRn pprXOverLit overLitTypehsOverLitNeedsParenshsLitNeedsParens convertLit pp_st_suffix pmPprHsLit$fOutputableOverLitVal$fOutputableHsOverLit$fOutputableHsLiteqDeBruijnExpr eqCoreExpr lookupCoreMap extendCoreMap foldCoreMap emptyCoreMap$fTrieMapAltMap$fFunctorAltMap$fTrieMapCoreMapX$fFunctorCoreMapX$fOutputableCoreMap$fTrieMapCoreMap$fFunctorCoreMap BoxingInfoBI_NoBoxNeededBI_NoBoxAvailableBI_Box bi_data_con bi_inst_con bi_boxed_type wiredInTyConsmkWiredInTyConNamemkWiredInIdName eqTyConName eqTyCon_RDR heqTyConNamecoercibleTyConName charTyConName intTyConName boolTyConName listTyConNamenilDataConNameconsDataConNamemaybeTyConNamenothingDataConNamejustDataConName wordTyConNamefloatTyConNamedoubleTyConNameanyTyConanyTymakeRecoveryTyCon boolTyCon_RDR false_RDRtrue_RDR intTyCon_RDR charTyCon_RDRstringTyCon_RDRintDataCon_RDR listTyCon_RDRconsDataCon_RDRtypeSymbolKindConisBuiltInOcc_maybeisPunOcc_maybe mkTupleStr cTupleTyConcTupleTyConNamesisCTupleTyConNamecTupleTyConNameArity_maybecTupleDataConNames cTupleSelIdtupleDataConNamemkPromotedPairTyisPromotedPairType unitTyCon unitTyConKey unitDataCon unitDataConId soloTyCon pairTyCon unboxedUnitTyunboxedUnitTyConunboxedUnitDataConunboxedSumKindeqTyConeqClass eqDataConheqClass heqDataConcoercibleClasscoercibleDataConmultiplicityTyConNameoneDataConNamemanyDataConName oneDataCon manyDataConunrestrictedFunTyConNameconstraintKindTyContypeToTypeKindunliftedTypeKindTyConNameunliftedDataConTyConsumRepDataConTyConliftedRepTyConNameunliftedRepTyConName charTyCon charDataConstringTyintTyintTyCon intDataConwordTy wordTyCon wordDataConword8Ty word8TyCon word8DataConfloatTy floatTyCon floatDataCondoubleTy doubleTyCon doubleDataCon boxingDataConboolTy boolTyCon falseDataCon trueDataConfalseDataConId trueDataConId orderingTyCon ordLTDataCon ordEQDataCon ordGTDataConordLTDataConIdordEQDataConIdordGTDataConIdmkListTy nilDataCon consDataCon maybeTyConnothingDataCon justDataConmkPromotedMaybeTy mkMaybeTyisPromotedMaybeTy mkTupleTy mkTupleTy1mkConstraintTupleTymkSumTypromotedTrueDataConpromotedFalseDataConpromotedNothingDataConpromotedJustDataConpromotedLTDataConpromotedEQDataConpromotedGTDataConpromotedConsDataConpromotedNilDataConmkPromotedListTyintegerTyConNameintegerISDataConNameintegerIPDataConNameintegerINDataConName integerTyConintegerISDataConintegerIPDataConintegerINDataConnaturalTyConNamenaturalNSDataConNamenaturalNBDataConName naturalTyConnaturalNSDataConnaturalNBDataCon filterCTuple OrigNameCache NameCache nsUniqCharnsNamestakeUniqFromNameCachelookupOrigNameCacheextendOrigNameCache'extendOrigNameCache initNameCacheupdateNameCache'updateNameCache ShowHowMuch ShowHeaderShowSome ShowIfaceAltPprShowSub ss_how_much ss_forall IfaceJoinInfoIfaceNotJoinPointIfaceJoinPoint IfaceMaybeRhsIfUseUnfoldingRhsIfRhsIfaceTopBndrInfo IfLclTopBndr IfGblTopBndr IfaceLetBndr IfLetBndr IfaceBindingX IfaceNonRecIfaceRec IfaceBinding IfaceConAlt IfaceDefault IfaceDataAlt IfaceLitAltIfaceAlt IfaceTickish IfaceHpcTickIfaceSCC IfaceSource IfaceExprIfaceLclIfaceExtIfaceCo IfaceTupleIfaceLamIfaceApp IfaceCase IfaceECaseIfaceLet IfaceCastIfaceLitIfaceLitRubbish IfaceFCall IfaceTick IfaceLFInfo IfLFReEntrant IfLFThunkIfLFCon IfLFUnknown IfLFUnliftedIfaceIdDetails IfVanillaIdIfWorkerLikeId IfRecSelIdIfDFunId IfGuidance IfNoGuidanceIfWhenIfaceUnfolding IfCoreUnfold IfDFunUnfold IfaceInfoItemHsArityHsDmdSigHsCprSigHsInlineHsUnfold HsNoCafRefsHsLFInfoHsTagSig IfaceIdInfoIfaceCompleteMatchIfaceAnnTargetIfaceAnnotationifAnnotatedTargetifAnnotatedValue IfaceRule ifRuleName ifActivation ifRuleBndrs ifRuleHead ifRuleArgs ifRuleRhs ifRuleAuto ifRuleOrph IfaceFamInst ifFamInstFam ifFamInstTysifFamInstAxiom ifFamInstOrph IfaceClsInst ifInstCls ifInstTysifDFunifOFlag ifInstOrph IfaceSrcBang IfSrcBang IfaceBangIfNoBangIfStrictIfUnpack IfUnpackCo IfaceEqSpec IfaceConDeclIfCon ifConName ifConWrapper ifConInfix ifConExTCvsifConUserTvBinders ifConEqSpec ifConCtxt ifConArgTys ifConFields ifConStrictsifConSrcStricts IfaceConDeclsIfAbstractTyCon IfDataTyCon IfNewTyCon IfaceAxBranch ifaxbTyVarsifaxbEtaTyVars ifaxbCoVarsifaxbLHS ifaxbRolesifaxbRHS ifaxbIncompsIfaceAT IfaceClassOpIfaceFamTyConFlavIfaceDataFamilyTyConIfaceOpenSynFamilyTyConIfaceClosedSynFamilyTyCon!IfaceAbstractClosedSynFamilyTyConIfaceBuiltInSynFamTyConIfaceTyConParent IfNoParentIfDataInstanceIfaceClassBodyIfAbstractClassIfConcreteClass ifClassCtxtifATsifSigsifMinDef IfaceDeclIfaceId IfaceData IfaceSynonym IfaceFamily IfaceClass IfaceAxiom IfacePatSynifNameifType ifIdDetailsifIdInfo ifBinders ifResKindifCTypeifRolesifCtxtifCons ifGadtSyntaxifParentifSynRhsifResVar ifFamFlavifFamInjifFDsifBodyifTyConifRole ifAxBranches ifPatIsInfix ifPatMatcher ifPatBuilderifPatUnivBndrs ifPatExBndrs ifPatProvCtxt ifPatReqCtxt ifPatArgsifPatTy ifFieldLabels IfaceTopBndrvisibleIfConDeclsifaceDeclImplicitBndrsifaceDeclFingerprints showToHeader showToIface pprIfaceDecl pprIfaceExprfreeNamesIfDeclfreeNamesIfRulefreeNamesIfFamInst$fNFDataIfaceTyConParent$fBinaryIfaceTyConParent$fOutputableIfaceTyConParent$fNFDataIfaceClassOp$fBinaryIfaceClassOp$fOutputableIfaceClassOp$fHasOccNameIfaceClassOp$fNamedThingIfaceClassOp$fNFDataIfaceAxBranch$fBinaryIfaceAxBranch$fNFDataIfaceFamTyConFlav$fBinaryIfaceFamTyConFlav$fNFDataIfaceBang$fBinaryIfaceBang$fNFDataIfaceSrcBang$fBinaryIfaceSrcBang$fNFDataIfaceConDecl$fBinaryIfaceConDecl$fHasOccNameIfaceConDecl$fNamedThingIfaceConDecl$fNFDataIfaceConDecls$fBinaryIfaceConDecls$fNFDataIfaceClsInst$fBinaryIfaceClsInst$fOutputableIfaceClsInst$fNFDataIfaceFamInst$fBinaryIfaceFamInst$fOutputableIfaceFamInst$fNFDataIfaceAnnotation$fBinaryIfaceAnnotation$fOutputableIfaceAnnotation$fNFDataIfaceCompleteMatch$fBinaryIfaceCompleteMatch$fOutputableIfaceCompleteMatch$fNFDataIfGuidance$fBinaryIfGuidance$fOutputableIfGuidance$fBinaryIfaceLFInfo$fOutputableIfaceLFInfo$fNFDataIfaceTickish$fBinaryIfaceTickish$fNFDataIfaceConAlt$fBinaryIfaceConAlt$fOutputableIfaceConAlt$fNFDataIfaceBindingX$fBinaryIfaceBindingX$fOutputableIfaceBindingX$fNFDataIfaceJoinInfo$fBinaryIfaceJoinInfo$fOutputableIfaceJoinInfo$fNFDataIfaceLetBndr$fNFDataIfaceAlt$fNFDataIfaceExpr$fNFDataIfaceUnfolding$fNFDataIfaceInfoItem$fBinaryIfaceLetBndr$fBinaryIfaceExpr$fBinaryIfaceAlt$fBinaryIfaceUnfolding$fBinaryIfaceInfoItem$fOutputableIfaceUnfolding$fOutputableIfaceInfoItem$fOutputableIfaceExpr$fNFDataIfaceMaybeRhs$fBinaryIfaceMaybeRhs$fOutputableIfaceMaybeRhs$fNFDataIfaceIdDetails$fNFDataIfaceAT$fNFDataIfaceClassBody$fNFDataIfaceDecl$fBinaryIfaceIdDetails$fBinaryIfaceAT$fBinaryIfaceDecl$fOutputableIfaceIdDetails$fOutputableIfaceAT$fOutputableIfaceDecl$fHasOccNameIfaceDecl$fNamedThingIfaceDecl$fNFDataIfaceTopBndrInfo$fBinaryIfaceTopBndrInfo$fOutputableIfaceTopBndrInfo$fNFDataIfaceRule$fBinaryIfaceRule$fOutputableIfaceRule$fOutputableShowHowMuch$fFunctorIfaceBindingX$fFoldableIfaceBindingX$fTraversableIfaceBindingX$fOrdIfaceBindingX$fEqIfaceBindingXWholeCoreBindings wcb_bindings wcb_modulewcb_mod_locationOutputableBndrFlagHsCoreTyHsPSRn hsps_nwcs hsps_imp_tvs EpAnnForallTy getBangTypegetBangStrictnessfromMaybeContextmkHsForAllVisTelemkHsForAllInvisTelemkHsQTvs emptyLHsQTvs hsSigWcType dropWildCardshsOuterTyVarNameshsOuterExplicitBndrsmkHsOuterImplicitmkHsOuterExplicitmkHsImplicitSigTypemkHsExplicitSigTypemkHsWildCardBndrsmkHsPatSigTypemkEmptyWildCardBndrshsTyVarBndrFlagsetHsTyVarBndrFlaghsTvbAllKindedhsLinearhsUnrestrictedisUnrestricted arrowToHsType pprHsArrow hsWcScopedTvs hsScopedTvs hsTyVarName hsLTyVarName hsLTyVarNameshsExplicitLTyVarNameshsAllLTyVarNameshsLTyVarLocNamehsLTyVarLocNames hsTyKindSig ignoreParensmkAnonWildCardTymkHsOpTy mkHsAppTy mkHsAppTys mkHsAppKindTysplitHsFunTypehsTyGetAppHead_maybelhsTypeArgSrcSpannumVisibleArgs pprHsArgsAppsplitLHsPatSynTysplitLHsSigmaTyInvissplitLHsGadtTysplitLHsForAllTyInvissplitLHsForAllTyInvis_KPsplitLHsQualTysplitLHsInstDeclTygetLHsInstDeclHeadgetLHsInstDeclClass_maybe mkFieldOccmkAmbiguousFieldOccrdrNameAmbiguousFieldOccselectorAmbiguousFieldOccunambiguousFieldOccambiguousFieldOccpprAnonWildCardpprHsOuterFamEqnTyVarBndrspprHsOuterSigTyVarBndrs pprHsForAll pprLHsContextpprConDeclFields pprHsTypehsTypeNeedsParensparenthesizeHsTypeparenthesizeHsContext$fOutputableBndrFieldOcc$fOutputableFieldOcc$fOutputableHsConDetails$fOutputableBndrHsIPName$fOutputableHsIPName$fOutputableHsTyLit$fOutputableHsPatSigType$fOutputableHsWildCardBndrs$fOutputableHsForAllTelescope$fOutputableLHsQTyVars$fOutputableHsType$fOutputableHsSigType$fOutputableBndrGenLocated0!$fOutputableBndrAmbiguousFieldOcc$fOutputableAmbiguousFieldOcc$fOutputableHsArg$fOutputableConDeclField$fOutputableHsArrow$fNamedThingHsTyVarBndr$fOutputableHsTyVarBndr$fOutputableHsOuterTyVarBndrs $fOutputableBndrFlagSpecificityp$fOutputableBndrFlag()p $fDataHsPSRnCoreAltWithFVsCoreExprWithFVs'CoreExprWithFVsCoreBindWithFVsFVAnn exprFreeVarsexprFVsexprFreeVarsDSetexprFreeVarsList exprFreeIds exprsFreeIdsexprFreeIdsDSetexprFreeIdsListexprsFreeIdsDSetexprsFreeIdsList exprsFreeVarsexprsFreeVarsList bindFreeVarsexprSomeFreeVarsexprSomeFreeVarsListexprsSomeFreeVarsexprsSomeFreeVarsListexprsOrphNamesorphNamesOfTypeorphNamesOfTypes orphNamesOfCoorphNamesOfCoConorphNamesOfAxiomorphNamesOfFamInstruleRhsFreeVarsrulesRhsFreeIdsruleLhsFreeIdsruleLhsFreeIdsList ruleFreeVarsrulesFreeVarsDSet rulesFreeVars mkRuleInfo freeVarsOf freeVarsOfAnnvarTypeTyCoVarsvarTypeTyCoFVs idFreeVars dIdFreeVarsidFVsbndrRuleAndUnfoldingVarsDSetbndrRuleAndUnfoldingIds idRuleVarsidUnfoldingVarsstableUnfoldingVars freeVarsBindfreeVarsPrimCallPrimOpResultInfo ReturnsPrim ReturnsAlg PrimOpVecCatIntVecWordVecFloatVecCharGtOpCharGeOpCharEqOpCharNeOpCharLtOpCharLeOpOrdOp Int8ToIntOp IntToInt8Op Int8NegOp Int8AddOp Int8SubOp Int8MulOp Int8QuotOp Int8RemOp Int8QuotRemOp Int8SllOp Int8SraOp Int8SrlOp Int8ToWord8OpInt8EqOpInt8GeOpInt8GtOpInt8LeOpInt8LtOpInt8NeOp Word8ToWordOp WordToWord8Op Word8AddOp Word8SubOp Word8MulOp Word8QuotOp Word8RemOpWord8QuotRemOp Word8AndOp Word8OrOp Word8XorOp Word8NotOp Word8SllOp Word8SrlOp Word8ToInt8Op Word8EqOp Word8GeOp Word8GtOp Word8LeOp Word8LtOp Word8NeOp Int16ToIntOp IntToInt16Op Int16NegOp Int16AddOp Int16SubOp Int16MulOp Int16QuotOp Int16RemOpInt16QuotRemOp Int16SllOp Int16SraOp Int16SrlOpInt16ToWord16Op Int16EqOp Int16GeOp Int16GtOp Int16LeOp Int16LtOp Int16NeOpWord16ToWordOpWordToWord16Op Word16AddOp Word16SubOp Word16MulOp Word16QuotOp Word16RemOpWord16QuotRemOp Word16AndOp Word16OrOp Word16XorOp Word16NotOp Word16SllOp Word16SrlOpWord16ToInt16Op Word16EqOp Word16GeOp Word16GtOp Word16LeOp Word16LtOp Word16NeOp Int32ToIntOp IntToInt32Op Int32NegOp Int32AddOp Int32SubOp Int32MulOp Int32QuotOp Int32RemOpInt32QuotRemOp Int32SllOp Int32SraOp Int32SrlOpInt32ToWord32Op Int32EqOp Int32GeOp Int32GtOp Int32LeOp Int32LtOp Int32NeOpWord32ToWordOpWordToWord32Op Word32AddOp Word32SubOp Word32MulOp Word32QuotOp Word32RemOpWord32QuotRemOp Word32AndOp Word32OrOp Word32XorOp Word32NotOp Word32SllOp Word32SrlOpWord32ToInt32Op Word32EqOp Word32GeOp Word32GtOp Word32LeOp Word32LtOp Word32NeOp Int64ToIntOp IntToInt64Op Int64NegOp Int64AddOp Int64SubOp Int64MulOp Int64QuotOp Int64RemOp Int64SllOp Int64SraOp Int64SrlOpInt64ToWord64Op Int64EqOp Int64GeOp Int64GtOp Int64LeOp Int64LtOp Int64NeOpWord64ToWordOpWordToWord64Op Word64AddOp Word64SubOp Word64MulOp Word64QuotOp Word64RemOp Word64AndOp Word64OrOp Word64XorOp Word64NotOp Word64SllOp Word64SrlOpWord64ToInt64Op Word64EqOp Word64GeOp Word64GtOp Word64LeOp Word64LtOp Word64NeOpIntAddOpIntSubOpIntMulOp IntMul2OpIntMulMayOfloOp IntQuotOpIntRemOp IntQuotRemOpIntAndOpIntOrOpIntXorOpIntNotOpIntNegOp IntAddCOp IntSubCOpIntGtOpIntGeOpIntEqOpIntNeOpIntLtOpIntLeOpChrOp IntToWordOp IntToFloatOp IntToDoubleOp WordToFloatOpWordToDoubleOpIntSllOpIntSraOpIntSrlOp WordAddOp WordAddCOp WordSubCOp WordAdd2Op WordSubOp WordMulOp WordMul2Op WordQuotOp WordRemOp WordQuotRemOpWordQuotRem2Op WordAndOpWordOrOp WordXorOp WordNotOp WordSllOp WordSrlOp WordToIntOpWordGtOpWordGeOpWordEqOpWordNeOpWordLtOpWordLeOp PopCnt8Op PopCnt16Op PopCnt32Op PopCnt64OpPopCntOpPdep8OpPdep16OpPdep32OpPdep64OpPdepOpPext8OpPext16OpPext32OpPext64OpPextOpClz8OpClz16OpClz32OpClz64OpClzOpCtz8OpCtz16OpCtz32OpCtz64OpCtzOp BSwap16Op BSwap32Op BSwap64OpBSwapOpBRev8OpBRev16OpBRev32OpBRev64OpBRevOp Narrow8IntOp Narrow16IntOp Narrow32IntOp Narrow8WordOpNarrow16WordOpNarrow32WordOp DoubleGtOp DoubleGeOp DoubleEqOp DoubleNeOp DoubleLtOp DoubleLeOp DoubleAddOp DoubleSubOp DoubleMulOp DoubleDivOp DoubleNegOp DoubleFabsOp DoubleToIntOpDoubleToFloatOp DoubleExpOp DoubleExpM1Op DoubleLogOp DoubleLog1POp DoubleSqrtOp DoubleSinOp DoubleCosOp DoubleTanOp DoubleAsinOp DoubleAcosOp DoubleAtanOp DoubleSinhOp DoubleCoshOp DoubleTanhOp DoubleAsinhOp DoubleAcoshOp DoubleAtanhOp DoublePowerOpDoubleDecode_2IntOpDoubleDecode_Int64Op FloatGtOp FloatGeOp FloatEqOp FloatNeOp FloatLtOp FloatLeOp FloatAddOp FloatSubOp FloatMulOp FloatDivOp FloatNegOp FloatFabsOp FloatToIntOp FloatExpOp FloatExpM1Op FloatLogOp FloatLog1POp FloatSqrtOp FloatSinOp FloatCosOp FloatTanOp FloatAsinOp FloatAcosOp FloatAtanOp FloatSinhOp FloatCoshOp FloatTanhOp FloatAsinhOp FloatAcoshOp FloatAtanhOp FloatPowerOpFloatToDoubleOpFloatDecode_IntOp NewArrayOp ReadArrayOp WriteArrayOp SizeofArrayOpSizeofMutableArrayOp IndexArrayOpUnsafeFreezeArrayOpUnsafeThawArrayOp CopyArrayOpCopyMutableArrayOp CloneArrayOpCloneMutableArrayOp FreezeArrayOp ThawArrayOp CasArrayOpNewSmallArrayOpShrinkSmallMutableArrayOp_CharReadSmallArrayOpWriteSmallArrayOpSizeofSmallArrayOpSizeofSmallMutableArrayOpGetSizeofSmallMutableArrayOpIndexSmallArrayOpUnsafeFreezeSmallArrayOpUnsafeThawSmallArrayOpCopySmallArrayOpCopySmallMutableArrayOpCloneSmallArrayOpCloneSmallMutableArrayOpFreezeSmallArrayOpThawSmallArrayOpCasSmallArrayOpNewByteArrayOp_CharNewPinnedByteArrayOp_Char NewAlignedPinnedByteArrayOp_CharMutableByteArrayIsPinnedOpByteArrayIsPinnedOpByteArrayContents_CharMutableByteArrayContents_CharShrinkMutableByteArrayOp_CharResizeMutableByteArrayOp_CharUnsafeFreezeByteArrayOpSizeofByteArrayOpSizeofMutableByteArrayOpGetSizeofMutableByteArrayOpIndexByteArrayOp_CharIndexByteArrayOp_WideCharIndexByteArrayOp_IntIndexByteArrayOp_WordIndexByteArrayOp_AddrIndexByteArrayOp_FloatIndexByteArrayOp_DoubleIndexByteArrayOp_StablePtrIndexByteArrayOp_Int8IndexByteArrayOp_Int16IndexByteArrayOp_Int32IndexByteArrayOp_Int64IndexByteArrayOp_Word8IndexByteArrayOp_Word16IndexByteArrayOp_Word32IndexByteArrayOp_Word64IndexByteArrayOp_Word8AsChar IndexByteArrayOp_Word8AsWideCharIndexByteArrayOp_Word8AsIntIndexByteArrayOp_Word8AsWordIndexByteArrayOp_Word8AsAddrIndexByteArrayOp_Word8AsFloatIndexByteArrayOp_Word8AsDouble!IndexByteArrayOp_Word8AsStablePtrIndexByteArrayOp_Word8AsInt16IndexByteArrayOp_Word8AsInt32IndexByteArrayOp_Word8AsInt64IndexByteArrayOp_Word8AsWord16IndexByteArrayOp_Word8AsWord32IndexByteArrayOp_Word8AsWord64ReadByteArrayOp_CharReadByteArrayOp_WideCharReadByteArrayOp_IntReadByteArrayOp_WordReadByteArrayOp_AddrReadByteArrayOp_FloatReadByteArrayOp_DoubleReadByteArrayOp_StablePtrReadByteArrayOp_Int8ReadByteArrayOp_Int16ReadByteArrayOp_Int32ReadByteArrayOp_Int64ReadByteArrayOp_Word8ReadByteArrayOp_Word16ReadByteArrayOp_Word32ReadByteArrayOp_Word64ReadByteArrayOp_Word8AsCharReadByteArrayOp_Word8AsWideCharReadByteArrayOp_Word8AsIntReadByteArrayOp_Word8AsWordReadByteArrayOp_Word8AsAddrReadByteArrayOp_Word8AsFloatReadByteArrayOp_Word8AsDouble ReadByteArrayOp_Word8AsStablePtrReadByteArrayOp_Word8AsInt16ReadByteArrayOp_Word8AsInt32ReadByteArrayOp_Word8AsInt64ReadByteArrayOp_Word8AsWord16ReadByteArrayOp_Word8AsWord32ReadByteArrayOp_Word8AsWord64WriteByteArrayOp_CharWriteByteArrayOp_WideCharWriteByteArrayOp_IntWriteByteArrayOp_WordWriteByteArrayOp_AddrWriteByteArrayOp_FloatWriteByteArrayOp_DoubleWriteByteArrayOp_StablePtrWriteByteArrayOp_Int8WriteByteArrayOp_Int16WriteByteArrayOp_Int32WriteByteArrayOp_Int64WriteByteArrayOp_Word8WriteByteArrayOp_Word16WriteByteArrayOp_Word32WriteByteArrayOp_Word64WriteByteArrayOp_Word8AsChar WriteByteArrayOp_Word8AsWideCharWriteByteArrayOp_Word8AsIntWriteByteArrayOp_Word8AsWordWriteByteArrayOp_Word8AsAddrWriteByteArrayOp_Word8AsFloatWriteByteArrayOp_Word8AsDouble!WriteByteArrayOp_Word8AsStablePtrWriteByteArrayOp_Word8AsInt16WriteByteArrayOp_Word8AsInt32WriteByteArrayOp_Word8AsInt64WriteByteArrayOp_Word8AsWord16WriteByteArrayOp_Word8AsWord32WriteByteArrayOp_Word8AsWord64CompareByteArraysOpCopyByteArrayOpCopyMutableByteArrayOpCopyByteArrayToAddrOpCopyMutableByteArrayToAddrOpCopyAddrToByteArrayOpSetByteArrayOpAtomicReadByteArrayOp_IntAtomicWriteByteArrayOp_IntCasByteArrayOp_IntCasByteArrayOp_Int8CasByteArrayOp_Int16CasByteArrayOp_Int32CasByteArrayOp_Int64FetchAddByteArrayOp_IntFetchSubByteArrayOp_IntFetchAndByteArrayOp_IntFetchNandByteArrayOp_IntFetchOrByteArrayOp_IntFetchXorByteArrayOp_Int AddrAddOp AddrSubOp AddrRemOp AddrToIntOp IntToAddrOpAddrGtOpAddrGeOpAddrEqOpAddrNeOpAddrLtOpAddrLeOpIndexOffAddrOp_CharIndexOffAddrOp_WideCharIndexOffAddrOp_IntIndexOffAddrOp_WordIndexOffAddrOp_AddrIndexOffAddrOp_FloatIndexOffAddrOp_DoubleIndexOffAddrOp_StablePtrIndexOffAddrOp_Int8IndexOffAddrOp_Int16IndexOffAddrOp_Int32IndexOffAddrOp_Int64IndexOffAddrOp_Word8IndexOffAddrOp_Word16IndexOffAddrOp_Word32IndexOffAddrOp_Word64ReadOffAddrOp_CharReadOffAddrOp_WideCharReadOffAddrOp_IntReadOffAddrOp_WordReadOffAddrOp_AddrReadOffAddrOp_FloatReadOffAddrOp_DoubleReadOffAddrOp_StablePtrReadOffAddrOp_Int8ReadOffAddrOp_Int16ReadOffAddrOp_Int32ReadOffAddrOp_Int64ReadOffAddrOp_Word8ReadOffAddrOp_Word16ReadOffAddrOp_Word32ReadOffAddrOp_Word64WriteOffAddrOp_CharWriteOffAddrOp_WideCharWriteOffAddrOp_IntWriteOffAddrOp_WordWriteOffAddrOp_AddrWriteOffAddrOp_FloatWriteOffAddrOp_DoubleWriteOffAddrOp_StablePtrWriteOffAddrOp_Int8WriteOffAddrOp_Int16WriteOffAddrOp_Int32WriteOffAddrOp_Int64WriteOffAddrOp_Word8WriteOffAddrOp_Word16WriteOffAddrOp_Word32WriteOffAddrOp_Word64InterlockedExchange_AddrInterlockedExchange_WordCasAddrOp_AddrCasAddrOp_WordCasAddrOp_Word8CasAddrOp_Word16CasAddrOp_Word32CasAddrOp_Word64FetchAddAddrOp_WordFetchSubAddrOp_WordFetchAndAddrOp_WordFetchNandAddrOp_WordFetchOrAddrOp_WordFetchXorAddrOp_WordAtomicReadAddrOp_WordAtomicWriteAddrOp_Word NewMutVarOp ReadMutVarOp WriteMutVarOpAtomicModifyMutVar2OpAtomicModifyMutVar_Op CasMutVarOpCatchOpRaiseOpRaiseUnderflowOpRaiseOverflowOpRaiseDivZeroOp RaiseIOOpMaskAsyncExceptionsOpMaskUninterruptibleOpUnmaskAsyncExceptionsOp MaskStatusNewPromptTagOpPromptOp Control0Op AtomicallyOpRetryOp CatchRetryOp CatchSTMOp NewTVarOp ReadTVarOp ReadTVarIOOp WriteTVarOp NewMVarOp TakeMVarOp TryTakeMVarOp PutMVarOp TryPutMVarOp ReadMVarOp TryReadMVarOp IsEmptyMVarOp NewIOPortOp ReadIOPortOp WriteIOPortOpDelayOp WaitReadOp WaitWriteOpForkOpForkOnOp KillThreadOpYieldOp MyThreadIdOp LabelThreadOpIsCurrentThreadBoundOp NoDuplicateOpGetThreadLabelOpThreadStatusOp ListThreadsOpMkWeakOpMkWeakNoFinalizerOpAddCFinalizerToWeakOp DeRefWeakOpFinalizeWeakOpTouchOpMakeStablePtrOpDeRefStablePtrOp EqStablePtrOpMakeStableNameOpStableNameToIntOp CompactNewOpCompactResizeOpCompactContainsOpCompactContainsAnyOpCompactGetFirstBlockOpCompactGetNextBlockOpCompactAllocateBlockOpCompactFixupPointersOp CompactAddCompactAddWithSharing CompactSizeReallyUnsafePtrEqualityOpParOpSparkOpSeqOp GetSparkOp NumSparks KeepAliveOp DataToTagOp TagToEnumOp AddrToAnyOp AnyToAddrOp MkApUpd0_OpNewBCOOpUnpackClosureOp ClosureSizeOpGetApStackValOp GetCCSOfOpGetCurrentCCSOp ClearCCSOp WhereFromOp TraceEventOpTraceEventBinaryOp TraceMarkerOpSetThreadAllocationCounterVecBroadcastOp VecPackOp VecUnpackOp VecInsertOpVecAddOpVecSubOpVecMulOpVecDivOp VecQuotOpVecRemOpVecNegOpVecIndexByteArrayOpVecReadByteArrayOpVecWriteByteArrayOpVecIndexOffAddrOpVecReadOffAddrOpVecWriteOffAddrOpVecIndexScalarByteArrayOpVecReadScalarByteArrayOpVecWriteScalarByteArrayOpVecIndexScalarOffAddrOpVecReadScalarOffAddrOpVecWriteScalarOffAddrOpPrefetchByteArrayOp3PrefetchMutableByteArrayOp3PrefetchAddrOp3PrefetchValueOp3PrefetchByteArrayOp2PrefetchMutableByteArrayOp2PrefetchAddrOp2PrefetchValueOp2PrefetchByteArrayOp1PrefetchMutableByteArrayOp1PrefetchAddrOp1PrefetchValueOp1PrefetchByteArrayOp0PrefetchMutableByteArrayOp0PrefetchAddrOp0PrefetchValueOp0 maxPrimOpTag primOpTag allThePrimOps tagToEnumKey primOpFixity primOpDocsprimOpOutOfLineprimOpOkForSpeculationprimOpOkForSideEffects primOpIsCheap primOpIsDivprimOpCodeSize primOpTypeprimOpResultType primOpOccprimOpWrapperIdisComparisonPrimOp primOpSiggetPrimOpResultInfo pprPrimOpprimOpIsReallyInline$fOutputablePrimOp $fOrdPrimOp $fEqPrimOp$fOutputablePrimCall StgPprOpts stgSccEnabledOutputablePassStgOp StgPrimOp StgPrimCallOp StgFCallOp UpdateFlag ReEntrant Updatable SingleEntry XLetNoEscape XRhsClosureBinderPStgPassVanillaLiftLamsInferTaggedBinders InferTaggedCodeGenConstructorNumberNoNumberNumbered OutStgAlt OutStgRhs OutStgExpr OutStgArg OutStgBindingOutStgTopBindingInStgAltInStgRhs InStgExprInStgArg InStgBindingInStgTopBindingTgStgAltTgStgRhs TgStgExpr TgStgBindingTgStgTopBindingCgStgAltCgStgRhs CgStgExpr CgStgBindingCgStgTopBindingLlStgAltLlStgRhs LlStgExpr LlStgBindingLlStgTopBindingStgAltStgRhsStgExpr StgBinding StgTopBindingAltTypePolyAlt MultiValAltAlgAltPrimAlt GenStgAltalt_con alt_bndrsalt_rhsNoExtFieldSilent GenStgRhs StgRhsClosure StgRhsCon GenStgExprStgAppStgLit StgConAppStgOpAppStgCaseStgLetStgLetNoEscapeStgTickStgArg StgVarArg StgLitArg GenStgBinding StgNonRecStgRecGenStgTopBinding StgTopLiftedStgTopStringLit isDllConApp stgArgTypestgCaseBndrInScopenoExtFieldSilent stgRhsArity freeVarsOfRhs isUpdatablepanicStgPprOptsshortStgPprOptspprGenStgTopBindingpprGenStgTopBindings pprStgBindingpprStgTopBindingpprStgTopBindings pprStgArg pprStgExpr pprStgAlt pprStgRhs$fOutputableStgArg$fOutputableNoExtFieldSilent$fOutputableAltType$fOutputableConstructorNumber$fOutputableUpdateFlag$fOutputableStgOp$fOutputableGenStgRhs$fOutputableGenStgExpr$fOutputableGenStgBinding$fDataNoExtFieldSilent$fEqNoExtFieldSilent$fOrdNoExtFieldSilent CheapAppFunexprType coreAltType coreAltsType mkLamType mkLamTypesapplyTypeToArgs mkCastMComkPiMComkCastmkTickmkTicksisSaturatedConApp mkTickNoHNF tickHNFArgs stripTicksTopstripTicksTopEstripTicksTopT stripTicksE stripTicksT bindNonRecneedsCaseBinding mkAltExpr mkDefaultCasemkSingleAltCase findDefault addDefault isDefaultAltfindAlt mergeAlts trimConArgs filterAltsrefineDefaultAltcombineIdenticalAlts scaleAltsBy exprIsTrivialgetIdFromTrivialExprgetIdFromTrivialExpr_maybe exprIsDupableexprIsWorkFree exprIsCheap exprIsCheapXexprIsExpandable isCheapAppisExpandableAppexprOkForSpeculationexprOkForSideEffectsexprOkForSpecEvalaltsAreExhaustiveetaExpansionTick exprIsHNF exprIsConLikeexprIsTopLevelBindableexprIsTickedStringexprIsTickedString_maybedataConRepInstPatdataConRepFSInstPat cheapEqExpr cheapEqExpr' diffBinds isEmptyTynormSplitTyConApp_maybeextendInScopeSetBindextendInScopeSetBndrsmkInScopeSetBndrscollectMakeStaticArgs isJoinBinddumpIdInfoOfProgrammkStrictFieldSeqsshouldStrictifyIdForCbvshouldUseCbvForIdisUnsafeEqualityProoftidyCbvInfoToptidyExpr tidyRules tidyBndrs extendIdSubstextendIdSubstWithCloneextendIdSubstList extendSubstextendSubstWithVarextendSubstList lookupIdSubstdelBndrdelBndrs mkOpenSubst substExprSC substExpr substBindSC substBind deShadowBinds substBndr substBndrs substRecBndrs cloneIdBndr cloneIdBndrs cloneBndrs cloneBndrcloneRecIdBndrs substIdType substIdInfosubstUnfoldingSCsubstUnfolding substIdOcc substRuleInfosubstRulesForImportedIds substDVarSet substTickish ArityOpts ao_ped_botao_dicts_cheap ArityType manifestArity joinRhsArityexprBotStrictness_maybearityTypeBotSigs_maybe typeArity typeOneShots typeOneShot isOneShotBndrisStateHackType zapLamBndrsmkBotArityTypearityTypeArityexprEtaExpandArity findRhsArity idArityTypecheapArityType exprArity exprIsDeadEnd etaExpand etaExpandAT tryEtaReduce pushCoArgs pushCoArg pushCoTyArg pushCoValArgpushCoercionIntoLambda pushCoDataConcollectBindersPushingCoetaExpandToJoinPointetaExpandToJoinPointRule$fOutputableArityType$fOutputableArityEnv$fOutputableEtaInfo $fEqArityType$fEqCostoccurAnalyseExproccurAnalysePgmzapLambdaBndrsscrutBinderSwap_maybe$fOutputableOccEncl$fOutputableUsageDetails$fOutputableDetails FloatBindFloatLet FloatCase MkStringIdsunpackCStringIdunpackCStringUtf8Id sortQuantVars mkCoreAppmkWildEvBindermkWildValBinder mkWildCase mkIfThenElsecastBottomExpr mkLitRubbishmkUncheckedIntExpr mkIntExprInt mkIntegerExpr mkNaturalExprmkStringExprFSgetMkStringIdsmkStringExprFSWithmkCoreUnboxedTuplemkCoreTupBoxitymkCoreVarTupTy mkCoreTupmkCoreUnboxedSummkBigCoreVarTupSolomkBigCoreVarTup mkBigCoreTupmkBigCoreVarTupTymkBigCoreTupTyunitExpr mkChunkifiedchunkifymkBigTupleSelectormkBigTupleSelectorSolomkBigTupleCase wrapFloat wrapFloats floatBindings mkNilExpr mkConsExpr mkListExpr mkFoldrExpr mkBuildExpr mkNothingExpr mkJustExprmkRuntimeErrorAppmkImpossibleExprerrorIdsrEC_SEL_ERROR_IDrUNTIME_ERROR_IDrEC_CON_ERROR_ID pAT_ERROR_IDnO_METHOD_BINDING_ERROR_IDnON_EXHAUSTIVE_GUARDS_ERROR_ID tYPE_ERROR_IDaBSENT_SUM_FIELD_ERROR_IDmkAbsentErrorApp$fOutputableFloatBindCallCtxt BoringCtxtRhsCtxt DiscArgCtxt RuleArgCtxt ValAppCtxtCaseCtxt ArgSummaryTrivArg NonTrivArgValueArgunfoldingCreationThresholdunfoldingUseThresholdunfoldingFunAppDiscountunfoldingDictDiscountunfoldingVeryAggressiveunfoldingCaseThresholdunfoldingCaseScalingunfoldingReportPrefixupdateReportPrefixinlineBoringOkcalcUnfoldingGuidancecouldBeSmallEnoughToInlinesmallEnoughToInlinecallSiteInline$fOutputableExprSize$fOutputableArgSummary$fOutputableCallCtxt CompilerInfoGCCClang AppleClang AppleClang51 Emscripten UnknownCC LinkerInfoGnuLDGnuGoldLlvmLLDDarwinLD SolarisLDAixLD UnknownLDPkgDbRef GlobalPkgDb UserPkgDb PkgDbPathFlagSpec flagSpecName flagSpecFlagflagSpecActionflagSpecGhcMode TurnOnFlagCmdLinePOnOffOnOffFlushOut FatalMessagerDynamicTooStateDT_DontDT_OKDT_DynRtsOptsEnabled RtsOptsNone RtsOptsIgnoreRtsOptsIgnoreAllRtsOptsSafeOnly RtsOptsAll DynLibLoader DeployableSystemDependent PackageDBFlag PackageDBNoUserPackageDBNoGlobalPackageDBClearPackageDBs PackageFlag ExposePackage HidePackage TrustFlag TrustPackageDistrustPackageIgnorePackageFlag IgnorePackage ModRenamingmodRenamingWithImplicit modRenamings PackageArg UnitIdArgGhcLinkNoLink LinkBinary LinkInMemory LinkDynLib LinkStaticLib LinkMergedObjGhcMode CompManagerOneShotMkDependContainsDynFlagsextractDynFlags HasDynFlags getDynFlagsDynFlagsghcModeghcLinkbackendghcNameVersion fileSettingstargetPlatform toolSettings platformMisc rawSettingstmpDir llvmOptLevel verbosity debugLevel simplPhasesmaxSimplIterations ruleCheckstrictnessBefore parMakeCountenableTimeStats ghcHeapSizemaxRelevantBindsmaxValidHoleFitsmaxRefHoleFitsrefLevelHoleFitsmaxUncoveredPatternsmaxPmCheckModelssimplTickFactor dmdUnboxWidthspecConstrThresholdspecConstrCountspecConstrRecursivebinBlobThresholdliberateCaseThreshold floatLamArgsliftLamsRecArgsliftLamsNonRecArgs liftLamsKnowncmmProcAlignment historySize importPathsmainModuleNameIs mainFunIsreductionDepthsolverIterations homeUnitId_homeUnitInstanceOf_homeUnitInstantiations_workingDirectorythisPackageName hiddenModulesreexportedModules targetWays_ splitInfo objectDirdylibInstallNamehiDirhieDirstubDirdumpDir objectSuf_hcSufhiSuf_hieSuf dynObjectSuf_ dynHiSuf_ outputFile_dynOutputFile_outputHi dynOutputHi dynLibLoader dynamicNow dumpPrefixdumpPrefixForceldInputs includePaths libraryPathsframeworkPathscmdlineFrameworksrtsOptsrtsOptsEnabledrtsOptsSuggestionshpcDirpluginModNamespluginModNameOptsfrontendPluginOptsexternalPluginSpecs depMakefiledepIncludePkgDepsdepIncludeCppDepsdepExcludeMods depSuffixespackageDBFlagsignorePackageFlags packageFlagspluginPackageFlags trustFlags packageEnv dumpFlags generalFlags warningFlagsfatalWarningFlagslanguage safeHaskell safeInfer safeInferredthOnLoc newDerivOnLocderiveViaOnLocoverlapInstLocincoherentOnLoc pkgTrustOnLoc warnSafeOnLocwarnUnsafeOnLoctrustworthyOnLoc extensionsextensionFlags unfoldingOpts maxWorkerArgs ghciHistSizeflushOutghcVersionFilehaddockOptions ghciScripts pprUserLengthpprCols useUnicodeuseColor canUseColor colSchemeprofAutocallerCcFiltersinteractivePrint sseVersion bmiVersionavxavx2avx512cdavx512eravx512favx512pfrtldInfortccInfo rtasmInfomaxInlineAllocSizemaxInlineMemcpyInsnsmaxInlineMemsetInsns reverseErrors maxErrors initialUniqueuniqueIncrement cfgWeights IncludeSpecsincludePathsQuoteincludePathsGlobalincludePathsQuoteImplicitaddGlobalIncludeaddQuoteIncludeaddImplicitQuoteIncludeflattenIncludessettings programNameprojectVersion ghcUsagePath ghciUsagePathtopDirextraGccViaCFlagsglobalPackageDatabasePathpgm_Lpgm_Ppgm_Fpgm_cpgm_cxxpgm_apgm_lpgm_lmpgm_dllpgm_T pgm_windrespgm_lccpgm_ar pgm_otoolpgm_install_name_tool pgm_ranlibpgm_lopgm_lcpgm_iopt_Lopt_Popt_P_signatureopt_Fopt_copt_cxxopt_aopt_lopt_lm opt_windresopt_lccopt_loopt_lcopt_iversionedAppDirversionedFilePath isOneShotisNoLinkpackageFlagsChangedpositionIndependentdynamicTooState setDynamicNow initDynFlagsdefaultDynFlagsdefaultFatalMessagerdefaultFlushOutlanguageExtensions hasPprDebughasNoDebugOutputhasNoStateHackhasNoOptCoerciondoptdopt_set dopt_unsetgoptgopt_set gopt_unsetwoptwopt_set wopt_unset wopt_fatalwopt_set_fatalwopt_unset_fatalxoptxopt_set xopt_unsetxopt_set_unlessExplSpecxopt_DuplicateRecordFieldsxopt_FieldSelectorslang_setpackageTrustOn safeHaskellOnsafeHaskellModeEnabledsafeLanguageOn safeInferOn safeImportsOnsafeDirectImpsReqsafeImplicitImpsReq unsafeFlagsunsafeFlagsForInfergetOpts getVerbFlags setOutputFilesetDynOutputFile setOutputHisetDynOutputHiaddPluginModuleName updOptLevelparseDynamicFlagsCmdLineparseDynamicFilePragmagetCmdLineStateputCmdLineState runCmdLinePprocessCmdLinePparseDynamicFlagsFullallNonDeprecatedFlagsflagsAll flagsDynamic flagsPackageflagsForCompletionturnOnturnOff flagSpecOf wWarningFlagsfFlags fLangFlagssupportedLanguagesAndExtensionsxFlags impliedGFlagsimpliedOffGFlags impliedXFlagsglasgowExtsFlagssetGeneralFlag'unSetGeneralFlag' setUnitIdaugmentByWorkingDirectorysetFlagsFromEnvFile setTmpDir picCCOpts pieCCLDOptspicPOpts compilerInfo targetProfilemakeDynFlagsConsistentsetUnsafeGlobalDynFlagsisSse4_2Enabled isAvxEnabled isAvx2EnabledisAvx512cdEnabledisAvx512erEnabledisAvx512fEnabledisAvx512pfEnabled isBmiEnabled isBmi2EnabledsccProfilingEnabledneedSourceNotesuseXLinkerRPathinitSDocContextinitDefaultSDocContextinitPromotionTickContext outputFile objectSufwayspprDynFlagsDiffupdatePlatformConstants$fOutputableGhcMode$fOutputablePackageArg$fOutputableModRenaming$fOutputablePackageFlag$fOutputableOnOff$fApplicativeCmdLineP$fMonadCmdLineP$fHasDynFlagsExceptT$fHasDynFlagsMaybeT$fHasDynFlagsReaderT$fHasDynFlagsWriterT$fEqCompilerInfo$fEqLinkerInfo$fEqPackageDBFlag $fEqPkgDbRef$fEqDeprecation$fOrdDeprecation$fFunctorCmdLineP $fEqOnOff $fShowOnOff$fEqDynamicTooState$fShowDynamicTooState$fOrdDynamicTooState$fShowRtsOptsEnabled$fEqDynLibLoader$fEqPackageFlag $fEqTrustFlag$fEqIgnorePackageFlag$fEqModRenaming$fEqPackageArg$fShowPackageArg $fEqGhcLink $fShowGhcLink $fEqGhcMode$fShowIncludeSpecs ShHoleSubstUnitErr CloseUnitErrPackageFlagErr TrustFlagErrModuleSuggestionSuggestVisible SuggestHidden LookupResult LookupFoundLookupMultiple LookupHiddenLookupUnusableLookupNotFoundUnusableUnitReasonIgnoredWithFlagBrokenDependenciesCyclicDependenciesIgnoredDependenciesShadowedDependencies UnitInfoMap UnitDatabaseunitDatabasePathunitDatabaseUnits UnitState unitInfoMappreloadClosurepackageNameMapwireMap unwireMap preloadUnits explicitUnitshomeUnitDependsmoduleNameProvidersMappluginModuleNameProvidersMaprequirementContextallowVirtualUnitsPreloadUnitClosure ModuleOrigin ModHidden ModUnusable ModOrigin fromOrigUnitfromExposedReexportfromHiddenReexportfromPackageFlagemptyUnitState lookupUnit lookupUnit' lookupUnitId lookupUnitId'unsafeLookupUnitunsafeLookupUnitIdlookupPackageNamesearchPackageIdresolvePackageImport listUnitInfo initUnitsreadUnitDatabases getUnitDbRefsresolveUnitDatabasereadUnitDatabasepprFlag pprReason unwireUnitlookupModuleInAllUnitslookupModuleWithSuggestionslookupModulePackage!lookupPluginModuleWithSuggestionslistVisibleModuleNames closeUnitDepscloseUnitDeps'mayThrowUnitErrrequirementMergespprUnitIdForUserpprUnitInfoForUserpprUnitspprUnitsSimple pprModuleMap improveUnitinstUnitToUnitrenameHoleModulerenameHoleUnitrenameHoleModule'renameHoleUnit'instModuleToModuleimplicitPackageDeps$fMonoidUnitVisibility$fSemigroupUnitVisibility$fOutputableUnitVisibility$fOutputableUnitDatabase$fOutputableUnusableUnitReason$fMonoidModuleOrigin$fSemigroupModuleOrigin$fOutputableModuleOrigin$fOutputableUnitErr ImportAvailsimp_modsimp_direct_dep_modsimp_dep_direct_pkgsimp_trust_own_pkgimp_trust_pkgs imp_boot_mods imp_sig_mods imp_orphs imp_finstsUsagePackageModuleUsageHomeModule UsageFileUsageHomeModuleInterfaceUsageMergedRequirementusg_mod usg_mod_hashusg_safe usg_mod_name usg_entities usg_exports usg_file_path usg_file_hashusg_file_labelusg_iface_hash Dependenciesdep_direct_modsdep_direct_pkgsdep_plugin_pkgs dep_sig_modsdep_trusted_pkgs dep_boot_mods dep_orphs dep_finstsmkDependenciesdep_orphs_updatedep_finsts_updatenoDependenciespprDeps$fBinaryDependencies $fBinaryUsage $fEqUsage$fEqDependencies FinderOptsfinder_importPathsfinder_lookupHomeInterfacesfinder_bypassHiFileCheck finder_waysfinder_enableSuggestionsfinder_workingDirectoryfinder_thisPackageNamefinder_hiddenModulesfinder_reexportedModules finder_hieDir finder_hieSuf finder_hiDir finder_hiSuffinder_dynHiSuffinder_objectDirfinder_objectSuffinder_dynObjectSuffinder_stubDir FindResultFound NoPackage FoundMultipleNotFoundfr_pathsfr_pkgfr_mods_hiddenfr_pkgs_hidden fr_unusablesfr_suggestionsInstalledFindResultInstalledFoundInstalledNoPackageInstalledNotFound FinderCache fcModuleCache fcFileCacheFinderCacheState$fShowFinderOptsInputFileBufferTargetId TargetModule TargetFileTargettargetIdtargetAllowObjCode targetUnitIdtargetContents pprTarget pprTargetId$fOutputableTargetId$fOutputableTarget $fEqTargetIdTypeSizeTypeCannotBeMarshaledReason NotADataTypeNewtypeDataConNotInScopeUnliftedFFITypesNeededNotABoxedMarshalableTyConForeignLabelNotAPtrNotSimpleUnliftedTypeNotBoxedKindAnyIllegalForeignTypeReasonTypeCannotBeMarshaledForeignDynNotPtrSafeHaskellMustBeInIOIOResultExpectedUnexpectedNestedForallLinearTypesNotAllowedOneArgExpectedAtLeastOneArgExpectedTcLevelConcreteTvOrigin ConcreteFRRMetaInfoTauTvTyVarTv RuntimeUnkTvCycleBreakerTv ConcreteTvFlexiIndirectSkolemTv RuntimeUnkMetaTvmtv_infomtv_ref mtv_tclvl SyntaxOpTypeSynAnySynRhoSynListSynFunSynType ExpRhoTypeExpSigmaTypeFRR ExpTypeFRR ExpSigmaType InferResultIRir_uniqir_lvlir_frrir_refExpTypeCheckInfer TcDTyCoVarSet TcDTyVarSet TcTyCoVarSet TcTyVarSetTcKind TcTauType TcRhoTypeTcSigmaTypeFRR TcSigmaType TcThetaType TcPredType TcTyConBinder PolyTcTyCon MonoTcTyConTcTyCon TcReqTVBinderTcInvisTVBinder TcTyVarBinder TcTypeFRR TcTyCoVarTcTypeTcCoVarmkCheckExpType synKnownType mkSynFunTys maxTcLevel topTcLevel isTopTcLevel pushTcLevelstrictlyDeeperThandeeperThanOrSame sameDepthAs tcTyVarLevel tcTypeLevel tcTyFamInststcTyFamInstsAndVistcTyConAppTyFamInstsAndVis isTyFamFreeanyRewritableTyVaranyRewritableTyFamAppexactTyCoVarsOfTypeexactTyCoVarsOfTypes tcIsTcTyVarisPromotableMetaTyVarisTouchableMetaTyVarisImmutableTyVar isSkolemTyVarskolemSkolInfoisOverlappableTyVarisAmbiguousTyVarisCycleBreakerTyVarisConcreteTyVar_maybeisConcreteTyVarTyisConcreteTyVarTy_maybe isMetaTyVarTy metaTyVarInfometaTyVarTcLevelmetaTyVarTcLevel_maybe metaTyVarRefsetMetaTyVarTcLevel isTyVarTyVarisFlexi isIndirectisRuntimeUnkSkolmkTyVarNamePairsfindDupTyVarTvs ambigTkvsOfTy mkInfSigmaTy mkSpecSigmaTy mkSigmaTytcMkDFunSigmaTymkPhiTy tcMkPhiTy tcMkDFunPhiTy getDFunTyKey tcSplitPiTystcSplitPiTy_maybetcSplitForAllTyVarBinder_maybetcSplitForAllTyVarstcSplitForAllInvisTyVarstcSplitSomeForAllTyVarstcSplitForAllReqTVBinderstcSplitForAllInvisTVBinderstcSplitForAllTyVarBinderstcSplitPredFunTy_maybe tcSplitPhiTytcSplitSigmaTytcSplitNestedSigmaTystcTyConAppTyContcTyConAppTyCon_maybetcTyConAppArgs tcSplitFunTystcSplitFunTy_maybetcSplitFunTysN tcFunArgTy tcFunResultTytcFunResultTyNtcSplitAppTy_maybe tcSplitAppTy tcSplitAppTys tcIsTyVarTy tcSplitDFunTytcSplitDFunHeadtcSplitMethodTyisTyVarClassPredcheckValidClsArgs hasTyVarHead evVarPred boxEqPredpickCapturedPredsmkMinimalBySCstransSuperClassesimmSuperClassesisImprovementPred isSigmaTyisRhoTy isRhoExpTyisOverloadedTy isFloatTy isDoubleTy isIntegerTy isNaturalTyisIntTyisWordTyisBoolTyisUnitTyisCharTyisFloatingPrimTy isStringTy isRigidTy deNoteTypetcSplitIOType_maybeisFFIArgumentTyisFFIExternalTyisFFIImportResultTyisFFIExportResultTy isFFIDynTy isFFILabelTyisFFIPrimArgumentTyisFFIPrimResultTy isFunPtrTysizeType sizeTypestcTyConVisibilitiesisNextTyConArgVisibleisNextArgVisible$fOutputableMetaDetails$fOutputableMetaInfo$fOutputableTcLevel$fOutputableTcTyVarDetails$fOutputableInferResult$fOutputableExpType!$fGenericIllegalForeignTypeReason$$fGenericTypeCannotBeMarshaledReason $fEqTcLevel $fOrdTcLevel QuoteWrapper HoleExprRefHER EvCallStack EvCsEmpty EvCsPushCall EvTypeableEvTypeableTyConEvTypeableTyAppEvTypeableTrFunEvTypeableTyLitEvExprEvTermEvFunet_tvset_givenet_bindset_bodyEvBindeb_lhseb_rhs eb_is_given EvBindMapev_bind_varenv EvBindsVar CoEvBindsVarebv_uniq ebv_bindsebv_tcvs TcEvBindsEvBinds HsWrapperWpHole WpComposeWpFunWpCastWpEvLamWpEvAppWpTyLamWpTyAppWpLetWpMultCoercion TcMCoercionR TcMCoercionN TcMCoercion TcCoercionP TcCoercionR TcCoercionN TcCoercion maybeSymCo<.>mkWpFunmkWpEta mkWpCastR mkWpCastN mkWpTyApps mkWpEvApps mkWpEvVarApps mkWpTyLams mkWpEvLamsmkWpLet idHsWrapper isIdHsWrapperhsWrapDictBinderscollectHsWrapBindersisCoEvBindsVaremptyEvBindMap extendEvBindsisEmptyEvBindMap lookupEvBindevBindMapBinds foldEvBindMapnonDetStrictFoldEvBindMapfilterEvBindMapevBindMapToVarSetvarSetMinusEvBindMap evBindVarmkWantedEvBind mkGivenEvBindevId evCoercionevCast evDFunApp evDataConApp evSelector evTypeablemkEvCastmkEvScSelectorsemptyTcEvBindsisEmptyTcEvBindsevTermCoercion_maybeevTermCoercionfindNeededEvVars evVarsOfTerm pprHsWrapperunwrapIPwrapIPquoteWrapperTyVarTyapplyQuoteWrapper$fOutputableEvTypeable$fOutputableEvTerm$fOutputableEvBind$fUniquableEvBindsVar$fOutputableEvBindsVar$fOutputableTcEvBinds$fOutputableEvBindMap$fDataTcEvBinds$fOutputableHsWrapper$fMonoidHsWrapper$fSemigroupHsWrapper$fOutputableEvCallStack$fDataHoleExprRef$fOutputableHoleExprRef$fDataQuoteWrapper$fDataEvCallStack$fDataHsWrapper$fDataEvTypeable $fDataEvTerm TcSpecPragSpecPrag LTcSpecPrag TcSpecPragsIsDefaultMethod SpecPragsAnnSigasDcolonasRestIdSigunIdSigABExportABEabe_polyabe_monoabe_wrap abe_pragsAbsBindsabs_tvs abs_ev_vars abs_exports abs_ev_binds abs_bindsabs_sig NHsValBindsLR NValBinds pprLHsBindspprLHsBindsForUser pprDeclListemptyLocalBindseqEmptyLocalBindsisEmptyValBindsemptyValBindsInemptyValBindsOut emptyLHsBindsisEmptyLHsBindsplusHsValBinds ppr_monobindpprTicksisEmptyIPBindsPRisEmptyIPBindsTc noSpecPrags hasSpecPragsisDefaultMethodppr_sighsSigDocextractSpecPragName pragBracketspragSrcBrackets pprVarSigpprSpecpprTcSpecPrags pprMinimalSig$fOutputableFixitySig$fOutputableSig$fOutputableIPBind$fOutputableHsIPBinds$fOutputableRecordPatSynField$fOutputablePatSynBind$fOutputableHsBindLR$fOutputableHsLocalBindsLR$fOutputableHsValBindsLR$fOutputableTcSpecPrag$fOutputableABExport$fDataTcSpecPrags$fDataTcSpecPrag $fDataAnnSig $fDataIdSig HsRuleAnn ra_tyanns ra_tmannsra_restHsRuleRnXViaStrategyPs DataDeclRn tcdDataCusktcdFVspartitionBindsAndSigs emptyRdrGroup emptyRnGrouphsGroupTopLevelFixitySigs appendGroupstyFamInstDeclNametyFamInstDeclLName tyClDeclLNamecountTyClDeclstcdName hsDeclHasCuskpp_vanilla_decl_headpprTyClDeclFlavourfamilyDeclLNamefamilyDeclNamefamResultKindSignatureresultVariableNamederivStrategyNamestandaloneKindSigName getConNamesgetRecConArgs_maybehsConDeclThetappDataDefnHeaderpprTyFamInstDeclpprDataFamInstFlavourpprHsFamInstLHSinstDeclDataFamInstsnewOrDataToFlavour anyLConIsGadtfoldDerivStrategymapDerivStrategyflattenRuleDeclspprFullRuleNameroleAnnotDeclName$fOutputableRoleAnnotDecl$fOutputableAnnDecl$fOutputableWarnDecl$fOutputableWarnDecls$fOutputableRuleBndr$fOutputableRuleDecl$fOutputableRuleDecls$fOutputableForeignExport$fOutputableForeignImport$fOutputableForeignDecl$fOutputableDefaultDecl$fOutputableDerivStrategy$fOutputableDerivDecl$fOutputableNewOrData$fOutputableInstDecl$fOutputableClsInstDecl$fOutputableDataFamInstDecl$fOutputableTyFamInstDecl$fOutputableConDecl$fOutputableStandaloneKindSig$fOutputableHsDataDefn$fOutputableDerivClauseTys$fOutputableHsDerivingClause$fOutputableFamilyDecl$fOutputableFunDep$fOutputableTyClGroup$fOutputableTyClDecl$fOutputableFamilyInfo$fOutputableSpliceDecoration$fOutputableSpliceDecl$fOutputableHsGroup$fOutputableHsDecl$fOutputableDocDecl$fOutputableXViaStrategyPs$fDataHsRuleAnn $fEqHsRuleAnn$fDataHsRuleRn$fDataDataDeclRn TcTyThing TcIdSigInfo SelfBootInfoTcLclEnvlclEnvInGeneratedCode getLclEnvLoc setLclEnvLocgetLclEnvTcLevelsetLclEnvTcLevelHoleFit RawHoleFithfIdhfCandhfTypehfRefLvlhfWrap hfMatcheshfDoc HoleFitPluginHoleFitCandidateIdHFCand NameHFCand GreHFCandPotentialUnifiers NoUnifiersOneOrMoreUnifiersClsInstLookupResult InstMatch DFunInstTypeVisibleOrphanModulesInstEnvs ie_globalie_local ie_visibleInstEnvClsInst is_cls_nmis_tcs is_dfun_nameis_tvsis_clsis_tysis_dfunis_flag is_orphanfuzzyClsInstCmpisOverlappable isOverlapping isIncoherentinstanceDFunIdupdateClsInstDFunupdateClsInstDFuns pprInstancepprInstanceHdr pprInstances instanceHeadorphNamesOfClsInst instanceSigmkLocalInstancemkImportedInstance emptyInstEnv mkInstEnv instEnvEltsinstEnvClasses instIsVisibleclassInstancesclassNameInstances memberInstEnv unionInstEnvextendInstEnvList extendInstEnv filterInstEnv anyInstEnv mapInstEnvdeleteFromInstEnvdeleteDFunFromInstEnvidenticalClsInstHeadlookupUniqueInstEnvgetPotentialUnifiers nullUnifiers lookupInstEnvinstanceBindFun$fOutputableClsInst$fNamedThingClsInst$fOutputableInstEnv$fMonoidPotentialUnifiers$fSemigroupPotentialUnifiers$fOutputablePotentialUnifiers$fOutputableInstMatches $fDataClsInst ModDetails md_exportsmd_typesmd_insts md_fam_instsmd_rulesmd_annsmd_complete_matchesemptyModDetailsOptCoercionOptsoptCoercionEnabled optCoercion checkAxInstCoConPatTc cpt_arg_tyscpt_tvs cpt_dicts cpt_bindscpt_wrapHsPatExpansion HsPatExpanded XXPatGhcTcCoPat ExpansionPat co_cpt_wrap co_pat_inner co_pat_ty EpAnnSumPat sumPatParenssumPatVbarsBeforesumPatVbarsAfter hsRecFieldIdhsRecUpdFieldRdrhsRecUpdFieldIdhsRecUpdFieldOcc pprParendLPat pprConArgsmkPrefixConPatmkNilPat mkCharLitPat isBangedLPatlooksLazyPatBindisIrrefutableHsPat isSimplePatpatNeedsParensgParPatparenthesizePatcollectEvVarsPatscollectEvVarsPat$fOutputablePat$fOutputableHsFieldBind$fOutputableHsRecFields$fOutputableHsConPatTyArg$fOutputableHsPatExpansion$fDataHsPatExpansion$fDataEpAnnSumPatDataConBuilderPrefixDataConBuilderInfixDataConBuilder PatBuilder PatBuilderPat PatBuilderPar PatBuilderAppPatBuilderAppTypePatBuilderOpApp PatBuilderVarPatBuilderOverLit SumOrTupleSumTuple pprSumOrTuple$fOutputablePatBuilder$fOutputableDataConBuildershowSDocshowPprshowSDocForUser printForUser initLogFlags IOEnvFailureIOEnvfailM failWithMrunIOEnvfixMtryMtryAllMtryMostMunsafeInterleaveMuninterruptibleMaskM_ newMutVar writeMutVar readMutVar updMutVar updMutVarMatomicUpdMutVaratomicUpdMutVar'getEnvsetEnvupdEnv$fMonadPlusIOEnv$fAlternativeIOEnv$fHasModuleIOEnv$fHasLoggerIOEnv$fHasHooksIOEnv$fHasDynFlagsIOEnv$fApplicativeIOEnv$fMonadFailIOEnv $fMonadIOEnv$fMonadIOIOEnv$fFunctorIOEnv$fExceptionIOEnvFailure$fShowIOEnvFailure$fMonadThrowIOEnv$fMonadCatchIOEnv$fMonadMaskIOEnv$fMonadFixIOEnvmkFinalUnfoldingmkCompulsoryUnfolding'mkCompulsoryUnfoldingmkSimpleUnfoldingmkDFunUnfoldingmkDataConUnfoldingmkWrapperUnfoldingmkWorkerUnfoldingmkInlineUnfoldingNoAritymkInlineUnfoldingWithAritymkInlinableUnfolding specUnfolding mkUnfoldingmkCoreUnfoldingcertainlyWillInline so_co_opts so_eta_reddefaultSimpleOptssimpleOptExprWith simpleOptPgmjoinPointBinding_maybejoinPointBindings_maybeexprIsConApp_maybeexprIsLiteral_maybeexprIsLambda_maybe$fOutputableSimpleOptEnvBangOptsbang_opt_strict_databang_opt_unbox_disablebang_opt_unbox_strictbang_opt_unbox_smallDataConBangOpts FixedBangOpts SrcBangOptsDCB wiredInIds ghcPrimIds mkDictSelRhsvanillaDataConBoxer mkDataConRepunwrapNewTypeBodywrapFamInstBody mkFCallId mkDictFunId coerceNameleftSectionNamerightSectionName nospecIdName proxyHashId nullAddrIdseqIdlazyIdnoinlineIdNamenoinlineConstraintIdName noinlineIdnoinlineConstraintIdnospecIdcoerceIdrealWorldPrimId voidPrimIdunboxedUnitExpr voidArgIdcoercionTokenId toIfaceTvBndrtoIfaceTvBndrs toIfaceIdBndr toIfaceBndrtoIfaceForAllBndr toIfaceKind toIfaceType toIfaceTyVartoIfaceTyCon_nametoIfaceCoerciontidyToIfaceTypetidyToIfaceContextpatSynToIfaceDecl toIfaceBangtoIfaceSrcBangtoIfaceLetBndrtoIfaceTopBndrtoIfaceIdDetails toIfaceIdInfo toIfUnfolding toIfaceExprtoIfaceTickish toIfaceBindtoIfaceTopBind toIfaceAlt toIfaceCon toIfaceApp toIfaceVar toIfaceLFInfo primOpRules LabelStyleCStyleAsmStyle InfoProvEnt infoTablePtrinfoProvEntClosureType infoTableTypeinfoProvModule infoTableProvDynamicLinkerLabelInfoCodeStub SymbolPtr GotSymbolPtrGotSymbolOffsetConInfoTableLocation UsageSiteDefinitionSiteForeignLabelSourceForeignLabelInPackageForeignLabelInExternalPackageForeignLabelInThisPackageNeedExternDecl isIdLabel isTickyLabelpprDebugCLabelgetConInfoTableLocation mkSRTLabelmkRednCountsLabel mkTagHitLabelmkClosureLabelmkInfoTableLabel mkEntryLabelmkClosureTableLabelmkConInfoTableLabel mkBytesLabelmkBlockInfoTableLabelmkDirty_MUT_VAR_Label#mkNonmovingWriteBarrierEnabledLabelmkUpdInfoLabelmkBHUpdInfoLabelmkIndStaticInfoLabelmkMainCapabilityLabelmkMAP_FROZEN_CLEAN_infoLabelmkMAP_FROZEN_DIRTY_infoLabelmkMAP_DIRTY_infoLabelmkTopTickyCtrLabelmkCAFBlackHoleInfoTableLabelmkArrWords_infoLabelmkSMAP_FROZEN_CLEAN_infoLabelmkSMAP_FROZEN_DIRTY_infoLabelmkSMAP_DIRTY_infoLabelmkBadAlignmentLabelmkOutOfBoundsAccessLabelmkMUT_VAR_CLEAN_infoLabelmkSRTInfoLabelmkCmmInfoLabelmkCmmEntryLabelmkCmmRetInfoLabel mkCmmRetLabelmkCmmCodeLabelmkCmmClosureLabelmkCmmDataLabelmkRtsCmmDataLabelmkLocalBlockLabelmkRtsPrimOpLabelmkSelectorInfoLabelmkSelectorEntryLabelmkApInfoTableLabelmkApEntryLabelmkPrimCallLabelmkForeignLabel addLabelSize isBytesLabelisForeignLabelisStaticClosureLabelisSomeRODataLabelisInfoTableLabelisCmmInfoTableLabelisConInfoTableLabelforeignLabelStdcallInfo mkBitmapLabel mkCCLabel mkCCSLabel mkIPELabelmkRtsApFastLabelmkRtsSlowFastTickyCtrLabelmkRtsUnpackCStringLabelmkRtsUnpackCStringUtf8LabelmkHpcTicksLabelmkDynamicLinkerLabeldynamicLinkerLabelInfomkPicBaseLabelmkDeadStripPreventermkStringLitLabelmkInitializerStubLabelmkInitializerArrayLabelmkFinalizerStubLabelmkFinalizerArrayLabelmkAsmTempLabelmkAsmTempDerivedLabelmkAsmTempEndLabelmkAsmTempProcEndLabelmkAsmTempDieLabel toClosureLbltoSlowEntryLbl toEntryLbl toInfoLblhasHaskellNamehasIdLabelInfohasCAF needsCDeclmaybeLocalBlockLabel isMathFunexternallyVisibleCLabelisCFunctionLabel isGcPtrLabel isLocalCLabel labelDynamic pprAsmLabelppInternalProcLabel mayRedirectTo$fOutputableForeignLabelSource$fOrdTickyIdInfo$fOutputableTickyIdInfo $fOutputableConInfoTableLocation$fOutputableIdLabelInfo$fOutputablePPlatformCLabel $fOutputablePPlatformInfoProvEnt $fOrdCLabel $fShowCLabel$fEqInfoProvEnt$fOrdInfoProvEnt $fEqCLabel$fEqDynamicLinkerLabelInfo$fOrdDynamicLinkerLabelInfo$fEqCmmLabelInfo$fOrdCmmLabelInfo$fEqRtsLabelInfo$fOrdRtsLabelInfo$fEqIdLabelInfo$fOrdIdLabelInfo$fEqConInfoTableLocation$fOrdConInfoTableLocation$fEqTickyIdInfo$fShowTickyIdInfo$fEqForeignLabelSource$fOrdForeignLabelSource$fOrdNeedExternDecl$fEqNeedExternDecl$fEqModuleLabelKind$fOrdModuleLabelKindInfoTableProvMapprovDC provClosureprovInfoTablesDCMap ClosureMapIpeSourceLocationemptyInfoTableProvMap newBlockIdblockLbl infoTblLbl DefinerOfRegs foldRegsDefd UserOfRegs foldRegsUsed GlobalRegSet LocalRegSetRegSetCmmLitCmmIntCmmFloatCmmVecCmmLabel CmmLabelOffCmmLabelDiffOffCmmBlockCmmHighStackMarkAreaOldYoung AlignmentSpecNaturallyAligned UnalignedCmmExprCmmLoad CmmMachOp CmmStackSlot CmmRegOff cmmExprType cmmLitType cmmExprWidthcmmExprAlignmentmaybeInvertCmmExprisTrivialCmmExprhasNoGlobalRegsisLitisComparisonExpr emptyRegSet nullRegSet elemRegSet extendRegSetdeleteFromRegSetmkRegSet minusRegSet plusRegSet timesRegSet sizeRegSet regSetToListfoldLocalRegsUsedfoldLocalRegsDefd$fOutputableArea$fOutputableCmmLit$fOutputablePPlatformCmmLit$fOutputablePPlatformCmmExpr $fEqCmmExpr$fUserOfRegsr[]$fUserOfRegsrCmmExpr$fUserOfRegsrr$fUserOfRegsGlobalRegCmmReg$fUserOfRegsLocalRegCmmReg$fDefinerOfRegsr[]$fDefinerOfRegsrr$fDefinerOfRegsGlobalRegCmmReg$fDefinerOfRegsLocalRegCmmReg $fShowCmmExpr $fEqCmmLit $fShowCmmLit$fEqArea $fOrdArea $fShowArea$fEqAlignmentSpec$fOrdAlignmentSpec$fShowAlignmentSpec callerSaves activeStgRegs haveRegBaseglobalRegMaybefreeReg freeRegBase CmmTickScope GlobalScopeSubScope CombinedScope ForeignTarget PrimTarget CmmReturnInfo CmmMayReturnCmmNeverReturnsForeignConvention ConventionNativeDirectCallNativeNodeCall NativeReturnSlowGCUpdFrameOffset CmmFormal CmmActualCmmNodeCmmEntry CmmCommentCmmTick CmmUnwind CmmAssignCmmStoreCmmUnsafeForeignCall CmmBranch CmmCondBranch CmmSwitchCmmCallCmmForeignCallcml_predcml_true cml_false cml_likely cml_targetcml_cont cml_args_regscml_args cml_ret_args cml_ret_offtgtresargsret_argsret_offintrblforeignTargetHints wrapRecExpmapExp mapExpDeep wrapRecExpMmapExpM mapExpDeepM wrapRecExpffoldExp foldExpDeep mapSuccessorsmapCollectSuccessorsisTickSubScopecombineTickScopes$fOutputableConvention$fOutputableCmmReturnInfo$fOutputableForeignConvention$fUserOfRegsrForeignTarget"$fOutputablePPlatformForeignTarget$fOutputableCmmTickScope$fOrdCmmTickScope$fEqCmmTickScope$fDefinerOfRegsGlobalRegCmmNode$fDefinerOfRegsLocalRegCmmNode$fUserOfRegsGlobalRegCmmNode$fUserOfRegsLocalRegCmmNode$fNonLocalCmmNode$fOutputablePPlatformGraph'$fOutputablePPlatformBlock$fOutputablePPlatformBlock0$fOutputablePPlatformBlock1$fOutputablePPlatformBlock2$fOutputablePPlatformCmmNode$fEqForeignTarget$fEqForeignConvention$fEqCmmReturnInfo$fEqConvention $fEqCmmNode ListGraph GenBasicBlock BasicBlock RawCmmStatics CmmStatics GenCmmStatics CmmStaticsRaw CmmStatic CmmStaticLitCmmUninitialised CmmString CmmFileEmbedSectionSectionProtectionReadWriteSectionReadOnlySectionWriteProtectedSection SectionTypeText ReadOnlyDataRelocatableReadOnlyDataUninitialisedData InitArray FiniArrayCString OtherSection ProfilingInfoNoProfilingInfo CmmInfoTablecit_lblcit_repcit_profcit_srtcit_clo CmmStackInfo StackInfo arg_space do_layout CmmTopInfoTopInfo info_tbls stack_info GenCmmGraphCmmGraphg_entryg_graph RawCmmDecl CmmDeclSRTsCmmDecl GenCmmDeclCmmProcCmmData RawCmmGroup CmmGroupSRTsCmmGroup GenCmmGroup CmmProgram toBlockMap revPostorder toBlockList topInfoTablesectionProtectionblockId pprBBlock pprCmmGroup pprStatic pprSection $fOutputablePPlatformGenCmmGraph$fOutputableCmmStackInfo!$fOutputablePPlatformCmmInfoTable$fOutputablePPlatformCmmTopInfo$fOutputablePPlatformGenCmmDecl$fOutputableCmmStatic$fOutputablePPlatformCmmStatic"$fOutputablePPlatformGenCmmStatics$fOutputablePenvGenBasicBlock$fOutputableGenBasicBlock$fOutputablePenvListGraph$fOutputableListGraph$fFunctorListGraph$fFunctorGenBasicBlock$fFunctorGenCmmDecl$fEqSectionProtection$fShowSectionType$fEqCmmInfoTable$fEqProfilingInfomodBreaks_flagsmodBreaks_locsmodBreaks_varsmodBreaks_decls modBreaks_ccsmodBreaks_breakInfo CCostCentre BreakIndex CgBreakInfocgb_vars cgb_restyBCONPtr BCONPtrWord BCONPtrLbl BCONPtrItbl BCONPtrStrBCOPtr BCOPtrName BCOPtrPrimOp BCOPtrBCOBCOPtrBreakArray UnlinkedBCOunlinkedBCONameunlinkedBCOArityunlinkedBCOInstrsunlinkedBCOBitmapunlinkedBCOLitsunlinkedBCOPtrsItblPtrItblEnv TupleInfo tupleSize tupleRegstupleNativeStackSize RegBitmap unRegBitmapFFIInfoCompiledByteCodebc_bcosbc_itblsbc_ffisbc_strs bc_breaksseqCompiledByteCode voidTupleInfoemptyModBreaks$fOutputableTupleInfo$fNFDataBCONPtr$fOutputableUnlinkedBCO$fNFDataBCOPtr$fNFDataUnlinkedBCO$fOutputableCgBreakInfo$fOutputableCompiledByteCode $fShowItblPtr$fNFDataItblPtr$fShowTupleInfo$fEnumRegBitmap $fEqRegBitmap$fShowRegBitmap$fIntegralRegBitmap$fNumRegBitmap$fOrdRegBitmap$fRealRegBitmap$fBitsRegBitmap$fFiniteBitsRegBitmap$fOutputableRegBitmap $fEnumWordOff $fEqWordOff $fShowWordOff$fIntegralWordOff $fNumWordOff $fOrdWordOff $fRealWordOff$fOutputableWordOff $fEnumByteOff $fEqByteOff $fShowByteOff$fIntegralByteOff $fNumByteOff $fOrdByteOff $fRealByteOff$fOutputableByteOff $fShowFFIInfo$fNFDataFFIInfo LibrarySpecObjectsArchiveDLLDLLPath FrameworkSptEntryUnlinkedDotODotADotDLL CoreBindings LoadedBCOsBCOsObjFile LinkableSetLinkableLM linkableTimelinkableModulelinkableUnlinked LoadedPkgInfoloaded_pkg_uidloaded_pkg_hs_objsloaded_pkg_non_hs_objsloaded_pkg_trans_deps PkgsLoaded LoaderState closure_envitbl_env bcos_loaded objs_loaded pkgs_loadedtemp_sosLoader loader_stateuninitializedLoader mkLinkableSetunionLinkableSetisObjectLinkable linkableObjsisObjectisInterpretablenameOfObject_maybe nameOfObjectbyteCodeOfObject$fOutputableSptEntry$fOutputableUnlinked$fOutputableLinkable$fOutputableLibrarySpec$fOutputableLoadedPkgInfoprimOpIdallThePrimOpIds builtinRules caseRules$fMonadPlusRuleM$fAlternativeRuleM$fMonadFailRuleM $fMonadRuleM$fApplicativeRuleM$fFunctorRuleMMapDocLoc ModuleDocDeclDocArgDocInstDoc AnnLookupAnnLookupModule AnnLookupNameNominalRRepresentationalRPhantomRInferR TyVarBndrPlainTVKindedTVForallT ForallVisTAppTAppKindTSigTVarTConT PromotedTInfixTUInfixTPromotedInfixTPromotedUInfixTParensTTupleT UnboxedTupleT UnboxedSumTArrowT MulArrowT EqualityTListTPromotedTupleT PromotedNilT PromotedConsTStarT ConstraintTLitT WildCardTImplicitParamT PatSynArgs PrefixPatSyn InfixPatSyn RecordPatSyn PatSynDirUnidir ImplBidir ExplBidir VarStrictType StrictType VarBangTypeBangConNormalCRecCInfixCForallCGadtCRecGadtCDecidedStrictness DecidedLazy DecidedStrict DecidedUnpackSourceStrictnessNoSourceStrictness SourceLazy SourceStrictSourceUnpackednessNoSourceUnpackednessSourceNoUnpack SourceUnpackCxtModuleAnnotationTypeAnnotationValueAnnotationRuleVar TypedRuleVarPhases AllPhases FromPhase BeforePhase RuleMatchPragmaInlinePOpaqueP SpecialisePSpecialiseInstPRulePAnnPLineP CompletePUnsafeSafe InterruptibleCallconvStdCallCApiPrimForeignImportFExportFTySynEqnTypeFamilyHead PatSynType DerivClauseOverlapDecFunDDataDNewtypeDTySynDClassD InstanceDKiSigDForeignDInfixDDefaultDPragmaD DataFamilyD DataInstD NewtypeInstD TySynInstDOpenTypeFamilyDClosedTypeFamilyDStandaloneDerivD DefaultSigDPatSynD PatSynSigDImplicitParamBindDRangeFromR FromThenRFromToR FromThenToRBindSLetSNoBindSParSRecSGuardNormalGPatGGuardedBNormalBFieldExpExpVarEConELitEAppEAppTypeEInfixEUInfixEParensELamELamCaseE LamCasesETupE UnboxedTupE UnboxedSumECondEMultiIfELetECaseEDoEMDoECompE ArithSeqEListESigERecConERecUpdEStaticE UnboundVarELabelEImplicitParamVarE GetFieldE ProjectionEClauseFieldPatLitPVarPTupP UnboxedTupP UnboxedSumPConPInfixPUInfixPParensPTildePBangPAsPWildPRecPListPSigPViewPBytesbytesPtr bytesOffset bytesSizeCharLStringLIntegerL RationalLIntPrimL WordPrimL FloatPrimL DoublePrimL StringPrimL BytesPrimL CharPrimL InstanceDecSumAritySumAlt ParentName ModuleInfoInfoClassIClassOpITyConIFamilyI PrimTyConIDataConIPatSynIVarITyVarICharPosLoc loc_filename loc_package loc_module loc_startloc_endNameIsAloneAppliedUniqVarNameDataName TcClsName NameFlavourNameSNameQNameUNameLNameGPkgNameModNameLiftlift liftTypedCode examineCodeTExpunTypeQuotenewNameQunQQuasiqNewNameqReportqRecover qLookupNameqReify qReifyFixity qReifyTypeqReifyInstances qReifyRolesqReifyAnnotations qReifyModuleqReifyConStrictness qLocationqRunIOqGetPackageRootqAddDependentFile qAddTempFile qAddTopDeclsqAddForeignFilePathqAddModFinalizerqAddCorePluginqGetQqPutQ qIsExtEnabled qExtsEnabledqPutDocqGetDocmemcmp newNameIObadIOcounterrunQunTypeQunsafeTExpCoerceunsafeCodeCoerceliftCode unTypeCode hoistCodebindCode bindCode_joinCodereport reportError reportWarningrecover lookupNamelookupTypeNamelookupValueNamereify reifyFixity reifyTypenewDeclarationGroupreifyInstances reifyRolesreifyAnnotations reifyModulereifyConStrictness isInstancelocationrunIOgetPackageRootmakeRelativeToProjectaddDependentFile addTempFile addTopDeclsaddForeignFileaddForeignSourceaddForeignFilePath addCorePlugingetQputQ isExtEnabled extsEnabledputDocgetDoc sequenceQ liftStringtrueName falseName nothingNamejustNameleftName rightName nonemptyNameoneNamemanyNamedataToQa dataToExpQliftData dataToPatQ mkModName modString mkPkgName pkgString occStringnameBase namePackage nameSpacemkNamemkNameUmkNameLmkNameGmkNameS mkNameG_v mkNameG_tc mkNameG_dshowName showName' tupleDataName tupleTypeNameunboxedTupleDataNameunboxedTupleTypeName mk_tup_nameunboxedSumDataNameunboxedSumTypeNameeqBytes compareBytescmpEqthenCmp $fShowName $fQuoteIO $fOrdBytes $fEqBytes $fShowBytes$fLiftSumRep(#||||||#)$fLiftSumRep(#|||||#)$fLiftSumRep(#||||#)$fLiftSumRep(#|||#)$fLiftSumRep(#||#)$fLiftSumRep(#|#)$fLiftTupleRep(#,,,,,,#)$fLiftTupleRep(#,,,,,#)$fLiftTupleRep(#,,,,#)$fLiftTupleRep(#,,,#)$fLiftTupleRep(#,,#)$fLiftTupleRep(#,#)$fLiftTupleRepSolo#$fLiftTupleRep(##)$fLiftBoxedRep(,,,,,,)$fLiftBoxedRep(,,,,,)$fLiftBoxedRep(,,,,)$fLiftBoxedRep(,,,)$fLiftBoxedRep(,,)$fLiftBoxedRep(,)$fLiftBoxedRep()$fLiftBoxedRepVoid$fLiftBoxedRepNonEmpty$fLiftBoxedRep[]$fLiftBoxedRepEither$fLiftBoxedRepMaybe$fLiftAddrRepAddr#$fLiftBoxedRepBool$fLiftWordRepChar#$fLiftBoxedRepChar$fLiftDoubleRepDouble#$fLiftBoxedRepDouble$fLiftFloatRepFloat#$fLiftBoxedRepFloat$fLiftBoxedRepRatio$fLiftBoxedRepNatural$fLiftBoxedRepWord64$fLiftBoxedRepWord32$fLiftBoxedRepWord16$fLiftBoxedRepWord8$fLiftBoxedRepWord$fLiftWordRepWord#$fLiftBoxedRepInt64$fLiftBoxedRepInt32$fLiftBoxedRepInt16$fLiftBoxedRepInt8$fLiftIntRepInt#$fLiftBoxedRepInt$fLiftBoxedRepInteger$fQuasiQ $fMonadIOQ$fQuoteQ $fMonadFixQ $fMonoidQ $fSemigroupQ$fApplicativeQ $fFunctorQ $fMonadFailQ$fMonadQ $fQuasiIO $fShowDocLoc $fEqDocLoc $fOrdDocLoc $fDataDocLoc$fGenericDocLoc $fShowInfo$fEqInfo $fOrdInfo $fDataInfo $fGenericInfo $fShowDec$fEqDec$fOrdDec $fDataDec $fGenericDec$fShowPatSynDir $fEqPatSynDir$fOrdPatSynDir$fDataPatSynDir$fGenericPatSynDir $fShowClause $fEqClause $fOrdClause $fDataClause$fGenericClause $fShowBody$fEqBody $fOrdBody $fDataBody $fGenericBody $fShowGuard $fEqGuard $fOrdGuard $fDataGuard$fGenericGuard $fShowStmt$fEqStmt $fOrdStmt $fDataStmt $fGenericStmt $fShowExp$fEqExp$fOrdExp $fDataExp $fGenericExp $fShowRange $fEqRange $fOrdRange $fDataRange$fGenericRange $fShowMatch $fEqMatch $fOrdMatch $fDataMatch$fGenericMatch $fShowPat$fEqPat$fOrdPat $fDataPat $fGenericPat $fShowPragma $fEqPragma $fOrdPragma $fDataPragma$fGenericPragma$fShowDerivClause$fEqDerivClause$fOrdDerivClause$fDataDerivClause$fGenericDerivClause$fShowDerivStrategy$fEqDerivStrategy$fOrdDerivStrategy$fDataDerivStrategy$fGenericDerivStrategy$fShowTySynEqn $fEqTySynEqn $fOrdTySynEqn$fDataTySynEqn$fGenericTySynEqn $fShowForeign $fEqForeign $fOrdForeign $fDataForeign$fGenericForeign$fShowRuleBndr $fEqRuleBndr $fOrdRuleBndr$fDataRuleBndr$fGenericRuleBndr $fShowCon$fEqCon$fOrdCon $fDataCon $fGenericCon$fShowTypeFamilyHead$fEqTypeFamilyHead$fOrdTypeFamilyHead$fDataTypeFamilyHead$fGenericTypeFamilyHead$fShowFamilyResultSig$fEqFamilyResultSig$fOrdFamilyResultSig$fDataFamilyResultSig$fGenericFamilyResultSig $fShowType$fEqType $fOrdType $fGenericType$fShowTyVarBndr $fEqTyVarBndr$fOrdTyVarBndr$fDataTyVarBndr$fGenericTyVarBndr$fFunctorTyVarBndr$fShowAnnLookup $fEqAnnLookup$fOrdAnnLookup$fDataAnnLookup$fGenericAnnLookup $fShowRole $fGenericRole $fShowTyLit $fOrdTyLit$fGenericTyLit$fShowInjectivityAnn$fEqInjectivityAnn$fOrdInjectivityAnn$fDataInjectivityAnn$fGenericInjectivityAnn$fShowSpecificity$fGenericSpecificity$fShowPatSynArgs$fEqPatSynArgs$fOrdPatSynArgs$fDataPatSynArgs$fGenericPatSynArgs $fShowBang$fEqBang $fOrdBang $fDataBang $fGenericBang$fShowDecidedStrictness$fEqDecidedStrictness$fOrdDecidedStrictness$fDataDecidedStrictness$fGenericDecidedStrictness$fShowSourceStrictness$fEqSourceStrictness$fOrdSourceStrictness$fDataSourceStrictness$fGenericSourceStrictness$fShowSourceUnpackedness$fEqSourceUnpackedness$fOrdSourceUnpackedness$fDataSourceUnpackedness$fGenericSourceUnpackedness$fShowAnnTarget $fEqAnnTarget$fOrdAnnTarget$fDataAnnTarget$fGenericAnnTarget $fShowPhases $fEqPhases $fOrdPhases $fDataPhases$fGenericPhases$fShowRuleMatch $fEqRuleMatch$fOrdRuleMatch$fDataRuleMatch$fGenericRuleMatch $fShowInline $fEqInline $fOrdInline $fDataInline$fGenericInline $fOrdSafety$fGenericSafety$fShowCallconv $fEqCallconv $fOrdCallconv$fDataCallconv$fGenericCallconv $fShowFunDep $fEqFunDep $fOrdFunDep $fDataFunDep$fGenericFunDep $fShowOverlap $fEqOverlap $fOrdOverlap $fDataOverlap$fGenericOverlap $fShowLit$fEqLit$fOrdLit $fDataLit $fGenericLit $fDataBytes$fGenericBytes $fOrdFixity $fShowFixity$fGenericFixity$fOrdFixityDirection$fShowFixityDirection$fGenericFixityDirection$fShowModuleInfo$fEqModuleInfo$fOrdModuleInfo$fDataModuleInfo$fGenericModuleInfo $fShowLoc$fEqLoc$fOrdLoc $fDataLoc $fGenericLoc $fGenericName$fDataNameFlavour$fEqNameFlavour$fOrdNameFlavour$fShowNameFlavour$fGenericNameFlavour$fShowNameSpace$fDataNameSpace$fGenericNameSpace $fShowOccName$fGenericOccName $fShowModule $fEqModule $fOrdModule $fDataModule$fGenericModule $fShowPkgName $fEqPkgName $fOrdPkgName $fDataPkgName$fGenericPkgName $fShowModName $fEqModName $fOrdModName $fDataModName$fGenericModNamePprMpprName' to_HPJ_Doc $fMonadPprM$fApplicativePprM $fFunctorPprM $fShowPprMPprFlag pprTyVarBndrTypeArgTANormalTyArg ForallVisFlag ForallVis ForallInvisPprppr_list Precedence nestDepthunopPrecqualPrecnoPrecparensIfpprint pprFixity pprPatSynSig pprInfixExppprExp pprFields pprMaybeExp pprMatchPat pprGuardedpprBody pprClausepprLit bytesToString pprStringpprPatppr_decppr_deriv_strategy ppr_overlapppr_data ppr_newtype ppr_typedefppr_deriv_clause ppr_tySyn ppr_tf_head ppr_bndrscommaSepApplied pprForall pprForallVis pprForall' pprRecFields pprGadtRHSpprVarBangType pprBangTypepprVarStrictType pprStrictType pprInfixTpprParendTypeArgisStarTpprTyApp fromTANormal pprFunArgTypepprCxt ppr_cxt_preds where_clause showtextl hashParens quoteParenssepWithcommaSep commaSepWithsemiSep semiSepWithunboxedSumBarsbar$fPprLoc $fPprRange $fPprRole $fPprTyLit $fPprType$fPprDecidedStrictness$fPprSourceStrictness$fPprSourceUnpackedness $fPprBang$fPprPatSynArgs$fPprPatSynDir$fPprCon $fPprClause $fPprRuleBndr $fPprPhases$fPprRuleMatch $fPprInline $fPprPragma $fPprForeign$fPprInjectivityAnn$fPprFamilyResultSig $fPprFunDep$fPprDec$fPprPat$fPprLit $fPprMatch $fPprStmt$fPprExp$fPprModuleInfo $fPprModule $fPprInfo $fPprName$fPpr[] $fPprTypeArg$fPprTyVarBndr$fPprFlagSpecificity $fPprFlag()$fShowForallVisFlag TyVarBndrSpec TyVarBndrUnitDerivStrategyQFamilyResultSigQ PatSynArgsQ PatSynDirQ TySynEqnQ RuleBndrQ FieldExpQVarStrictTypeQ StrictTypeQ VarBangTypeQ BangTypeQBangQSourceUnpackednessQSourceStrictnessQRangeQStmtQGuardQBodyQClauseQMatchQ DerivClauseQPredQCxtQTyLitQKindQTypeQConQDecsDecsQDecQExpQ FieldPatQPatQInfoQCodeQTExpQintPrimL wordPrimL floatPrimL doublePrimLintegerLcharL charPrimLstringL stringPrimL bytesPrimL rationalLlitPvarPtupP unboxedTupP unboxedSumPconPinfixPuInfixPparensPtildePbangPasPwildPrecPlistPsigPviewPfieldPatbindSletSnoBindSparSrecSfromR fromThenRfromToR fromThenToRnormalBguardedBnormalGnormalGEpatGpatGEmatchclausevarEconElitEappEappTypeEparensEuInfixEinfixEinfixAppsectionLsectionRlamElam1ElamCaseE lamCasesEtupE unboxedTupE unboxedSumEcondEmultiIfEletEcaseEdoEmdoEcompE arithSeqElistEsigErecConErecUpdEstringEfieldExpstaticE unboundVarElabelEimplicitParamVarE getFieldE projectionEfromE fromThenEfromToE fromThenToEvalDfunDtySynDdataDnewtypeDclassD instanceDinstanceWithOverlapDsigDkiSigDforImpDinfixLDinfixRDinfixNDdefaultDpragInlD pragOpaqueD pragSpecD pragSpecInlD pragSpecInstD pragRuleDpragAnnD pragLineD pragCompleteD dataInstD newtypeInstD tySynInstD dataFamilyDopenTypeFamilyDclosedTypeFamilyD roleAnnotDstandaloneDerivDstandaloneDerivWithStrategyD defaultSigDpatSynD patSynSigDimplicitParamBindDtySynEqncxt derivClause stockStrategyanyclassStrategynewtypeStrategy viaStrategynormalCrecCinfixCforallCgadtCrecGadtCforallT forallVisTvarTconTinfixTuInfixTpromotedInfixTpromotedUInfixTparensTappTappKindTarrowT mulArrowTlistTlitTtupleT unboxedTupleT unboxedSumTsigT equalityT wildCardTimplicitParamTclassPequalP promotedTpromotedTupleT promotedNilT promotedConsTnoSourceUnpackednesssourceNoUnpack sourceUnpacknoSourceStrictness sourceLazy sourceStrict notStrictunpackedbangbangType varBangType strictType varStrictTypenumTyLitstrTyLit charTyLitplainTV plainInvisTVkindedTV kindedInvisTV specifiedSpec inferredSpecvarKconKtupleKarrowKlistKappKstarK constraintKnoSigkindSigtyVarSiginjectivityAnnnominalRrepresentationalRphantomRinferRcCallstdCallcApiprim javaScriptunsafesafefunDepruleVar typedRuleVarvalueAnnotationtypeAnnotationmoduleAnnotationunidir implBidir explBidir prefixPatSyn recordPatSyn infixPatSynappsE withDecDoc withDecsDocfunD_doc dataD_doc newtypeD_doc dataInstD_docnewtypeInstD_doc patSynD_docdocConsmkBytesPendingTcSplicePendingRnSpliceUntypedSpliceFlavourUntypedExpSpliceUntypedPatSpliceUntypedTypeSpliceUntypedDeclSplice DelayedSplice XBindStmtTc xbstc_bindOpxbstc_boundResultTypexbstc_boundResultMult xbstc_failOp XBindStmtRn xbsrn_bindOp xbsrn_failOp RecStmtTc recS_bind_tyrecS_later_rets recS_rec_rets recS_ret_tyGrhsAnnga_vbarga_sep MatchGroupTc mg_arg_tys mg_res_ty mg_originCmdTopTcCmdSyntaxTable HsExpansion HsExpanded XXExprGhcTcWrapExpr ExpansionExpr ConLikeTcHsTick HsBinTickAnnsIfaiIfaiThenaiElse aiThenSemi aiElseSemi AnnProjectionapOpenapClose AnnFieldLabelafDotAnnExplicitSumaesOpen aesBarsBefore aesBarsAfteraesCloseEpAnnUnboundVarhsUnboundBackquotes hsUnboundHole EpAnnHsCase hsCaseAnnCase hsCaseAnnOfhsCaseAnnsRest HsBracketTc hsb_quotehsb_tyhsb_wrap hsb_splicesHsWrap SyntaxExprTcNoSyntaxExprTcsyn_expr syn_arg_wraps syn_res_wrap SyntaxExprRnNoSyntaxExprRn SyntaxExprGhc PostTcTable PostTcExprnoExpr noSyntaxExpr mkSyntaxExprmkRnSyntaxExpr tupArgPresent isQuietHsExprpprBinds ppr_lexprppr_exprppr_infix_exprppr_infix_expr_rnppr_infix_expr_tcppr_appspprDebugParendExprpprParendLExprhsExprNeedsParensgHsParparenthesizeHsExprstripParensLHsExprstripParensHsExprisAtomicHsExprpprLCmdpprCmd isQuietHsCmdppr_lcmdppr_cmd pprCmdArgisEmptyMatchGroupisSingletonMatchGroupmatchGroupArity hsLMatchPats pprMatchespprMatchpprGRHSspprGRHSpp_rhspprStmt pprBindStmtpprArgpprTransformStmt pprTransStmtpprBypprDo pprArrowExprppr_module_name_prefix ppr_do_stmtspprComppprQualspprPendingSplice ppr_quasi ppr_splice thBrackets thTyBracketsppr_with_pending_tc_splices pp_dotdotlamCaseKeywordpprExternalSrcLoc pprHsArrTypematchContextErrStringmatchArrowContextErrStringmatchDoContextErrStringpprMatchInCtxt pprStmtInCtxtmatchSeparatorpprMatchContextpprMatchContextNounpprMatchContextNounspprArrowMatchContextNounpprArrowMatchContextNounspprAStmtContextpprStmtContext pprStmtCatpprAHsDoFlavourpprHsDoFlavourprependQualifiedpprFieldLabelStringspprPrefixFastString$fWrapXRecGhcPassa$fOutputableDotFieldOcc!$fOutputableBndrFieldLabelStrings$fOutputableFieldLabelStrings$fOutputableHsStmtContext$fOutputableHsArrowMatchContext$fOutputableLamCaseVariant$fOutputableHsMatchContext$fOutputableArithSeqInfo$fOutputableHsQuote$fOutputableApplicativeArg$fOutputableStmtLR$fOutputableParStmtBlock$fOutputableMatch$fOutputableHsCmdTop$fOutputableHsCmd$fOutputableHsPragE$fOutputableHsExpr$fOutputableSyntaxExprRn$fOutputableSyntaxExprTc$fOutputableHsExpansion$fOutputableXXExprGhcTc$fOutputableGrhsAnn$fDataThModFinalizers$fDataDelayedSplice$fOutputablePendingRnSplice$fOutputablePendingTcSplice$fDataUntypedSpliceFlavour $fDataGrhsAnn$fDataMatchGroupTc$fDataHsExpansion $fDataAnnsIf$fDataAnnProjection$fDataAnnFieldLabel$fDataAnnExplicitSum$fDataEpAnnUnboundVar$fDataEpAnnHsCase $fDataHsWrap perhapsAsPat$fOutputableGhcHint CollectPass collectXXPatcollectXXHsBindsLRcollectXSplicePat CollectFlagCollNoDictBindersCollWithDictBindersmkHsPar mkSimpleMatchunguardedGRHSs unguardedRHS mkMatchGroupmkLamCaseMatchGroup mkLocatedListmkHsApp mkHsAppWithmkHsApps mkHsAppsWith mkHsAppType mkHsAppTypesmkHsLammkHsLams mkHsCaseAlt nlHsTyApp nlHsTyAppsmkLHsParmkParPatnlParPat mkRecStmt mkHsIntegralmkHsFractional mkHsIsStringmkHsDo mkHsDoAnnsmkHsComp mkHsCompAnnsmkHsIf mkHsCmdIfmkNPat mkNPlusKPatemptyTransStmtmkTransformStmtmkTransformByStmtmkGroupUsingStmtmkGroupByUsingStmt mkLastStmt mkBodyStmt mkPsBindStmt mkRnBindStmt mkTcBindStmt unitRecStmtTc emptyRecStmtemptyRecStmtNameemptyRecStmtId mkLetStmt mkHsOpApp mkHsString mkHsStringFSmkHsStringPrimLitmkHsCharPrimLit mkConLikeTcnlHsVarnl_HsVar nlHsDataConnlHsLit nlHsIntLitnlVarPatnlLitPatnlHsAppnlHsSyntaxAppsnlHsApps nlHsVarApps nlConVarPatnlConVarPatName nlInfixConPatnlConPat nlConPatNamenlNullaryConPat nlWildConPat nlWildPat nlWildPatNamenlHsDo nlHsOpAppnlHsLamnlHsParnlHsIfnlHsCasenlList nlHsAppTy nlHsTyVar nlHsFunTy nlHsParTy nlHsTyConApp nlHsAppKindTymkLHsTupleExpr mkLHsVarTuple nlTuplePat missingTupArgmkBigLHsVarTup mkBigLHsTupmkBigLHsVarPatTupmkBigLHsPatTuphsTypeToHsSigTypehsTypeToHsSigWcType mkHsSigEnv mkClassOpSigs mkLHsWrapmkHsWrap mkHsWrapCo mkHsWrapCoR mkLHsWrapCo mkHsCmdWrap mkLHsCmdWrap mkHsWrapPat mkHsWrapPatCo mkHsDictLet mkFunBind mkTopFunBind mkHsVarBind mkVarBind mkPatSynBindisInfixFunBindspanHsLocaLBindsmkSimpleGeneratedFunBindmkPrefixFunRhsmkMatchisUnliftedHsBindisBangedHsBindcollectLocalBinderscollectHsIdBinderscollectHsValBinderscollectHsBindBinderscollectHsBindsBinderscollectHsBindListBinderscollectMethodBinderscollectLStmtsBinderscollectStmtsBinderscollectLStmtBinderscollectStmtBinderscollectPatBinderscollectPatsBindershsGroupBindershsTyClForeignBindershsLTyClDeclBindershsForeignDeclsBindershsPatSynSelectorsgetPatSynBindshsDataFamInstBinderslStmtsImplicitshsValBindsImplicits lPatImplicits$fCollectPassGhcPass$fDataXViaStrategyPs$fDataXXPatGhcTc$fDataXXExprGhcTc$fEqIE$fEqIE0$fEqIE1$fDataIE $fDataIE0 $fDataIE1$fDataImportDecl$fDataImportDecl0$fDataImportDecl1$fDataAmbiguousFieldOcc$fDataAmbiguousFieldOcc0$fDataAmbiguousFieldOcc1$fDataFieldOcc$fDataFieldOcc0$fDataFieldOcc1$fDataConDeclField$fDataConDeclField0$fDataConDeclField1 $fDataHsArg$fDataHsScaled$fDataHsScaled0$fDataHsScaled1 $fDataHsArrow$fDataHsArrow0$fDataHsArrow1$fDataHsLinearArrowTokens$fDataHsLinearArrowTokens0$fDataHsLinearArrowTokens1 $fDataHsTyLit$fDataHsTyLit0$fDataHsTyLit1 $fDataHsType $fDataHsType0 $fDataHsType1$fDataHsTyVarBndr$fDataHsTyVarBndr0$fDataHsTyVarBndr1$fDataHsForAllTelescope$fDataHsForAllTelescope0$fDataHsForAllTelescope1$fDataHsPatSigType$fDataHsPatSigType0$fDataHsPatSigType1$fDataHsWildCardBndrs$fDataHsWildCardBndrs0$fDataHsWildCardBndrs1$fDataHsSigType$fDataHsSigType0$fDataHsSigType1$fDataHsOuterTyVarBndrs$fDataHsOuterTyVarBndrs0$fDataHsOuterTyVarBndrs1$fDataLHsQTyVars$fDataLHsQTyVars0$fDataLHsQTyVars1$fDataHsRecFields$fDataHsRecFields0$fDataHsRecFields1$fDataHsFieldBind$fDataHsConPatTyArg$fDataHsConPatTyArg0$fDataHsConPatTyArg1$fDataConPatTc $fDataPat0 $fDataPat1$fDataOverLitTc$fDataOverLitRn$fDataHsOverLit$fDataHsOverLit0$fDataHsOverLit1 $fDataHsLit $fDataHsLit0 $fDataHsLit1$fDataXBindStmtTc$fDataXBindStmtRn$fDataSyntaxExprTc$fDataSyntaxExprRn$fDataPendingTcSplice$fDataPendingRnSplice$fDataCmdTopTc$fDataArithSeqInfo$fDataArithSeqInfo0$fDataArithSeqInfo1$fDataHsBracketTc $fDataHsQuote$fDataHsQuote0$fDataHsQuote1$fDataHsUntypedSpliceResult$fDataHsUntypedSplice$fDataHsUntypedSplice0$fDataHsUntypedSplice1$fDataHsMatchContext$fDataHsMatchContext0$fDataHsMatchContext1$fDataHsDoFlavour$fDataHsArrowMatchContext$fDataHsStmtContext$fDataHsStmtContext0$fDataHsStmtContext1$fDataApplicativeArg$fDataApplicativeArg0$fDataApplicativeArg1$fDataParStmtBlock$fDataParStmtBlock0$fDataParStmtBlock1$fDataParStmtBlock2$fDataRecStmtTc $fDataStmtLR $fDataStmtLR0 $fDataStmtLR1 $fDataStmtLR2 $fDataStmtLR3 $fDataStmtLR4 $fDataStmtLR5 $fDataStmtLR6 $fDataGRHS $fDataGRHS0 $fDataGRHS1 $fDataGRHS2 $fDataGRHS3 $fDataGRHS4 $fDataGRHSs $fDataGRHSs0 $fDataGRHSs1 $fDataGRHSs2 $fDataGRHSs3 $fDataGRHSs4 $fDataMatch0 $fDataMatch1 $fDataMatch2 $fDataMatch3 $fDataMatch4$fDataMatchGroup$fDataMatchGroup0$fDataMatchGroup1$fDataMatchGroup2$fDataMatchGroup3$fDataMatchGroup4$fDataHsCmdTop$fDataHsCmdTop0$fDataHsCmdTop1 $fDataHsCmd $fDataHsCmd0 $fDataHsCmd1$fDataHsTupArg$fDataHsTupArg0$fDataHsTupArg1 $fDataHsExpr $fDataHsExpr0 $fDataHsExpr1 $fDataHsPragE$fDataHsPragE0$fDataHsPragE1$fDataDotFieldOcc$fDataDotFieldOcc0$fDataDotFieldOcc1$fDataFieldLabelStrings$fDataFieldLabelStrings0$fDataFieldLabelStrings1$fDataRoleAnnotDecl$fDataRoleAnnotDecl0$fDataRoleAnnotDecl1 $fDataAnnDecl$fDataAnnDecl0$fDataAnnDecl1$fDataAnnProvenance$fDataAnnProvenance0$fDataAnnProvenance1$fDataWarnDecl$fDataWarnDecl0$fDataWarnDecl1$fDataWarnDecls$fDataWarnDecls0$fDataWarnDecls1$fDataRuleBndr0$fDataRuleBndr1$fDataRuleDecl$fDataRuleDecl0$fDataRuleDecl1$fDataRuleDecls$fDataRuleDecls0$fDataRuleDecls1$fDataForeignExport$fDataForeignExport0$fDataForeignExport1$fDataForeignImport$fDataForeignImport0$fDataForeignImport1$fDataForeignDecl$fDataForeignDecl0$fDataForeignDecl1$fDataDefaultDecl$fDataDefaultDecl0$fDataDefaultDecl1$fDataDerivStrategy0$fDataDerivStrategy1$fDataDerivDecl$fDataDerivDecl0$fDataDerivDecl1$fDataInstDecl$fDataInstDecl0$fDataInstDecl1$fDataClsInstDecl$fDataClsInstDecl0$fDataClsInstDecl1 $fDataFamEqn $fDataFamEqn0 $fDataFamEqn1$fDataDataFamInstDecl$fDataDataFamInstDecl0$fDataDataFamInstDecl1$fDataTyFamInstDecl$fDataTyFamInstDecl0$fDataTyFamInstDecl1$fDataHsConDeclGADTDetails$fDataHsConDeclGADTDetails0$fDataHsConDeclGADTDetails1 $fDataConDecl$fDataConDecl0$fDataConDecl1$fDataDerivClauseTys$fDataDerivClauseTys0$fDataDerivClauseTys1$fDataHsDerivingClause$fDataHsDerivingClause0$fDataHsDerivingClause1$fDataHsDataDefn$fDataHsDataDefn0$fDataHsDataDefn1$fDataFamilyInfo$fDataFamilyInfo0$fDataFamilyInfo1$fDataInjectivityAnn0$fDataInjectivityAnn1$fDataFamilyDecl$fDataFamilyDecl0$fDataFamilyDecl1$fDataFamilyResultSig0$fDataFamilyResultSig1$fDataTyClGroup$fDataTyClGroup0$fDataTyClGroup1 $fDataFunDep0 $fDataFunDep1$fDataTyClDecl$fDataTyClDecl0$fDataTyClDecl1$fDataSpliceDecl$fDataSpliceDecl0$fDataSpliceDecl1 $fDataHsGroup$fDataHsGroup0$fDataHsGroup1 $fDataHsDecl $fDataHsDecl0 $fDataHsDecl1$fDataHsPatSynDir$fDataHsPatSynDir0$fDataHsPatSynDir1$fDataStandaloneKindSig$fDataStandaloneKindSig0$fDataStandaloneKindSig1$fDataFixitySig$fDataFixitySig0$fDataFixitySig1 $fDataSig $fDataSig0 $fDataSig1 $fDataIPBind $fDataIPBind0 $fDataIPBind1$fDataHsIPBinds$fDataHsIPBinds0$fDataHsIPBinds1$fDataPatSynBind$fDataPatSynBind0$fDataPatSynBind1$fDataPatSynBind2$fDataRecordPatSynField$fDataRecordPatSynField0$fDataRecordPatSynField1$fDataABExport$fDataAbsBinds$fDataHsBindLR$fDataHsBindLR0$fDataHsBindLR1$fDataHsBindLR2$fDataNHsValBindsLR$fDataNHsValBindsLR0$fDataNHsValBindsLR1$fDataHsValBindsLR$fDataHsValBindsLR0$fDataHsValBindsLR1$fDataHsValBindsLR2$fDataHsLocalBindsLR$fDataHsLocalBindsLR0$fDataHsLocalBindsLR1$fDataHsLocalBindsLR2HsParsedModule hpm_module hpm_src_files AnnsModuleam_mainam_decls XModulePshsmodAnn hsmodLayouthsmodDeprecMessagehsmodHaddockModHeader$fOutputableHsModule$fDataXModulePs$fDataAnnsModule$fEqAnnsModule$fDataHsModule ModSummaryms_mod ms_hsc_src ms_location ms_hs_hash ms_obj_datems_dyn_obj_date ms_iface_date ms_hie_date ms_srcimpsms_textual_impsms_ghc_prim_import ms_parsed_mod ms_hspp_file ms_hspp_opts ms_hspp_buf ms_unitidms_installed_mod ms_mod_namems_impsms_plugin_impsms_home_srcimps ms_home_imps msHsFilePath msHiFilePathmsDynHiFilePath msObjFilePathmsDynObjFilePath isBootSummaryms_mnwibmsDeps findTarget$fOutputableModSummary ModNodeKey SummaryNode ModuleGraphModNodeKeyWithUid mnkModuleName mnkUnitIdNodeKey NodeKey_UnitNodeKey_Module NodeKey_LinkModuleGraphNodeInstantiationNode ModuleNodeLinkNodemoduleGraphNodeModulemoduleGraphNodeModSummoduleGraphNodeUnitId nodeKeyUnitIdnodeKeyModNamemapMGunionMG mgTransDepsmgModSummariesmgModSummaries'mgLookupModuleemptyMGisTemplateHaskellOrQQNonBootextendMG extendMGInst extendMG' mkModuleGraphfilterToposortToModules showModMsgsummaryNodeSummarynodeDependenciesmoduleGraphNodes mkNodeKeymsKey$fOutputableModNodeKeyWithUid$fOutputableNodeKey$fOrdModuleGraphNode$fEqModuleGraphNode$fOutputableModuleGraphNode$fFunctorNodeMap$fTraversableNodeMap$fFoldableNodeMap $fEqNodeKey $fOrdNodeKey$fEqModNodeKeyWithUid$fOrdModNodeKeyWithUidWhetherHasFamInstWhetherHasOrphans IfaceExport ModIface_ModIface mi_module mi_sig_of mi_hsc_srcmi_deps mi_usages mi_exports mi_used_th mi_fixitiesmi_warnsmi_annsmi_declsmi_extra_decls mi_globalsmi_insts mi_fam_instsmi_rulesmi_hpcmi_trust mi_trust_pkgmi_complete_matchesmi_docs mi_final_exts mi_ext_fields mi_src_hashIfaceBackendExts IfaceDeclExtsModIfaceBackend mi_iface_hash mi_mod_hash mi_flag_hash mi_opt_hash mi_hpc_hashmi_plugin_hash mi_orphan mi_finsts mi_exp_hashmi_orphan_hash mi_warn_fn mi_fix_fn mi_hash_fnPartialModIfacemi_bootmi_mnwibmi_fixmi_semantic_module mi_free_holesrenameFreeHolesemptyPartialModIfaceemptyFullModIfacemkIfaceHashCacheemptyIfaceHashCache forceModIface$fNFDataModIfaceBackend$fNFDataModIface_$fBinaryModIface_HomePackageTableHomeModLinkablehomeMod_bytecodehomeMod_object HomeModInfohm_iface hm_details hm_linkablehomeModInfoByteCodehomeModInfoObjectemptyHomeModInfoLinkable justBytecode justObjectsbytecodeAndObjectsemptyHomePackageTable lookupHptlookupHptDirectlyeltsHpt filterHptallHptanyHptmapHpt delFromHptaddToHptaddHomeModInfoToHpt addListToHpt listToHpt listHMIToHptlookupHptByModulepprHPT$fOutputableHomeModLinkableCgGuts cg_module cg_tyconscg_bindscg_ccs cg_foreigncg_foreign_files cg_dep_pkgs cg_hpc_info cg_modBreakscg_spt_entriesModGuts mg_module mg_hsc_srcmg_loc mg_exportsmg_deps mg_usages mg_used_th mg_rdr_env mg_fix_envmg_tcsmg_insts mg_fam_insts mg_patsynsmg_rulesmg_binds mg_foreignmg_foreign_filesmg_warnsmg_annsmg_complete_matches mg_hpc_info mg_modBreaks mg_inst_envmg_fam_inst_envmg_boot_exportsmg_safe_haskell mg_trust_pkgmg_docsmg_mnwibHscBackendAction HscUpdate HscRecomp hscs_gutshscs_mod_locationhscs_partial_ifacehscs_old_iface_hashHscRecompStatus HscUpToDateHscRecompNeeded$fOutputableHscBackendActionRuleEnvre_local_rules re_home_rules re_eps_rulesre_visible_orphsRuleBasemkRule mkSpecRule roughTopNamespprRulesForUserextendRuleInfo addRuleInfoaddIdSpecialisations rulesOfBinds emptyRuleBase mkRuleBaseextendRuleBaseList pprRuleBase mkRuleEnvupdExternalPackageRules updLocalRules addLocalRules emptyRuleEnvgetRules lookupRuleruleCheckProgramEpsStats n_ifaces_in n_decls_in n_decls_out n_rules_in n_rules_out n_insts_in n_insts_outExternalPackageStateEPS eps_is_booteps_PITeps_free_holeseps_PTE eps_inst_enveps_fam_inst_env eps_rule_base eps_ann_enveps_complete_matcheseps_mod_fam_inst_env eps_statsExternalUnitCacheeuc_epsPackageIfaceTablePackageCompleteMatchesPackageFamInstEnvPackageInstEnvPackageRuleBasePackageTypeEnvemptyPackageIfaceTableinitExternalUnitCacheeucEPSinitExternalPackageState addEpsInStats UnitEnvGraph unitEnv_graphUnitEnvGraphKey HomeUnitGraph HomeUnitEnvhomeUnitEnv_unitshomeUnitEnv_unit_dbshomeUnitEnv_dflagshomeUnitEnv_hpthomeUnitEnv_home_unitUnitEnvue_epsue_current_unitue_home_unit_graph ue_platform ue_nameverueEPS initUnitEnvunsafeGetHomeUnitupdateHpt_lazy updateHpt updateHugue_transitiveHomeDepspreloadUnitsInfo'preloadUnitsInfo mkHomeUnitEnvisUnitEnvInstalledModulelookupHugByModulehugEltsaddHomeModInfoToHug lookupHugunitEnv_insertunitEnv_deleteunitEnv_adjustunitEnv_mapWithKey unitEnv_newunitEnv_singleton unitEnv_mapunitEnv_memberunitEnv_lookup_maybeunitEnv_lookup unitEnv_keys unitEnv_elts unitEnv_hptsunitEnv_foldWithKey unitEnv_unionue_units ue_setUnits ue_unit_dbs ue_setUnitDbsue_hpt ue_setFlagsue_setUnitFlags ue_unitFlags ue_homeUnitue_unsafeHomeUnitue_unitHomeUnitue_currentHomeUnitEnvue_setActiveUnitue_currentUnitue_findHomeUnitEnvue_updateHomeUnitEnvue_renameUnitIdassertUnitEnvInvariant$fOutputableHomeUnitEnv$fOutputableUnitEnvGraph$fFunctorUnitEnvGraph$fFoldableUnitEnvGraph$fTraversableUnitEnvGraph mkNamePprCtx mkQualModule mkQualPackagepkgQual TopEnvConfigte_history_sizete_tick_factorSimplMinitSmpl traceSmpl getSimplRulesnewId newJoinId getSimplCounttick checkedTickfreeTick$fMonadIOSimplM$fHasLoggerSimplM$fMonadUniqueSimplM $fMonadSimplM$fApplicativeSimplM$fFunctorSimplM JoinFloats JoinFloat LetFloatsSimplSRDoneExDoneIdContEx SimplFloats sfLetFloats sfJoinFloats sfInScope FloatEnable FloatDisabledFloatNestedOnly FloatEnabled SimplModesm_phasesm_namessm_rules sm_inline sm_eta_expandsm_cast_swizzle sm_uf_opts sm_case_case sm_pre_inline sm_keep_exitssm_float_enablesm_do_eta_reduction sm_arity_opts sm_rule_optssm_case_folding sm_case_mergesm_co_opt_optsSimplEnvseMode seFamEnvs seTvSubst seCvSubst seIdSubstseRecIds seInScope seCaseDepth seArityOpts seCaseCase seCaseFolding seCaseMerge seCastSwizzleseDoEtaReduction seEtaExpand seFloatEnableseInlineseNamesseOptCoercionOptssePedanticBottomssePhase sePlatform sePreInline seRuleOptsseRulesseUnfoldingOptssmPedanticBottoms smPlatform emptyFloats isEmptyFloats pprSimplEnv mkSimplEnvupdMode bumpCaseDepth getInScope setInScopeSetsetInScopeFromEsetInScopeFromFaddNewInScopeIds modifyInScopeenterRecGroupRHSs zapSubstEnv setSubstEnvmkContExdoFloatFromRhsemptyLetFloatsisEmptyLetFloatsemptyJoinFloatsisEmptyJoinFloats unitLetFloat unitJoinFloat mkFloatBind extendFloats addLetFloats addJoinFloats addFloats addLetFlts letFloatBinds addJoinFlts mkRecFloatswrapJoinFloatsXwrapJoinFloatsgetTopFloatBinds mapLetFloatssubstId lookupRecBndr simplBinders simplBindersimplNonRecBndr simplRecBndrssimplNonRecJoinBndrsimplRecJoinBndrsgetSubst$fOutputableSimplMode$fOutputableSimplSR$fOutputableFloatFlag$fOutputableLetFloats$fOutputableSimplFloatsValArgCastByas_dmdas_arg as_hole_ty as_arg_ty RewriteCallTryRules TryInlining TryNothingArgInfoai_funai_args ai_rewriteai_enclai_dmdsai_discsDupFlagNoDup SimplifiedOkToDup StaticEnv SimplContStopCastIt ApplyToVal ApplyToTySelect StrictBind StrictArgTickItsc_dup sc_hole_tysc_argsc_envsc_cont sc_arg_tysc_bndrsc_altssc_bodysc_fun sc_fun_ty BindContextBC_LetBC_JoinbindContextLevel isSimplified addValArgTo addTyArgTo addCastToisStrictArgInfoargInfoAppArgspushSimplifiedArgspushSimplifiedRevArgs argInfoExpr mkBoringStop mkRhsStop mkLazyArgStop contIsRhs contIsStop contIsDupable contIsTrivialcontResultType contHoleTypecontHoleScaling countArgscontArgs mkArgInfolazyArgContextinterestingCallContextupdModeForStableUnfoldingsupdModeForRulesactiveUnfoldinggetUnfoldingInRuleMatch activeRulepreInlineUnconditionallypostInlineUnconditionally rebuildLamtryEtaExpandRhswantEtaExpansionabstractFloats prepareAltsmkCase isExitJoinId$fOutputableDupFlag$fOutputableArgSpec$fOutputableArgInfo$fOutputableSimplCont simplTopBinds simplExpr simplImpRulesMetaHook MetaResult MetaRequestMetaEMetaPMetaTMetaDMetaAW metaRequestE metaRequestP metaRequestT metaRequestD metaRequestAWExpectedFunTyOriginExpectedFunTySyntaxOpExpectedFunTyViewPatExpectedFunTyArgExpectedFunTyMatchesExpectedFunTyLamExpectedFunTyLamCaseFRRArrowContext ArrowCmdResTy ArrowCmdAppArrowCmdArrApp ArrowCmdCaseArrowFunArgPos ArgPosInvis ArgPosVis RepPolyFunRepPolyWiredInRepPolyDataCon StmtOriginMonadComprehension DoNotation FRRRecordConFRRRecordUpdate FRRBinder FRRPatBind FRRPatSynArgFRRCaseFRRDataConPatArgFRRNoBindingResArg FRRTupleArgFRRTupleSection FRRUnboxedSum FRRBodyStmtFRRBodyStmtGuard FRRBindStmtFRRBindStmtGuardFRRArrowFRRExpectedFunTyfrr_type frr_contextCtOrigin GivenOrigin InstSCOrigin OtherSCOrigin OccurrenceOfOccurrenceOfRecSel AppOriginSpecPragOrigin TypeEqOrigin KindEqOrigin IPOccOriginOverLabelOrigin LiteralOrigin NegateOriginArithSeqOriginAssocFamPatOrigin SectionOriginHasFieldOrigin TupleOrigin ExprSigOrigin PatSigOrigin PatOriginProvCtxtOriginRecordUpdOrigin ViewPatOriginScOriginDerivClauseOrigin DerivOriginDCDerivOriginCoerceStandAloneDerivOrigin DefaultOriginDoOrigin DoPatOrigin MCompOriginMCompPatOrigin ProcOriginArrowCmdOrigin AnnOrigin FunDepOrigin1 FunDepOrigin2 InjTFOrigin1ExprHoleOriginTypeHoleOriginPatCheckOrigin ListOriginIfThenElseOrigin BracketOrigin StaticOriginShouldn'tHappenOrigin GhcBug20076InstProvidedOriginNonLinearPatternOriginUsageEnvironmentOfCycleBreakerOrigin FRROriginWantedSuperclassOriginInstanceSigOriginAmbiguityCheckOrigin uo_actual uo_expecteduo_thing uo_visible TyVarBndrsHsTyVarBndrsRn TypedThing HsTypeRnThing TypeThing HsExprRnThing NameThingSigSkol SigTypeSkol ForAllSkol DerivSkolInstSkol FamInstSkolPatSkolIPSkolRuleSkol InferSkol BracketSkolUnifyForAllSkol TyConSkol DataConSkol ReifySkol QuantCtxtSkolRuntimeUnkSkolArrowReboundIfSkolUnkSkolReportRedundantConstraintsNoRRCWantRRC UserTypeCtxt FunSigCtxt InfSigCtxt ExprSigCtxt KindSigCtxtStandaloneKindSigCtxt TypeAppCtxt ConArgCtxt TySynCtxt PatSynCtxt PatSigCtxt RuleSigCtxt ForSigCtxtDefaultDeclCtxt InstDeclCtxt SpecInstCtxt GenSigCtxtGhciCtxt ClassSCCtxt SigmaCtxt DataTyCtxtDerivClauseCtxtTyVarBndrKindCtxt DataKindCtxt TySynKindCtxtTyFamResKindCtxtreportRedundantConstraintsredundantConstraintsSpanpprUserTypeCtxt isSigMaybe unkSkolAnon mkSkolemInfo getSkolemInfo pprSkolInfopprSigSkolInfoisVisibleOrigintoInvisibleOrigin isGivenOriginisWantedWantedFunDepOriginisWantedSuperclassOrigin lexprCtOrigin exprCtOriginmatchesCtOrigin grhssCtOrigin pprCtOriginisPushCallStackOrigincallStackOriginFSpprFixedRuntimeRepContextpprFRRArrowContextpprExpectedFunTyOriginpprExpectedFunTyHerald$fOutputableTypedThing$fOutputableTyVarBndrs$fOutputableSkolemInfoAnon$fOutputableSkolemInfo$fUniquableSkolemInfo$fOutputableStmtOrigin$fOutputableRepPolyFun$fOutputableFRRArrowContext"$fOutputableFixedRuntimeRepContext$fOutputableCtOrigin$fEqUserTypeCtxt$fEqReportRedundantConstraintsCtLoc ctl_originctl_env ctl_t_or_k ctl_depth SubGoalDepth CtFlavourRole CtFlavourGivenWanted RewriterSet CtEvidenceCtGivenCtWanted ctev_pred ctev_evarctev_loc ctev_destctev_rewritersTcEvDest EvVarDestHoleDest UserGiven HasGivenEqs NoGivenEqs LocalGivenEqs MaybeGivenEqs ImplicStatus IC_Solved IC_InsolubleIC_BadTelescope IC_Unsolvedics_dead ImplicationImplicic_tclvlic_infoic_skolsic_given ic_given_eqsic_warn_inaccessibleic_env ic_wantedic_binds ic_need_inner ic_need_outer ic_statusWantedConstraintsWC wc_simplewc_impl wc_errorsCheckTyEqProblemCheckTyEqResult CtIrredReasonIrredShapeReasonNonCanonicalReason ReprEqReasonShapeMismatchReasonAbstractTyConReasonNotConcreteReasonNonConcreteTyConNonConcretisableTyVar ContainsCastContainsForallContainsCoercionTyNotConcreteErrorNCE_FRRnce_locnce_frr_origin nce_reasonsHoleSortExprHoleTypeHoleConstraintHoleHole hole_sorthole_occhole_tyhole_loc DelayedErrorDE_HoleDE_NotConcreteQCInstQCIqci_evqci_tvsqci_pred qci_pend_scCanEqLHSTyVarLHSTyFamLHSCtCDictCan CIrredCanCEqCan CNonCanonical CQuantCancc_evcc_class cc_tyargs cc_pend_sc cc_reasoncc_lhscc_rhs cc_eq_relCtsXiisInsolubleReasoncteOKcterHasNoProblemcteImpredicative cteTypeFamilycteInsolubleOccurscteSolubleOccurs cteProblemcterHasProblemcterHasOnlyProblemcterRemoveProblemcterHasOccursCheckcterClearOccursCheckcterSetOccursCheckSoluble cterFromKindmkNonCanonicalmkNonCanonicalCt mkIrredCtmkGivens ctEvidencectLocctOriginctPred ctRewritersctEvIdwantedEvId_maybemkTcEqPredLikeEv ctFlavourctEqRelcanEqLHS_maybe canEqLHSType canEqLHSKind eqCanEqLHS tyCoVarsOfCttyCoVarsOfCtEvtyCoVarsOfCtListtyCoVarsOfCtEvList tyCoVarsOfCtstyCoVarsOfCtsListtyCoVarsOfCtEvsList tyCoVarsOfWCtyCoVarsOfWCList isGivenLoc isWantedCt isGivenCtgetUserTypeErrorMsgisUserTypeErrorisPendingScDictpendingScDict_maybependingScInst_maybesuperClassesMightHelpgetPendingWantedScssingleCtandCts listToCtsctsEltsconsCtssnocCts extendCtsList andManyCtsemptyCts isEmptyCtspprCtsemptyWC mkSimpleWC mkImplicWC isEmptyWC isSolvedWCandWCunionsWC addSimples addImplics addInsolsaddHolesaddNotConcreteErroraddDelayedErrorsdropMisleadingisSolvedStatusisInsolubleStatusinsolubleImplicnonDefaultableTyVarsOfWC insolubleWCinsolubleWantedCt insolubleEqCt insolubleCtisOutOfScopeHoleimplicationPrototypegetUserGivensFromImplicscheckTelescopeSkolcheckImplicationInvariants pprEvVars pprEvVarThetapprEvVarWithTypewrapTypectEvPredctEvLoc ctEvOrigin ctEvEqRelctEvRolectEvTerm ctEvRewritersctEvExpr ctEvCoercionctEvEvId ctEvUniquetcEvDestUnique setCtEvLocarisesFromGivenssetCtEvPredTypeisWantedisGivenemptyRewriterSetisEmptyRewriterSetaddRewriterSetrewriterSetFromCorewriterSetFromTyperewriterSetFromTypes ctEvFlavourctEvFlavourRole ctFlavourRole eqCanRewriteeqCanRewriteFRinitialSubGoalDepthbumpSubGoalDepthmaxSubGoalDepthsubGoalDepthExceeded mkKindLoc toKindLoc mkGivenLocctLocEnv ctLocLevel ctLocDepth ctLocOrigin ctLocSpanctLocTypeOrKind_maybe setCtLocSpanbumpCtLocDepthsetCtLocOriginupdateCtLocOrigin setCtLocEnvpprCtLoc$fOutputableCanEqLHS$fOutputableHoleSort$fOutputableCheckTyEqResult$fMonoidCheckTyEqResult$fSemigroupCheckTyEqResult$fOutputableCtIrredReason$fOutputableImplicStatus$fMonoidHasGivenEqs$fSemigroupHasGivenEqs$fOutputableHasGivenEqs$fOutputableTcEvDest$fOutputableCtFlavour$fOutputableCtEvidence$fOutputableQCInst$fOutputableCt$fOutputableNotConcreteError$fOutputableHole$fOutputableDelayedError$fOutputableImplication$fOutputableWantedConstraints$fEqSubGoalDepth$fOrdSubGoalDepth$fOutputableSubGoalDepth $fEqCtFlavour$fOutputableRewriterSet$fSemigroupRewriterSet$fMonoidRewriterSet$fEqHasGivenEqs EqualCtListFunEqMapDictMapTcAppMapisEmptyTcAppMap emptyTcAppMap insertTcApp alterTcAppfilterTcAppMap tcAppMapToBag foldTcAppMap emptyDictMapfindDictfindDictsByClassdelDictaddDictaddDictsByClass filterDictspartitionDicts dictsToBag foldDicts emptyFunEqs findFunEqfindFunEqsByTyCon foldFunEqs insertFunEqaddToEqualCtListfilterEqualCtListInertEqs InertCansIC inert_eqs inert_funeqs inert_dicts inert_instsinert_safehask inert_irredsinert_given_eq_lvlinert_given_eqsIS inert_cansinert_cycle_breakersinert_famapp_cacheinert_solved_dictsCycleBreakerVarStackWorkListWLwl_eqswl_rest wl_implicsappendWorkList workListSizeextendWorkListEqextendWorkListNonEqextendWorkListImplicextendWorkListCtextendWorkListCtsisEmptyWorkList emptyWorkListselectWorkItem emptyInert foldTyEqsdelEqfindEqpartitionInertEqspartitionFunEqs addInertItemkickOutRewritableLHS noGivenIrredsnoMatchableGivenDictsmightEqualLaterprohibitedSuperClassSolvepushCycleBreakerVarStackinsertCycleBreakerBindingforAllCycleBreakerBindings_$fOutputableWorkList$fOutputableInertCans$fOutputableInertSet PmAltConSetPmAltCon PmAltConLikePmAltLit PmEqualityEqualDisjointPossiblyOverlap PmLitValuePmLitIntPmLitRat PmLitChar PmLitString PmLitOverInt PmLitOverRatPmLitOverStringPmLit pm_lit_ty pm_lit_valResidualCompleteMatchesRCM rcm_vanilla rcm_pragmasBotInfoIsBotIsNotBotMaybeBot PmAltConAppPACApaca_conpaca_tvspaca_idsVarInfoVIvi_idvi_posvi_negvi_botvi_rcmTmStateTmStts_factsts_repsts_dirtyTyStateTyStty_st_n ty_st_inertNablasMkNablasNablaMkNabla nabla_ty_st nabla_tm_st initNablasgetRcmisRcmInitialised lookupVarInfolookupVarInfoNT trvVarInfo lookupRefutslookupSolution pmLitTypeemptyPmAltConSetisEmptyPmAltConSetelemPmAltConSetextendPmAltConSetpmAltConSetElems eqPmAltCon pmAltConTypeisPmAltConMatchStrictpmAltConImplBangsliteralToPmLit negatePmLit overloadPmLitpmLitAsStringLitcoreExprAsPmLit$fOutputableTyState$fOutputableBotInfo#$fOutputableResidualCompleteMatches$fOutputablePmLitValue$fOutputablePmLit$fOutputablePmEquality $fEqPmLit$fOutputablePmAltCon $fEqPmAltCon$fOutputablePmAltConApp$fOutputablePmAltConSet$fOutputableVarInfo$fOutputableTmState$fOutputableNabla$fMonoidNablas$fSemigroupNablas$fOutputableNablas$fEqPmEquality$fShowPmEquality $fEqBotInfoPostPre CheckResultcr_retcr_uncov cr_approxRedSetsrs_covrs_divrs_bangs Precision ApproximatePrecise PmPatBind PmEmptyCasepe_varPmGRHSpg_grdspg_rhsPmGRHSspgs_lcls pgs_grhssPmMatchpm_patspm_grhss PmMatchGroupGrdVecSrcInfoPmGrdPmConPmBangPmLetpm_id pm_con_con pm_con_tvs pm_con_dicts pm_con_args_pm_loc _pm_let_expr$fOutputableSrcInfo$fOutputablePmGrd$fOutputableGrdVec$fOutputablePmGRHS$fOutputablePmGRHSs$fOutputablePmMatch$fOutputablePmMatchGroup$fOutputablePmEmptyCase$fOutputablePmPatBind$fMonoidPrecision$fSemigroupPrecision$fOutputablePrecision$fOutputableRedSets$fOutputableCheckResult$fFunctorCheckResult $fEqPrecision$fShowPrecision pprUncoveredFileHeaderPragmaType OptionsPrag IncludePrag LanguagePragDocOptionsPragTransLayoutReasonTransLayout_WhereTransLayout_PipeCmmParserErrorCmmUnknownPrimitiveCmmUnknownMacroCmmUnknownCConvCmmUnrecognisedSafetyCmmUnrecognisedHintLexErrLexErrorLexUnknownPragmaLexErrorInPragmaLexNumEscapeRangeLexStringCharLitLexStringCharLitEOFLexUnterminatedCommentLexUnterminatedOptionsLexUnterminatedQQ LexErrKindLexErrKind_EOFLexErrKind_UTF8LexErrKind_CharNumUnderscoreReasonNumUnderscore_IntegralNumUnderscore_FloatPsErrInPatDetails PEIP_NegApp PEIP_TypeArgsPEIP_RecPatternPEIP_OtherPatDetails ParseContextis_infixincomplete_do_blockPatIncompleteDoBlockYesIncompleteDoBlockNoIncompleteDoBlockPatIsRecursiveYesPatIsRecursiveNoPatIsRecursivePsErrParseDetailsped_th_enabledped_do_in_last_100ped_mdo_in_last_100ped_pat_syn_enabledped_pattern_parsed PsMessagePsUnknownMessagePsHeaderMessagePsWarnBidirectionalFormatCharsPsWarnTransitionalLayoutPsWarnUnrecognisedPragmaPsWarnMisplacedPragmaPsWarnHaddockInvalidPosPsWarnHaddockIgnoreMulti#PsWarnOperatorWhitespaceExtConflictPsErrLambdaCasePsErrEmptyLambdaPsErrNumUnderscoresPsErrPrimStringInvalidCharPsErrMissingBlock PsErrLexer PsErrSuffixAT PsErrParse PsErrCmmLexerPsErrUnsupportedBoxedSumExprPsErrUnsupportedBoxedSumPat#PsErrUnexpectedQualifiedConstructorPsErrTupleSectionInPatPsErrIllegalBangPatternPsErrOpFewArgsPsErrImportQualifiedTwicePsErrImportPostQualifiedPsErrIllegalExplicitNamespacePsErrVarForTyConPsErrIllegalPatSynExportPsErrMalformedEntityStringPsErrDotsInRecordUpdatePsErrPrecedenceOutOfRangePsErrOverloadedRecordDotInvalid%PsErrOverloadedRecordUpdateNotEnabled,PsErrOverloadedRecordUpdateNoQualifiedFieldsPsErrInvalidDataConPsErrInvalidInfixDataCon!PsErrIllegalPromotionQuoteDataConPsErrUnpackDataConPsErrUnexpectedKindAppInDataConPsErrInvalidRecordConPsErrIllegalUnboxedStringInPat#PsErrIllegalUnboxedFloatingLitInPatPsErrDoNotationInPatPsErrIfThenElseInPatPsErrLambdaCaseInPatPsErrCaseInPat PsErrLetInPatPsErrLambdaInPatPsErrArrowExprInPatPsErrArrowCmdInPatPsErrArrowCmdInExprPsErrViewPatInExprPsErrTypeAppWithoutSpacePsErrLazyPatWithoutSpacePsErrBangPatWithoutSpacePsErrUnallowedPragmaPsErrQualifiedDoInCmdPsErrInvalidInfixHolePsErrSemiColonsInCondExprPsErrSemiColonsInCondCmdPsErrAtInPatPosPsErrLambdaCmdInFunAppCmdPsErrCaseCmdInFunAppCmdPsErrLambdaCaseCmdInFunAppCmdPsErrIfCmdInFunAppCmdPsErrLetCmdInFunAppCmdPsErrDoCmdInFunAppCmdPsErrDoInFunAppExprPsErrMDoInFunAppExprPsErrLambdaInFunAppExprPsErrCaseInFunAppExprPsErrLambdaCaseInFunAppExprPsErrLetInFunAppExprPsErrIfInFunAppExprPsErrProcInFunAppExprPsErrMalformedTyOrClDeclPsErrIllegalWhereInDataDeclPsErrIllegalDataTypeContextPsErrParseErrorOnInputPsErrMalformedDeclPsErrUnexpectedTypeAppInDeclPsErrNotADataConPsErrRecordSyntaxInPatSynDeclPsErrEmptyWhereInPatSynDecl!PsErrInvalidWhereBindInPatSynDecl"PsErrNoSingleWhereBindInPatSynDeclPsErrDeclSpliceNotAtTopLevelPsErrInferredTypeVarNotAllowed+PsErrMultipleNamesInStandaloneKindSignaturePsErrIllegalImportBundleFormPsErrUnexpectedTypeInDeclPsErrExpectedHyphenPsErrSpaceInSCCPsErrInvalidPackageName PsErrInvalidRuleActivationMarkerPsErrLinearFunctionPsErrMultiWayIfPsErrExplicitForallPsErrIllegalQualifiedDoPsErrCmmParser#PsErrIllegalTraditionalRecordSyntaxPsErrParseErrorInCmd PsErrInPatPsErrParseRightOpSectionInPat"PsErrIllegalGadtRecordMultiplicityPsErrInvalidCApiImportPsErrMultipleConForNewtypePsErrUnicodeCharLooksLikePsErrParseLanguagePragmaPsErrUnsupportedExtPsErrParseOptionsPragmaPsErrUnknownOptionsPragmaPsError PsWarningnoParseContextincompleteDoBlockfromParseContext$fGenericPsMessage$fShowLexErrKind$fEqLexErrKind$fOrdLexErrKind$fShowNumUnderscoreReason$fEqNumUnderscoreReason$fOrdNumUnderscoreReason$fEqParseContext$fEqPatIncompleteDoBlock$fGenericPsHeaderMessage BindsTypeUnliftedTypeBinds StrictBindsExhaustivityCheckTypeNegLiteralExtEnabledYesUsingNegLiteralsNotUsingNegLiteralsThRejectionReasonThAmbiguousRecordUpdatesThAbstractClosedTypeFamilyThForeignLabelThForeignExportThMinimalPragmas ThSCCPragmasThNoUserInlineThExoticFormOfTypeThAmbiguousRecordSelectorsThMonadComprehensionSyntax ThCostCentresThExpressionFormThExoticStatementThExoticLiteralThExoticPatternThGuardedLambdasThNegativeOverloadedPatternsThHaddockDocumentationThWarningAndDeprecationPragmasThSplicesWithinDeclBracketsThNonLinearDataConDsArgNum DsMessageDsUnknownMessageDsEmptyEnumerationDsIdentitiesFoundDsOverflowedLiteralsDsRedundantBangPatternsDsOverlappingPatternsDsInaccessibleRhsDsNonExhaustivePatternsDsTopLevelBindsNotAllowed)DsUselessSpecialiseForClassMethodSelector&DsUselessSpecialiseForNoInlineFunction#DsMultiplicityCoercionsNotSupported DsOrphanRuleDsRuleLhsTooComplicatedDsRuleIgnoredDueToConstructorDsRuleBindersNotBound#DsLazyPatCantBindVarsOfUnliftedTypeDsNotYetHandledByTHDsAggregatedViewExpressionsDsUnbangedStrictPatterns"DsCannotMixPolyAndUnliftedBindings DsWrongDoBindDsUnusedDoBind"DsRecBindsNotAllowedForUnliftedTysDsRuleMightInlineFirstDsAnotherRuleMightFireFirstMaxPmCheckModelsMaxUncoveredPatternsMaxBoundMinBoundnegLiteralExtEnabled$fGenericDsMessageBlankEpAnnotationsNoBlankEpAnnotations BlankSrcSpanBlankSrcSpanFileNoBlankSrcSpanshowAstDataFull showAstData$fEqBlankEpAnnotations$fShowBlankEpAnnotations$fEqBlankSrcSpan$fShowBlankSrcSpan LRenamingRenaming renameFromrenameTo IncludeDeclidUnitId idModRenamingidSignatureInclude LHsUnitDecl HsUnitDeclDeclDIncludeDLHsUnitHsUnit hsunitName hsunitBody LHsModuleId HsModuleId HsModuleVarLHsModuleSubst HsModuleSubst LHsUnitIdHsUnitId HsComponentId hsPackageName hsComponentId$fOutputableHsComponentId $fBinaryBytes$fBinaryDocLoc$fBinaryPatSynArgs$fBinaryPatSynDir$fBinaryTypeFamilyHead$fBinaryFamilyResultSig$fBinaryInjectivityAnn$fBinaryClause$fBinaryModuleInfo$fBinaryAnnLookup $fBinaryCon$fBinaryDecidedStrictness$fBinarySourceStrictness$fBinarySourceUnpackedness $fBinaryBang$fBinaryForeign$fBinaryCallconv$fBinaryPragma$fBinaryInline$fBinaryRuleMatch$fBinaryPhases$fBinaryRuleBndr$fBinaryFunDep$fBinaryTySynEqn $fBinaryMatch $fBinaryBody $fBinaryGuard$fBinaryDerivStrategy$fBinaryDerivClause$fBinaryOverlap $fBinaryDec $fBinaryExp $fBinaryPat $fBinaryStmt $fBinaryRange $fBinaryLit$fBinaryTyVarBndr $fBinaryTyLit $fBinaryType $fBinaryInfo$fBinaryModule$fBinaryPkgName$fBinaryNameFlavour$fBinaryModName $fBinaryLocPipepipeRead pipeWrite pipeLeftoversMsgQStateqsMap qsLocationqsPipe THResultTypeTHExpTHPatTHTypeTHDec THAnnWrapperTHResult THException THCompleteSerializableExceptionEUserInterrupt EExitCodeEOtherException EvalResult EvalException EvalSuccess EvalStatus_ EvalComplete EvalBreak EvalStatusEvalExprEvalThisEvalApp ResumeContextresumeBreakMVarresumeStatusMVarresumeThreadIdEvalOptsuseSandboxThread singleStepbreakOnException breakOnErrorTHMsg THMessageNewNameReport LookupNameReify ReifyFixity ReifyTypeReifyInstances ReifyRolesReifyAnnotations ReifyModuleReifyConStrictnessGetPackageRootAddDependentFile AddTempFileAddModFinalizer AddCorePlugin AddTopDeclsAddForeignFilePath IsExtEnabled ExtsEnabledPutDocGetDoc StartRecover EndRecover FailIfErrs RunTHDoneQResultQDone QExceptionQFailMessageShutdown RtsRevertCAFs InitLinker LookupSymbol LookupClosureLoadDLL LoadArchiveLoadObj UnloadObjAddLibrarySearchPathRemoveLibrarySearchPath ResolveObjsFindSystemLibrary CreateBCOsFreeHValueRefs AddSptEntry MallocData MallocStringsPrepFFIFreeFFIMkConInfoTableEvalStmt ResumeStmt AbandonStmt EvalStringEvalStringToStringEvalIO MkCostCentresCostCentreStackInfo NewBreakArraySetupBreakpointBreakpointStatusGetBreakpointVarStartTHRunTHRunModFinalizers GetClosureSeq ResumeSeq getTHMessage putTHMessagetoSerializableExceptionfromSerializableException getMessage putMessage remoteCall remoteTHCall writePipereadPipe$fBinaryGenClosure$fBinaryPrimType$fBinaryClosureType$fBinaryStgInfoTable$fBinaryTsoFlags$fBinaryWhyBlocked$fBinaryWhatNext$fBinaryIndexTable$fBinaryCostCentreStack$fBinaryStgTSOProfInfo$fBinaryFunPtr $fBinaryPtr$fBinaryExitCode$fBinaryQResult$fBinaryEvalOpts$fBinaryEvalExpr$fBinarySerializableException$fBinaryEvalResult$fBinaryEvalStatus_$fBinaryTHResult$fBinaryTHResultType $fShowQState$fEnumTHResultType$fShowTHResultType$fGenericTHResultType$fGenericTHResult$fShowTHResult$fGenericEvalStatus_$fShowEvalStatus_$fGenericEvalResult$fShowEvalResult$fGenericSerializableException$fShowSerializableException$fGenericEvalExpr$fShowEvalExpr$fGenericEvalOpts$fShowEvalOpts$fGenericQResult $fShowQResult$fShowTHMessage $fShowMessage IServInstance iservPipe iservProcessiservLookupSymbolCacheiservPendingFrees IServConfigiservConfProgram iservConfOptsiservConfProfilediservConfDynamic iservConfHookiservConfTrace IServState IServPending IServRunningIServInterpInstanceExternalInterpInterpinterpInstance interpLoaderBCOOpts bco_n_jobs interpCmd withIServ withIServ_evalStmt resumeStmt abandonStmtevalIO evalStringevalStringToIOString mallocData mkCostCentres createBCOs addSptEntrycostCentreStackInfostoreBreakpointbreakpointStatusgetBreakpointVar getClosure seqHValue initObjLinker lookupSymbol lookupClosurepurgeLookupSymbolCacheloadDLL loadArchiveloadObj unloadObjaddLibrarySearchPathremoveLibrarySearchPath resolveObjsfindSystemLibrary iservCall readIServ writeIServ stopInterpmkFinalizedHValuefreeHValueRefswormhole wormholeReffromEvalResult getModBreaksinterpreterProfiledinterpreterDynamicHistoryhistoryApStackhistoryBreakInfohistoryEnclosingDeclsResumeBindingsResume resumeContextresumeBindingsresumeFinalIds resumeApStackresumeBreakInfo resumeSpan resumeDecl resumeCCS resumeHistoryresumeHistoryIxIcGlobalRdrEnvigre_envigre_prompt_env ExecResult ExecComplete ExecBreak execResultexecAllocation breakNames breakInfo SingleStepRunToCompletionRunAndLogSteps ExecOptionsexecSingleStepexecSourceFileexecLineNumberexecWrapisStepInteractiveImportIIDeclIIModuleInteractiveContext ic_dflags ic_mod_index ic_imports ic_tythings ic_gre_cache ic_instances ic_fix_env ic_default ic_resumeic_monad ic_int_printic_cwd ic_pluginsemptyInteractiveContext icReaderEnvicInteractiveModule icInScopeTTs icNamePprCtxextendInteractiveContextextendInteractiveContextWithIdssetInteractivePrintNamereplaceImportEnvsubstInteractiveContext$fOutputableInteractiveImportinteractiveInScopeinitOptCoercionOptsinitSimpleOpts initBCOOpts initEvalOptsUnexpectedStatementEmptyStatementGroupErrReasonEmptyStmtsGroupInParallelComp"EmptyStmtsGroupInTransformListCompEmptyStmtsGroupInDoNotationEmptyStmtsGroupInArrowNotationUnrepresentableTypeDescrLinearInvisibleArgumentCoercionsInTypesLookupTHInstNameErrReasonNoMatchesFoundCouldNotDetermineInstance SplicePhaseSplicePhase_RunSplicePhase_CompileAndLinkMatchArgBadMatchesMatchArgMatchesmatchArgFirstMatchmatchArgBadMatchesMatchArgsContext EquationArgs PatternArgs HsDocContext TypeSigCtxStandaloneKindSigCtxPatCtxSpecInstSigCtxDefaultDeclCtxForeignDeclCtx DerivDeclCtxRuleCtx TyDataCtxTySynCtx TyFamilyCtx FamPatCtx ConDeclCtx ClassDeclCtxExprWithTySigCtxTypBrCtx HsTypeCtx HsTypePatCtxGHCiCtx SpliceTypeCtxClassInstanceCtx GenericCtxFixedRuntimeRepErrorInfoFRR_Infofrr_info_originfrr_info_not_concrete PromotionErrTyConPEClassPE FamDataConPEConstrainedDataConPEPatSynPE RecDataConPETermVariablePE NoDataKindsDCRelevantBindingsrelevantBindingNamesAndTys ranOutOfFuel ValidHoleFitsholeFitsrefinementFitsFitsMbSuppressedFitsfitsfitsSuppressedPotentialInstancesmatchesunifiers ImportError MissingModuleModulesDoNotExport CoercibleMsg UnknownRolesTyConIsAbstractOutOfScopeNewtypeConstructor HoleErrorOutOfScopeHoleHoleFitDispConfigHFDCshowWrap showWrapVarsshowTypeshowProv showMatchesNotInScopeError NotInScope NoExactNameSameNameMissingBindingNoTopLevelBindingUnknownSubordinate WhenMatchingExpectedActualInfoExpectedActual!ExpectedActualAfterTySynExpansion ea_expected ea_actualea_expanded_expectedea_expanded_actual AmbiguityInfo AmbiguityNonInjectiveTyFamlead_with_ambig_msg ambig_tyvars SameOccInfoSameOccsameOcc_same_pkg sameOcc_lhs sameOcc_rhs TyVarInfo thisTyVarthisTyVarIsUntouchableotherTy CND_ExtraCannotUnifyVariableReasonCannotUnifyWithPolytype OccursCheck SkolemEscapeDifferentTyVarsRepresentationalEqoccursCheckInterestingTyVarsoccursCheckAmbiguityInfos MismatchEANoEAEA mismatch_mbEA MismatchMsg BasicMismatch KindMismatchTypeEqMismatchCouldNotDeduce mismatch_ea mismatch_item mismatch_ty1 mismatch_ty2mismatch_whenMatchingmismatch_mb_same_occkmismatch_whatkmismatch_expectedkmismatch_actualteq_mismatch_ppr_explicit_kindsteq_mismatch_itemteq_mismatch_ty1teq_mismatch_ty2teq_mismatch_expectedteq_mismatch_actualteq_mismatch_whatteq_mb_same_occcnd_user_givens cnd_wanted cnd_extraTcSolverReportMsg BadTelescope UserTypeErrorReportHoleErrorUntouchableVariableCannotUnifyVariableMismatchFixedRuntimeRepErrorBlockedEqualityExpectingMoreArgumentsUnboundImplicitParamsAmbiguityPreventsSolvingCtCannotResolveInstance UnsafeOverlapuntouchableTyVaruntouchableTyVarImplication mismatchMsgcannotUnifyReasonmismatchTyVarInfomismatchAmbiguityInfomismatchCoercibleInfocannotResolve_itemcannotResolve_unifierscannotResolve_candidatescannotResolve_importErrorscannotResolve_suggestionscannotResolve_relevant_bindingsoverlappingInstances_itemoverlappingInstances_matchesoverlappingInstances_unifiersunsafeOverlap_itemunsafeOverlap_matchunsafeOverlapped ErrorItemEIei_pred ei_evdest ei_flavourei_loc ei_m_reason ei_suppressSolverReportErrCtxtCECcec_enclcec_tidy cec_bindscec_defer_type_errorscec_expr_holescec_type_holescec_out_of_scope_holescec_warn_redundantcec_expand_syns cec_suppressSolverReportWithCtxt reportContext reportContentSolverReportSupplementarySupplementaryBindingsSupplementaryHoleFitsSupplementaryCts SolverReportsr_important_msgsr_supplementarysr_hintsExported IsNotExported IsExportedMissingSignatureMissingTopLevelBindingSigMissingPatSynSigMissingTyConKindSig!AssociatedTyNotParamOverLastTyVar$YesAssociatedTyNotParamOverLastTyVar#NoAssociatedTyNotParamOverLastTyVarAssociatedTyLastVarInKindYesAssocTyLastVarInKindNoAssocTyLastVarInKindHasAssociatedDataFamInsts YesHasAdfs NoHasAdfs"SoleExtraConstraintWildcardAllowed%SoleExtraConstraintWildcardNotAllowedBadAnonWildcardContextWildcardNotLastInConstraint!ExtraConstraintWildcardNotAllowedWildcardsNotAllowedAtAll HasWildcardYesHasWildcard NoHasWildcardDeriveGenericsErrReason*DerivErrGenericsMustNotHaveDatatypeContext%DerivErrGenericsMustNotHaveExoticArgs$DerivErrGenericsMustBeVanillaDataCon&DerivErrGenericsMustHaveSomeTypeParams'DerivErrGenericsMustNotHaveExistentialsDerivErrGenericsWrongArgKindDeriveInstanceBadConstructorDerivErrBadConExistentialDerivErrBadConCovariantDerivErrBadConFunTypesDerivErrBadConWrongArgDerivErrBadConIsGADTDerivErrBadConHasExistentialsDerivErrBadConHasConstraintsDerivErrBadConHasHigherRankTypeDeriveInstanceErrReasonDerivErrNotWellKindedDerivErrSafeHaskellGenericInstDerivErrDerivingViaWrongKindDerivErrNoEtaReduceDerivErrBootFileFoundDerivErrDataConsNotAllInScopeDerivErrGNDUsedOnDataDerivErrNullaryClassesDerivErrLastArgMustBeAppDerivErrNoFamilyInstanceDerivErrNotStockDeriveableDerivErrHasAssociatedDatatypes!DerivErrNewtypeNonDeriveableClassDerivErrCannotEtaReduceEnoughDerivErrOnlyAnyClassDeriveableDerivErrNotDeriveableDerivErrNotAClassDerivErrNoConstructorsDerivErrLangExtRequiredDerivErrDunnoHowToDeriveForTypeDerivErrMustBeEnumType%DerivErrMustHaveExactlyOneConstructorDerivErrMustHaveSomeParametersDerivErrMustNotHaveClassContextDerivErrBadConstructorDerivErrGenericsDerivErrEnumOrProductDeriveAnyClassEnabledYesDeriveAnyClassEnabledNoDeriveAnyClassEnabledUsingGeneralizedNewtypeDerivingYesGeneralizedNewtypeDerivingNoGeneralizedNewtypeDerivingSuggestPartialTypeSignaturesYesSuggestPartialTypeSignaturesNoSuggestPartialTypeSignaturesNotClosedReasonNotLetBoundReason NotTypeClosed NotClosedAllowedDataResKind AnyTYPEKind AnyBoxedKind LiftedKindDataSort DataDeclSortDataInstanceSortDataFamilySortSuggestUnliftedTypesSuggestUnliftedNewtypesSuggestUnliftedDatatypesSuggestUndecidableInstancesYesSuggestUndecidableInstacesNoSuggestUndecidableInstacesHasKinds YesHasKinds NoHasKindsInjectivityErrReasonInjErrRhsBareTyVarInjErrRhsCannotBeATypeFamInjErrRhsOverlapInjErrCannotInferFromRhsIllegalNewtypeReasonDoesNotHaveSingleField IsNonLinearIsGADTHasConstructorContextHasExistentialTyVarHasStrictnessAnnotationFixedRuntimeRepProvenanceFixedRuntimeRepDataConFieldFixedRuntimeRepPatSynSigArgFixedRuntimeRepPatSynSigResShadowedNameProvenanceShadowedNameProvenanceLocalShadowedNameProvenanceGlobalRecordFieldPartRecordFieldConstructorRecordFieldPatternRecordFieldUpdate ArgOrResultResultUnsupportedCallConventionStdCallConvUnsupportedPrimCallConvUnsupportedJavaScriptCallConvUnsupportedExpectedBackendsTHDeclDescriptor InstanceDecl WhereClause LetBinding LetExpressionClssDecl IllegalDeclsIllegalFamDeclsConversionFailReasonIllegalOccNameSumAltArityExceeded IllegalSumAltIllegalSumArity MalformedTypeIllegalLastStatementKindSigsOnlyAllowedOnGADTsIllegalDeclarationCannotMixGADTConsWith98ConsEmptyStmtListInDoBlockNonVarInInfixExprMultiWayIfWithoutAltsCasesExprWithoutAltsImplicitParamsWithOtherBindsInvalidCCallImpent RecGadtNoCons GadtNoConsInvalidTypeInstanceHeaderInvalidTyFamInstLHSInvalidImplicitParamBindingDefaultDataInstDeclFunBindLacksEquationsThingBeingConvertedConvDecConvExpConvPatConvTypeRunSpliceFailReasonConversionFailTypeDataForbidsTypeDataForbidsDatatypeContextsTypeDataForbidsLabelledFields$TypeDataForbidsStrictnessAnnotationsTypeDataForbidsDerivingClauses TcRnMessageTcRnUnknownMessageTcRnMessageWithInfoTcRnWithHsDocContextTcRnSolverReportTcRnRedundantConstraintsTcRnInaccessibleCode"TcRnTypeDoesNotHaveFixedRuntimeRepTcRnImplicitLiftTcRnUnusedPatternBindsTcRnDodgyImportsTcRnDodgyExportsTcRnMissingImportListTcRnUnsafeDueToPluginTcRnModMissingRealSrcSpanTcRnIdNotExportedFromModuleSigTcRnIdNotExportedFromLocalSigTcRnShadowedNameTcRnDuplicateWarningDeclsTcRnSimplifierTooManyIterationsTcRnIllegalPatSynDeclTcRnLinearPatSynTcRnEmptyRecordUpdateTcRnIllegalFieldPunningTcRnIllegalWildcardsInRecordTcRnIllegalWildcardInTypeTcRnDuplicateFieldNameTcRnIllegalViewPatternTcRnCharLiteralOutOfRange!TcRnIllegalWildcardsInConstructorTcRnIgnoringAnnotationsTcRnAnnotationInSafeHaskellTcRnInvalidTypeApplicationTcRnTagToEnumMissingValArgTcRnTagToEnumUnspecifiedResTyTcRnTagToEnumResTyNotAnEnum(TcRnArrowIfThenElsePredDependsOnResultTyTcRnIllegalHsBootFileDeclTcRnRecursivePatternSynonymTcRnPartialTypeSigTyVarMismatchTcRnPartialTypeSigBadQuantifierTcRnMissingSignatureTcRnPolymorphicBinderMissingSigTcRnOverloadedSigTcRnTupleConstraintInstTcRnAbstractClassInstTcRnNoClassInstHeadTcRnUserTypeErrorTcRnConstraintInKind TcRnUnboxedTupleOrSumTypeFuncArgTcRnLinearFuncInKindTcRnForAllEscapeErrorTcRnVDQInTermTypeTcRnBadQuantPredHeadTcRnIllegalTupleConstraintTcRnNonTypeVarArgInConstraintTcRnIllegalImplicitParam"TcRnIllegalConstraintSynonymOfKindTcRnIllegalClassInstTcRnOversaturatedVisibleKindArgTcRnBadAssociatedTypeTcRnForAllRankErrTcRnMonomorphicBindingsTcRnFunDepConflictTcRnDupInstanceDeclsTcRnConflictingFamInstDeclsTcRnFamInstNotInjectiveTcRnBangOnUnliftedTypeTcRnLazyBangOnUnliftedTypeTcRnMultipleDefaultDeclarationsTcRnBadDefaultTypeTcRnPatSynBundledWithNonDataConTcRnPatSynBundledWithWrongTypeTcRnDupeModuleExportTcRnExportedModNotImportedTcRnNullExportedModuleTcRnMissingExportListTcRnExportHiddenComponentsTcRnDuplicateExportTcRnExportedParentChildMismatchTcRnConflictingExportsTcRnAmbiguousFieldTcRnMissingFieldsTcRnFieldUpdateInvalidTypeTcRnNoConstructorHasAllFieldsTcRnMixedSelectorsTcRnMissingStrictFieldsTcRnNoPossibleParentForFieldsTcRnBadOverloadedRecordUpdateTcRnStaticFormNotClosedTcRnSpecialClassInstTcRnUselessTypeableTcRnDerivingDefaultsTcRnNonUnaryTypeclassConstraintTcRnPartialTypeSignaturesTcRnCannotDeriveInstanceTcRnLazyGADTPatternTcRnArrowProcGADTPatternTcRnTypeEqualityOutOfScope!TcRnTypeEqualityRequiresOperatorsTcRnIllegalTypeOperatorTcRnIllegalTypeOperatorDeclTcRnGADTMonoLocalBindsTcRnNotInScopeTcRnUntickedPromotedThingTcRnIllegalBuiltinSyntaxTcRnWarnDefaultingTcRnForeignImportPrimExtNotSetTcRnForeignImportPrimSafeAnn TcRnForeignFunctionImportAsValue TcRnFunPtrImportWithoutAmpersandTcRnIllegalForeignDeclBackendTcRnUnsupportedCallConvTcRnIllegalForeignTypeTcRnInvalidCIdentifierTcRnExpectedValueIdTcRnNotARecordSelectorTcRnRecSelectorEscapedTyVarTcRnPatSynNotBidirectionalTcRnSplicePolymorphicLocalVarTcRnIllegalDerivingItemTcRnUnexpectedAnnotationTcRnIllegalRecordSyntaxTcRnUnexpectedTypeSpliceTcRnInvalidVisibleKindArgumentTcRnTooManyBindersTcRnDifferentNamesForTyVarTcRnInvalidReturnKindTcRnClassKindNotConstraintTcRnUnpromotableThingTcRnMatchesHaveDiffNumArgs!TcRnCannotBindScopedTyVarInPatSigTcRnCannotBindTyVarsInPatBindTcRnTooManyTyArgsInConPatternTcRnMultipleInlinePragmasTcRnUnexpectedPragmas!TcRnNonOverloadedSpecialisePragmaTcRnSpecialiseNotVisibleTcRnNameByTemplateHaskellQuoteTcRnIllegalBindingOfBuiltInTcRnPragmaWarningTcRnIllegalHsigDefaultMethodsTcRnBadGenericMethodTcRnWarningMinimalDefIncomplete&TcRnDefaultMethodForPragmaLacksBinding%TcRnIgnoreSpecialisePragmaOnDefMethodTcRnBadMethodErr+TcRnNoExplicitAssocTypeOrDefaultDeclarationTcRnIllegalNewtypeTcRnIllegalTypeDataTcRnTypeDataForbidsTcRnTypedTHWithPolyTypeTcRnSpliceThrewExceptionTcRnInvalidTopDeclTcRnNonExactNameTcRnAddInvalidCorePluginTcRnAddDocToNonLocalDefnTcRnFailedToLookupThInstNameTcRnCannotReifyInstanceTcRnCannotReifyOutOfScopeThing TcRnCannotReifyThingNotInTypeEnvTcRnNoRolesAssociatedWithThingTcRnCannotRepresentTypeTcRnRunSpliceFailureTcRnReportCustomQuasiErrorTcRnInterfaceLookupErrorTcRnUnsatisfiedMinimalDefTcRnMisplacedInstSigTcRnBadBootFamInstDeclTcRnIllegalFamilyInstanceTcRnMissingClassAssocTcRnBadFamInstDeclTcRnNotOpenFamilyTcRnNoRebindableSyntaxRecordDotTcRnNoFieldPunsRecordDotTcRnIllegalStaticExpressionTcRnIllegalStaticFormInSplice%TcRnListComprehensionDuplicateBindingTcRnEmptyStmtsGroupTcRnLastStmtNotExpr TcRnUnexpectedStatementInContextTcRnIllegalTupleSection$TcRnIllegalImplicitParameterBindingsTcRnSectionWithoutParenthesespragma_warning_occpragma_warning_msgpragma_warning_import_modpragma_warning_defined_modbadMethodErrClassNamebadMethodErrMethodNameTcRnMessageDetailedErrInfoerrInfoContexterrInfoSupplementarymkTcRnUnknownMessagepprFixedRuntimeRepProvenancehasKindssuggestUndecidableInstances ppDataSortsuggestPartialTypeSignaturesusingGeneralizedNewtypeDerivingderiveAnyClassEnabled hasWildcardhasAssociatedDataFamInstsassociatedTyLastVarInKind!associatedTyNotParamOverLastTyVar getUserGivenserrorItemOriginerrorItemEqRelerrorItemCtLoc errorItemPreddiscardProvCtxtGivensmkBasicMismatchMsgmkPlainMismatchMsgmkTcRnNotInScopenoValidHoleFitspprRelevantBindings pprPECategory peCategory$fOutputableTypeDataForbids$fOutputableExported$fOutputableErrorItem$fOutputablePromotionErr$fGenericTcRnMessage$fGenericTcRnMessageDetailed%$fGenericEmptyStatementGroupErrReason$fGenericSolverReportWithCtxt$fGenericTcSolverReportMsg"$fGenericCannotUnifyVariableReason$fGenericNotInScopeError$fGenericMismatchMsg$fGenericWhenMatching $fGenericDeriveInstanceErrReason%$fEqAssociatedTyNotParamOverLastTyVar$fEqAssociatedTyLastVarInKind$fEqHasAssociatedDataFamInsts$fEqHasWildcard$fEqDeriveAnyClassEnabled#$fEqUsingGeneralizedNewtypeDeriving"$fShowSuggestPartialTypeSignatures $fEqSuggestPartialTypeSignatures!$fShowSuggestUndecidableInstances$fEqSuggestUndecidableInstances$fShowHasKinds $fEqHasKinds$fGenericIllegalNewtypeReason$fEqUnsupportedCallConvention$fGenericRunSpliceFailReason$fGenericConversionFailReason$fGenericTypeDataForbidsBuildingCabalPackageYesBuildingCabalPackageNoBuildingCabalPackageDriverMessageOptspsDiagnosticOpts DriverMessageDriverUnknownMessageDriverPsHeaderMessageDriverMissingHomeModulesDriverUnknownReexportedModulesDriverUnknownHiddenModulesDriverUnusedPackagesDriverUnnecessarySourceImports!DriverDuplicatedModuleDeclarationDriverModuleNotFoundDriverFileModuleNameMismatchDriverFileNotFound DriverStaticPointersNotSupportedDriverBackpackModuleNotFoundDriverUserDefinedRuleIgnoredDriverMixedSafetyImportDriverCannotLoadInterfaceFileDriverInferredSafeModule&DriverMarkedTrustworthyButInferredSafeDriverInferredSafeImportDriverCannotImportUnsafeModuleDriverMissingSafeHaskellModeDriverPackageNotTrusted&DriverCannotImportFromUntrustedPackageDriverRedirectedNoMainDriverHomePackagesNotClosedDriverMessagesGhcMessageOpts psMessageOpts tcMessageOpts dsMessageOptsdriverMessageOpts GhcMessage GhcPsMessageGhcTcRnMessage GhcDsMessageGhcDriverMessageGhcUnknownMessageWarnMsg ErrorMessagesWarningMessagesghcUnknownMessagehoistTcRnMessagehoistDsMessagecheckBuildingCabalPackage$fGenericGhcMessage$fEqBuildingCabalPackage$fGenericDriverMessageconstructorCode$fGDiagnosticCodeM1$fGDiagnosticCode:+:$fGDiagnosticCodeM10$fHasTypetyorigf$fHasTypetyorigM1$fConstructorCodeconfJust$fConstructorCodeconfJust0+$fHasTypeProdMaybeSymbolTYPEtyNothingorigfg($fHasTypeProdMaybeSymbolTYPEtyJustorigfg$fHasTypetyorig:*:$fConstructorCodeconfNothingTcRnMessageOptstcOptsShowContext!pprTypeDoesNotHaveFixedRuntimeRep pprScopeErrortidySkolemInfotidySkolemInfoAnoninHsDocContextpprHsDocContext$fOutputableImportError$fOutputableSolverReportErrCtxt$fDiagnosticTcRnMessagepsHeaderMessageDiagnosticpsHeaderMessageReasonpsHeaderMessageHintssuggestParensAndBlockArgspp_unexpected_fun_appparse_error_in_pat forallSympprFileHeaderPragmaType$fDiagnosticPsMessageMonadPaddError addWarning addFatalErrorgetBitallocateCommentsPallocatePriorCommentsPallocateFinalCommentsPExtBitsFfiBitInterruptibleFfiBit CApiFfiBit ArrowsBitThBit ThQuotesBitIpBitOverloadedLabelsBitExplicitForallBit BangPatBitPatternSynonymsBit HaddockBit MagicHashBitRecursiveDoBitQualifiedDoBitUnicodeSyntaxBitUnboxedParensBitDatatypeContextsBitMonadComprehensionsBitTransformComprehensionsBitQqBitRawTokenStreamBitAlternativeLayoutRuleBitALRTransitionalBitRelaxedLayoutBitNondecreasingIndentationBitSafeHaskellBitTraditionalRecordSyntaxBitExplicitNamespacesBit LambdaCaseBitBinaryLiteralsBitNegativeLiteralsBitHexFloatLiteralsBitStaticPointersBitNumericUnderscoresBit StarIsTypeBitBlockArgumentsBitNPlusKPatternsBitDoAndIfThenElseBit MultiWayIfBit GadtSyntaxBitImportQualifiedPostBitLinearTypesBitNoLexicalNegationBitOverloadedRecordDotBitOverloadedRecordUpdateBit InRulePragBitInNestedCommentBitUsePosPragsBitPunPPStatebufferoptionswarningserrors tab_first tab_countlast_tkprev_loc prev_loc2last_loclast_lenloccontext lex_statesrcfilesalr_pending_implicit_tokensalr_next_token alr_last_loc alr_contextalr_expecting_ocurlyalr_justClosedExplicitLetBlockeof_posheader_comments comment_q hdk_comments HdkCommentHdkCommentNextHdkCommentPrevHdkCommentNamedHdkCommentSection ParserOpts pExtsBitmap pDiagOptspSupportedExts ParseResultTokenITasITcaseITclassITdata ITdefault ITderivingITdoITelseIThiding ITforeignITifITimportITinITinfixITinfixlITinfixr ITinstanceITletITmodule ITnewtypeITof ITqualifiedITthenITtypeITwhereITforallITexportITlabel ITdynamicITsafeITinterruptibleITunsafe ITstdcallconv ITccallconv ITcapiconvITprimcallconvITjavascriptcallconvITmdoITfamilyITroleITgroupITbyITusing ITpatternITstaticITstock ITanyclassITviaITunit ITsignature ITdependency ITrequires ITinline_prag ITopaque_prag ITspec_pragITspec_inline_prag ITsource_prag ITrules_pragITwarning_pragITdeprecated_prag ITline_prag ITcolumn_prag ITscc_prag ITunpack_pragITnounpack_prag ITann_pragITcomplete_prag ITclose_pragIToptions_pragITinclude_pragITlanguage_pragITminimal_pragIToverlappable_pragIToverlapping_pragIToverlaps_pragITincoherent_pragITctypeITcomment_line_pragITdotdotITcolonITdcolonITequalITlamITlcaseITlcasesITvbarITlarrowITrarrowITdarrowITlollyITminus ITprefixminusITbangITtildeITat ITtypeApp ITpercentITstarITdotITprojITbiglamITocurlyITccurly ITvocurly ITvccurlyITobrack ITopabrack ITcpabrackITcbrackIToparenITcparen IToubxparen ITcubxparenITsemiITcomma ITunderscore ITbackquote ITsimpleQuoteITvaridITconidITvarsymITconsymITqvaridITqconid ITqvarsym ITqconsym ITdupipvarid ITlabelvaridITcharITstring ITinteger ITrational ITprimchar ITprimstring ITprimint ITprimword ITprimfloat ITprimdoubleITopenExpQuoteITopenPatQuoteITopenDecQuoteITopenTypQuote ITcloseQuoteITopenTExpQuoteITcloseTExpQuoteITdollarITdollardollar ITtyQuote ITquasiQuote ITqQuasiQuoteITprocITrec IToparenbar ITcparenbar ITlarrowtail ITrarrowtail ITLarrowtail ITRarrowtail ITunknownITeof ITdocComment ITdocOptions ITlineCommentITblockCommentPFailedPOkwarnoptfailMsgP failLocMsgP getPState setSrcLoc getRealSrcLoc setLastToken adjustChar nextIsEOF pushLexState popLexState getLexState activeContextxtestxsetxunset mkParserOptsdisableHaddock initPragStateinitParserStategetCommentsForgetPriorCommentsForgetFinalCommentsFor getEofPos addPsMessagegetPsErrorMessages getPsMessages popContextpushModuleContext srcParseFaillexerlexerDbglexTokenStream mkParensEpAnnallocateCommentsallocatePriorCommentsallocateFinalCommentscommentToAnnotation$fOutputableToken$fMonadP$fApplicativeP $fFunctorP $fMonadPP $fEnumExtBits$fShowHdkComment$fShowLayoutContext $fShowToken $fShowOpWsPV ImpExpQcSpec ImpExpQcName ImpExpQcTypeImpExpQcWildcard ImpExpSubSpec ImpExpAbs ImpExpAll ImpExpList ImpExpAllWithDisambTDmkHsAppTyHeadPV mkHsAppTyPVmkHsAppKindTyPV mkHsOpTyPVmkUnpackednessPV DisambECPInfixOpFunArg ecpFromCmd' ecpFromExp'mkHsProjUpdatePV mkHsLamPV mkHsLetPV superInfixOp mkHsOpAppPV mkHsCasePV mkHsLamCasePV superFunArg mkHsAppPV mkHsAppTypePVmkHsIfPVmkHsDoPV mkHsParPV mkHsVarPV mkHsLitPV mkHsOverLitPVmkHsWildCardPV mkHsTySigPVmkHsExplicitListPV mkHsSplicePV mkHsRecordPV mkHsNegAppPVmkHsSectionR_PV mkHsViewPatPV mkHsAsPatPV mkHsLazyPatPV mkHsBangPatPVmkSumOrTuplePVrejectPragmaPV DisambInfixOp mkHsVarOpPV mkHsConOpPVmkHsInfixHolePVFbindECPunECPUnpackednessPragma RuleTyTmVar LRuleTyTmVarmkTyClDmkInstD mkClassDeclmkTyData mkTySynonymmkStandaloneKindSigmkTyFamInstEqn mkDataFamInst mkTyFamInst mkFamDecl mkSpliceDeclmkRoleAnnotDeclfromSpecTyVarBndrsfromSpecTyVarBndrannBindsfixValbindsAnn stmtsAnchorstmtsLoc cvTopDecls cvBindGroupmkPatSynMatchGroup mkConDeclH98 mkGadtDeclsetRdrNameSpace mkRuleBndrsmkRuleTyVarBndrscheckRuleTyVarBndrNamescheckRecordSyntaxcheckEmptyGADTscheckExpBlockArgumentscheckCmdBlockArguments checkContextcheckImportDecl checkPatterncheckPattern_detailsplaceHolderPunRhs checkValDefcheckValSigLhsmkBangTyaddUnpackednessPcheckMonadComp ecpFromExp ecpFromCmddataConBuilderCondataConBuilderDetails checkPrecPmkRecConstrOrUpdatemkRdrRecordUpdmkRdrRecordConmkInlinePragmamkOpaquePragmamkImport parseCImportmkExport mkExtNamemkModuleImpExp mkTypeImpExpcheckImportSpecmkImpExpSubSpecwarnPrepositiveQualifiedModule!failNotEnabledImportQualifiedPostfailImportQualifiedTwicewarnStarIsType failOpFewArgsrunPV hintBangPatmkMultTymkTokenLocationstarSym mkRdrGetFieldmkRdrProjection $fMonadPPV $fMonadPV$fApplicativePV$fDisambTDDataConBuilder$fDisambTDHsType$fDisambInfixOpRdrName$fDisambInfixOpHsExpr$fDisambECPPatBuilder$fDisambECPHsExpr$fDisambECPHsCmd $fFunctorPV$fFoldablePV_Result$fFunctorPV_Result$fTraversablePV_ResultlexStringLiterallexHsDocparseIdentifieraddHaddockToModule$fMonoidLowerLocBound$fSemigroupLowerLocBound$fMonoidUpperLocBound$fSemigroupUpperLocBound$fMonoidColumnBound$fSemigroupColumnBound$fMonoidLocRange$fSemigroupLocRange$fApplicativeHdkA$fHasHaddockGenLocated$fHasHaddockGenLocated0$fHasHaddockHsWildCardBndrs$fHasHaddockHsScaled$fHasHaddockGenLocated1$fHasHaddockGenLocated2$fHasHaddockGenLocated3$fHasHaddockGenLocated4$fHasHaddockHsDataDefn$fHasHaddockHsDecl$fHasHaddockGenLocated5$fHasHaddockGenLocated6$fHasHaddockGenLocated7$fHasHaddockGenLocated8$fHasHaddock[] $fFunctorHdkA $fFunctorHdkM$fApplicativeHdkM $fMonadHdkM$fShowColumnBound$fShowUpperLocBound$fShowLowerLocBound$fSemigroupHasInnerDocs$fMonoidHasInnerDocsparseModuleNoHaddockparseSignature parseImportparseStatementparseDeclarationparseExpression parsePatternparseTypeSignature parseStmt parseType parseBackpack parseHeader parseModule badMonadBindpprEqn pprContextdots$fDiagnosticDsMessageHscEnv hsc_dflags hsc_targets hsc_mod_graphhsc_IChsc_NChsc_FChsc_type_env_vars hsc_interp hsc_plugins hsc_unit_env hsc_logger hsc_hooks hsc_tmpfshsc_llvm_config$fContainsDynFlagsHscEnv$fHasLoggerHsc$fHasDynFlagsHsc $fFunctorHsc$fApplicativeHsc $fMonadHsc $fMonadIOHsc$fDiagnosticDriverMessage$fDiagnosticGhcMessage SourceErrormkSrcErrsrcErrorMessages throwErrors throwOneErrorhandleSourceError$fExceptionSourceError$fShowSourceError getImports mkPrelImportsgetOptionsFromFile getOptionstoArgscheckProcessArgsResult printMessageshandleFlagWarningsprintOrThrowDiagnosticsmkDriverPsHeaderMessage initDiagOptsinitPrintConfiginitPsMessageOptsinitTcMessageOptsinitDsMessageOptsinitDriverMessageOptsrunHscrunHsc'mkInteractiveHscEnvrunInteractiveHsc hsc_home_unithsc_home_unit_maybe hsc_unitshsc_HPThsc_HUEhsc_HUGhsc_all_home_unit_idshscUpdateHPT_lazy hscUpdateHPT hscUpdateHUGhscEPShptCompleteSigshptAllInstanceshptInstancesBelowhptRuleshptAnns hptAllThingshptSomeThingsBelowUsprepareAnnotations lookupTypelookupIfaceByModule mainModIs hscInterphscUpdateLoggerFlagshscUpdateFlags hscSetFlagshscSetActiveHomeUnithscSetActiveUnitIdhscActiveUnitId discardIC WarnErrLoggerGhcTunGhcTGhcunGhcGhcMonad getSession setSession withSessiongetSessionDynFlags modifySessionmodifySessionMwithTempSession modifyLogger pushLogHookM popLogHookMputMsgM putLogMsgM withTimingMlogDiagnostics reflectGhcreifyGhcliftGhcTprintExceptiondefaultWarnErrLogger $fGhcMonadGhc$fHasLoggerGhc$fHasDynFlagsGhc$fGhcMonadGhcT$fHasLoggerGhcT$fHasDynFlagsGhcT $fFunctorGhcT$fApplicativeGhcT $fMonadGhcT$fMonadFailGhcT$fMonadFixGhcT$fMonadThrowGhcT$fMonadCatchGhcT$fMonadMaskGhcT $fMonadIOGhcT $fFunctorGhc$fApplicativeGhc $fMonadGhc$fMonadFailGhc $fMonadFixGhc$fMonadThrowGhc$fMonadCatchGhc$fMonadMaskGhc $fMonadIOGhcCoreMfloatOutLambdasfloatOutConstantsfloatOutOverSatAppsfloatToTopLevelOnlyrunCoreMliftIOWithCount getHscEnv initRuleEnvgetExternalRuleBase getNamePprCtx getSrcSpanM addSimplCount getUniqMaskmapDynFlagsCoreMdropSimplCountgetInteractiveContextgetPackageFamInstEnvgetAnnotationsgetFirstAnnotationsmsgputMsgSfatalErrorMsgSdebugTraceMsgS$fOutputableFloatOutSwitches$fHasModuleCoreM$fHasLoggerCoreM$fHasDynFlagsCoreM$fMonadIOCoreM$fMonadUniqueCoreM$fMonadPlusCoreM$fAlternativeCoreM$fApplicativeCoreM $fMonadCoreM$fFunctorCoreM ccfModuleName ccfFuncName NamePatternPChar PWildcardPEndaddCallerCostCentres$fBinaryNamePattern$fOutputableNamePattern$fBinaryCallerCcFilter$fOutputableCallerCcFilter LintConfig l_diagOpts l_platforml_flagsl_vars WarnsAndErrsStaticPtrCheck AllowAnywhereAllowAtTopLevelRejectEverywhere LintFlagsLFlf_check_global_idslf_check_inline_loop_breakerslf_check_static_ptrslf_report_unsat_synslf_check_linearitylf_check_fixed_repLintPassResultConfig lpr_diagOpts lpr_platformlpr_makeLintFlagslpr_showLintWarnings lpr_passPprlpr_localsInScope EndPassConfigep_dumpCoreSizesep_lintPassResult ep_namePprCtx ep_dumpFlag ep_prettyPassep_passDetails endPassIOdumpPassResultlintPassResultdisplayLintResultslintCoreBindings' lintUnfoldinglintExpr lintAxioms lintAnnots$fMonadFailLintM $fMonadLintM$fApplicativeLintM$fFunctorLintM$fEqStaticPtrCheck SimplifyOptsso_dump_core_sizes so_iterationsso_modeso_pass_result_cfg so_hpt_rulesso_top_env_cfgSimplifyExprOpts se_fam_instse_modese_top_env_cfg simplifyExpr simplifyPgmCoreToDoCoreDoSimplifyCoreDoPluginPassCoreDoFloatInwardsCoreDoFloatOutwardsCoreLiberateCaseCoreDoPrintCoreCoreDoStaticArgsCoreDoCallArity CoreDoExitify CoreDoDemand CoreDoCprCoreDoWorkerWrapperCoreDoSpecialisingCoreDoSpecConstrCoreCSECoreDoRuleCheck CoreDoNothing CoreDoPasses CoreDesugarCoreDesugarOptCoreTidyCorePrepCoreAddCallerCcsCoreAddLateCcsCorePluginPass bindsOnlyPasspprPassDetails$fOutputableCoreToDoinitParserOptsendPassendPassHscEnvIOlintCoreBindingsinitEndPassConfiginitLintPassResultConfiginitLintConfigTHDocs RoleAnnotEnvDefaultingPlugin dePluginInit dePluginRun dePluginStopFillDefaultingDefaultingPluginResultDefaultingProposaldeProposalTyVardeProposalCandidates deProposalCtsTcPluginRewriteResultTcPluginNoRewriteTcPluginRewriteTotcPluginReductiontcRewriterNewWantedsTcPluginSolveResulttcPluginInsolubleCtstcPluginSolvedCtstcPluginNewCtsTcPlugin tcPluginInit tcPluginSolvetcPluginRewrite tcPluginStop TcPluginM runTcPluginMTcPluginRewriterTcPluginSolver TcPatSynInfoTPSI patsig_namepatsig_implicit_bndrspatsig_univ_bndrs patsig_reqpatsig_ex_bndrs patsig_provpatsig_body_ty TcIdSigInstTISI sig_inst_sigsig_inst_skolssig_inst_theta sig_inst_tau sig_inst_wcs sig_inst_wcx CompleteSig PartialSigsig_bndrsig_ctxtsig_loc psig_name psig_hs_ty TcSigInfoTcIdSig TcPatSynSigTcSigFun WhereFrom ImportByUserImportBySystemImportByPlugin ClosedTypeIdRhsNames IsGroupClosed IdBindingInfo NotLetBound ClosedLet NonClosedLetAGlobalATcIdATyVarATcTyCon APromotionErrtct_idtct_info ArrowCtxt NoArrowCtxtThLevel PendingStuffRnPendingUntypedRnPendingTyped TcPendingThStageSplice RunSpliceCompBrack SpliceTypeTypedUntypedTcBinderTcIdBndrTcIdBndr_ExpTypeTcTvBndr TcBinderStackTcIdSetTcIdTcRef ThBindEnv TcTypeEnvErrCtxttcl_loctcl_ctxttcl_in_gen_code tcl_tclvl tcl_th_ctxt tcl_th_bndrstcl_arrow_ctxttcl_rdrtcl_env tcl_usage tcl_bndrstcl_lietcl_errs NoSelfBootSelfBootsb_mdssb_tcs RecFieldEnvtcg_modtcg_semantic_modtcg_src tcg_rdr_env tcg_default tcg_fix_env tcg_field_env tcg_type_env tcg_inst_envtcg_fam_inst_env tcg_ann_env tcg_exports tcg_importstcg_dus tcg_used_grestcg_keep tcg_th_usedtcg_th_splice_usedtcg_th_needed_deps tcg_dfun_n tcg_mergedtcg_rn_exportstcg_rn_imports tcg_rn_declstcg_dependent_filestcg_th_topdeclstcg_th_foreign_filestcg_th_topnamestcg_th_modfinalizerstcg_th_coreplugins tcg_th_statetcg_th_remote_state tcg_th_docs tcg_ev_binds tcg_tr_module tcg_bindstcg_sigs tcg_imp_specs tcg_warnstcg_annstcg_tcs tcg_ksigs tcg_insts tcg_fam_insts tcg_rules tcg_fords tcg_patsyns tcg_doc_hdrtcg_hpc tcg_self_boottcg_maintcg_safe_infertcg_safe_infer_reasonstcg_tc_plugin_solverstcg_tc_plugin_rewriterstcg_defaulting_pluginstcg_hf_plugins tcg_top_loc tcg_static_wctcg_complete_matches tcg_cc_sttcg_next_wrapper_numFrontendResultFrontendTypecheckIfLclEnvif_modif_bootif_loc if_nsubstif_implicits_env if_tv_env if_id_envIfGblEnvif_doc if_rec_types RewriteEnvREre_loc re_flavour re_eq_rel re_rewritersEnvenv_topenv_umenv_gblenv_lclTcMRnMIfLIfGIfMTcRnTcRnIf NameShape ns_mod_name ns_exportsns_map TcPluginOkTcPluginContradictiontcVisibleOrphanMods bootExports pushErrCtxtpushErrCtxtSameOriginremoveBindingShadowing getPlatformtopStage topAnnStagetopSpliceStageimpLevel outerLevelthLeveltcTyThingTyCon_maybepprTcTyThingCategorytcTyThingCategory mkModDepsemptyImportAvailsplusImportAvails isPartialSighasCompleteSigunsafeTcPluginTcMmkRoleAnnotEnvemptyRoleAnnotEnvlookupRoleAnnot getRoleAnnots lintGblEnv$fContainsModuleEnv$fContainsLoggerEnv$fContainsHooksEnv$fContainsDynFlagsEnv$fHasOccNameTcBinder$fOutputableTcBinder$fOutputableThStage$fOutputableIdBindingInfo$fOutputableTcTyThing$fOutputableWhereFrom$fOutputableTcIdSigInfo$fOutputableTcIdSigInst$fOutputableTcPatSynInfo$fOutputableTcSigInfo$fOutputableDefaultingProposal$fContainsModuleTcGblEnv$fFunctorTcPluginM$fApplicativeTcPluginM$fMonadTcPluginM$fMonadFailTcPluginMHoleFitPluginR hfPluginInit hfPluginRun hfPluginStop candPlugin fitPlugin FitPlugin CandPlugin TypedHoleth_relevant_cts th_implicsth_holepprHoleFitCandhfIsLcl$fOutputableTypedHole$fOrdHoleFitCandidate$fHasOccNameHoleFitCandidate$fNamedThingHoleFitCandidate$fOutputableHoleFitCandidate$fEqHoleFitCandidate $fOrdHoleFit$fOutputableHoleFit $fEqHoleFitFrontendPluginfrontendFrontendPluginAction staticPluginsexternalPlugins loadedPluginsloadedPluginDeps CorePluginPluginRecompileForceRecompileNoForceRecompileMaybeRecompilespPluginExternalPluginepPluginepUnitepModulelpPluginlpModulePluginWithArgspaPlugin paArgumentsinstallCoreToDostcPlugindefaultingPlugin holeFitPlugin driverPluginpluginRecompileparsedResultActionrenamedResultActiontypeCheckResultActionspliceRunActioninterfaceLoadAction ParsedResultparsedResultModuleparsedResultMessages PsMessages psWarningspsErrorsCommandLineOption lpModuleNamepluginRecompile' purePlugin impurePlugin flagRecompile defaultPluginkeepRenamedSourcepluginsWithArgs withPlugins mapPlugins withPlugins_defaultFrontendPluginloadExternalPlugins$fMonoidPluginRecompile$fSemigroupPluginRecompile$fOutputablePluginRecompile PhaseHookTPhaseT_Unlit T_FileArgsT_CppT_HsPp T_HscRecompT_Hsc T_HscPostTc T_HscBackendT_CmmCppT_CmmT_CcT_AsT_Js T_LlvmOpt T_LlvmLlc T_LlvmMangleT_MergeForeigndsForeignsHooktcForeignImportsHooktcForeignExportsHookhscFrontendHookhscCompileCoreExprHookghcPrimIfaceHook runPhaseHook runMetaHooklinkHookrunRnSpliceHookgetValueSafelyHookcreateIservProcessHook stgToCmmHookcmmToRawCmmHookDsForeignsHookptrToIntgetClosureDataFromHeapObjectunpackClosure#AnyGHC.PtrPtrbytestring-0.11.3.1Data.ByteString.Internal ByteStringutf8DecodeChar#Addr# ByteArray#word64Base62LenlockPackageDbWithdecodeFromFilebinary-0.8.9.0Data.Binary.Get.InternalGet short_usage$restrictedDamerauLevenshteinDistance hashInt32Data.ByteString.Short.InternalShortByteString mkZFastStringGHC.IO.Handle.TypesHandleRDoc reduceDocfirst hasAsciiSpace array-0.5.4.0Data.Array.BaseUArrayFixIOException GHC.Stack.CCS GHC.GenericsGenericData.Typeable.InternalTypeablehashInstantiationsseekBinNoExpandputPrim uniqueMasksignalHandlersRefCountisOneLineRealSpanisPointRealSpann_sortn_occn_uniqn_loc TaggedVal NotExportedIdScope realUniqueBitFieldbitfieldvanillaCafInfozapFragileUnfoldingcompareFractionalLit defaultFvDmdCallviewCallmkCall isCardNonOnce isCardNonAbs seqSubDmd botSubDmd strictifyCardglbCard viewDmdPair polyFieldDmdunboxDeeplySubDmdplusDivergencemultDivergence exnDmdTypeetaExpandDmdType defaultArgDmddecreaseArityDmdTypetransferBoxitymk_derivokIdOccokIdChar reservedIds reservedOpsisDashes maybeToListmapMaybe listToMaybe isNothingisJustfromJust catMaybesgenSymmkUniqSMandMfilterMfitsIn kindPrimRep plusWithInf mulWithInf coreFullViewcore_full_viewexpandSynTyConApp_maybe expand_synisTyConKeyApp_maybeisNullaryTyConKeyAppisBoxedRuntimeRep_maybe mk_cast_tysplitForAllTyVarsfun_kind_arg_flagsgetRuntimeRep_maybegetLevity_maybefvVarAcc anyTy_maybe checkAnyTytcTyFamInstsAndVisXtcTyConAppTyFamInstsAndVisX withTiming'log_hook dump_hook trace_hookgenerated_dumps trace_flushdefaultTraceFlushdumpSDocWithStylechooseDumpFileshowMsgEnvelope pickBothGREVMaybeviewConsviewSnocshouldMangleSelectorNamesD:R:NoGhcTcGhcPass widenRealSpanunlines'mkForAllCo_NoReflmkHomoForAllCos_NoRefldowngradeRole_maybe instCoercion instCoercionsextendLiftingContextEx ty_co_substliftCoSubstTyVarBndrUsingliftCoSubstCoVarBndrUsingisIfaceConstraintKinddefaultIfaceTyVarsOfKind liftedRep_ty lifted_ty ppr_itv_bndrs ppr_equalityppr_iface_tc_apppprSumpprTupleif_print_coercionsAlgTyCon FamilyTyCon SynonymTyCon PrimTyConPromotedDataContcRolesalgTcGadtSyntaxalgTcStupidThetaalgTcRhs algTcFlavoursynTcRhs famTcFlav famTcParentfamTcInj primRepNamedataCon promDcInfotcTyConFlavourokParenttyConFieldLabelEnvfieldsOfAlgTcRhs kindTyConKeysisConcreteTyConFlavourtcFlavourMustBeSaturated TickishPassD:R:XBreakpointTickishPassStg flavourIndexpprFlavourCoreppCostCentreLblppFlavourLblComponent narrowLit' TypeOrderingTLTTEQTEQXTGTtcEqTypeNoSyns tc_eq_typecloseOverKindsFV pcPrimTyCon pcPrimTyCon0pcPrimTyCon_LevPolyLastArgunboxedTupleSumKind cTupleArr mkSumTyConOccmkSumDataConOcc unboxedSumArrmk_sumzeroBitRepTyConspecialBoxingDataCon_maybeextractPromotedListpcDataConWithFixitynewLocaldataConSrcToImplBang dataConArgRep mkUbxSumAltTyConCpr_ FlatConCprdcTagdataConKindEqSpecCBPGCGpruneDelis_null tc_match_tystc_match_tys_x tc_unify_tys don'tBeSoSure ty_co_matchsubstForAllCoBndrUncheckedsubstVarBndrUncheckedsubstTyVarBndrUsingsubstCoVarBndrUsingsizeAnn pprTopBindscollectValBinders TypeEqualityTNEQTypeMapX trieMapView exprIsHNFlikediffExpr diffIdInfo diffUnfoldlocBindNormMrm_empty normaliseRMRMEmptyExprSize _es_size_is_es_args _es_discountlitSizecallSizejumpSize traceInlinesoe_optssoe_inl soe_subst soe_rec_ids substIdBndrexprsFVsexprSomeFreeVarsDSetexprsSomeFreeVarsDSet exprOrphNamesruleFVsrulesFVsdecideJoinPointHoodATidStateHackOneShotInfo safeArityType trimArityType andArityTypefindRhsArityEnvpedanticBottoms myExprIsCheap myIsCheapAppmkEtaWWEtaInfocanEtaReduceToArity ATLamInfocombineWithDemandOneShotsmkCoreAppTypedmkCoreBoxedTuplewrapBoxboxTymkSmallTupleSelectormkSmallTupleSelector1mkSmallTupleCase mkExceptionIddivergingIdInfoaBSENT_ERROR_IDReprFlagSymFlagopt_co1opt_co2opt_co3 opt_co4_wrapopt_co4 opt_phantomwrapRole chooseRolepsArgs AsmTempLabelAsmTempDerivedLabelIdLabelLocalBlockLabel CmmLabelInfoCmmInfo CmmRetInfoCmmRetCmmCode CmmClosure CmmPrimCallRtsSelectorInfoTableRtsApInfoTable RtsApFast InfoTableEntryLocalInfoTable LocalEntry IdTickyInfoConEntry ConInfoTable ClosureTableBlockInfoTableTickyRednCountsTickyInferedTagRtsLabel ForeignLabel ModuleLabelDynamicLinkerLabel PicBaseLabelDeadStripPreventer HpcTicksLabelSRTLabelLargeBitmapLabel labelTypeminClosureSize&&&findAnnPayloadsskipBOMScDepth lGRHSCtOriginpprCtO collect_bindshsDataDefnBindersppr_hs_args_prefix_appppr_single_hs_argsplitLHsQualTy_KP InstMatches instMatches instGuardspruneOverlappedMatches overridesinsert_overlappingUnitPrecedenceMapRevIndexModuleNameProvidersMap UnitConfigunitConfigPlatformArchOSunitConfigWaysunitConfigAllowVirtualunitConfigProgramNameunitConfigGlobalDBunitConfigGHCDirunitConfigDBNameunitConfigAutoLinkunitConfigDistrustAllunitConfigHideAllunitConfigHideAllPluginsunitConfigDBCacheunitConfigFlagsDBunitConfigFlagsExposedunitConfigFlagsIgnoredunitConfigFlagsTrustedunitConfigFlagsPluginsUnitVisibility uv_renamingsuv_package_nameuv_requirements uv_explicit VisibilityMapfromExposedModulesfromReexportedModulesfromFlag originVisible originEmpty mkUnitInfoMap findPackagesselectPackagesrenameUnitInfosortByPreferencecompareByPreference reverseDeps removeUnitsdepsNotAvailabledepsAbiMismatchmergeDatabasesvalidateDatabasemkModuleNameProvidersMap mkUnusableModuleNameProvidersMap addListTomkModMapadd_unit improveUnit' mkHomeUnitlibraryDirsForWay setLanguagesetSafeHaskellcombineSafeFlagsupdOptLevelChanged safeFlagCheck allFlagsDepsunrecognisedWarningflagSpec flagSpec'warnSpec warnSpec' depFlagSpecOp depFlagSpec depWarnSpec subWarnSpecdepFlagSpecOp' depFlagSpec'depFlagSpecCond flagGhciSpec flagGhciSpec'flagHiddenSpecflagHiddenSpec'hideFlagnegatableFlagsDeps dFlagsDeps fHoleFlagslanguageFlagsDepssafeHaskellFlagsDepsvalidHoleFitDefaults enableDLintmkFlagtmp_dirs_to_cleantmp_next_suffixtmp_files_to_cleanmergeFilesToCleandirectory-1.3.6.2System.DirectorygetTemporaryDirectorystderrSupportsAnsiColors'parseIntdropEqplatformJSSupported forceState liftIOEnv emptyWriter ModIfaceCore ruleCantMatchmatchNcomputeCbvInfoCoreMapXCoreMapGNumOpsnumAddnumSubnumMulnumAndnumOrnumNeg numLitTypeOpValBinOpAppshiftRightLogicalNative boundsCmp int8Result int16Result int32Result intCResult word8Result word16Result word32Result wordResult wordCResultsemiInversePrimOpextendNarrowPassthroughnarrowSubsumesAndsameArgIdempotentCommutisBignumLiteralisNumberLiteralisLitNumConAppleftIdentityCPlatformrightIdentityCPlatformidentityCPlatform mkNumLiteral mkPrimOpId primOpIdsicExtendGblRdrEnv home_imps tyCoFVsOfCt tyCoFVsOfCtEv tyCoFVsOfCtstyCoFVsOfCtEvs tyCoFVsOfWCtyCoFVsOfImplic pprPatBndrconPatNeedsParensisIrrefutableHsPat'D:R:XFunBindGhcPassGhcPassD:R:XFunBindGhcPassGhcPass0 initNabla initTmState decEqualityeqPmLit eqConLikeSharedlookupCycleBreakerVarsuggestInstantiatedWithHasTypeQGDiagnosticCodeGhcDiagnosticCode ConRecursInto commafyWithmissingSignatureWarningFlagpprSolverReportWithCtxtpprTcSolverReportMsgpprPotentialInstancespotentialInstancesErrMsgpotentials_msg_with_options%overlapping_but_not_more_specific_msgpprExpectedActualInfoexpandSynonymsToMatchformat_frr_errcannotMakeDerivedInstanceHeraldpprImportSuggestionpprSimilarName PmExprList pmExprAsListpprRefutableShapesprettifyRefuts getCleanNamepprPmVar NilTerminatedWcVarTerminatedpprLygSequencehptModulesBelowD:R:XRhsClosureCodeGen scopeToPaths scopeUniquesFlatSwitchPlanmaxJumpTableHoleminJumpTableSizeminJumpTableOffsetBody'foldBlockNodesF3contEvalContext st_max_ticksst_read_ruleenv simplTick makeTrivial le_platform le_diagOptslintRhs lintCoreExpr lintJoinLams lintCastExprcheckCanEtaExpandcheckCaseLinearity lintValApp withoutAnnotsinitL mk_cast_errsafeTryis_ctypeextQext1Qext2Qext1ext2 ExtsBitmapGenSemicnested_comment_logictyConToDataCon checkTyVarscheckUnboxedLitPatcheckNotPromotedDataCon getIdentifiermjmzmu toUnicodeAnnmomc commentsPAHappyStk ColumnBoundHdkWarnHdkStflattenBindsAndSigshandleSeqHValueStatus spawnIServ