On 06/01/19 14:00, Sven Barth via fpc-pascal wrote:
Am 06.01.2019 um 12:56 schrieb Jonas Maebe:
On 06/01/19 11:42, denisgolovan wrote:

Specifically 3.1.1 compiler compiles it and correctly prints "Double".
3.3.1 compiler refuses to compile it at all.
Please comment if it's a bug or a new breaking feature.

http://wiki.freepascal.org/User_Changes_Trunk#Methods_implementing_interface_methods_and_overloads

But shouldn't that specifc example work? TClass1.P is public here, not private.

It's unrelated to public and private (that is covered in http://wiki.freepascal.org/User_Changes_Trunk#Visibility_of_methods_implementing_interface_methods ). It's only about overloads. If you do not declare a method as "overload", the compiler will now stop searching the class hierarchy as soon as it finds a class that declares a method with the right name. It already did this when calling methods, now it also does it for interface method resolution.

Also unlike FPC Delphi does not give the following warning: Warning: An inherited method is hidden by "P(Double);"

At least Kylix fails to compile the test program:

Borland Delphi for Linux Version 14.5
Copyright (c) 1983,2002 Borland Software Corporation
tt.pp(31) Error: Declaration of 'P' differs from declaration in interface 'IIntf2'
tt.pp(49)


Jonas
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to