diff options
Diffstat (limited to 'stdlib/source/lux/tool/compiler/phase/analysis/reference.lux')
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/analysis/reference.lux | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/stdlib/source/lux/tool/compiler/phase/analysis/reference.lux b/stdlib/source/lux/tool/compiler/phase/analysis/reference.lux deleted file mode 100644 index 6a5c4f889..000000000 --- a/stdlib/source/lux/tool/compiler/phase/analysis/reference.lux +++ /dev/null @@ -1,82 +0,0 @@ -(.module: - [lux #* - [abstract - monad] - [control - ["." exception (#+ exception:)]] - ["." macro] - [data - ["." text ("#@." equivalence) - ["%" format (#+ format)]]]] - ["." // #_ - ["#." scope] - ["#." type] - ["#/" // - ["#." extension] - ["#/" // #_ - ["#." reference] - ["/" analysis (#+ Analysis Operation)]]]]) - -(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 (macro.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 (macro.normalize def-name)) - current (///extension.lift macro.current-module-name)] - (if (text@= current ::module) - <return> - (if exported? - (do @ - [imported! (///extension.lift (macro.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 macro.current-module-name)] - (definition [this-module simple-name])))) - - _ - (definition reference))) |