PR# 19592 Client set of a feature
Problem Report Summary
Submitter: gobobe
Category: Compiler
Priority: Low
Date: 2019/10/19
Class: Bug
Severity: Non-critical
Number: 19592
Release: 19.09
Confidential: No
Status: Open
Responsible:
Environment: win
Synopsis: Client set of a feature
Description
The release notes of 19.07 I can read:
~~
compiler: test#valid297, test#valid298 — Changed rules how export status of features is computed **to follow the standard** to avoid CAT calls: a feature could be made available only to more classes, not fewer.
~~
It looks like a case has been forgotten: when there is a New_export clause in the inheritance clause and the feature is redeclared:
~~~~~~~~~~~~~~
class FOO
feature {A}
f
do
...
end
end
~~~~~~~~~~~~~~
class BAR
inherit
FOO
export
{B} f
redefine
f
feature {C}
f
do
...
end
end
~~~~~~~~~~~~~~~
According to the ECMA standard, `f` should be exported to {A, B, C}. But it looks like in EiffelStudio it is only exported to {A, C}. See "Definition: Client set of a feature" in ECMA standard, section 8.7.12.
--
Eric Bezault
To Reproduce
Problem Report Interactions
The `gecop` test cases for the definition of client set can be found here: https://github.com/gobo-eiffel/gobo/tree/master/tool/gecop/validation/definition/dlcf
EiffelStudio also erroneously claims that `f` is not exported to ZZ in the following cases:
~~~~~~~~~~~~~~~~~~~~~~
class CC
inherit
BB
export
{YY} f
end
BB
export
{ZZ} f
end
end
~~~~~~~~~~~~~~~~~~~~~~
class CC
inherit
BB
export
{YY} f
end
BB
export
{ZZ} all
end
end
~~~~~~~~~~~~~~~~~~~~~~
class CC
inherit
BB
export
{YY} all
end
BB
export
{ZZ} all
end
ANY
end
~~~~~~~~~~~~~~~~~~~~~~