Skip to content

Commit 329a082

Browse files
author
roman_yakovenko
committed
improve decl_printer - sort declarations before printing
1 parent a57a269 commit 329a082

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

pygccxml/declarations/decl_printer.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ def print_hierarchy(hierarchy_type, classes, curr_level):
208208
self.writer( ' ' * (curr_level + 1)* self.INDENT_SIZE + is_virtual.ljust( self.JUSTIFY ) + os.linesep)
209209

210210
def print_members(members_type, members, curr_level):
211+
members = members[:]
212+
members.sort()
211213
self.writer( ' ' * curr_level * self.INDENT_SIZE + members_type.ljust( self.JUSTIFY ) + os.linesep)
212214
if self.__recursive:
213215
curr_level += 1
@@ -240,7 +242,9 @@ def visit_namespace(self ):
240242
return #don't print info about empty namespaces
241243
self.print_decl_header()
242244
if self.__recursive:
243-
for decl in self.__inst.declarations:
245+
inst_decls = self.__inst.declarations[:]
246+
inst_decls.sort()
247+
for decl in inst_decls:
244248
if self.is_builtin_decl( decl ):
245249
continue
246250
prn = self.clone()

unittests/project_reader_correctness_tester.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,14 @@ def test(self):
6767
, compilation_mode=parser.COMPILATION_MODE.FILE_BY_FILE )
6868
src_reader = parser.source_reader_t( self.config )
6969
src_decls = src_reader.read_file( 'separate_compilation/all.h' )
70-
if src_decls != prj_decls:
71-
s = src_decls[0]
72-
p = prj_decls[0]
73-
sr = file( os.path.join( autoconfig.build_directory , 'separate_compilation.sr.txt'),'w+b' )
74-
pr = file( os.path.join( autoconfig.build_directory , 'separate_compilation.pr.txt'), 'w+b' )
75-
declarations.print_declarations( s, writer=lambda l: sr.write( l ) )
76-
declarations.print_declarations( p, writer=lambda l: pr.write( l ) )
77-
sr.close()
78-
pr.close()
79-
self.fail( "Expected - There is a difference between declarations" )
70+
71+
declarations.dump_declarations( src_decls
72+
, os.path.join( autoconfig.build_directory, 'separate_compilation.sr.txt' ) )
73+
74+
declarations.dump_declarations( prj_decls
75+
, os.path.join( autoconfig.build_directory, 'separate_compilation.pr.txt' ) )
76+
77+
self.failUnless( src_decls == prj_decls, "There is a difference between declarations" )
8078

8179

8280
def create_suite():

0 commit comments

Comments
 (0)