Opened 4 years ago

Closed 16 months ago

Last modified 16 months ago

#8207 closed feature request (fixed)

Pretty Printer for textual version of Language (name) in DynFlags

Reported by: Fuuzetsu Owned by: seraphime
Priority: low Milestone: 8.0.1
Component: GHC API Version: 7.7
Keywords: newcomer Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:

Description (last modified by bgamari)

I feel that the GHC API could benefit from a Show instance for Language in DynFlags.hs.

Currently, if we want to display the language being used we have to do something like

          foo inf = case hmi_language inf of
            Nothing -> Nothing
            Just Haskell98 -> Just "Haskell98"
            Just Haskell2010 -> Just "Haskell2010"

This is pretty much just the Show instance (over Maybe) and Haskell can derive it for us automatically: we just need to change deriving Enum to deriving (Enum, Show). The above solution is not the most robust ever as if this data type is ever changed, this starts to form an incomplete pattern. If we have a catch all _, GHC complains about overlapping patterns. Easily solved with show <$> hmi_language inf.

Change History (6)

comment:1 Changed 4 years ago by carter

Summary: Show instance for Language in DynFlagsPretty Printer for textual version of Language (name) in DynFlags

to further clarify, based upon further discussion on IRC,

[23:39:41] <Fuuzetsu>	 Yep, all I want is Language -> String out of 
only having DynFlags which provides Maybe Language.

Its worth noting that this probably shouldn't be a show instance, because Language Standards need not have only the form (capital letter)(aphanumeric*).

The key point is a function to pretty print the name of the Language should be exposed. And probably more future proof to funny names if its not done via Show specifically.


renderLanguageName :: Language -> String 

or the like

comment:2 Changed 4 years ago by simonpj

OK with me; maybe send patch?


comment:3 Changed 20 months ago by thomie

Keywords: newcomer added

comment:4 Changed 17 months ago by seraphime

Owner: set to seraphime

comment:5 Changed 16 months ago by bgamari

Description: modified (diff)
Milestone: 8.0.1
Resolution: fixed
Status: newclosed

comment:6 Changed 16 months ago by bgamari

An Outputable instance for this was added in 2ad46a860f0b648aaeff224109b6045da30304d7.

Note: See TracTickets for help on using tickets.