on master help sign in
Get a region when the module name does not match the file name
commit66b6eaadb33d95db5c27402fc7ca5ff4297cb389 authorEvan Czaplicki <evancz@users.noreply.github.com> dateWed 1 May 2019, 15:14 (7 years ago) parent253bb13
3 files changed+11−8
compiler/src/AST/Source.hs+6−3 compiler/src/Parse/Module.hs+4−4 compiler/src/Reporting/Error/Syntax.hs+1−1
compiler/src/AST/Source.hs+6−3
@@ -122,7 +122,7 @@ data Type_
122122
123123data Module =
124124 Module
125− { _name :: Maybe Name
125+ { _name :: Maybe (A.Located Name)
126126 , _exports :: A.Located Exposing
127127 , _imports :: [Import]
128128 , _values :: [A.Located Value]
@@ -136,8 +136,11 @@ data Module =
136136getName :: Module -> Name
137137getName (Module maybeName _ _ _ _ _ _ _) =
138138 case maybeName of
139− Just name -> name
140− Nothing -> defaultModuleName
139+ Just (A.At _ name) ->
140+ name
141+
142+ Nothing ->
143+ defaultModuleName
141144
142145
143146{-# NOINLINE defaultModuleName #-}
compiler/src/Parse/Module.hs+4−4
@@ -205,7 +205,7 @@ chompModuleDocComment =
205205
206206
207207data Header =
208− Header Name.Name Effects (A.Located Src.Exposing)
208+ Header (A.Located Name.Name) Effects (A.Located Src.Exposing)
209209
210210
211211data Effects
@@ -223,7 +223,7 @@ chompHeader =
223223 do Keyword.module_ E.Module
224224 end <- getPosition
225225 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentName
226− name <- Var.moduleName E.ModuleName
226+ name <- addLocation (Var.moduleName E.ModuleName)
227227 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposing
228228 Keyword.exposing_ E.ModuleExposing
229229 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposingList
@@ -237,7 +237,7 @@ chompHeader =
237237 Keyword.module_ E.ModulePortModule
238238 end <- getPosition
239239 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentName
240− name <- Var.moduleName E.ModuleName
240+ name <- addLocation (Var.moduleName E.ModuleName)
241241 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposing
242242 Keyword.exposing_ E.ModuleExposing
243243 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposingList
@@ -251,7 +251,7 @@ chompHeader =
251251 Keyword.module_ E.ModuleEffect
252252 end <- getPosition
253253 Space.chompAndCheckIndent E.ModuleSpace E.ModuleEffect
254− name <- Var.moduleName E.ModuleName
254+ name <- addLocation (Var.moduleName E.ModuleName)
255255 Space.chompAndCheckIndent E.ModuleSpace E.ModuleEffect
256256 Keyword.where_ E.ModuleEffect
257257 Space.chompAndCheckIndent E.ModuleSpace E.ModuleEffect
compiler/src/Reporting/Error/Syntax.hs+1−1
@@ -66,7 +66,7 @@ import qualified Reporting.Render.Code as Code
6666
6767data Error
6868 = ModuleNameUnspecified ModuleName.Raw
69− | ModuleNameMismatch ModuleName.Raw ModuleName.Raw
69+ | ModuleNameMismatch ModuleName.Raw (A.Located ModuleName.Raw)
7070 | UnexpectedPort A.Region
7171 | NoPorts A.Region
7272 | ParseError Module