diff --git a/idl_parser/parser.py b/idl_parser/parser.py index 0a4bd15..27dc666 100644 --- a/idl_parser/parser.py +++ b/idl_parser/parser.py @@ -78,7 +78,7 @@ def parse(self, idls=[], idl_dirs=[], except_files=[]): :param except_files: List of IDL files that should be ignored. Do not have to use fullpath. :returns: None """ - if self._verbose: + if self._verbose: logger.write('parse(\n') logger.write(' idls=%s\n' % idls) logger.indent() @@ -87,7 +87,7 @@ def parse(self, idls=[], idl_dirs=[], except_files=[]): def parse_idl(self, idl_path): if idl_path in self._parsed_files: - if self._verbose: + if self._verbose: logger.write('Parsing IDL(%s) but ALREADY PARSED.\n' % idl_path) return pass @@ -101,12 +101,12 @@ def parse_idl(self, idl_path): lines.append((line_number, idl_path, line)) line_number = line_number + 1 + self._parsed_files.append(idl_path) self.parse_lines(lines) if self._verbose: logger.deindent() - logger.write('Parsed IDL (%s)\n' % idl_path) - self._parsed_files.append(idl_path) + logger.write('Parsed IDL (%s)\n' % idl_path) def parse_lines(self, lines, filepath=None): lines = self._clear_comments(lines) @@ -201,6 +201,9 @@ def _include_paste(filepath): if line.find('"') >= 7: filename = line[line.find('"')+1 : line.rfind('"')] + if filename in self._parsed_files: + if self._verbose: logger.write("Skipping already included file %s\n" % filename) + continue if self._verbose: logger.write('Find Includes %s\n' % filename) p = self._find_idl(filename, _include_paste) if p is None: @@ -222,6 +225,9 @@ def _include_paste(filepath): elif line.find('<') >= 7: filename = line[line.find('<')+1 : line.rfind('>')] + if filename in self._parsed_files: + if self._verbose: logger.write("Skipping already included file %s\n" % filename) + continue if self._verbose: sys.stdout.write(' -- Includes %s\n' % filename) p = self._find_idl(filename, _include_paste) if p is None: