on master help sign in
Get a region when the module name does not match the file name
66b6eaaEvan Czaplicki
compiler/src/AST/Source.hs+6−3
@@ -122,7 +122,7 @@ data Type_
122
122
123data Module =
123data Module =
124 Module
124 Module
125− { _name :: Maybe Name
125+ { _name :: Maybe (A.Located Name)
126 , _exports :: A.Located Exposing
126 , _exports :: A.Located Exposing
127 , _imports :: [Import]
127 , _imports :: [Import]
128 , _values :: [A.Located Value]
128 , _values :: [A.Located Value]
@@ -136,8 +136,11 @@ data Module =
136getName :: Module -> Name
136getName :: Module -> Name
137getName (Module maybeName _ _ _ _ _ _ _) =
137getName (Module maybeName _ _ _ _ _ _ _) =
138 case maybeName of
138 case maybeName of
139− Just name -> name
139+ Just (A.At _ name) ->
140+ name
141+
142+ Nothing ->
140− Nothing -> defaultModuleName
143+ defaultModuleName
141
144
142
145
143{-# NOINLINE defaultModuleName #-}
146{-# NOINLINE defaultModuleName #-}
compiler/src/Parse/Module.hs+4−4
@@ -205,7 +205,7 @@ chompModuleDocComment =
205
205
206
206
207data Header =
207data Header =
208− Header Name.Name Effects (A.Located Src.Exposing)
208+ Header (A.Located Name.Name) Effects (A.Located Src.Exposing)
209
209
210
210
211data Effects
211data Effects
@@ -223,7 +223,7 @@ chompHeader =
223 do Keyword.module_ E.Module
223 do Keyword.module_ E.Module
224 end <- getPosition
224 end <- getPosition
225 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentName
225 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentName
226− name <- Var.moduleName E.ModuleName
226+ name <- addLocation (Var.moduleName E.ModuleName)
227 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposing
227 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposing
228 Keyword.exposing_ E.ModuleExposing
228 Keyword.exposing_ E.ModuleExposing
229 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposingList
229 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposingList
@@ -237,7 +237,7 @@ chompHeader =
237 Keyword.module_ E.ModulePortModule
237 Keyword.module_ E.ModulePortModule
238 end <- getPosition
238 end <- getPosition
239 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentName
239 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentName
240− name <- Var.moduleName E.ModuleName
240+ name <- addLocation (Var.moduleName E.ModuleName)
241 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposing
241 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposing
242 Keyword.exposing_ E.ModuleExposing
242 Keyword.exposing_ E.ModuleExposing
243 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposingList
243 Space.chompAndCheckIndent E.ModuleSpace E.ModuleIndentExposingList
@@ -251,7 +251,7 @@ chompHeader =
251 Keyword.module_ E.ModuleEffect
251 Keyword.module_ E.ModuleEffect
252 end <- getPosition
252 end <- getPosition
253 Space.chompAndCheckIndent E.ModuleSpace E.ModuleEffect
253 Space.chompAndCheckIndent E.ModuleSpace E.ModuleEffect
254− name <- Var.moduleName E.ModuleName
254+ name <- addLocation (Var.moduleName E.ModuleName)
255 Space.chompAndCheckIndent E.ModuleSpace E.ModuleEffect
255 Space.chompAndCheckIndent E.ModuleSpace E.ModuleEffect
256 Keyword.where_ E.ModuleEffect
256 Keyword.where_ E.ModuleEffect
257 Space.chompAndCheckIndent E.ModuleSpace E.ModuleEffect
257 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
66
66
67data Error
67data Error
68 = ModuleNameUnspecified ModuleName.Raw
68 = ModuleNameUnspecified ModuleName.Raw
69− | ModuleNameMismatch ModuleName.Raw ModuleName.Raw
69+ | ModuleNameMismatch ModuleName.Raw (A.Located ModuleName.Raw)
70 | UnexpectedPort A.Region
70 | UnexpectedPort A.Region
71 | NoPorts A.Region
71 | NoPorts A.Region
72 | ParseError Module
72 | ParseError Module