sinput-d.adb (Write_Line): Update the Source_Index_Table after each line.

2006-02-13  Thomas Quinot  <quinot@adacore.com>

	* sinput-d.adb (Write_Line): Update the Source_Index_Table after each
	line. This is necessary to allow In_Extended_Main_Unit to provide
	correct results for itypes while writing out expanded source.
	(Close_File): No need to update the source_index_table here since it's
	now done for each line.

From-SVN: r111098
This commit is contained in:
Thomas Quinot 2006-02-15 10:45:56 +01:00 committed by Arnaud Charlet
parent 0456836930
commit b8e51f72bd
1 changed files with 8 additions and 9 deletions

View File

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2002-2003, Free Software Foundation, Inc. --
-- Copyright (C) 2002-2006, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -44,13 +44,12 @@ package body Sinput.D is
Trim_Lines_Table (Dfile);
Close_Debug_File;
-- Now we need to read the file that we wrote and store it
-- in memory for subsequent access.
-- Now we need to read the file that we wrote and store it in memory for
-- subsequent access.
Read_Source_File
(S.Full_Debug_Name, S.Source_First, S.Source_Last, Src);
S.Source_Text := Src;
Set_Source_File_Index_Table (Dfile);
end Close_Debug_Source;
-------------------------
@ -78,8 +77,8 @@ package body Sinput.D is
S.Lines_Table := null;
S.Last_Source_Line := 1;
-- Allocate lines table, guess that it needs to be three times
-- bigger than the original source (in number of lines).
-- Allocate lines table, guess that it needs to be three times bigger
-- than the original source (in number of lines).
Alloc_Line_Tables
(S, Int (Source_File.Table (Source).Last_Source_Line * 3));
@ -100,15 +99,15 @@ package body Sinput.D is
if Str'Length = 0 and then Loc = S.Source_First then
return;
-- Here we write the line, compute the source location for the
-- following line, allocate its table entry, and update the source
-- record entry.
-- Here we write the line, compute the source location for the following
-- line, allocate its table entry, and update the source record entry.
else
Write_Debug_Info (Str (Str'First .. Str'Last - 1));
Loc := Loc - 1 + Source_Ptr (Str'Length + Debug_File_Eol_Length);
Add_Line_Tables_Entry (S, Loc);
S.Source_Last := Loc;
Set_Source_File_Index_Table (Dfile);
end if;
end Write_Debug_Line;