* also allow a ";"-separated list of namespaces for -FN

+ added test

git-svn-id: trunk@38939 -
This commit is contained in:
svenbarth 2018-05-06 21:16:51 +00:00
parent d9925f7074
commit 11f673a991
3 changed files with 44 additions and 2 deletions

1
.gitattributes vendored
View File

@ -13735,6 +13735,7 @@ tests/test/tudots2.pp svneol=native#text/pascal
tests/test/tudots3.pp svneol=native#text/pascal
tests/test/tudots4.pp svneol=native#text/pascal
tests/test/tudots5.pp svneol=native#text/pascal
tests/test/tudots6.pp svneol=native#text/pascal
tests/test/tuglylabels1.pp svneol=native#text/plain
tests/test/tunaligned1.pp svneol=native#text/plain
tests/test/tunistr1.pp svneol=native#text/plain

View File

@ -3629,7 +3629,10 @@ var
i : tfeature;
j : longint;
abi : tabi;
cmditem: TCmdStrListItem;
tmplist : TCmdStrList;
cmditem,
tmpcmditem : TCmdStrListItem;
cmdstr : TCmdStr;
{$if defined(cpucapabilities)}
cpuflag : tcpuflags;
hs : string;
@ -3838,12 +3841,33 @@ begin
add_package(option.parapackages.NameOfIndex(j),true,true);
{ add default namespaces }
tmplist:=TCmdStrList.Create;
cmditem:=TCmdStrListItem(option.paranamespaces.First);
while assigned(cmditem) do
begin
namespacelist.insert(cmditem.Str);
{ use a temporary list cause if ";" are involved we need to reverse the
order due to how TCmdStrList behaves }
cmdstr:=cmditem.str;
repeat
j:=Pos(';',cmdstr);
if j>0 then
begin
tmplist.insert(copy(cmdstr,1,j-1));
delete(cmdstr,1,j);
end
else
tmplist.insert(cmdstr);
until j=0;
tmpcmditem:=TCmdStrListItem(tmplist.First);
while assigned(tmpcmditem) do
begin
namespacelist.insert(tmpcmditem.Str);
tmpcmditem:=TCmdStrListItem(tmpcmditem.Next);
end;
tmplist.clear;
cmditem:=TCmdStrListItem(cmditem.Next);
end;
tmplist.Free;
{ add unit environment and exepath to the unit search path }
if inputfilepath<>'' then

17
tests/test/tudots6.pp Normal file
View File

@ -0,0 +1,17 @@
{ %OPT="-FNudots;udots.udots" }
program tudots6;
uses
Unit1, { finds UDots.Unit1 in udots.unit.pp }
Unit5; { finds UDots.UDots.Unit5 in udots.udots.unit5.pp }
begin
if Unit1Str <> 'UDots.Unit1' then
Halt(1);
if Unit5Str <> 'UDots.UDots.Unit5' then
Halt(2);
Writeln('ok');
end.