fix #146 - linenum not detected in message produced by ld.gold

This commit is contained in:
Basile Burg 2025-05-12 06:01:42 +02:00
parent f1f209a486
commit 8b6f7e0f63
1 changed files with 13 additions and 4 deletions

View File

@ -161,7 +161,7 @@ type
function optionedOptionsModified: boolean;
//
function openFileFromDmdMessage(const aMessage: string): boolean;
function getLineFromMessage(const aMessage: string): TPoint;
class function getLineFromMessage(const aMessage: string): TPoint;
function guessMessageKind(const aMessg: string): TAppMessageKind;
//
function singleServiceName: string;
@ -1239,7 +1239,7 @@ begin
end;
end;
function TMessagesWidget.getLineFromMessage(const aMessage: string): TPoint;
class function TMessagesWidget.getLineFromMessage(const aMessage: string): TPoint;
var
rng: TStringRange = (ptr:nil; pos:0; len: 0);
lne: string;
@ -1258,9 +1258,10 @@ begin
gnuStyle := (rng.front = ':') and (not rng.empty) and (rng.popFront^.front in ['1'..'9']);
if gnuStyle then
begin
lne := rng.takeUntil([':', ' ']).yield;
lne := rng.takeWhile(['1'..'9']).yield;
rng.popWhile(' ');
if rng.front = ':' then
col := rng.popWhile(':')^.takeUntil(' ').yield;
col := rng.popFront()^.takeUntil([' ', ':']).yield;
end else
begin
rng.popWhile(['(', ':']);
@ -1350,4 +1351,12 @@ begin
end;
{$ENDREGION}
{$IFDEF DEBUG}
begin
assert(TMessagesWidget.getLineFromMessage('home/xxx/temp/temp.sx:8 : erreur : référence à « BAD » non définie') = Point(-1,8));
assert(TMessagesWidget.getLineFromMessage('home/xxx/temp/temp.sx:8: erreur : référence à « BAD » non définie') = Point(-1,8));
assert(TMessagesWidget.getLineFromMessage('home/xxx/temp/temp.sx:8:12: erreur : référence à « BAD » non définie') = Point(12,8));
assert(TMessagesWidget.getLineFromMessage('home/xxx/temp/temp.sx(8,12): erreur : référence à « BAD » non définie') = Point(12,8));
assert(TMessagesWidget.getLineFromMessage('home/xxx/temp/temp.sx(8): erreur : référence à « BAD » non définie') = Point(-1,8));
{$ENDIF}
end.