@@ -1058,6 +1058,10 @@ package body GNATCOLL.Projects is
10581058 procedure Process_Project (Project : Project_Type);
10591059 -- Process Project and append to List all relevant ALI files
10601060
1061+ function Is_File_Based (SFD : Source_File_Data) return Boolean;
1062+ -- Return whether the source file designated by SFD belongs to a
1063+ -- file-based language (i.e. not a unit-based language, like Ada).
1064+
10611065 Local_Obj_Map : Names_Files.Map;
10621066
10631067 -- -----------------
@@ -1095,11 +1099,7 @@ package body GNATCOLL.Projects is
10951099 SFD := Element (Cur);
10961100
10971101 loop
1098- if Get_Language_From_Name
1099- (Get_View (SFD.Project),
1100- Get_String (SFD.Lang))
1101- .Config.Kind = Unit_Based
1102- then
1102+ if not Is_File_Based (SFD) then
11031103
11041104 Iter := Start (Extending_Project (Root, True));
11051105 while Current (Iter) /= No_Project loop
@@ -1148,11 +1148,7 @@ package body GNATCOLL.Projects is
11481148 -- instead of an inner iterator, so that library projects aggregated
11491149 -- in a library aggregate are also considered
11501150 loop
1151- if Get_Language_From_Name
1152- (Get_View (SFD.Project),
1153- Get_String (SFD.Lang))
1154- .Config.Kind = File_Based
1155- then
1151+ if Is_File_Based (SFD) then
11561152
11571153 -- We can have as much c/c++ files with same name as possible.
11581154 -- So what we need to do is only iterate through extended
@@ -1435,6 +1431,18 @@ package body GNATCOLL.Projects is
14351431 & Dir.Display_Full_Name);
14361432 end Process_Project ;
14371433
1434+ -- -----------------
1435+ -- Is_File_Based --
1436+ -- -----------------
1437+
1438+ function Is_File_Based (SFD : Source_File_Data) return Boolean is
1439+ Language : constant Language_Ptr :=
1440+ Get_Language_From_Name
1441+ (Get_View (SFD.Project), Get_String (SFD.Lang));
1442+ begin
1443+ return Language.Config.Kind = File_Based;
1444+ end Is_File_Based ;
1445+
14381446 begin
14391447 if Is_Aggregate_Project (Self) then
14401448 if Active (Me) then
0 commit comments