1.1 --- a/inspector.py Sun Sep 04 23:59:55 2016 +0200
1.2 +++ b/inspector.py Mon Sep 05 00:12:56 2016 +0200
1.3 @@ -22,7 +22,7 @@
1.4
1.5 from branching import BranchTracker
1.6 from common import get_argnames, init_item, predefined_constants
1.7 -from modules import BasicModule, CacheWritingModule
1.8 +from modules import BasicModule, CacheWritingModule, InspectionNaming
1.9 from referencing import Reference
1.10 from resolving import NameResolving
1.11 from results import AccessRef, InstanceRef, InvocationRef, LiteralSequenceRef, \
1.12 @@ -30,7 +30,7 @@
1.13 import compiler
1.14 import sys
1.15
1.16 -class InspectedModule(BasicModule, CacheWritingModule, NameResolving):
1.17 +class InspectedModule(BasicModule, CacheWritingModule, NameResolving, InspectionNaming):
1.18
1.19 "A module inspector."
1.20
2.1 --- a/modules.py Sun Sep 04 23:59:55 2016 +0200
2.2 +++ b/modules.py Mon Sep 05 00:12:56 2016 +0200
2.3 @@ -204,6 +204,31 @@
2.4 self.importer.all_instance_attrs[name] = self.instance_attrs.get(name) or {}
2.5 self.importer.all_instance_attr_constants[name] = self.instance_attr_constants.get(name) or {}
2.6
2.7 + def set_object(self, name, value=None):
2.8 +
2.9 + "Set an object with the given 'name' and the given 'value'."
2.10 +
2.11 + ref = decode_reference(value, name)
2.12 + multiple = self.objects.has_key(name) and self.objects[name].get_kind() != ref.get_kind()
2.13 + self.importer.objects[name] = self.objects[name] = multiple and ref.as_var() or ref
2.14 +
2.15 + def queue_module(self, name, required=False):
2.16 +
2.17 + """
2.18 + Queue the module with the given 'name'. If 'required' is true (it is
2.19 + false by default), indicate that the module is required in the final
2.20 + program.
2.21 + """
2.22 +
2.23 + self.importer.queue_module(name, self, required)
2.24 + if required:
2.25 + self.required.add(name)
2.26 + self.imports.add(name)
2.27 +
2.28 +class InspectionNaming:
2.29 +
2.30 + "Name operations related to inspection."
2.31 +
2.32 # Module-relative naming.
2.33
2.34 def is_global(self, name):
2.35 @@ -265,14 +290,6 @@
2.36 else:
2.37 return Reference("<depends>", path)
2.38
2.39 - def set_object(self, name, value=None):
2.40 -
2.41 - "Set an object with the given 'name' and the given 'value'."
2.42 -
2.43 - ref = decode_reference(value, name)
2.44 - multiple = self.objects.has_key(name) and self.objects[name].get_kind() != ref.get_kind()
2.45 - self.importer.objects[name] = self.objects[name] = multiple and ref.as_var() or ref
2.46 -
2.47 def import_name_from_module(self, name, module_name):
2.48
2.49 "Import 'name' from the module having the given 'module_name'."
2.50 @@ -281,19 +298,6 @@
2.51 self.queue_module(module_name)
2.52 return Reference("<depends>", "%s.%s" % (module_name, name))
2.53
2.54 - def queue_module(self, name, required=False):
2.55 -
2.56 - """
2.57 - Queue the module with the given 'name'. If 'required' is true (it is
2.58 - false by default), indicate that the module is required in the final
2.59 - program.
2.60 - """
2.61 -
2.62 - self.importer.queue_module(name, self, required)
2.63 - if required:
2.64 - self.required.add(name)
2.65 - self.imports.add(name)
2.66 -
2.67 class CachedModule(BasicModule):
2.68
2.69 "A cached module."