summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-09-15 23:48:05 +0000
committerRich Hickey <richhickey@gmail.com>2008-09-15 23:48:05 +0000
commit9016a7ed9e5e728dff5e7c855b1baabccaf272d2 (patch)
tree6f38dc46e6e9bce25a70d255a37e42ec7f64ad41 /src
parentf73bf9542f09528ab913da76b6bff661f3583e04 (diff)
revert isSynthetic - still inadequate for JDK 6
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/Reflector.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/jvm/clojure/lang/Reflector.java b/src/jvm/clojure/lang/Reflector.java
index 100fc226..ad27a9d9 100644
--- a/src/jvm/clojure/lang/Reflector.java
+++ b/src/jvm/clojure/lang/Reflector.java
@@ -291,13 +291,22 @@ static public List getMethods(Class c, int arity, String name, boolean getStatic
ArrayList methods = new ArrayList();
for(int i = 0; i < allmethods.length; i++)
{
- final Method method = allmethods[i];
- if(name.equals(method.getName())
- && Modifier.isStatic(method.getModifiers()) == getStatics
- && method.getParameterTypes().length == arity
- && !method.isSynthetic())
+ try
{
- methods.add(method);
+ Method method = allmethods[i];
+ if(name.equals(method.getName())
+ && Modifier.isStatic(allmethods[i].getModifiers()) == getStatics
+ && allmethods[i].getParameterTypes().length == arity
+ && (!Modifier.isVolatile(allmethods[i].getModifiers())
+ || c.getMethod(allmethods[i].getName(), allmethods[i].getParameterTypes())
+ .equals(allmethods[i])))
+ {
+ methods.add(allmethods[i]);
+ }
+ }
+ catch(NoSuchMethodException e)
+ {
+ throw new RuntimeException(e);
}
}
if(!getStatics && c.isInterface())