1.1 --- a/deducer.py Thu Mar 16 23:26:37 2017 +0100
1.2 +++ b/deducer.py Thu Mar 16 23:56:48 2017 +0100
1.3 @@ -1879,10 +1879,10 @@
1.4 providers = set()
1.5
1.6 for ref in refs:
1.7 - ref = self.convert_invocation_provider(ref)
1.8 - if ref.has_kind("<instance>"):
1.9 - providers.add(Reference("<class>", ref.get_origin()))
1.10 - providers.add(ref)
1.11 + for invocation_ref in self.convert_invocation_provider(ref):
1.12 + if invocation_ref.has_kind("<instance>"):
1.13 + providers.add(Reference("<class>", invocation_ref.get_origin()))
1.14 + providers.add(invocation_ref)
1.15
1.16 return providers
1.17
1.18 @@ -1905,7 +1905,15 @@
1.19 value.
1.20 """
1.21
1.22 - return invocation and map(self.convert_invocation, refs) or refs
1.23 + if not invocation:
1.24 + return refs
1.25 +
1.26 + invocation_refs = set()
1.27 +
1.28 + for ref in refs:
1.29 + invocation_refs.update(self.convert_invocation(ref))
1.30 +
1.31 + return invocation_refs
1.32
1.33 def convert_invocation(self, ref):
1.34
1.35 @@ -1913,11 +1921,11 @@
1.36
1.37 if ref:
1.38 if ref.has_kind("<class>"):
1.39 - return ref.instance_of()
1.40 + return [ref.instance_of()]
1.41 elif ref.has_kind("<function>"):
1.42 return self.convert_function_invocation(ref)
1.43
1.44 - return Reference("<var>")
1.45 + return [Reference("<var>")]
1.46
1.47 def convert_function_invocation(self, ref):
1.48
1.49 @@ -1925,11 +1933,9 @@
1.50
1.51 initialised_names = self.importer.all_initialised_names.get((ref.get_origin(), "$return"))
1.52 if initialised_names:
1.53 - refs = set(initialised_names.values())
1.54 - if len(refs) == 1:
1.55 - return first(refs)
1.56 -
1.57 - return Reference("<var>")
1.58 + return set(initialised_names.values())
1.59 +
1.60 + return [Reference("<var>")]
1.61
1.62 def get_initialised_name(self, access_location):
1.63