diff --git a/compiler/packages/fcl-passrc/src/pasuseanalyzer.pas b/compiler/packages/fcl-passrc/src/pasuseanalyzer.pas index 8b42d60..320a83a 100644 --- a/compiler/packages/fcl-passrc/src/pasuseanalyzer.pas +++ b/compiler/packages/fcl-passrc/src/pasuseanalyzer.pas @@ -62,6 +62,10 @@ const // non fpc hints nPAParameterInOverrideNotUsed = 4501; sPAParameterInOverrideNotUsed = 'Parameter "%s" not used'; + nPAFieldNotUsed = 4502; + sPAFieldNotUsed = 'Field "%s" not used'; + nPAFieldIsAssignedButNeverUsed = 4503; + sPAFieldIsAssignedButNeverUsed = 'Field "%s" is assigned but never used'; // fpc hints: use same IDs as fpc nPAUnitNotUsed = 5023; sPAUnitNotUsed = 'Unit "%s" not used in %s'; @@ -2827,8 +2831,14 @@ begin sPAPrivateFieldIsNeverUsed,[El.FullName],El); end else if El.ClassType=TPasVariable then - EmitMessage(20170311234201,mtHint,nPALocalVariableNotUsed, - sPALocalVariableNotUsed,[El.Name],El) + begin + if El.Parent is TPasMembersType then + EmitMessage(20201229033108,mtHint,nPAFieldNotUsed, + sPAFieldNotUsed,[El.Name],El) + else + EmitMessage(20170311234201,mtHint,nPALocalVariableNotUsed, + sPALocalVariableNotUsed,[El.Name],El); + end else EmitMessage(20170314221334,mtHint,nPALocalXYNotUsed, sPALocalXYNotUsed,[El.ElementTypeName,El.Name],El); @@ -2842,6 +2852,9 @@ begin if El.Visibility in [visPrivate,visStrictPrivate] then EmitMessage(20170311234159,mtHint,nPAPrivateFieldIsAssignedButNeverUsed, sPAPrivateFieldIsAssignedButNeverUsed,[El.FullName],El) + else if El.Parent is TPasMembersType then + EmitMessage(20201229033618,mtHint,nPAFieldIsAssignedButNeverUsed, + sPAFieldIsAssignedButNeverUsed,[El.Name],El) else EmitMessage(20170311233825,mtHint,nPALocalVariableIsAssignedButNeverUsed, sPALocalVariableIsAssignedButNeverUsed,[El.Name],El); diff --git a/compiler/packages/fcl-passrc/tests/tcuseanalyzer.pas b/compiler/packages/fcl-passrc/tests/tcuseanalyzer.pas index 1e6567f..3c145ee 100644 --- a/compiler/packages/fcl-passrc/tests/tcuseanalyzer.pas +++ b/compiler/packages/fcl-passrc/tests/tcuseanalyzer.pas @@ -945,9 +945,9 @@ begin 'begin', ' DoIt;']); AnalyzeProgram; - CheckUseAnalyzerHint(mtHint,nPALocalVariableNotUsed,'Local variable "b" not used'); - CheckUseAnalyzerHint(mtHint,nPALocalVariableIsAssignedButNeverUsed, - 'Local variable "c" is assigned but never used'); + CheckUseAnalyzerHint(mtHint,nPAFieldNotUsed,'Field "b" not used'); + CheckUseAnalyzerHint(mtHint,nPAFieldIsAssignedButNeverUsed, + 'Field "c" is assigned but never used'); CheckUseAnalyzerUnexpectedHints; end; @@ -2278,9 +2278,9 @@ begin Add('begin'); Add(' Point(1);'); AnalyzeProgram; - CheckUseAnalyzerHint(mtHint,nPALocalVariableIsAssignedButNeverUsed, - 'Local variable "X" is assigned but never used'); - CheckUseAnalyzerHint(mtHint,nPALocalVariableNotUsed,'Local variable "Y" not used'); + CheckUseAnalyzerHint(mtHint,nPAFieldIsAssignedButNeverUsed, + 'Field "X" is assigned but never used'); + CheckUseAnalyzerHint(mtHint,nPAFieldNotUsed,'Field "Y" not used'); CheckUseAnalyzerUnexpectedHints; end; @@ -2319,7 +2319,7 @@ begin Add('begin'); Add(' Point();'); AnalyzeProgram; - CheckUseAnalyzerHint(mtHint,nPALocalVariableNotUsed,'Local variable "Y" not used'); + CheckUseAnalyzerHint(mtHint,nPAFieldNotUsed,'Field "Y" not used'); CheckUseAnalyzerUnexpectedHints; end; @@ -2385,7 +2385,7 @@ begin ' specialize Point();', '']); AnalyzeProgram; - CheckUseAnalyzerHint(mtHint,nPALocalVariableNotUsed,'Local variable "Y" not used'); + CheckUseAnalyzerHint(mtHint,nPAFieldNotUsed,'Field "Y" not used'); CheckUseAnalyzerUnexpectedHints; end;