I have complety rewritten the way predef operator typing is
performed. The resulting code is both more compact, and more general. It is more general, since that predef operators are now represented by node_exp_eff, exactly as user nodes. Hence, all the functions that were operating on user nodes via node_exp_eff (such as, node aliasing) works for free on predef op! In order to be able to perform that generalisation, it was necessary to extend sligthly the data structure used to represent the node profile in CompiledData.node_exp_eff with information indicating if a variable is polymorphic or overloaded. Not that, currently, polymorphic or overloaded variables can only be introduced by predef operators. But I think it would be easy to add those notions for normal user nodes after this change. New non-reg files boolred now compiles. Those involving - boolred - alias on predef.op
Showing
- src/TODO 18 additions, 2 deletionssrc/TODO
- src/compiledData.ml 21 additions, 9 deletionssrc/compiledData.ml
- src/compiledDataDump.ml 14 additions, 2 deletionssrc/compiledDataDump.ml
- src/evalConst.ml 2 additions, 2 deletionssrc/evalConst.ml
- src/evalType.ml 11 additions, 3 deletionssrc/evalType.ml
- src/getEff.ml 14 additions, 7 deletionssrc/getEff.ml
- src/getEff.mli 3 additions, 3 deletionssrc/getEff.mli
- src/lazyCompiler.ml 55 additions, 106 deletionssrc/lazyCompiler.ml
- src/predef.ml 5 additions, 5 deletionssrc/predef.ml
- src/predefSemantics.ml 279 additions, 261 deletionssrc/predefSemantics.ml
- src/predefSemantics.mli 5 additions, 4 deletionssrc/predefSemantics.mli
- src/syntaxTab.ml 5 additions, 5 deletionssrc/syntaxTab.ml
- src/syntaxTab.mli 2 additions, 2 deletionssrc/syntaxTab.mli
- src/test/should_work/NONREG/Int.lus 2 additions, 2 deletionssrc/test/should_work/NONREG/Int.lus
- src/test/should_work/demo/Gyroscope2.lus 3 additions, 3 deletionssrc/test/should_work/demo/Gyroscope2.lus
- src/test/should_work/demo/bred_lv4.lus 1 addition, 1 deletionsrc/test/should_work/demo/bred_lv4.lus
- src/test/should_work/demo/map_red_iter.lus 1 addition, 1 deletionsrc/test/should_work/demo/map_red_iter.lus
- src/test/should_work/demo/mappredef.lus 1 addition, 1 deletionsrc/test/should_work/demo/mappredef.lus
- src/test/should_work/fab_test/iter.lus 1 addition, 1 deletionsrc/test/should_work/fab_test/iter.lus
- src/test/should_work/fab_test/iterate.lus 1 addition, 1 deletionsrc/test/should_work/fab_test/iterate.lus
Loading
Please register or sign in to comment