fortran-src-extras-0.4.1: Common functions and utils for fortran-src.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Language.Fortran.Extras.JSON

Description

Aeson instances for the Fortran AST defined in fortran-src.

As of fortran-src v0.10.0, most node types store an annotation and a SrcSpan. The general approach to instance design is as follows:

  • Annotations are placed in anno fields.
  • Spans are placed in span fields.
  • Where possible, we use a generic derivation that takes field names from the data type. (This works for most single-constructor product types.)
  • For sum types, an object is created storing an annotation, span and tag. The tag indicates the constructor being used. The other fields are then "flattened" into the tag object. (This isn't what Aeson's generic derivation does by default due to safety concerns, but it can be nicer for JSON.)

Orphan instances

ToJSON BaseType Source # 
Instance details

ToJSON BinaryOp Source # 
Instance details

ToJSON Intent Source # 
Instance details

ToJSON MetaInfo Source # 
Instance details

ToJSON ModuleNature Source # 
Instance details

ToJSON Only Source # 
Instance details

ToJSON UnaryOp Source # 
Instance details

ToJSON a => ToJSON (AllocOpt a) Source # 
Instance details

ToJSON a => ToJSON (Argument a) Source # 
Instance details

ToJSON a => ToJSON (ArgumentExpression a) Source # 
Instance details

ToJSON a => ToJSON (Attribute a) Source # 
Instance details

ToJSON a => ToJSON (Block a) Source # 
Instance details

ToJSON a => ToJSON (CommonGroup a) Source # 
Instance details

ToJSON a => ToJSON (ControlPair a) Source # 
Instance details

ToJSON a => ToJSON (DataGroup a) Source # 
Instance details

ToJSON a => ToJSON (Declarator a) Source # 
Instance details

ToJSON a => ToJSON (DimensionDeclarator a) Source # 
Instance details

ToJSON a => ToJSON (DoSpecification a) Source # 
Instance details

ToJSON a => ToJSON (Expression a) Source # 
Instance details

ToJSON a => ToJSON (FlushSpec a) Source # 
Instance details

ToJSON a => ToJSON (ForallHeader a) Source # 
Instance details

ToJSON a => ToJSON (ForallHeaderPart a) Source # 
Instance details

ToJSON a => ToJSON (FormatItem a) Source # 
Instance details

ToJSON a => ToJSON (ImpElement a) Source # 
Instance details

ToJSON a => ToJSON (ImpList a) Source # 
Instance details

ToJSON a => ToJSON (Index a) Source # 
Instance details

ToJSON a => ToJSON (Namelist a) Source # 
Instance details

ToJSON a => ToJSON (Prefix a) Source # 
Instance details

ToJSON a => ToJSON (ProcDecl a) Source # 
Instance details

ToJSON a => ToJSON (ProcInterface a) Source # 
Instance details

ToJSON a => ToJSON (ProgramFile a) Source # 
Instance details

ToJSON a => ToJSON (ProgramUnit a) Source # 
Instance details

ToJSON a => ToJSON (Selector a) Source # 
Instance details

ToJSON a => ToJSON (Statement a) Source # 
Instance details

ToJSON a => ToJSON (StructureItem a) Source # 
Instance details

ToJSON a => ToJSON (Suffix a) Source # 
Instance details

ToJSON a => ToJSON (TypeSpec a) Source # 
Instance details

ToJSON a => ToJSON (UnionMap a) Source # 
Instance details

ToJSON a => ToJSON (Use a) Source # 
Instance details

Methods

toJSON :: Use a -> Value #

toEncoding :: Use a -> Encoding #

toJSONList :: [Use a] -> Value #

toEncodingList :: [Use a] -> Encoding #

ToJSON a => ToJSON (Value a) Source # 
Instance details

ToJSON (Comment a) Source # 
Instance details