SourceGraphでのローカル変数の扱い(その1)
SourceGraphでローカルな関数(変数)はどのように解析されるのかということで
以下のを解析してみた.
結論としては,localはどこにも現れなくて,testが+を呼んでるというふうになってた.
module Sample1 where test :: Int -> IO Int test x = return local where local = x + 1
fromList [ (LocalMod {modName = "Sample1"}, PM {moduleName = LocalMod {modName = "Sample1"}, imports = fromList [], exports = fromList [Ent {inModule = LocalMod {modName = "Sample1"}, name = "test", eType = NormalEntity}], dataDecls = fromList [], classDecls = fromList [], instDecls = fromList [], topEnts = fromList [Ent {inModule = LocalMod {modName = "Sample1"}, name = "test", eType = NormalEntity}], virtualEnts = fromList [], funcCalls = fromOccurList [(FC {fromEntity = Ent {inModule = LocalMod {modName = "Sample1"}, name = "test", eType = NormalEntity}, toEntity = Ent {inModule = UnknownMod, name = "+", eType = NormalEntity}, callType = NormalCall}, 1), (FC {fromEntity = Ent {inModule = LocalMod {modName = "Sample1"}, name = "test", eType = NormalEntity}, toEntity = Ent {inModule = UnknownMod, name = "return", eType = NormalEntity}, callType = NormalCall}, 1)]})]