diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/lux/tool/compiler/language/lux/phase/analysis/reference.lux | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/analysis/reference.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/analysis/reference.lux deleted file mode 100644 index a3653935f..000000000 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/analysis/reference.lux +++ /dev/null @@ -1,84 +0,0 @@ -(.module: - [lux #* - [abstract - monad] - [control - ["." exception (#+ exception:)]] - ["." meta] - [data - ["." text ("#\." equivalence) - ["%" format (#+ format)]]]] - ["." // #_ - ["#." scope] - ["#." type] - ["/#" // #_ - ["#." extension] - [// - ["/" analysis (#+ Analysis Operation)] - [/// - ["#." reference] - ["#" phase]]]]]) - -(exception: #export (foreign_module_has_not_been_imported {current Text} {foreign Text}) - (exception.report - ["Current" current] - ["Foreign" foreign])) - -(exception: #export (definition_has_not_been_exported {definition Name}) - (exception.report - ["Definition" (%.name definition)])) - -(def: (definition def_name) - (-> Name (Operation Analysis)) - (with_expansions [<return> (wrap (|> def_name ///reference.constant #/.Reference))] - (do {! ///.monad} - [constant (///extension.lift (meta.find_def def_name))] - (case constant - (#.Left real_def_name) - (definition real_def_name) - - (#.Right [exported? actualT def_anns _]) - (do ! - [_ (//type.infer actualT) - (^@ def_name [::module ::name]) (///extension.lift (meta.normalize def_name)) - current (///extension.lift meta.current_module_name)] - (if (text\= current ::module) - <return> - (if exported? - (do ! - [imported! (///extension.lift (meta.imported_by? ::module current))] - (if imported! - <return> - (/.throw foreign_module_has_not_been_imported [current ::module]))) - (/.throw definition_has_not_been_exported def_name)))))))) - -(def: (variable var_name) - (-> Text (Operation (Maybe Analysis))) - (do {! ///.monad} - [?var (//scope.find var_name)] - (case ?var - (#.Some [actualT ref]) - (do ! - [_ (//type.infer actualT)] - (wrap (#.Some (|> ref ///reference.variable #/.Reference)))) - - #.None - (wrap #.None)))) - -(def: #export (reference reference) - (-> Name (Operation Analysis)) - (case reference - ["" simple_name] - (do {! ///.monad} - [?var (variable simple_name)] - (case ?var - (#.Some varA) - (wrap varA) - - #.None - (do ! - [this_module (///extension.lift meta.current_module_name)] - (definition [this_module simple_name])))) - - _ - (definition reference))) |