Fix a type declaration bug

This commit is contained in:
Shunsuke Shibayama 2022-12-25 12:00:30 +09:00
parent 1a40a1eca7
commit 401a6f9b84
4 changed files with 12 additions and 6 deletions

6
Cargo.lock generated
View file

@ -227,7 +227,7 @@ dependencies = [
[[package]]
name = "erg_common"
version = "0.6.0-beta.4"
source = "git+https://github.com/erg-lang/erg?branch=main#fb9eb0a12040cba151f45df3abb407e0592d3add"
source = "git+https://github.com/erg-lang/erg?branch=main#46418987c1e6bf24baa774827cb1e4be8fe25b67"
dependencies = [
"hermit-abi",
"libc",
@ -237,7 +237,7 @@ dependencies = [
[[package]]
name = "erg_compiler"
version = "0.6.0-beta.4"
source = "git+https://github.com/erg-lang/erg?branch=main#fb9eb0a12040cba151f45df3abb407e0592d3add"
source = "git+https://github.com/erg-lang/erg?branch=main#46418987c1e6bf24baa774827cb1e4be8fe25b67"
dependencies = [
"erg_common",
"erg_parser",
@ -246,7 +246,7 @@ dependencies = [
[[package]]
name = "erg_parser"
version = "0.6.0-beta.4"
source = "git+https://github.com/erg-lang/erg?branch=main#fb9eb0a12040cba151f45df3abb407e0592d3add"
source = "git+https://github.com/erg-lang/erg?branch=main#46418987c1e6bf24baa774827cb1e4be8fe25b67"
dependencies = [
"erg_common",
"unicode-xid 0.2.4",

View file

@ -716,7 +716,7 @@ impl ASTConverter {
let def = Def::new(sig, body);
Expr::Def(def)
} else {
self.register_name_info(&name, NameKind::Variable);
// no registration because it's just a type ascription
let ident = self.convert_ident(name, stmt.location);
let tasc = TypeAscription::new(Expr::Accessor(Accessor::Ident(ident)), COLON, t_spec);
Expr::TypeAsc(tasc)

View file

@ -86,10 +86,15 @@ impl PythonAnalyzer {
let err = CompileError::new(core, self.cfg.input.clone(), "".into());
IncompleteArtifact::new(None, CompileErrors::from(err), CompileErrors::empty())
})?;
let converter = py2erg::ASTConverter::new(self.cfg.copy(), ShadowingMode::Invisible);
let shadowing = if cfg!(feature = "debug") {
ShadowingMode::Visible
} else {
ShadowingMode::Invisible
};
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 erg_ast = AST::new(erg_common::Str::rc(filename), erg_module);
erg_common::log!("AST: {erg_ast}");
erg_common::log!("AST:\n{erg_ast}");
match self.checker.lower(erg_ast, mode) {
Ok(mut artifact) => {
artifact.warns.extend(warns);

View file

@ -28,4 +28,5 @@ print(dic["c"]) # ERR
a = [1, 2, 3]
print(a[4]) # ERR
a_: str
a_ = "aa" if True else "bb"