Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VerveineJ places methods in the wrong classes #728

Closed
seandenigris opened this issue Aug 3, 2015 · 8 comments
Closed

VerveineJ places methods in the wrong classes #728

seandenigris opened this issue Aug 3, 2015 · 8 comments

Comments

@seandenigris
Copy link
Contributor

Originally reported on Google Code with ID 728

For some reason, some methods are placed in the wrong classes.

I did not manage to identify a standalone case, but it looks like if we have a case
like below:

public class A {
  ...
  public void m() { ... x() }
}

public class B {
  public void x() { ... }
}

public class C { ... }

we sometimes get x as belonging to class C instead of B. The interesting part is that
the invocation will go from A::m() to C::x().

This is a critical issue that stops us from using VerveineJ because the information
is too unreliable.

Reported by tudor@tudorgirba.com on 2011-10-19 10:51:13

@seandenigris
Copy link
Contributor Author

nothing we can do here until we have a concrete case to investigate.
Close it until it can be reproduced.

Reported by anquetil.nicolas on 2011-10-19 11:56:41

  • Status changed: WontFix

@seandenigris
Copy link
Contributor Author

In two weeks I will have 13 students using Moose. It would be good to have this issue
sorted out. 

Reported by alexandre.bergel on 2011-10-19 12:08:24

@seandenigris
Copy link
Contributor Author

I will certainly not close it :). I reproduced it several times on proprietary case
studies. I will try to create a simpler case, but maybe in the meantime others have
experienced something similar.

Reported by tudor@tudorgirba.com on 2011-10-19 12:24:31

@seandenigris
Copy link
Contributor Author

Reported by anquetil.nicolas on 2011-10-21 21:37:29

  • Status changed: Fixed

@seandenigris
Copy link
Contributor Author

Great job.

However, we still have another case of misplaced methods that is still present.

It is different than the one I sent you in that it seems to only involve super calls
(while the other one was related to calls to a different class). Essentially, something
like:

public class A extends SomeClass {
  ...
  public void x() { 
    super.m()
  }
}

leads to m() being placed in an unrelated class B.

I suspect it is the same issue as the one you fixed only present in a different place.
I am not sure if my description is clear enough.

I will try again to reproduce on a smaller case study.

Reported by tudor.girba on 2011-10-22 09:58:45

  • Status changed: Started

@seandenigris
Copy link
Contributor Author

I believe this second case is solved too.

Reported by anquetil.nicolas on 2011-10-31 20:44:40

  • Status changed: Fixed

@seandenigris
Copy link
Contributor Author

Hmm, I just tried. First, I fixed the shell script (verveinej.sh) to collect the jars
automatically from the lib folder. Then I removed the obsolete jars. 

But, still, if I run the following experiment, I get 575 potentially problematic methods:

- download ArgoUML 0.32 from:
http://argouml-downloads.tigris.org/argouml-0.32/
- parse, load in Moose, and then execute:
(MooseModel root allModels first allMethods select: [:each |
each sourceAnchor isNil and: [
each parentType sourceAnchor notNil and: [
'<Initializer>' ~= each name and: [
each name ~= each parentType name ]]]]) openInMoose


Am I doing something wrong?

Reported by tudor.girba on 2011-11-01 06:38:42

  • Status changed: Started

@seandenigris
Copy link
Contributor Author

Reported by tudor@tudorgirba.com on 2013-11-14 21:01:45

  • Status changed: Fixed
  • Labels added: Milestone-5.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant