Commit this temporary fix
This commit is contained in:
parent
040ab11873
commit
8218007f1c
3
TODO.md
3
TODO.md
@ -19,6 +19,9 @@ DONE -experiment with storing metadata via ItemIds on AST nodes (cf. https://rus
|
|||||||
-look at https://gitlab.haskell.org/ghc/ghc/wikis/pattern-synonyms
|
-look at https://gitlab.haskell.org/ghc/ghc/wikis/pattern-synonyms
|
||||||
2) the non-value-returning, default one like in rustc (cf. https://github.com/rust-unofficial/patterns/blob/master/patterns/visitor.md)
|
2) the non-value-returning, default one like in rustc (cf. https://github.com/rust-unofficial/patterns/blob/master/patterns/visitor.md)
|
||||||
|
|
||||||
|
-parser error - should report subset of AST parsed *so far*
|
||||||
|
- what if you used python 'def' syntax to define a function? what error message makes sense here?
|
||||||
|
|
||||||
## Reduction
|
## Reduction
|
||||||
- make a good type for actual language builtins to avoid string comparisons
|
- make a good type for actual language builtins to avoid string comparisons
|
||||||
|
|
||||||
|
@ -188,12 +188,21 @@ impl<'a> Reducer<'a> {
|
|||||||
//TODO this probably needs to change
|
//TODO this probably needs to change
|
||||||
let FullyQualifiedSymbolName(ref v) = sym_name;
|
let FullyQualifiedSymbolName(ref v) = sym_name;
|
||||||
let name = v.last().unwrap().name.clone();
|
let name = v.last().unwrap().name.clone();
|
||||||
match symbol_table.lookup_by_fqsn(&sym_name) {
|
|
||||||
Some(Symbol { spec: SymbolSpec::DataConstructor { index, type_args, type_name}, .. }) => Expr::Constructor {
|
let Symbol { local_name, spec, .. } = match symbol_table.lookup_by_fqsn(&sym_name) {
|
||||||
type_name: type_name.clone(),
|
Some(s) => s,
|
||||||
name: name.clone(),
|
//None => return Expr::ReductionError(format!("Symbol {:?} not found", sym_name)),
|
||||||
tag: index.clone(),
|
None => return Expr::Sym(name.clone())
|
||||||
arity: type_args.len(),
|
};
|
||||||
|
|
||||||
|
match spec {
|
||||||
|
SymbolSpec::DataConstructor { index, type_args, type_name} => {
|
||||||
|
Expr::Constructor {
|
||||||
|
type_name: type_name.clone(),
|
||||||
|
name: name.clone(),
|
||||||
|
tag: index.clone(),
|
||||||
|
arity: type_args.len(),
|
||||||
|
}
|
||||||
},
|
},
|
||||||
_ => Expr::Sym(name.clone()),
|
_ => Expr::Sym(name.clone()),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user