mirror of
https://github.com/erg-lang/erg.git
synced 2025-10-03 05:54:33 +00:00
Impl ShortenedRecord
desugaring
This commit is contained in:
parent
4557690347
commit
d2ed277685
6 changed files with 281 additions and 29 deletions
|
@ -264,7 +264,14 @@ impl Evaluator {
|
|||
Some(ValueObj::Array(RcArray::from(elems)))
|
||||
}
|
||||
|
||||
fn eval_const_record(&self, record: &NormalRecord, ctx: &Context) -> Option<ValueObj> {
|
||||
fn eval_const_record(&self, record: &Record, ctx: &Context) -> Option<ValueObj> {
|
||||
match record {
|
||||
Record::Normal(rec) => self.eval_const_normal_record(rec, ctx),
|
||||
Record::Shortened(_rec) => unreachable!(), // should be desugared
|
||||
}
|
||||
}
|
||||
|
||||
fn eval_const_normal_record(&self, record: &NormalRecord, ctx: &Context) -> Option<ValueObj> {
|
||||
let mut attrs = vec![];
|
||||
for attr in record.attrs.iter() {
|
||||
if let Some(elem) = self.eval_const_block(&attr.body.block, ctx) {
|
||||
|
|
|
@ -217,7 +217,15 @@ impl ASTLowerer {
|
|||
Ok(hir::NormalTuple::new(hir::Args::from(new_tuple)))
|
||||
}
|
||||
|
||||
fn lower_record(&mut self, record: ast::NormalRecord) -> LowerResult<hir::Record> {
|
||||
fn lower_record(&mut self, record: ast::Record) -> LowerResult<hir::Record> {
|
||||
log!(info "entered {}({record})", fn_name!());
|
||||
match record {
|
||||
ast::Record::Normal(rec) => self.lower_normal_record(rec),
|
||||
ast::Record::Shortened(_rec) => unreachable!(), // should be desugared
|
||||
}
|
||||
}
|
||||
|
||||
fn lower_normal_record(&mut self, record: ast::NormalRecord) -> LowerResult<hir::Record> {
|
||||
log!(info "entered {}({record})", fn_name!());
|
||||
let mut hir_record =
|
||||
hir::Record::new(record.l_brace, record.r_brace, hir::RecordAttrs::new());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue