1.1 --- a/modules.py Sat Mar 11 16:46:36 2017 +0100
1.2 +++ b/modules.py Sat Mar 11 22:27:45 2017 +0100
1.3 @@ -71,6 +71,10 @@
1.4
1.5 self.exception_namespaces = set()
1.6
1.7 + # Return value details.
1.8 +
1.9 + self.return_values = {}
1.10 +
1.11 # Attribute usage at module and function levels.
1.12
1.13 self.attr_usage = {}
1.14 @@ -398,6 +402,7 @@
1.15 self._get_constant_literals(f)
1.16 self._get_constant_values(f)
1.17 self._get_exception_namespaces(f)
1.18 + self._get_return_values(f)
1.19
1.20 finally:
1.21 f.close()
1.22 @@ -618,6 +623,15 @@
1.23 self.exception_namespaces = value and set(value.split(", ")) or set()
1.24 f.readline()
1.25
1.26 + def _get_return_values(self, f):
1.27 + f.readline() # "return values:"
1.28 + line = f.readline().rstrip()
1.29 + while line:
1.30 + path, values = self._get_fields(line)
1.31 + values = values.split(", ")
1.32 + self.return_values[path] = map(decode_reference, values)
1.33 + line = f.readline().rstrip()
1.34 +
1.35 # Generic parsing methods.
1.36
1.37 def from_lines(self, f, d):
1.38 @@ -875,6 +889,13 @@
1.39 paths.sort()
1.40 print >>f, ", ".join(paths)
1.41
1.42 + print >>f
1.43 + print >>f, "return values:"
1.44 + paths = self.return_values.keys()
1.45 + paths.sort()
1.46 + for path in paths:
1.47 + print >>f, path, ", ".join(map(str, self.return_values[path]))
1.48 +
1.49 finally:
1.50 f.close()
1.51