diff --git a/src/module.py b/src/module.py index e8950b8..73d8c3e 100644 --- a/src/module.py +++ b/src/module.py @@ -81,7 +81,7 @@ class Fmodule(object): def residual_text(self): if '_residual_text' not in self.__dict__: - from variables import build_use + from variables import build_use, call_provides from parsed_text import move_to_top def remove_providers(text): result = [] @@ -131,7 +131,7 @@ class Fmodule(object): result = [] for vars,line in text: result.append( ([],line) ) - result += map(lambda x: ([],Simple_line(line.i," call provide_%s"%(x),line.filename)), vars) + result += map(lambda x: ([],Simple_line(line.i,x,line.filename)), call_provides(vars)) return result result = remove_providers(self.text) diff --git a/src/variable.py b/src/variable.py index 90e1343..dc73330 100644 --- a/src/variable.py +++ b/src/variable.py @@ -23,11 +23,11 @@ class Variable(object): '''Name is lowercase''' if '_is_touched' not in self.__dict__: from variables import variables - result = True # False - #for i in self.children: - # if variables[i].is_touched: - # result = True - # break + result = False + for i in self.children: + if variables[i].is_touched: + result = True + break self._is_touched = result return self._is_touched is_touched = property(is_touched) @@ -409,9 +409,8 @@ class Variable(object): if '_builder' not in self.__dict__: if not self.is_main: self._builder = [] - if '_needs' not in self.__dict__: - import parsed_text - from variables import build_use + import parsed_text + from variables import build_use, call_provides for filename,buffer in parsed_text.parsed_text: if self.line.filename[0].startswith(filename): break @@ -423,11 +422,16 @@ class Variable(object): if line.filename[1] == same_as: inside = True if inside: - text.append(line) + text.append( (vars,line) ) + text += map( lambda x: ([],Simple_line(line.i,x,line.filename)), call_provides(vars) ) if isinstance(line,End_provider): if inside: break name = self.name + text = parsed_text.move_to_top(text,Declaration) + text = parsed_text.move_to_top(text,Implicit) + text = parsed_text.move_to_top(text,Use) + text = map(lambda x: x[1], text) for line in filter(lambda x: type(x) not in [ Begin_doc, End_doc, Doc], text): if type(line) == Begin_provider: result = [ "subroutine bld_%s"%(name) ] diff --git a/src/version.py b/src/version.py index 26bd928..fd6a93d 100644 --- a/src/version.py +++ b/src/version.py @@ -1 +1 @@ -version = "1.1.10" +version = "1.1.11"