Sjoerd Mullender:

When you set a breakpoint on a function with a multi-line argument
list, the breakpoint is actually set on the second line of the
arguments instead of the first line of the body.  This patch fixes
that.
This commit is contained in:
Guido van Rossum 2000-03-06 20:39:59 +00:00
parent 0c3208aa62
commit e85c93f521
1 changed files with 21 additions and 15 deletions

View File

@ -329,29 +329,35 @@ class Pdb(bdb.Bdb, cmd.Cmd):
# code parse time. We don't want that, so all breakpoints
# set at 'def' statements are moved one line onward
if line[:3] == 'def':
incomment = ''
instr = ''
brackets = 0
while 1:
skipone = 0
for c in line:
if instr:
if skipone:
skipone = 0
elif c == '\\':
skipone = 1
elif c == instr:
instr = ''
elif c == '#':
break
elif c in ('"',"'"):
instr = c
elif c in ('(','{','['):
brackets = brackets + 1
elif c in (')','}',']'):
brackets = brackets - 1
lineno = lineno+1
line = linecache.getline(filename, lineno)
if not line:
print 'end of file'
return 0
line = string.strip(line)
if incomment:
if len(line) < 3: continue
if (line[-3:] == incomment):
incomment = ''
continue
if not line: continue # Blank line
if len(line) >= 3:
if (line[:3] == '"""'
or line[:3] == "'''"):
if line[-3:] == line[:3]:
# one-line string
continue
incomment = line[:3]
continue
if line[0] != '#': break
if brackets <= 0 and line[0] not in ('#','"',"'"):
break
return lineno
def do_enable(self, arg):