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
From:gobobe    Date:2019/10/21    Status: Open    Download   
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

From:gobobe    Date:2019/10/20    Status: Open    Download   
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
~~~~~~~~~~~~~~~~~~~~~~