PR# 19293 [er] Non-conforming inheritance: VMRC-1

Problem Report Summary
Submitter: axarosenberg
Category: Compiler
Priority: Low
Date: 2016/11/17
Class: Bug
Severity: Non-critical
Number: 19293
Release: 16.05
Confidential: No
Status: Suspended
Responsible: alexk_es
Environment: win
Synopsis: [er] Non-conforming inheritance: VMRC-1

Description
EiffelStudio compiles this code without complaining:

~~~~~~~~~~~~~~~~~
class AA

feature

	f
		do
		end
		
end
~~~~~~~~~~~~~~~~~
class BB

inherit {NONE}

	AA
		rename
			f as f1
		end

	AA
		rename
			f as f2
		end

end
~~~~~~~~~~~~~~~~~

But it reports a VMRC-2 error in class EE when compiling this code:

~~~~~~~~~~~~~~~~~
class CC

inherit {NONE}

	AA
		rename
			f as f1
		end

end
~~~~~~~~~~~~~~~~~
class DD

inherit {NONE}

	AA
		rename
			f as f2
		end

end
~~~~~~~~~~~~~~~~~
class EE

inherit

	CC

	DD

end
~~~~~~~~~~~~~~~~~

But in the ECMA document, we have:

~~~~~~~~~~~~~~~~~
8.16.10 Validity: Repeated Inheritance Consistency constraint
Code: VMRC
It is valid for a class D to have two or more versions of a feature f of a proper ancestor A if and only if it satisfies one of the following conditions:
1. There is at most one conformance path from D to A.
2. There are two or more conformance paths, and the Parent clause for exactly one of them in D has a Select clause listing the name of the version of f from the corresponding parent.
~~~~~~~~~~~~~~~~~

So, there is no conformance path between class EE and class AA, so we are in case VMRC-1 and the code should be accepted, as it is in the first example.

--
Eric Bezault
To Reproduce

										
Problem Report Interactions
From:manus_eiffel    Date:2016/11/27    Status: Suspended    Download   
Our current implementation of non-conforming inheritance is not complete at the moment. There is a hidden switch that follows the standard better but it was a breaking changes for existing library. We should have disabled the support as well instead of relying on this hidden option.

For the time being, we would recommend not using it.