aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/tool/compiler/language/lux/phase/analysis/reference.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/lux/tool/compiler/language/lux/phase/analysis/reference.lux84
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)))