Bug: The "deprecated" warning specifies an incorrect position in the file
Based on issue https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/34591. ## Summary The deprecated function warning specifies an incorrect position in the file. ## System Information - **Operating system:** Windows 7 - **Processor architecture:** x86 - **Compiler version:** 3.2.2 (stable) ## Steps to reproduce ### Example 1 In this example, the warning correctly points to the word `pp`: ```pascal program Project1; {$mode objfpc} type tt = class ff: boolean; property pp: boolean read ff; deprecated; end; var oo: tt; begin oo := tt.create; if oo.pp then // warning indicates the word "pp" ; end. ``` but if you use a `with` statement, it will point to `then`: ```pascal program Project1; {$mode objfpc} type tt = class ff: boolean; property pp: boolean read ff; deprecated; end; var oo: tt; begin oo := tt.create; with oo do if pp then // warning indicates the word "then"! ; end. ``` ### Example 2 In this program, the warning shows the correct position: ```pascal program Project1; {$mode objfpc} type tt = class ff: boolean; property pp: boolean read ff; deprecated; procedure test; end; procedure tt.test; begin if self.pp then // warning indicates the word "pp" ; end; begin end. ``` but if you remove `self.`, it will point to `then`: ```pascal program Project1; {$mode objfpc} type tt = class ff: boolean; property pp: boolean read ff; deprecated; procedure test; end; procedure tt.test; begin if pp then // warning indicates the word "then"! ; end; begin end. ```
issue