Make some notes about what to do next

This commit is contained in:
greg 2019-09-09 10:17:46 -07:00
parent 65bc32b033
commit 5572e0eebb
3 changed files with 6 additions and 1 deletions

View File

@ -2,6 +2,8 @@
## General code cleanup
- standardize on an error type that isn't String
-give scope reduction reference to symbol_table
-turn ast reduction into methods-on-struct-returning-result format
## Reduction
- make a good type for actual language builtins to avoid string comparisons

View File

@ -370,7 +370,9 @@ impl Pattern {
},
Ignored => Subpattern { tag: None, subpatterns: vec![], guard: None, bound_vars: vec![] },
Literal(lit) => lit.to_subpattern(symbol_table),
VarOrName(Meta { n: QualifiedName(vec), .. }) => {
VarOrName(Meta { n: QualifiedName(vec), fqsn, .. }) => {
// if fqsn is Some, then it should be a symbol pattern but isn't yet
// if it's None, then it's a variable. scope resolution makes this decision
println!("Calling VarOrName reduction with : {:?}", vec);
//TODO this name needs to be resolved from metadata with context
let name = if vec.len() == 1 {

View File

@ -136,6 +136,7 @@ impl ScopeResolver {
Ok(())
}
//TODO add symbol table reference to make this determination
/// this might be a variable or a pattern. if a variable, set to none
fn qualified_name_in_pattern(&mut self, meta_qualified_name: &mut Meta<QualifiedName>, ) {
let inner_name = meta_qualified_name.node();