mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 11:09:13 +02:00
fcl-passrc: resolver: use same msg id as fpc for some hints
git-svn-id: trunk@38980 -
This commit is contained in:
parent
d5372d7547
commit
a445450486
@ -91,7 +91,7 @@ const
|
||||
nCallingConventionMismatch = 3018;
|
||||
nResultTypeMismatchExpectedButFound = 3019;
|
||||
nFunctionHeaderMismatchForwardVarName = 3020;
|
||||
nFunctionHidesIdentifier = 3021;
|
||||
nFunctionHidesIdentifier_NonVirtualMethod = 3021;
|
||||
nNoMethodInAncestorToOverride = 3022;
|
||||
nInheritedOnlyWorksInMethods = 3023;
|
||||
nInheritedNeedsAncestor = 3024;
|
||||
@ -120,7 +120,7 @@ const
|
||||
nExpectXArrayElementsButFoundY = 3047;
|
||||
nCannotCreateADescendantOfTheSealedXY = 3048;
|
||||
nAncestorIsNotExternal = 3049;
|
||||
nVirtualMethodXHasLowerVisibility = 3050; // FPC 3250
|
||||
// free 3050
|
||||
nExternalClassInstanceCannotAccessStaticX = 3051;
|
||||
nXModifierMismatchY = 3052;
|
||||
nSymbolCannotBePublished = 3053;
|
||||
@ -128,12 +128,12 @@ const
|
||||
nTypeIdentifierExpected = 3055;
|
||||
nCannotNestAnonymousX = 3056;
|
||||
nFoundCallCandidateX = 3057;
|
||||
nSymbolXIsNotPortable = 3058;
|
||||
nSymbolXIsExperimental = 3059;
|
||||
nSymbolXIsNotImplemented = 3060;
|
||||
nSymbolXBelongsToALibrary = 3061;
|
||||
nSymbolXIsDeprecated = 3062;
|
||||
nSymbolXIsDeprecatedY = 3063;
|
||||
// free 3058
|
||||
// free 3059
|
||||
// free 3060
|
||||
// free 3061
|
||||
// free 3062
|
||||
// free 3063
|
||||
nRangeCheckError = 3064;
|
||||
nHighRangeLimitLTLowRangeLimit = 3065;
|
||||
nRangeCheckEvaluatingConstantsVMinMax = 3066;
|
||||
@ -150,7 +150,7 @@ const
|
||||
nMethodHidesMethodOfBaseType = 3077;
|
||||
nContextExpectedXButFoundY = 3078;
|
||||
nContextXInvalidY = 3079;
|
||||
nConstructingClassXWithAbstractMethodY = 3080;
|
||||
// free 3080;
|
||||
nXIsNotSupported = 3081;
|
||||
nOperatorIsNotOverloadedAOpB = 3082;
|
||||
nIllegalQualifierAfter = 3084;
|
||||
@ -171,6 +171,17 @@ const
|
||||
nMissingFieldsX = 3109;
|
||||
nCantAssignValuesToConstVariable = 3110;
|
||||
nIllegalAssignmentToForLoopVar = 3111;
|
||||
nFunctionHidesIdentifier_NonProc = 3112;
|
||||
|
||||
// using same IDs as FPC
|
||||
nVirtualMethodXHasLowerVisibility = 3250;
|
||||
nConstructingClassXWithAbstractMethodY = 4046;
|
||||
nSymbolXIsDeprecated = 5043;
|
||||
nSymbolXBelongsToALibrary = 5065;
|
||||
nSymbolXIsDeprecatedY = 5066;
|
||||
nSymbolXIsNotPortable = 5076;
|
||||
nSymbolXIsNotImplemented = 5078;
|
||||
nSymbolXIsExperimental = 5079;
|
||||
|
||||
// resourcestring patterns of messages
|
||||
resourcestring
|
||||
@ -194,7 +205,7 @@ resourcestring
|
||||
sCallingConventionMismatch = 'Calling convention mismatch';
|
||||
sResultTypeMismatchExpectedButFound = 'Result type mismatch, expected %s, but found %s';
|
||||
sFunctionHeaderMismatchForwardVarName = 'function header "%s" doesn''t match forward : var name changes %s => %s';
|
||||
sFunctionHidesIdentifier = 'function hides identifier at "%s"';
|
||||
sFunctionHidesIdentifier = 'function hides identifier at "%s". Use overload or reintroduce';
|
||||
sNoMethodInAncestorToOverride = 'There is no method in an ancestor class to be overridden "%s"';
|
||||
sInheritedOnlyWorksInMethods = 'Inherited works only in methods';
|
||||
sInheritedNeedsAncestor = 'inherited needs an ancestor';
|
||||
@ -274,6 +285,7 @@ resourcestring
|
||||
sMissingFieldsX = 'Missing fields: "%s"';
|
||||
sCantAssignValuesToConstVariable = 'Can''t assign values to const variable';
|
||||
sIllegalAssignmentToForLoopVar = 'Illegal assignment to for-loop variable "%s"';
|
||||
// sFunctionHidesIdentifier_NonProc = sFunctionHidesIdentifier
|
||||
|
||||
type
|
||||
{ TResolveData - base class for data stored in TPasElement.CustomData }
|
||||
|
@ -4030,7 +4030,7 @@ begin
|
||||
[El.Name,GetElementSourcePosStr(El)],Data^.Proc.ProcType)
|
||||
else
|
||||
// give a hint
|
||||
LogMsg(20171118205344,mtHint,nFunctionHidesIdentifier,sFunctionHidesIdentifier,
|
||||
LogMsg(20171118205344,mtHint,nFunctionHidesIdentifier_NonProc,sFunctionHidesIdentifier,
|
||||
[GetElementSourcePosStr(El)],Data^.Proc.ProcType);
|
||||
fopkMethod:
|
||||
// method hides a non proc
|
||||
@ -4125,8 +4125,9 @@ begin
|
||||
[Data^.Proc.Name,Proc.Parent.Name,GetElementSourcePosStr(Proc)],Data^.Proc.ProcType)
|
||||
else
|
||||
// Delphi/FPC do not give a message when hiding a non virtual method
|
||||
// -> emit only an Info
|
||||
LogMsg(20171118214523,mtInfo,nFunctionHidesIdentifier,sFunctionHidesIdentifier,
|
||||
// -> emit Hint with other message id
|
||||
LogMsg(20171118214523,mtHint,
|
||||
nFunctionHidesIdentifier_NonVirtualMethod,sFunctionHidesIdentifier,
|
||||
[GetElementSourcePosStr(Proc)],Data^.Proc.ProcType);
|
||||
Abort:=true;
|
||||
end;
|
||||
|
@ -48,6 +48,7 @@ uses
|
||||
PasTree, PScanner, PasResolveEval, PasResolver;
|
||||
|
||||
const
|
||||
// use same IDs as fpc
|
||||
nPAUnitNotUsed = 5023;
|
||||
sPAUnitNotUsed = 'Unit "%s" not used in %s';
|
||||
nPAParameterNotUsed = 5024;
|
||||
|
@ -643,6 +643,7 @@ type
|
||||
Procedure TestClassInterface_MethodVirtualFail;
|
||||
Procedure TestClassInterface_Overloads;
|
||||
Procedure TestClassInterface_OverloadHint;
|
||||
Procedure TestClassInterface_OverloadNoHint;
|
||||
Procedure TestClassInterface_IntfListClassFail;
|
||||
Procedure TestClassInterface_IntfListDuplicateFail;
|
||||
Procedure TestClassInterface_MissingMethodFail;
|
||||
@ -7733,7 +7734,8 @@ begin
|
||||
'begin',
|
||||
' b.DoIt(3);']);
|
||||
ParseProgram;
|
||||
CheckResolverHint(mtInfo,nFunctionHidesIdentifier,'function hides identifier at "afile.pp(4,19)"');
|
||||
CheckResolverHint(mtHint,nFunctionHidesIdentifier_NonVirtualMethod,
|
||||
'function hides identifier at "afile.pp(4,19)". Use overload or reintroduce');
|
||||
end;
|
||||
|
||||
procedure TTestResolver.TestClass_MethodReintroduce;
|
||||
@ -10875,7 +10877,21 @@ begin
|
||||
' end;',
|
||||
'begin']);
|
||||
ParseProgram;
|
||||
CheckResolverHint(mtInfo,nFunctionHidesIdentifier,'function hides identifier at "afile.pp(4,19)"');
|
||||
CheckResolverHint(mtHint,nFunctionHidesIdentifier_NonVirtualMethod,'function hides identifier at "afile.pp(4,19)". Use overload or reintroduce');
|
||||
end;
|
||||
|
||||
procedure TTestResolver.TestClassInterface_OverloadNoHint;
|
||||
begin
|
||||
StartProgram(false);
|
||||
Add([
|
||||
'type',
|
||||
' IUnknown = interface',
|
||||
' procedure DoIt;',
|
||||
' procedure DoIt(i: longint);',
|
||||
' end;',
|
||||
'begin']);
|
||||
ParseProgram;
|
||||
CheckResolverUnexpectedHints;
|
||||
end;
|
||||
|
||||
procedure TTestResolver.TestClassInterface_IntfListClassFail;
|
||||
|
Loading…
Reference in New Issue
Block a user