mirror of
https://github.com/mtshiba/pylyzer.git
synced 2025-08-03 13:58:17 +00:00
Change containers mutable
This commit is contained in:
parent
c11757c51e
commit
7969c86fa2
3 changed files with 16 additions and 7 deletions
8
Cargo.lock
generated
8
Cargo.lock
generated
|
@ -206,7 +206,7 @@ checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
|
|||
[[package]]
|
||||
name = "els"
|
||||
version = "0.1.13-nightly.0"
|
||||
source = "git+https://github.com/erg-lang/erg-language-server?branch=main#071ddf1eae1fc6df505e0fd58521cf49dea6444f"
|
||||
source = "git+https://github.com/erg-lang/erg-language-server?branch=main#ba96e0d1e86f496600b659c4a3fd70ec215587f3"
|
||||
dependencies = [
|
||||
"erg_common",
|
||||
"erg_compiler",
|
||||
|
@ -227,7 +227,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "erg_common"
|
||||
version = "0.6.0"
|
||||
source = "git+https://github.com/erg-lang/erg?branch=main#a1673e83c9a13c4d7b91ad6996c7068a9b68c27b"
|
||||
source = "git+https://github.com/erg-lang/erg?branch=main#f0ecf59af17df5233fc94d2227c00b9a6926242d"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
|
@ -237,7 +237,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "erg_compiler"
|
||||
version = "0.6.0"
|
||||
source = "git+https://github.com/erg-lang/erg?branch=main#a1673e83c9a13c4d7b91ad6996c7068a9b68c27b"
|
||||
source = "git+https://github.com/erg-lang/erg?branch=main#f0ecf59af17df5233fc94d2227c00b9a6926242d"
|
||||
dependencies = [
|
||||
"erg_common",
|
||||
"erg_parser",
|
||||
|
@ -246,7 +246,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "erg_parser"
|
||||
version = "0.6.0"
|
||||
source = "git+https://github.com/erg-lang/erg?branch=main#a1673e83c9a13c4d7b91ad6996c7068a9b68c27b"
|
||||
source = "git+https://github.com/erg-lang/erg?branch=main#f0ecf59af17df5233fc94d2227c00b9a6926242d"
|
||||
dependencies = [
|
||||
"erg_common",
|
||||
"unicode-xid 0.2.4",
|
||||
|
|
|
@ -80,6 +80,7 @@ pylyzer converts Python ASTs to Erg ASTs and passes them to Erg's type checker.
|
|||
* [x] local scripts resolving
|
||||
* [ ] local packages resolving
|
||||
* [ ] compound type checking
|
||||
* [ ] type assertion
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -355,6 +355,11 @@ impl ASTConverter {
|
|||
(l_brace, r_brace)
|
||||
}
|
||||
|
||||
fn mutate_expr(expr: Expr) -> Expr {
|
||||
let mut_op = Token::new(TokenKind::Mutate, "!", expr.ln_begin().unwrap_or(0), expr.col_begin().unwrap_or(0));
|
||||
Expr::UnaryOp(UnaryOp::new(mut_op, expr))
|
||||
}
|
||||
|
||||
fn convert_expr(&mut self, expr: Located<ExpressionType>) -> Expr {
|
||||
match expr.node {
|
||||
ExpressionType::Number { value } => {
|
||||
|
@ -477,7 +482,8 @@ impl ASTConverter {
|
|||
.map(|ex| PosArg::new(self.convert_expr(ex)))
|
||||
.collect::<Vec<_>>();
|
||||
let elems = Args::new(elements, vec![], None);
|
||||
Expr::Array(Array::Normal(NormalArray::new(l_sqbr, r_sqbr, elems)))
|
||||
let arr = Expr::Array(Array::Normal(NormalArray::new(l_sqbr, r_sqbr, elems)));
|
||||
Self::mutate_expr(arr)
|
||||
}
|
||||
ExpressionType::Set { elements } => {
|
||||
let (l_brace, r_brace) = Self::gen_enclosure_tokens(TokenKind::LBrace, elements.iter(), expr.location);
|
||||
|
@ -485,7 +491,8 @@ impl ASTConverter {
|
|||
.map(|ex| PosArg::new(self.convert_expr(ex)))
|
||||
.collect::<Vec<_>>();
|
||||
let elems = Args::new(elements, vec![], None);
|
||||
Expr::Set(Set::Normal(NormalSet::new(l_brace, r_brace, elems)))
|
||||
let set = Expr::Set(Set::Normal(NormalSet::new(l_brace, r_brace, elems)));
|
||||
Self::mutate_expr(set)
|
||||
}
|
||||
ExpressionType::Dict { elements } => {
|
||||
let (l_brace, r_brace) = Self::gen_enclosure_tokens(TokenKind::LBrace, elements.iter().map(|(_, v)| v), expr.location);
|
||||
|
@ -493,7 +500,8 @@ impl ASTConverter {
|
|||
.map(|(k, v)|
|
||||
KeyValue::new(k.map(|k| self.convert_expr(k)).unwrap_or(Expr::Dummy(Dummy::empty())), self.convert_expr(v))
|
||||
).collect::<Vec<_>>();
|
||||
Expr::Dict(Dict::Normal(NormalDict::new(l_brace, r_brace, kvs)))
|
||||
let dict = Expr::Dict(Dict::Normal(NormalDict::new(l_brace, r_brace, kvs)));
|
||||
Self::mutate_expr(dict)
|
||||
}
|
||||
ExpressionType::Tuple { elements } => {
|
||||
let elements = elements.into_iter()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue