PR# 5137 Feature tool -> Callers is missing cases
Problem Report Summary
Submitter: ericbe
Category: EiffelStudio
Priority: Medium
Date: 2005/07/11
Class: Bug
Severity: Serious
Number: 5137
Release: 5.6.1103
Confidential: No
Status: Analyzed
Responsible:
Environment: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Synopsis: Feature tool -> Callers is missing cases
Description
I have the following program:
---------------------------------------
class MY_TEST
create
make
feature
make is
local
a: A
b: B
do
create b.make
b.g
a := b
a.f
end
end
---------------------------------------
class A
create
make
feature
make is
do
attr := Current
end
f is
do
print ("A.f%N")
end
g is
do
attr.f
end
attr: A
end
---------------------------------------
class B
inherit
A
redefine
f, attr
end
create
make
feature
f is
do
print ("B.f%N")
end
attr: B
end
---------------------------------------
EiffelStudio claims that feature B.f has no callers, but when I run the program I get:
---------------------------------------
B.f
B.f
---------------------------------------
So in the two cases of this example (polymorphic call, and redefinition of the type of the target) EiffelStudio cannot be trusted, which is not very helpful when refactoring or retrofitting assertions.
To Reproduce
Problem Report Interactions
==== Manu: Mon Jul 11 11:26:38 PDT 2005 ===============================
Dear Eric,
Is this a request change? I'm saying this because our callers stuff
(and this has always been the case) only checks for static callers, not
dynamic one. Moreover it does it on the static type of B and
descendants. If you want all static callers, you need to first look at
the ancestors and then find A.f and then do the callers of A.f.
In your case there are no static calls of the form {B}.f thus the
expected output.
==== Manu: Mon Jul 11 11:26:38 PDT 2005 ===============================
From: "Eric Bezault" <ebezault@axarosenberg.com>
To: <bugs@support.eiffel.com>
Cc:
Subject: RE: EiffelStudio/5137: Feature tool -> Callers is missing cases
Date: Mon, 11 Jul 2005 11:41:23 -0700
> Is this a request change?
I will implement it in Rose Studio because we need it.
> I'm saying this because our callers stuff
> (and this has always been the case) only checks for static=20
> callers, not
> dynamic one. Moreover it does
....
Output truncated, Click download to get the full message