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

Allow duplicate method names in Java #212

Closed
jpziegler opened this issue Jun 19, 2017 · 2 comments · Fixed by #884
Closed

Allow duplicate method names in Java #212

jpziegler opened this issue Jun 19, 2017 · 2 comments · Fixed by #884
Assignees
Labels
subsystem: crucible-jvm Issues related to Java verification with crucible-jvm usability An issue that impedes efficient understanding and use
Milestone

Comments

@jpziegler
Copy link

Currently, when attempting to load a method from a Java class, the name of that method must be unique. This is a frustrating limitation.

@jpziegler
Copy link
Author

Consider using JVM type signatures, as specified here:

http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp276

@atomb
Copy link
Contributor

atomb commented Jun 19, 2017

We've been considering using exactly that approach. Thanks for creating a ticket for it!

@atomb atomb added this to the 1.0 milestone Jun 4, 2019
@atomb atomb modified the milestones: 0.5, 0.6 Mar 31, 2020
@atomb atomb added the usability An issue that impedes efficient understanding and use label Apr 28, 2020
@brianhuffman brianhuffman added the subsystem: crucible-jvm Issues related to Java verification with crucible-jvm label May 15, 2020
@atomb atomb modified the milestones: 0.6, 0.7 Aug 6, 2020
@brianhuffman brianhuffman self-assigned this Oct 16, 2020
brianhuffman pushed a commit that referenced this issue Oct 31, 2020
Fixes #212.

Previously `crucible_jvm_verify` and related commands would fail
to verify methods whose names were not unique. However, JVM allows
multiple methods to coexist in the same class as long as their
types are distinct. This change now allows users to optionally
add a type descriptor to a method name to specify a particular
method with a given name. For example "foo(L)V" indicates method
"foo" with a long argument and void result type.
brianhuffman pushed a commit that referenced this issue Oct 31, 2020
brianhuffman pushed a commit that referenced this issue Oct 31, 2020
Fixes #212.

Previously `crucible_jvm_verify` and related commands would fail
to verify methods whose names were not unique. However, JVM allows
multiple methods to coexist in the same class as long as their
types are distinct. This change now allows users to optionally
add a type descriptor to a method name to specify a particular
method with a given name. For example "foo(L)V" indicates method
"foo" with a long argument and void result type.
brianhuffman pushed a commit that referenced this issue Oct 31, 2020
brianhuffman pushed a commit that referenced this issue Oct 31, 2020
These are referred to by the name "<init>", which is what they
are called in the JVM class file. Like other methods, they can
be used with type descriptors to disambiguate when constructors
are defined at multiple types.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
subsystem: crucible-jvm Issues related to Java verification with crucible-jvm usability An issue that impedes efficient understanding and use
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants