|
@@ -557,6 +557,7 @@ type
|
|
Procedure TestClass_MethodOverloadUnit;
|
|
Procedure TestClass_MethodOverloadUnit;
|
|
Procedure TestClass_HintMethodHidesNonVirtualMethod;
|
|
Procedure TestClass_HintMethodHidesNonVirtualMethod;
|
|
Procedure TestClass_HintMethodHidesNonVirtualMethodWithoutBody_NoHint;
|
|
Procedure TestClass_HintMethodHidesNonVirtualMethodWithoutBody_NoHint;
|
|
|
|
+ Procedure TestClass_HintMethodHidesNonVirtualMethodExact;
|
|
Procedure TestClass_NoHintMethodHidesPrivateMethod;
|
|
Procedure TestClass_NoHintMethodHidesPrivateMethod;
|
|
Procedure TestClass_MethodReintroduce;
|
|
Procedure TestClass_MethodReintroduce;
|
|
Procedure TestClass_MethodOverloadArrayOfTClass;
|
|
Procedure TestClass_MethodOverloadArrayOfTClass;
|
|
@@ -9509,6 +9510,31 @@ begin
|
|
CheckResolverUnexpectedHints(true);
|
|
CheckResolverUnexpectedHints(true);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTestResolver.TestClass_HintMethodHidesNonVirtualMethodExact;
|
|
|
|
+begin
|
|
|
|
+ StartProgram(false);
|
|
|
|
+ Add([
|
|
|
|
+ '{$modeswitch externalclass}',
|
|
|
|
+ 'type',
|
|
|
|
+ ' TJSObject = class external name ''JSObject''',
|
|
|
|
+ ' procedure DoIt(p: pointer);',
|
|
|
|
+ ' end;',
|
|
|
|
+ ' TBird = class external name ''Bird''(TJSObject)',
|
|
|
|
+ ' procedure DoIt(p: pointer);',
|
|
|
|
+ ' end;',
|
|
|
|
+ 'procedure TJSObject.DoIt(p: pointer);',
|
|
|
|
+ 'begin',
|
|
|
|
+ ' if p=nil then ;',
|
|
|
|
+ 'end;',
|
|
|
|
+ 'procedure TBird.DoIt(p: pointer); begin end;',
|
|
|
|
+ 'var b: TBird;',
|
|
|
|
+ 'begin',
|
|
|
|
+ ' b.DoIt(nil);']);
|
|
|
|
+ ParseProgram;
|
|
|
|
+ CheckResolverHint(mtHint,nMethodHidesNonVirtualMethodExactly,
|
|
|
|
+ 'method hides identifier at "afile.pp(5,19)". Use reintroduce');
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TTestResolver.TestClass_NoHintMethodHidesPrivateMethod;
|
|
procedure TTestResolver.TestClass_NoHintMethodHidesPrivateMethod;
|
|
begin
|
|
begin
|
|
AddModuleWithIntfImplSrc('unit2.pas',
|
|
AddModuleWithIntfImplSrc('unit2.pas',
|
|
@@ -12967,7 +12993,8 @@ begin
|
|
' end;',
|
|
' end;',
|
|
'begin']);
|
|
'begin']);
|
|
ParseProgram;
|
|
ParseProgram;
|
|
- CheckResolverHint(mtHint,nFunctionHidesIdentifier_NonVirtualMethod,'function hides identifier at "afile.pp(4,19)". Use overload or reintroduce');
|
|
|
|
|
|
+ CheckResolverHint(mtHint,nMethodHidesNonVirtualMethodExactly,
|
|
|
|
+ 'method hides identifier at "afile.pp(4,19)". Use reintroduce');
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TTestResolver.TestClassInterface_OverloadNoHint;
|
|
procedure TTestResolver.TestClassInterface_OverloadNoHint;
|