From 76becd36b7c0e19af8860b0d13d74ce8d3cf43e7 Mon Sep 17 00:00:00 2001 From: Pierre Muller <pierre@freepascal.org> Date: Thu, 26 Oct 2023 09:40:31 +0000 Subject: [PATCH] Add new TUnsortedCompilerOptionsStringList class which sets Duplicates to dupAccept explicitly in constructor. Use new TUnsortedCompilerOptionsStringList class to instanciate all TStrings containing list of complier options. --- packages/fpmkunit/src/fpmkunit.pp | 48 ++++++++++++++++++------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/packages/fpmkunit/src/fpmkunit.pp b/packages/fpmkunit/src/fpmkunit.pp index 2ac498c1d9..7c37bb8f00 100644 --- a/packages/fpmkunit/src/fpmkunit.pp +++ b/packages/fpmkunit/src/fpmkunit.pp @@ -1850,6 +1850,11 @@ type function Add(const S: string): Integer; override; end; + TUnsortedCompilerOptionsStringList = class(TStringList) + public + constructor Create; + end; + var CustomFpmakeCommandlineOptions: TStrings; CustomFpMakeCommandlineValues: TStrings; @@ -2933,7 +2938,7 @@ end; procedure AddCustomFpmakeCommandlineOption(const ACommandLineOption, HelpMessage : string); begin if not assigned(CustomFpmakeCommandlineOptions) then - CustomFpmakeCommandlineOptions := TStringList.Create; + CustomFpmakeCommandlineOptions := TUnsortedCompilerOptionsStringList.Create; CustomFpmakeCommandlineOptions.Values[ACommandLineOption]:=HelpMessage; end; @@ -3007,7 +3012,7 @@ begin Result:=Nil; If (S='') then Exit; - Result:=TStringList.Create; + Result:=TUnsortedCompilerOptionsStringList.Create; Repeat P:=Pos(' ',S); If P=0 then @@ -3597,7 +3602,7 @@ constructor TPackageVariant.Create(ACollection: TCollection); begin inherited Create(ACollection); FTargets := TTargets.Create(TTarget); - FOptions := TStringList.Create; + FOptions := TUnsortedCompilerOptionsStringList.Create; FIncludePath:=TConditionalStrings.Create(TConditionalString); FSourcePath:=TConditionalStrings.Create(TConditionalString); end; @@ -3613,9 +3618,7 @@ end; procedure TPackageVariant.AddOption(const aValue: string); begin - // Cannot use duplicates, requires ordering - if Options.Indexof(aValue)=-1 then - Options.Add(aValue); + Options.Add(aValue); end; { TPackageVariants } @@ -3806,6 +3809,16 @@ begin inherited Add(S); end; +{**************************************************************************** + TUnsortedCompilerOptionsStringList +****************************************************************************} + +constructor TUnsortedCompilerOptionsStringList.Create; +begin + Inherited Create; + Duplicates:=DupAccept; +end; + {**************************************************************************** TNamedItem ****************************************************************************} @@ -4625,14 +4638,14 @@ end; function TPackage.GetOptions: TStrings; begin If (FOptions=Nil) then - FOptions:=TStringList.Create; + FOptions:=TUnsortedCompilerOptionsStringList.Create; Result:=FOptions; end; function TPackage.GetTransmitOptions: TStrings; begin If (FTransmitOptions=Nil) then - FTransmitOptions:=TStringList.Create; + FTransmitOptions:=TUnsortedCompilerOptionsStringList.Create; Result:=FTransmitOptions; end; @@ -4872,8 +4885,7 @@ begin begin PackageVariants := TPackageVariants(FPackageVariants.Items[i]); for S in PackageVariants.ActivePackageVariant.Options do - if ACompilerOptions.IndexOf(S)=-1 then - ACompilerOptions.Add(S); + ACompilerOptions.Add(S); end; end; @@ -5391,7 +5403,7 @@ end; function TCustomDefaults.GetOptions: TStrings; begin If (FOptions=Nil) then - FOptions:=TStringList.Create; + FOptions:=TUnsortedCompilerOptionsStringList.Create; Result:=FOptions; end; @@ -5663,9 +5675,7 @@ end; procedure TCustomDefaults.AddOption(const aValue: string); begin - // Cannot use duplicates, requires ordering - if Options.Indexof(aValue)=-1 then - Options.Add(aValue); + Options.Add(aValue); end; function TCustomDefaults.IsBuildDifferentFromTarget: boolean; @@ -6365,7 +6375,7 @@ begin else if assigned(CustomFpmakeCommandlineOptions) and CheckCustomOption(I,CustOptName) then begin if not assigned(CustomFpMakeCommandlineValues) then - CustomFpMakeCommandlineValues := TStringList.Create; + CustomFpMakeCommandlineValues := TUnsortedCompilerOptionsStringList.Create; CustomFpMakeCommandlineValues.Values[CustOptName]:=OptionArg(I, true) end else if (not CheckBuildOptionSetValue(I)) and (not CheckPackageVariantOptionSetValue(I)) @@ -10098,7 +10108,7 @@ end; function TTarget.GetOptions: TStrings; begin If Foptions=Nil then - FOptions:=TStringList.Create; + FOptions:=TUnsortedCompilerOptionsStringList.Create; Result:=FOptions; end; @@ -10457,9 +10467,7 @@ end; procedure TTarget.AddOption(const aValue: String); begin - // Cannot use duplicates, requires ordering - if Options.IndexOf(aValue)=-1 then - Options.Add(aValue); + Options.Add(aValue); end; @@ -11113,7 +11121,7 @@ end; function TCommand.GetOptions: TStrings; begin If (FOptions=Nil) then - FOptions:=TStringList.Create; + FOptions:=TUnsortedCompilerOptionsStringList.Create; Result:=FOptions; end;