When I tried a similar method, the def function could not be specified correctly in register.
I learned how to use "lambda s, c: s.layout.separator ()".
Using lambda in register, simply defining an empty function and emptying the menu.
In addition, it was solved by adding the function you want to add with prepend.
´´´Python
import bpy
def IHUSEFUL_HT_menu(self, context):
self.layout.label(text="foo",icon="NONE")
return {'FINISHED'}
keep_TOPBAR_HT_upper_bar = bpy.types.TOPBAR_HT_upper_bar.draw
def register():
lmda = lambda s,c:s.layout.separator()
bpy.types.TOPBAR_HT_upper_bar.draw = lmda
bpy.types.TOPBAR_HT_upper_bar.prepend(IHUSEFUL_HT_menu)
def unregister():
bpy.types.TOPBAR_HT_upper_bar.draw = keep_TOPBAR_HT_upper_bar
if __name__ == "__main__":
register()
´´´