Update with dependencies

This commit is contained in:
Shunsuke Shibayama 2023-02-04 10:36:55 +09:00
parent 36427cb647
commit e5b0a5cc5d
6 changed files with 54 additions and 48 deletions

11
.cargo/config.toml Normal file
View file

@ -0,0 +1,11 @@
[alias]
r = "run"
rd = "run --features debug"
b = "build"
bd = "build --features debug"
r_re = "run --release"
rd_re = "run --features debug --release"
b_re = "build --release"
bd_re = "build --features debug --release"
i = "install --path ."
di = "install --path . --debug --features debug"

28
Cargo.lock generated
View file

@ -172,9 +172,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.0.78" version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
@ -246,14 +246,14 @@ dependencies = [
[[package]] [[package]]
name = "either" name = "either"
version = "1.8.0" version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
[[package]] [[package]]
name = "els" name = "els"
version = "0.1.15" version = "0.1.16-nightly.0"
source = "git+https://github.com/erg-lang/erg?branch=main#4b08fd21a286916b0f3e3499aec2b9299082516d" source = "git+https://github.com/erg-lang/erg?branch=main#3e664fb176f44d2539fbe7a8f2fe8121feef7a10"
dependencies = [ dependencies = [
"erg_common", "erg_common",
"erg_compiler", "erg_compiler",
@ -273,8 +273,8 @@ dependencies = [
[[package]] [[package]]
name = "erg_common" name = "erg_common"
version = "0.6.3" version = "0.6.4-nightly.0"
source = "git+https://github.com/erg-lang/erg?branch=main#4b08fd21a286916b0f3e3499aec2b9299082516d" source = "git+https://github.com/erg-lang/erg?branch=main#3e664fb176f44d2539fbe7a8f2fe8121feef7a10"
dependencies = [ dependencies = [
"backtrace-on-stack-overflow", "backtrace-on-stack-overflow",
"hermit-abi", "hermit-abi",
@ -284,8 +284,8 @@ dependencies = [
[[package]] [[package]]
name = "erg_compiler" name = "erg_compiler"
version = "0.6.3" version = "0.6.4-nightly.0"
source = "git+https://github.com/erg-lang/erg?branch=main#4b08fd21a286916b0f3e3499aec2b9299082516d" source = "git+https://github.com/erg-lang/erg?branch=main#3e664fb176f44d2539fbe7a8f2fe8121feef7a10"
dependencies = [ dependencies = [
"erg_common", "erg_common",
"erg_parser", "erg_parser",
@ -293,8 +293,8 @@ dependencies = [
[[package]] [[package]]
name = "erg_parser" name = "erg_parser"
version = "0.6.3" version = "0.6.4-nightly.0"
source = "git+https://github.com/erg-lang/erg?branch=main#4b08fd21a286916b0f3e3499aec2b9299082516d" source = "git+https://github.com/erg-lang/erg?branch=main#3e664fb176f44d2539fbe7a8f2fe8121feef7a10"
dependencies = [ dependencies = [
"erg_common", "erg_common",
"unicode-xid 0.2.4", "unicode-xid 0.2.4",
@ -947,9 +947,9 @@ dependencies = [
[[package]] [[package]]
name = "tinyvec_macros" name = "tinyvec_macros"
version = "0.1.0" version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]] [[package]]
name = "typenum" name = "typenum"

View file

@ -26,9 +26,9 @@ repository = "https://github.com/mtshiba/pylyzer"
# erg_compiler = "0.6.1" # erg_compiler = "0.6.1"
# els = "0.1.13" # els = "0.1.13"
rustpython-parser = "0.1.2" rustpython-parser = "0.1.2"
erg_compiler = { git = "https://github.com/erg-lang/erg", branch = "main", features = ["py_compatible", "els"] } erg_compiler = { version = "0.6.4-nightly.0", git = "https://github.com/erg-lang/erg", branch = "main", features = ["py_compatible", "els"] }
erg_common = { git = "https://github.com/erg-lang/erg", branch = "main", features = ["py_compatible", "els"] } erg_common = { version = "0.6.4-nightly.0", git = "https://github.com/erg-lang/erg", branch = "main", features = ["py_compatible", "els"] }
els = { git = "https://github.com/erg-lang/erg", branch = "main", features = ["py_compatible"] } els = { version = "0.1.16-nightly.0", git = "https://github.com/erg-lang/erg", branch = "main", features = ["py_compatible"] }
[features] [features]
debug = ["erg_compiler/debug", "erg_common/debug", "py2erg/debug"] debug = ["erg_compiler/debug", "erg_common/debug", "py2erg/debug"]

View file

@ -210,7 +210,7 @@ pub enum ShadowingMode {
/// ///
/// would be converted as follows. This is a mistake. /// would be converted as follows. This is a mistake.
/// ///
/// ``` /// ```python
/// i = 1 /// i = 1
/// i = i2 + 1 /// i = i2 + 1
/// ``` /// ```
@ -453,7 +453,7 @@ impl ASTConverter {
let method = tmp_expr.clone().attr_expr( let method = tmp_expr.clone().attr_expr(
self.convert_ident("__Tuple_getitem__".to_string(), expr.location), self.convert_ident("__Tuple_getitem__".to_string(), expr.location),
); );
let args = Args::new(vec![PosArg::new(Expr::Lit(index))], vec![], None); let args = Args::new(vec![PosArg::new(Expr::Lit(index))], None, vec![], None);
let tuple_acc = method.call_expr(args); let tuple_acc = method.call_expr(args);
let body = DefBody::new(EQUAL, Block::new(vec![tuple_acc]), DefId(0)); let body = DefBody::new(EQUAL, Block::new(vec![tuple_acc]), DefId(0));
let def = Expr::Def(Def::new(sig, body)); let def = Expr::Def(Def::new(sig, body));
@ -616,13 +616,12 @@ impl ASTConverter {
let sig = LambdaSignature::new(params, None, TypeBoundSpecs::empty()); let sig = LambdaSignature::new(params, None, TypeBoundSpecs::empty());
let else_body = let else_body =
Lambda::new(sig, Token::DUMMY, Block::new(vec![else_block]), DefId(0)); Lambda::new(sig, Token::DUMMY, Block::new(vec![else_block]), DefId(0));
let args = Args::new( let args = Args::pos_only(
vec![ vec![
PosArg::new(test), PosArg::new(test),
PosArg::new(Expr::Lambda(body)), PosArg::new(Expr::Lambda(body)),
PosArg::new(Expr::Lambda(else_body)), PosArg::new(Expr::Lambda(else_body)),
], ],
vec![],
None, None,
); );
if_acc.call_expr(args) if_acc.call_expr(args)
@ -637,7 +636,7 @@ impl ASTConverter {
.into_iter() .into_iter()
.map(|ex| PosArg::new(self.convert_expr(ex))) .map(|ex| PosArg::new(self.convert_expr(ex)))
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let args = Args::new(pos_args, vec![], None); let args = Args::pos_only(pos_args, None);
function.call_expr(args) function.call_expr(args)
} }
ExpressionType::Binop { a, op, b } => { ExpressionType::Binop { a, op, b } => {
@ -713,7 +712,7 @@ impl ASTConverter {
.into_iter() .into_iter()
.map(|ex| PosArg::new(self.convert_expr(ex))) .map(|ex| PosArg::new(self.convert_expr(ex)))
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let elems = Args::new(elements, vec![], None); let elems = Args::pos_only(elements, None);
Expr::Array(Array::Normal(NormalArray::new(l_sqbr, r_sqbr, elems))) Expr::Array(Array::Normal(NormalArray::new(l_sqbr, r_sqbr, elems)))
// Self::mutate_expr(arr) // Self::mutate_expr(arr)
} }
@ -724,7 +723,7 @@ impl ASTConverter {
.into_iter() .into_iter()
.map(|ex| PosArg::new(self.convert_expr(ex))) .map(|ex| PosArg::new(self.convert_expr(ex)))
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let elems = Args::new(elements, vec![], None); let elems = Args::pos_only(elements, None);
Expr::Set(Set::Normal(NormalSet::new(l_brace, r_brace, elems))) Expr::Set(Set::Normal(NormalSet::new(l_brace, r_brace, elems)))
// Self::mutate_expr(set) // Self::mutate_expr(set)
} }
@ -752,14 +751,14 @@ impl ASTConverter {
.into_iter() .into_iter()
.map(|ex| PosArg::new(self.convert_expr(ex))) .map(|ex| PosArg::new(self.convert_expr(ex)))
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let elems = Args::new(elements, vec![], None); let elems = Args::pos_only(elements, None);
Expr::Tuple(Tuple::Normal(NormalTuple::new(elems))) Expr::Tuple(Tuple::Normal(NormalTuple::new(elems)))
} }
ExpressionType::Subscript { a, b } => { ExpressionType::Subscript { a, b } => {
let obj = self.convert_expr(*a); let obj = self.convert_expr(*a);
let method = let method =
obj.attr_expr(self.convert_ident("__getitem__".to_string(), expr.location)); obj.attr_expr(self.convert_ident("__getitem__".to_string(), expr.location));
let args = Args::new(vec![PosArg::new(self.convert_expr(*b))], vec![], None); let args = Args::pos_only(vec![PosArg::new(self.convert_expr(*b))], None);
method.call_expr(args) method.call_expr(args)
} }
_other => { _other => {
@ -1003,7 +1002,7 @@ impl ASTConverter {
} else { } else {
vec![] vec![]
}; };
let args = Args::new(pos_args, vec![], None); let args = Args::pos_only(pos_args, None);
let class_acc = Expr::Accessor(Accessor::Ident( let class_acc = Expr::Accessor(Accessor::Ident(
self.convert_ident("Class".to_string(), loc), self.convert_ident("Class".to_string(), loc),
)); ));
@ -1125,7 +1124,7 @@ impl ASTConverter {
stmt.location, stmt.location,
)); ));
let args = let args =
Args::new(vec![PosArg::new(Expr::Lit(index))], vec![], None); Args::pos_only(vec![PosArg::new(Expr::Lit(index))], None);
let tuple_acc = method.call_expr(args); let tuple_acc = method.call_expr(args);
let body = let body =
DefBody::new(EQUAL, Block::new(vec![tuple_acc]), DefId(0)); DefBody::new(EQUAL, Block::new(vec![tuple_acc]), DefId(0));
@ -1270,9 +1269,8 @@ impl ASTConverter {
let block = self.convert_for_body(Some(*target), body); let block = self.convert_for_body(Some(*target), body);
let for_ident = self.convert_ident("for".to_string(), stmt.location); let for_ident = self.convert_ident("for".to_string(), stmt.location);
let for_acc = Expr::Accessor(Accessor::Ident(for_ident)); let for_acc = Expr::Accessor(Accessor::Ident(for_ident));
for_acc.call_expr(Args::new( for_acc.call_expr(Args::pos_only(
vec![PosArg::new(iter), PosArg::new(Expr::Lambda(block))], vec![PosArg::new(iter), PosArg::new(Expr::Lambda(block))],
vec![],
None, None,
)) ))
} }
@ -1288,9 +1286,8 @@ impl ASTConverter {
let body = Lambda::new(empty_sig, Token::DUMMY, block, DefId(0)); let body = Lambda::new(empty_sig, Token::DUMMY, block, DefId(0));
let while_ident = self.convert_ident("while".to_string(), stmt.location); let while_ident = self.convert_ident("while".to_string(), stmt.location);
let while_acc = Expr::Accessor(Accessor::Ident(while_ident)); let while_acc = Expr::Accessor(Accessor::Ident(while_ident));
while_acc.call_expr(Args::new( while_acc.call_expr(Args::pos_only(
vec![PosArg::new(test), PosArg::new(Expr::Lambda(body))], vec![PosArg::new(test), PosArg::new(Expr::Lambda(body))],
vec![],
None, None,
)) ))
} }
@ -1306,20 +1303,18 @@ impl ASTConverter {
let else_block = self.convert_block(orelse, BlockKind::If); let else_block = self.convert_block(orelse, BlockKind::If);
let sig = LambdaSignature::new(params, None, TypeBoundSpecs::empty()); let sig = LambdaSignature::new(params, None, TypeBoundSpecs::empty());
let else_body = Lambda::new(sig, Token::DUMMY, else_block, DefId(0)); let else_body = Lambda::new(sig, Token::DUMMY, else_block, DefId(0));
let args = Args::new( let args = Args::pos_only(
vec![ vec![
PosArg::new(test), PosArg::new(test),
PosArg::new(Expr::Lambda(body)), PosArg::new(Expr::Lambda(body)),
PosArg::new(Expr::Lambda(else_body)), PosArg::new(Expr::Lambda(else_body)),
], ],
vec![],
None, None,
); );
if_acc.call_expr(args) if_acc.call_expr(args)
} else { } else {
let args = Args::new( let args = Args::pos_only(
vec![PosArg::new(test), PosArg::new(Expr::Lambda(body))], vec![PosArg::new(test), PosArg::new(Expr::Lambda(body))],
vec![],
None, None,
); );
if_acc.call_expr(args) if_acc.call_expr(args)
@ -1337,16 +1332,16 @@ impl ASTConverter {
)); ));
let return_acc = self.convert_ident("return".to_string(), stmt.location); let return_acc = self.convert_ident("return".to_string(), stmt.location);
let return_acc = Expr::Accessor(Accessor::attr(func_acc, return_acc)); let return_acc = Expr::Accessor(Accessor::attr(func_acc, return_acc));
return_acc.call_expr(Args::new(vec![PosArg::new(value)], vec![], None)) return_acc.call_expr(Args::pos_only(vec![PosArg::new(value)], None))
} }
} }
StatementType::Assert { test, msg } => { StatementType::Assert { test, msg } => {
let test = self.convert_expr(test); let test = self.convert_expr(test);
let args = if let Some(msg) = msg { let args = if let Some(msg) = msg {
let msg = self.convert_expr(msg); let msg = self.convert_expr(msg);
Args::new(vec![PosArg::new(test), PosArg::new(msg)], vec![], None) Args::pos_only(vec![PosArg::new(test), PosArg::new(msg)], None)
} else { } else {
Args::new(vec![PosArg::new(test)], vec![], None) Args::pos_only(vec![PosArg::new(test)], None)
}; };
let assert_acc = Expr::Accessor(Accessor::Ident( let assert_acc = Expr::Accessor(Accessor::Ident(
self.convert_ident("assert".to_string(), stmt.location), self.convert_ident("assert".to_string(), stmt.location),
@ -1366,7 +1361,7 @@ impl ASTConverter {
stmt.location.row() as u32, stmt.location.row() as u32,
stmt.location.column() as u32 - 1, stmt.location.column() as u32 - 1,
))); )));
let args = Args::new(vec![PosArg::new(mod_name)], vec![], None); let args = Args::pos_only(vec![PosArg::new(mod_name)], None);
let call = import_acc.call_expr(args); let call = import_acc.call_expr(args);
let def = if let Some(alias) = name.alias { let def = if let Some(alias) = name.alias {
self.register_name_info(&alias, NameKind::Variable); self.register_name_info(&alias, NameKind::Variable);
@ -1412,7 +1407,7 @@ impl ASTConverter {
stmt.location.row() as u32, stmt.location.row() as u32,
stmt.location.column() as u32 - 1, stmt.location.column() as u32 - 1,
))); )));
let args = Args::new(vec![PosArg::new(mod_name)], vec![], None); let args = Args::new(vec![PosArg::new(mod_name)], None, vec![], None);
let call = import_acc.call_expr(args); let call = import_acc.call_expr(args);
self.register_name_info(module.as_ref().unwrap(), NameKind::Variable); self.register_name_info(module.as_ref().unwrap(), NameKind::Variable);
let mod_ident = self.convert_ident(module.unwrap(), stmt.location); let mod_ident = self.convert_ident(module.unwrap(), stmt.location);
@ -1487,9 +1482,8 @@ impl ASTConverter {
let body = self.convert_for_body(item.optional_vars, body); let body = self.convert_for_body(item.optional_vars, body);
let with_ident = self.convert_ident("with".to_string(), stmt.location); let with_ident = self.convert_ident("with".to_string(), stmt.location);
let with_acc = Expr::Accessor(Accessor::Ident(with_ident)); let with_acc = Expr::Accessor(Accessor::Ident(with_ident));
with_acc.call_expr(Args::new( with_acc.call_expr(Args::pos_only(
vec![PosArg::new(context_expr), PosArg::new(Expr::Lambda(body))], vec![PosArg::new(context_expr), PosArg::new(Expr::Lambda(body))],
vec![],
None, None,
)) ))
} }

View file

@ -1,6 +1,7 @@
use erg_common::config::ErgConfig; use erg_common::config::ErgConfig;
use erg_common::error::{ErrorCore, ErrorKind, MultiErrorDisplay}; use erg_common::error::{ErrorCore, ErrorKind, MultiErrorDisplay};
use erg_common::style::{BLUE, GREEN, RED, RESET, YELLOW}; use erg_common::style::colors::{BLUE, GREEN, RED, YELLOW};
use erg_common::style::RESET;
use erg_common::traits::{Runnable, Stream}; use erg_common::traits::{Runnable, Stream};
use erg_common::Str; use erg_common::Str;
use erg_compiler::artifact::{BuildRunnable, Buildable, CompleteArtifact, IncompleteArtifact}; use erg_compiler::artifact::{BuildRunnable, Buildable, CompleteArtifact, IncompleteArtifact};
@ -56,7 +57,7 @@ impl Runnable for PythonAnalyzer {
impl Buildable for PythonAnalyzer { impl Buildable for PythonAnalyzer {
fn inherit(cfg: ErgConfig, shared: SharedCompilerResource) -> Self { fn inherit(cfg: ErgConfig, shared: SharedCompilerResource) -> Self {
let mod_name = Str::rc(cfg.input.file_stem()); let mod_name = Str::rc(&cfg.input.file_stem());
Self { Self {
cfg: cfg.copy(), cfg: cfg.copy(),
checker: ASTLowerer::new_with_cache(cfg, mod_name, shared), checker: ASTLowerer::new_with_cache(cfg, mod_name, shared),
@ -104,7 +105,7 @@ impl PythonAnalyzer {
}; };
let converter = py2erg::ASTConverter::new(self.cfg.copy(), shadowing); let converter = py2erg::ASTConverter::new(self.cfg.copy(), shadowing);
let IncompleteArtifact{ object: Some(erg_module), mut errors, mut warns } = converter.convert_program(py_program) else { unreachable!() }; let IncompleteArtifact{ object: Some(erg_module), mut errors, mut warns } = converter.convert_program(py_program) else { unreachable!() };
let erg_ast = AST::new(erg_common::Str::rc(filename), erg_module); let erg_ast = AST::new(erg_common::Str::rc(&filename), erg_module);
erg_common::log!("AST:\n{erg_ast}"); erg_common::log!("AST:\n{erg_ast}");
match self.checker.lower(erg_ast, mode) { match self.checker.lower(erg_ast, mode) {
Ok(mut artifact) => { Ok(mut artifact) => {

View file

@ -23,7 +23,7 @@ pub fn parse_args() -> ErgConfig {
break; break;
} }
"-c" | "--code" => { "-c" | "--code" => {
cfg.input = Input::Str(args.next().expect("the value of `-c` is not passed")); cfg.input = Input::str(args.next().expect("the value of `-c` is not passed"));
} }
"--server" => { "--server" => {
cfg.mode = ErgMode::LanguageServer; cfg.mode = ErgMode::LanguageServer;
@ -58,7 +58,7 @@ For more information try `pylyzer --help`"
_ => { _ => {
cfg.input = Input::File( cfg.input = Input::File(
PathBuf::from_str(&arg[..]) PathBuf::from_str(&arg[..])
.unwrap_or_else(|_| panic!("invalid file path: {}", arg)), .unwrap_or_else(|_| panic!("invalid file path: {arg}")),
); );
if let Some("--") = args.next().as_ref().map(|s| &s[..]) { if let Some("--") = args.next().as_ref().map(|s| &s[..]) {
for arg in args { for arg in args {