-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Submodule dependency computation and cyclic dep hs-boot resolution sy…
…stem (#204) Submodules (RawType, FFI, Interface, Cast, Implementation for class, Template, TH for template class) had been explicitly defined in the last commit and their dependencies are more precisely computed for producing dependency graph. Now the codegen system uses the dep graph information for import modules and detect cyclic dependencies by strongly connected components from the graph. The cycles are made broken by restricted dependency analysis and proper hs-boot generation (relatively correct compared with previous naive implementation) Now stdcxx, OGDF, HROOT and hgdal are buildable again. * unify formatOrdinary/Template to subModuleName and place it in Generate.Name. * refactor out constructDepGraph. * findDepCycles. pass depCycles to Interface builder. * use full module name in subModuleName (and dependency info) * use SOURCE pragma as computed from dependency graph. * move Submodule-related types to Type.Module * start unified calculateDependency, no mkModuleDepRaw. * unify mkModuleDepExternal into calculateDependency * remove mkModuleDepInplace. not yet correct * unify imported modules in ClassModule. Bug fix in calculateDependency. * remove mkModuleDepFFI * include Cast.hs dep in calculateDependency * Implementation dependency calculation. now calculateDependency definition is completed. * self RawType is included in calculateDependency * unify dependency generation in Graph module. * bug fix: only virtualFuncs for Interface.hs dependency! * remove warnings * find dependency inside cycles, and gather hs-boot candidates. * corrected hs-boot file generation by not importing cyclic modules and using empty class context and body.
- Loading branch information
Showing
13 changed files
with
442 additions
and
454 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.