Desugar field access via ident
This commit is contained in:
parent
290cef06cb
commit
621ea8f1d4
1 changed files with 12 additions and 4 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
use crate::ast::{
|
use crate::ast::{
|
||||||
Call, Expr, Field, Line, Lit, Separated, Space, TableConstr, TableConstrElem, TableLitElem,
|
Call, Expr, Field, Line, Lit, Separated, Space, StringLit, StringLitElem, TableConstr,
|
||||||
|
TableConstrElem, TableLitElem,
|
||||||
};
|
};
|
||||||
use crate::builtin::Builtin;
|
use crate::builtin::Builtin;
|
||||||
|
|
||||||
|
|
@ -90,14 +91,21 @@ impl Field {
|
||||||
ident,
|
ident,
|
||||||
span,
|
span,
|
||||||
} => {
|
} => {
|
||||||
let new = Expr::Field(Self::AccessIdent {
|
// `expr s0 . s1 ident´
|
||||||
|
// -> `expr s0 [ s1 ident_str ]`
|
||||||
|
let ident_str = Expr::Lit(Lit::String(StringLit {
|
||||||
|
elems: vec![StringLitElem::Plain(ident.name)],
|
||||||
|
span,
|
||||||
|
}));
|
||||||
|
let new = Expr::Field(Self::Access {
|
||||||
expr,
|
expr,
|
||||||
s0,
|
s0,
|
||||||
s1,
|
s1,
|
||||||
ident,
|
index: Box::new(ident_str),
|
||||||
|
s2: Space::empty(span),
|
||||||
span,
|
span,
|
||||||
});
|
});
|
||||||
(new, false) // TODO Implement
|
(new, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
Self::AssignIdent {
|
Self::AssignIdent {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue