@@ -43,13 +43,14 @@ addDataType moduleName name args dctors ctorKind = do
4343 env <- getEnv
4444 putEnv $ env { types = M.insert (moduleName, name) (ctorKind, Data) (types env) }
4545 forM_ dctors $ \(dctor, maybeTy) ->
46− rethrow (("Error in data constructor " ++ show name ++ ":\n") ++) $
46+ rethrow (("Error in data constructor " ++ show dctor ++ ":\n") ++) $
4747 addDataConstructor moduleName name args dctor maybeTy
4848
4949addDataConstructor :: ModuleName -> ProperName -> [String] -> ProperName -> Maybe Type -> Check ()
5050addDataConstructor moduleName name args dctor maybeTy = do
5151 env <- getEnv
5252 dataConstructorIsNotDefined moduleName dctor
53+ when (runModuleName moduleName == dctor) $ throwError "A data constructor may not have the same name as its enclosing module."
5354 let retTy = foldl TypeApp (TypeConstructor (Qualified (Just moduleName) name)) (map TypeVar args)
5455 let dctorTy = maybe retTy (flip function retTy) maybeTy
5556 let polyType = mkForAll args dctorTy