The code tools seem to have problems in parsing "case" statements, and with debugging "while" statements. See this code snippet:

//determine XML lines to copy
  while PFirst < XLast do begin
  //copy until PFirst
    while XFirst < PFirst do begin
      dst.Add(Strings[XFirst]); inc(XFirst);
    end;
  //merge patch
dst.Add(DiffFile.Strings[DFirst]); inc(DFirst); //copy diff range header
    case DiffSec.c of
    'a',
    'c',
    'd': //delete P (insert Diff lines before P?)
      begin // <---------------- this is line 134 --------------
        while DFirst <= DLast do begin
...

When navigating in this file (e.g. CTRL-SHIFT up/dn), the cursor is positioned at the marked line, at the "in" of "begin". The error message is:
uxml.pas(134,10) Error: identifier expected, but in found
(complete file uploaded with Mantis #19783)

Does the parser have problems with character literals (and other expressions) as case labels?
BTW the unit compiles, i.e. contains no real syntax errors.


As another strange effect the first "while" above is not marked with a dot at runtime, so that it's impossible to set an breakpoint on that line. Other "while" statements (e.g. last line above) have such dots. This may be a problem with compiler optimization?

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to