src/eric7/UI/PythonDisViewer.py

branch
eric7
changeset 10979
960fe726594c
parent 10964
3ce89f2d4729
child 11090
f5f5f5803935
equal deleted inserted replaced
10978:0373041ce25a 10979:960fe726594c
9 """ 9 """
10 10
11 import dis 11 import dis
12 import enum 12 import enum
13 import os 13 import os
14 import sys
14 15
15 from PyQt6.QtCore import Qt, QTimer, pyqtSlot 16 from PyQt6.QtCore import Qt, QTimer, pyqtSlot
16 from PyQt6.QtGui import QBrush 17 from PyQt6.QtGui import QBrush
17 from PyQt6.QtWidgets import QAbstractItemView, QMenu, QTreeWidgetItem, QWidget 18 from PyQt6.QtWidgets import QAbstractItemView, QMenu, QTreeWidgetItem, QWidget
18 19
335 @rtype QTreeWidgetItem 336 @rtype QTreeWidgetItem
336 """ 337 """
337 fields = [] 338 fields = []
338 # Column: Source code line number (right aligned) 339 # Column: Source code line number (right aligned)
339 if instr.starts_line: 340 if instr.starts_line:
340 fields.append("{0:d}".format(instr.starts_line)) 341 fields.append(
342 "{0:d}".format(
343 instr.starts_line
344 if sys.version_info < (3, 13)
345 else instr.line_number
346 )
347 )
341 else: 348 else:
342 fields.append("") 349 fields.append("")
343 # Column: Instruction offset from start of code sequence 350 # Column: Instruction offset from start of code sequence
344 # (right aligned) 351 # (right aligned)
345 fields.append("{0:d}".format(instr.offset)) 352 fields.append("{0:d}".format(instr.offset))
512 ) 519 )
513 520
514 lasti = disassembly["lasti"] 521 lasti = disassembly["lasti"]
515 lastStartItem = None 522 lastStartItem = None
516 for instrDict in disassembly["instructions"]: 523 for instrDict in disassembly["instructions"]:
517 instr = dis.Instruction( 524 instr = (
518 instrDict["opname"], 525 dis.Instruction(
519 0, # dummy value 526 instrDict["opname"],
520 instrDict["arg"], 527 0, # dummy value
521 "", # dummy value 528 instrDict["arg"],
522 instrDict["argrepr"], 529 "", # dummy value
523 instrDict["offset"], 530 instrDict["argrepr"],
524 instrDict["lineno"], 531 instrDict["offset"],
525 instrDict["isJumpTarget"], 532 instrDict["lineno"],
533 instrDict["isJumpTarget"],
534 )
535 if sys.version_info < (3, 13, 0)
536 else dis.Instruction(
537 instrDict["opname"],
538 0, # dummy value
539 instrDict["arg"],
540 "", # dummy value
541 instrDict["argrepr"],
542 instrDict["offset"],
543 instrDict["offset"],
544 instrDict["starts_line"],
545 instrDict["lineno"],
546 instrDict["label"] if instrDict["label"] else None,
547 )
526 ) 548 )
527 if instrDict["lineno"] > 0: 549 if instrDict["lineno"] > 0:
528 if lastStartItem: 550 if lastStartItem:
529 self.__updateItemEndLine(lastStartItem) 551 self.__updateItemEndLine(lastStartItem)
530 lastStartItem = self.__createInstructionItem( 552 lastStartItem = self.__createInstructionItem(

eric ide

mercurial