Skip to content

Fix error localization #218

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 21, 2018
Merged

Fix error localization #218

merged 1 commit into from
Jan 21, 2018

Conversation

Gabriella439
Copy link
Collaborator

Related to #217

Two type-checking steps shift and substitute expressions:

  • Function application
  • let expressions (only more recently, in acd06c)

However, the shift and subst functions have the undesirable property
that they (unnecessarily) strip Note constructors. As a result, any
type-checking step that involves either Let or App may produce poor error
localization.

The solution is to modify shift and subst to note remove Note
constructors and instead split that functionality out into a new
denote function. Fixing this greatly improves error localization.

Related to #217

Two type-checking steps shift and substitute expressions:

* Function application
* `let` expressions (only more recently, in acd06c)

However, the `shift` and `subst` functions have the undesirable property
that they (unnecessarily) strip `Note` constructors.  As a result, any
type-checking step that involves either `Let` or `App` may produce poor error
localization.

The solution is to modify `shift` and `subst` to note remove `Note`
constructors and instead split that functionality out into a new
`denote` function.  Fixing this greatly improves error localization.
@ocharles
Copy link
Member

This is a definite improvement! Here's a diff of a meaty error it helped with.

Before

Error: ❰Optional❱ element has the wrong type

Explanation: An ❰Optional❱ element must have a type matching the type annotation
                                                                                
For example, this is a valid ❰Optional❱ value:                                  
                                                                                
                                                                                
    ┌────────────────────────┐                                                  
    │ [1] : Optional Integer │  ❰1❱ is an ❰Integer❱, which matches the type     
    └────────────────────────┘                                                  
                                                                                
                                                                                
... but this is not a valid ❰Optional❱ value:                        
                                                                                
                                                                                
    ┌────────────────────────────┐                                              
    │ ["ABC"] : Optional Integer │  ❰"ABC"❱ is not an ❰Integer❱             
    └────────────────────────────┘                                              
                                                                                
                                                                                
Your ❰Optional❱ element should have this type:                                  
                                                                                
↳ { autogen-modules : List Text, build-dependencies : List { bounds : VersionRange, package : Text }, build-tool-depends : List { component : Text, package : Text, version : VersionRange }, build-tools : List { exe : Text, version : VersionRange }, buildable : Bool, c-sources : List Text, cc-options : List Text, compiler-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } }, cpp-options : List Text, default-extensions : List <>, default-language : Optional < Haskell2010 : {} | Haskell98 : {} >, exposed-modules : List Text, extra-framework-dirs : List Text, extra-ghci-libraries : List Text, extra-lib-dirs : List Text, extra-libraries : List Text, frameworks : List Text, hs-source-dirs : List Text, include : List Text, include-dirs : List Text, install-includes : List Text, js-sources : List Text, ld-options : List Text, name : Optional Text, other-extensions : List <>, other-languages : List < Haskell2010 : {} | Haskell98 : {} >, other-modules : List Text, pkgconfig-depends : List { name : Text, version : VersionRange }, profiling-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } }, reexported-modules : List { name : Text, original : { name : Text, package : Optional Text } }, shared-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } } }                                                                
                                                                                
... but the element you provided:                                               
                                                                                
↳ { autogen-modules = [] : List Text, build-tool-depends = [] : List { component : Text, package : Text, version : VersionRange }, build-tools = [] : List { exe : Text, version : VersionRange }, buildable = True, c-sources = [] : List Text, cc-options = [] : List Text, compiler-options = { GHC = { build-options = [] : List Text }, GHCJS = { build-options = [] : List Text }, HBC = { build-options = [] : List Text }, Helium = { build-options = [] : List Text }, Hugs = { build-options = [] : List Text }, JHC = { build-options = [] : List Text }, LHC = { build-options = [] : List Text }, NHC = { build-options = [] : List Text }, UHC = { build-options = [] : List Text }, YHC = { build-options = [] : List Text } }, cpp-options = [] : List Text, default-extensions = [] : List <>, default-language = [] : Optional < Haskell2010 : {} | Haskell98 : {} >, extra-framework-dirs = [] : List Text, extra-ghci-libraries = [] : List Text, extra-lib-dirs = [] : List Text, extra-libraries = [] : List Text, frameworks = [] : List Text, hs-source-dirs = [] : List Text, include = [] : List Text, include-dirs = [] : List Text, install-includes = [] : List Text, js-sources = [] : List Text, ld-options = [] : List Text, other-extensions = [] : List <>, other-languages = [] : List < Haskell2010 : {} | Haskell98 : {} >, other-modules = [] : List Text, pkgconfig-depends = [] : List { name : Text, version : VersionRange }, profiling-options = { GHC = { build-options = [] : List Text }, GHCJS = { build-options = [] : List Text }, HBC = { build-options = [] : List Text }, Helium = { build-options = [] : List Text }, Hugs = { build-options = [] : List Text }, JHC = { build-options = [] : List Text }, LHC = { build-options = [] : List Text }, NHC = { build-options = [] : List Text }, UHC = { build-options = [] : List Text }, YHC = { build-options = [] : List Text } }, shared-options = { GHC = { build-options = [] : List Text }, GHCJS = { build-options = [] : List Text }, HBC = { build-options = [] : List Text }, Helium = { build-options = [] : List Text }, Hugs = { build-options = [] : List Text }, JHC = { build-options = [] : List Text }, LHC = { build-options = [] : List Text }, NHC = { build-options = [] : List Text }, UHC = { build-options = [] : List Text }, YHC = { build-options = [] : List Text } } } ⫽ { build-dependencies = [{ Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.base, { Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.Cabal, { Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.dhall, { Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.text, { Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.bytestring, { bounds = majorVersion [+0, +5], package = "containers" }, { bounds = majorVersion [+0, +12], package = "vector" }, { bounds = majorVersion [+1, +7], package = "trifecta" }, { bounds = majorVersion [+0, +3], package = "text-format" }, { bounds = majorVersion [+0, +5, +2], package = "transformers" }], compiler-options = { GHC = { build-options = [] : List Text }, GHCJS = { build-options = [] : List Text }, HBC = { build-options = [] : List Text }, Helium = { build-options = [] : List Text }, Hugs = { build-options = [] : List Text }, JHC = { build-options = [] : List Text }, LHC = { build-options = [] : List Text }, NHC = { build-options = [] : List Text }, UHC = { build-options = [] : List Text }, YHC = { build-options = [] : List Text } } ⫽ { GHC = { build-options = ["-Wall", "-fno-warn-name-shadowing"] } }, exposed-modules = ["Distribution.Package.Dhall"], hs-source-dirs = ["lib"], other-modules = ["Dhall.Extra"], reexported-modules = [] : List { name : Text, original : { name : Text, package : Optional Text } } }                                                                
                                                                                
... has this type instead:                                                      
                                                                                
↳ { autogen-modules : List Text, build-dependencies : List { bounds : VersionRange, package : Text }, build-tool-depends : List { component : Text, package : Text, version : VersionRange }, build-tools : List { exe : Text, version : VersionRange }, buildable : Bool, c-sources : List Text, cc-options : List Text, compiler-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } }, cpp-options : List Text, default-extensions : List <>, default-language : Optional < Haskell2010 : {} | Haskell98 : {} >, exposed-modules : List Text, extra-framework-dirs : List Text, extra-ghci-libraries : List Text, extra-lib-dirs : List Text, extra-libraries : List Text, frameworks : List Text, hs-source-dirs : List Text, include : List Text, include-dirs : List Text, install-includes : List Text, js-sources : List Text, ld-options : List Text, other-extensions : List <>, other-languages : List < Haskell2010 : {} | Haskell98 : {} >, other-modules : List Text, pkgconfig-depends : List { name : Text, version : VersionRange }, profiling-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } }, reexported-modules : List { name : Text, original : { name : Text, package : Optional Text } }, shared-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } } }                                                                

────────────────────────────────────────────────────────────────────────────────

let empty-package = ./dhall/empty-package.dhall 

in  let common-deps =
          { Cabal      = { bounds = majorVersion [ +2, +0 ], package = "Cabal" }
          , base       = { bounds = majorVersion [ +4, +10 ], package = "base" }
          , bytestring =
              { bounds = majorVersion [ +0, +10 ], package = "bytestring" }
          , dhall      = { bounds = majorVersion [ +1, +8 ], package = "dhall" }
          , text       = { bounds = majorVersion [ +1, +2 ], package = "text" }
          }

in  let gitHub-project = ./dhall/gitHubProject.dhall 

in    gitHub-project { owner = "ocharles", repo = "dhall-to-cabal" }
    ⫽ { executables =
          [   ./dhall/defaults/BuildInfo 
            ⫽ { build-dependencies =
                  [ common-deps.base
                  , { bounds = anyVersion, package = "dhall-to-cabal" }
                  , { bounds  = majorVersion [ +0, +13, +2 ]
                    , package = "optparse-applicative"
                    }
                  , common-deps.text
                  , common-deps.dhall
                  , common-deps.Cabal
                  ]
              , hs-source-dirs     = [ "exe" ]
              , main-is            = "Main.hs"
              , name               = "dhall-to-cabal"
              , scope              = < Public = {=} | Private : {} >
              }
          ]
      , library     =
          [   ./dhall/defaults/BuildInfo 
            ⫽ { build-dependencies =
                  [ common-deps.base
                  , common-deps.Cabal
                  , common-deps.dhall
                  , common-deps.text
                  , common-deps.bytestring
                  , { bounds = majorVersion [ +0, +5 ], package = "containers" }
                  , { bounds = majorVersion [ +0, +12 ], package = "vector" }
                  , { bounds = majorVersion [ +1, +7 ], package = "trifecta" }
                  , { bounds  = majorVersion [ +0, +3 ]
                    , package = "text-format"
                    }
                  , { bounds  = majorVersion [ +0, +5, +2 ]
                    , package = "transformers"
                    }
                  ]
              , compiler-options   =
                    ./dhall/defaults/CompilerOptions 
                  ⫽ { GHC =
                        { build-options =
                            [ "-Wall", "-fno-warn-name-shadowing" ]
                        }
                    }
              , exposed-modules    = [ "Distribution.Package.Dhall" ]
              , hs-source-dirs     = [ "lib" ]
              , other-modules      = [ "Dhall.Extra" ]
              , reexported-modules =
                  [] : List
                       { name     : Text
                       , original : { name : Text, package : Optional Text }
                       }
              }
          ] : Optional ./dhall/types/Library 
      , license     =
            < MIT               = {=}
            | AGPL              : Optional (List Natural)
            | AllRightsReserved : {}
            | Apache            : Optional (List Natural)
            | BSD2              : {}
            | BSD3              : {}
            | BSD4              : {}
            | GPL               : Optional (List Natural)
            | ISC               : {}
            | LGPL              : Optional (List Natural)
            | MPL               : List Natural
            | Other             : {}
            | PublicDomain      : {}
            | Unspecified       : {}
            >
          : < AGPL              : Optional (List Natural)
            | AllRightsReserved : {}
            | Apache            : Optional (List Natural)
            | BSD2              : {}
            | BSD3              : {}
            | BSD4              : {}
            | GPL               : Optional (List Natural)
            | ISC               : {}
            | LGPL              : Optional (List Natural)
            | MIT               : {}
            | MPL               : List Natural
            | Other             : {}
            | PublicDomain      : {}
            | Unspecified       : {}
            >
      , package     = { name = "dhall-to-cabal", version = [ +0, +1, +0 ] }
      , tests       =
          [   ./dhall/defaults/BuildInfo 
            ⫽ { build-dependencies =
                  [ common-deps.bytestring
                  , common-deps.base
                  , common-deps.Cabal
                  , common-deps.text
                  , { bounds = majorVersion [ +0, +11 ], package = "tasty" }
                  , { bounds = majorVersion [ +1, +4 ], package = "filepath" }
                  , { bounds = anyVersion, package = "dhall-to-cabal" }
                  , { bounds  = majorVersion [ +2, +3 ]
                    , package = "tasty-golden"
                    }
                  ]
              , hs-source-dirs     = [ "golden-tests" ]
              , main-is            = "GoldenTests.hs"
              , name               = "golden-tests"
              , profiling-options  = ./dhall/defaults/CompilerOptions 
              , shared-options     = ./dhall/defaults/CompilerOptions 
              }
          ]
      }

(input):1:5

After

Error: ❰Optional❱ element has the wrong type

Explanation: An ❰Optional❱ element must have a type matching the type annotation
                                                                                
For example, this is a valid ❰Optional❱ value:                                  
                                                                                
                                                                                
    ┌────────────────────────┐                                                  
    │ [1] : Optional Integer │  ❰1❱ is an ❰Integer❱, which matches the type     
    └────────────────────────┘                                                  
                                                                                
                                                                                
... but this is not a valid ❰Optional❱ value:                        
                                                                                
                                                                                
    ┌────────────────────────────┐                                              
    │ ["ABC"] : Optional Integer │  ❰"ABC"❱ is not an ❰Integer❱             
    └────────────────────────────┘                                              
                                                                                
                                                                                
Your ❰Optional❱ element should have this type:                                  
                                                                                
↳ { autogen-modules : List Text, build-dependencies : List { bounds : VersionRange, package : Text }, build-tool-depends : List { component : Text, package : Text, version : VersionRange }, build-tools : List { exe : Text, version : VersionRange }, buildable : Bool, c-sources : List Text, cc-options : List Text, compiler-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } }, cpp-options : List Text, default-extensions : List <>, default-language : Optional < Haskell2010 : {} | Haskell98 : {} >, exposed-modules : List Text, extra-framework-dirs : List Text, extra-ghci-libraries : List Text, extra-lib-dirs : List Text, extra-libraries : List Text, frameworks : List Text, hs-source-dirs : List Text, include : List Text, include-dirs : List Text, install-includes : List Text, js-sources : List Text, ld-options : List Text, name : Optional Text, other-extensions : List <>, other-languages : List < Haskell2010 : {} | Haskell98 : {} >, other-modules : List Text, pkgconfig-depends : List { name : Text, version : VersionRange }, profiling-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } }, reexported-modules : List { name : Text, original : { name : Text, package : Optional Text } }, shared-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } } }                                                                
                                                                                
... but the element you provided:                                               
                                                                                
↳ { autogen-modules = [] : List Text, build-tool-depends = [] : List { component : Text, package : Text, version : VersionRange }, build-tools = [] : List { exe : Text, version : VersionRange }, buildable = True, c-sources = [] : List Text, cc-options = [] : List Text, compiler-options = { GHC = { build-options = [] : List Text }, GHCJS = { build-options = [] : List Text }, HBC = { build-options = [] : List Text }, Helium = { build-options = [] : List Text }, Hugs = { build-options = [] : List Text }, JHC = { build-options = [] : List Text }, LHC = { build-options = [] : List Text }, NHC = { build-options = [] : List Text }, UHC = { build-options = [] : List Text }, YHC = { build-options = [] : List Text } }, cpp-options = [] : List Text, default-extensions = [] : List <>, default-language = [] : Optional < Haskell2010 : {} | Haskell98 : {} >, extra-framework-dirs = [] : List Text, extra-ghci-libraries = [] : List Text, extra-lib-dirs = [] : List Text, extra-libraries = [] : List Text, frameworks = [] : List Text, hs-source-dirs = [] : List Text, include = [] : List Text, include-dirs = [] : List Text, install-includes = [] : List Text, js-sources = [] : List Text, ld-options = [] : List Text, other-extensions = [] : List <>, other-languages = [] : List < Haskell2010 : {} | Haskell98 : {} >, other-modules = [] : List Text, pkgconfig-depends = [] : List { name : Text, version : VersionRange }, profiling-options = { GHC = { build-options = [] : List Text }, GHCJS = { build-options = [] : List Text }, HBC = { build-options = [] : List Text }, Helium = { build-options = [] : List Text }, Hugs = { build-options = [] : List Text }, JHC = { build-options = [] : List Text }, LHC = { build-options = [] : List Text }, NHC = { build-options = [] : List Text }, UHC = { build-options = [] : List Text }, YHC = { build-options = [] : List Text } }, shared-options = { GHC = { build-options = [] : List Text }, GHCJS = { build-options = [] : List Text }, HBC = { build-options = [] : List Text }, Helium = { build-options = [] : List Text }, Hugs = { build-options = [] : List Text }, JHC = { build-options = [] : List Text }, LHC = { build-options = [] : List Text }, NHC = { build-options = [] : List Text }, UHC = { build-options = [] : List Text }, YHC = { build-options = [] : List Text } } } ⫽ { build-dependencies = [{ Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.base, { Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.Cabal, { Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.dhall, { Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.text, { Cabal = { bounds = majorVersion [+2, +0], package = "Cabal" }, base = { bounds = majorVersion [+4, +10], package = "base" }, bytestring = { bounds = majorVersion [+0, +10], package = "bytestring" }, dhall = { bounds = majorVersion [+1, +8], package = "dhall" }, text = { bounds = majorVersion [+1, +2], package = "text" } }.bytestring, { bounds = majorVersion [+0, +5], package = "containers" }, { bounds = majorVersion [+0, +12], package = "vector" }, { bounds = majorVersion [+1, +7], package = "trifecta" }, { bounds = majorVersion [+0, +3], package = "text-format" }, { bounds = majorVersion [+0, +5, +2], package = "transformers" }], compiler-options = { GHC = { build-options = [] : List Text }, GHCJS = { build-options = [] : List Text }, HBC = { build-options = [] : List Text }, Helium = { build-options = [] : List Text }, Hugs = { build-options = [] : List Text }, JHC = { build-options = [] : List Text }, LHC = { build-options = [] : List Text }, NHC = { build-options = [] : List Text }, UHC = { build-options = [] : List Text }, YHC = { build-options = [] : List Text } } ⫽ { GHC = { build-options = ["-Wall", "-fno-warn-name-shadowing"] } }, exposed-modules = ["Distribution.Package.Dhall"], hs-source-dirs = ["lib"], other-modules = ["Dhall.Extra"], reexported-modules = [] : List { name : Text, original : { name : Text, package : Optional Text } } }                                                                
                                                                                
... has this type instead:                                                      
                                                                                
↳ { autogen-modules : List Text, build-dependencies : List { bounds : VersionRange, package : Text }, build-tool-depends : List { component : Text, package : Text, version : VersionRange }, build-tools : List { exe : Text, version : VersionRange }, buildable : Bool, c-sources : List Text, cc-options : List Text, compiler-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } }, cpp-options : List Text, default-extensions : List <>, default-language : Optional < Haskell2010 : {} | Haskell98 : {} >, exposed-modules : List Text, extra-framework-dirs : List Text, extra-ghci-libraries : List Text, extra-lib-dirs : List Text, extra-libraries : List Text, frameworks : List Text, hs-source-dirs : List Text, include : List Text, include-dirs : List Text, install-includes : List Text, js-sources : List Text, ld-options : List Text, other-extensions : List <>, other-languages : List < Haskell2010 : {} | Haskell98 : {} >, other-modules : List Text, pkgconfig-depends : List { name : Text, version : VersionRange }, profiling-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } }, reexported-modules : List { name : Text, original : { name : Text, package : Optional Text } }, shared-options : { GHC : { build-options : List Text }, GHCJS : { build-options : List Text }, HBC : { build-options : List Text }, Helium : { build-options : List Text }, Hugs : { build-options : List Text }, JHC : { build-options : List Text }, LHC : { build-options : List Text }, NHC : { build-options : List Text }, UHC : { build-options : List Text }, YHC : { build-options : List Text } } }                                                                

────────────────────────────────────────────────────────────────────────────────

[   ./dhall/defaults/BuildInfo 
            ⫽ { build-dependencies =
                  [ common-deps.base
                  , common-deps.Cabal
                  , common-deps.dhall
                  , common-deps.text
                  , common-deps.bytestring
                  , { bounds = majorVersion [ +0, +5 ], package = "containers" }
                  , { bounds = majorVersion [ +0, +12 ], package = "vector" }
                  , { bounds = majorVersion [ +1, +7 ], package = "trifecta" }
                  , { bounds  = majorVersion [ +0, +3 ]
                    , package = "text-format"
                    }
                  , { bounds  = majorVersion [ +0, +5, +2 ]
                    , package = "transformers"
                    }
                  ]
              , compiler-options   =
                    ./dhall/defaults/CompilerOptions 
                  ⫽ { GHC =
                        { build-options =
                            [ "-Wall", "-fno-warn-name-shadowing" ]
                        }
                    }
              , exposed-modules    = [ "Distribution.Package.Dhall" ]
              , hs-source-dirs     = [ "lib" ]
              , other-modules      = [ "Dhall.Extra" ]
              , reexported-modules =
                  [] : List
                       { name     : Text
                       , original : { name : Text, package : Optional Text }
                       }
              }
          ] : Optional ./dhall/types/Library

(input):34:11

@Gabriella439
Copy link
Collaborator Author

Awesome! Thanks for the review :)

@Gabriella439 Gabriella439 merged commit ef7cc41 into master Jan 21, 2018
@Gabriella439 Gabriella439 deleted the gabriel/fix_localization branch January 21, 2018 21:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants