mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-29 04:24:43 +00:00
fix: reduce unreachable
s
This commit is contained in:
parent
0152e368ab
commit
072d62f7b3
5 changed files with 55 additions and 21 deletions
|
@ -14,6 +14,7 @@ use OpKind::*;
|
|||
use erg_parser::ast::Dict as AstDict;
|
||||
use erg_parser::ast::Set as AstSet;
|
||||
use erg_parser::ast::*;
|
||||
use erg_parser::desugar::Desugarer;
|
||||
use erg_parser::token::{Token, TokenKind};
|
||||
|
||||
use crate::ty::constructors::{
|
||||
|
@ -459,7 +460,9 @@ impl Context {
|
|||
fn eval_const_record(&self, record: &Record) -> EvalResult<ValueObj> {
|
||||
match record {
|
||||
Record::Normal(rec) => self.eval_const_normal_record(rec),
|
||||
Record::Mixed(_rec) => unreachable_error!(self), // should be desugared
|
||||
Record::Mixed(mixed) => self.eval_const_normal_record(
|
||||
&Desugarer::desugar_shortened_record_inner(mixed.clone()),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ use erg_common::traits::{Locational, Runnable, Stream};
|
|||
use erg_common::{enum_unwrap, fn_name, log, set, Str, Triple};
|
||||
|
||||
use erg_parser::ast::{self, AscriptionKind, Identifier, VarName, AST};
|
||||
use erg_parser::desugar::Desugarer;
|
||||
|
||||
use crate::context::instantiate::TyVarCache;
|
||||
use crate::lower::ASTLowerer;
|
||||
|
@ -332,7 +333,7 @@ impl ASTLowerer {
|
|||
fn fake_lower_record(&self, rec: ast::Record) -> LowerResult<hir::Record> {
|
||||
let rec = match rec {
|
||||
ast::Record::Normal(rec) => rec,
|
||||
ast::Record::Mixed(_mixed) => unreachable!(),
|
||||
ast::Record::Mixed(mixed) => Desugarer::desugar_shortened_record_inner(mixed),
|
||||
};
|
||||
let mut elems = Vec::new();
|
||||
for elem in rec.attrs.into_iter() {
|
||||
|
|
|
@ -18,6 +18,7 @@ use erg_common::{fmt_option, fn_name, log, switch_lang, Str};
|
|||
use erg_parser::ast::{self, AscriptionKind, VisModifierSpec};
|
||||
use erg_parser::ast::{OperationKind, TypeSpecWithOp, VarName, AST};
|
||||
use erg_parser::build_ast::ASTBuilder;
|
||||
use erg_parser::desugar::Desugarer;
|
||||
use erg_parser::token::{Token, TokenKind};
|
||||
use erg_parser::Parser;
|
||||
|
||||
|
@ -381,7 +382,9 @@ impl ASTLowerer {
|
|||
log!(info "entered {}({record})", fn_name!());
|
||||
match record {
|
||||
ast::Record::Normal(rec) => self.lower_normal_record(rec),
|
||||
ast::Record::Mixed(_rec) => unreachable!(), // should be desugared
|
||||
ast::Record::Mixed(mixed) => {
|
||||
self.lower_normal_record(Desugarer::desugar_shortened_record_inner(mixed))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue