Commit b091fe65 authored by Craig Citro's avatar Craig Citro

Correctly resolve imports of modules already cimported.

parent 2fccef53
...@@ -4988,17 +4988,26 @@ class FromImportStatNode(StatNode): ...@@ -4988,17 +4988,26 @@ class FromImportStatNode(StatNode):
break break
else: else:
entry = env.lookup(target.name) entry = env.lookup(target.name)
if (entry.is_type and # check whether or not entry is already cimported
entry.type.name == name and if (entry.is_type and entry.type.name == name
entry.type.module_name == self.module.module_name.value): and hasattr(entry.type, 'module_name')):
continue # already cimported if entry.type.module_name == self.module.module_name.value:
# cimported with absolute name
continue
try:
# cimported with relative name
module = env.find_module(self.module.module_name.value,
pos=None)
if entry.type.module_name == module.qualified_name:
continue
except AttributeError:
pass
target.analyse_target_expression(env, None) target.analyse_target_expression(env, None)
if target.type is py_object_type: if target.type is py_object_type:
coerced_item = None coerced_item = None
else: else:
coerced_item = self.item.coerce_to(target.type, env) coerced_item = self.item.coerce_to(target.type, env)
self.interned_items.append( self.interned_items.append((name, target, coerced_item))
(name, target, coerced_item))
def generate_execution_code(self, code): def generate_execution_code(self, code):
self.module.generate_evaluation_code(code) self.module.generate_evaluation_code(code)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment