TypeVar and virtual support in Symbol Resolver #99
|
@ -111,9 +111,7 @@ impl Resolver {
|
||||||
// do not handle type var param and concrete check here
|
// do not handle type var param and concrete check here
|
||||||
Ok(Ok((unifier.add_ty(TypeEnum::TTuple { ty: vec![] }), false)))
|
Ok(Ok((unifier.add_ty(TypeEnum::TTuple { ty: vec![] }), false)))
|
||||||
} else if let Some(def_id) = self.pyid_to_def.read().get(&ty_id).cloned() {
|
} else if let Some(def_id) = self.pyid_to_def.read().get(&ty_id).cloned() {
|
||||||
// println!("getting def");
|
|
||||||
let def = defs[def_id.0].read();
|
let def = defs[def_id.0].read();
|
||||||
// println!("got def");
|
|
||||||
if let TopLevelDef::Class {
|
if let TopLevelDef::Class {
|
||||||
object_id,
|
object_id,
|
||||||
type_vars,
|
type_vars,
|
||||||
|
|
|
@ -71,7 +71,6 @@ fn main() {
|
||||||
assert_eq!(targets.len(), 1, "only support single assignment for now, at {}", targets[0].location);
|
assert_eq!(targets.len(), 1, "only support single assignment for now, at {}", targets[0].location);
|
||||||
if let ExprKind::Call { func, args, .. } = &value.node {
|
if let ExprKind::Call { func, args, .. } = &value.node {
|
||||||
if matches!(&func.node, ExprKind::Name { id, .. } if id == &"TypeVar".into()) {
|
if matches!(&func.node, ExprKind::Name { id, .. } if id == &"TypeVar".into()) {
|
||||||
print!("registering typevar {:?}", targets[0].node);
|
|
||||||
let constraints = args
|
let constraints = args
|
||||||
.iter()
|
.iter()
|
||||||
.skip(1)
|
.skip(1)
|
||||||
|
@ -87,14 +86,6 @@ fn main() {
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
let res_ty = composer.unifier.get_fresh_var_with_range(&constraints).0;
|
let res_ty = composer.unifier.get_fresh_var_with_range(&constraints).0;
|
||||||
println!(
|
|
||||||
" ...registered: {}",
|
|
||||||
composer.unifier.stringify(
|
|
||||||
res_ty,
|
|
||||||
&mut |x| format!("obj{}", x),
|
|
||||||
&mut |x| format!("tavr{}", x)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
internal_resolver.add_id_type(
|
internal_resolver.add_id_type(
|
||||||
if let ExprKind::Name { id, .. } = &targets[0].node { *id } else {
|
if let ExprKind::Name { id, .. } = &targets[0].node { *id } else {
|
||||||
panic!("must assign simple name variable as type variable")
|
panic!("must assign simple name variable as type variable")
|
||||||
|
|
Loading…
Reference in New Issue