summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2006-08-06 15:09:45 +0000
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2006-08-06 15:09:45 +0000
commita62c5816078737cc3a392beaa88c2c03d95ea961 (patch)
treef788a9ab836ed5ede98af59d62e51b249d5b5ab8 /src/main
parenta7fadc1d366518915abd29928d53d6abda1ccd63 (diff)
downloadjavassist-a62c5816078737cc3a392beaa88c2c03d95ea961.tar.gz
javassist-a62c5816078737cc3a392beaa88c2c03d95ea961.zip
fixed JIRA JASSIST-25
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@304 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
Diffstat (limited to 'src/main')
-rw-r--r--src/main/javassist/CtClassType.java12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/main/javassist/CtClassType.java b/src/main/javassist/CtClassType.java
index ab0d07ed..0ec764e4 100644
--- a/src/main/javassist/CtClassType.java
+++ b/src/main/javassist/CtClassType.java
@@ -404,12 +404,18 @@ class CtClassType extends CtClass {
}
public void setModifiers(int mod) {
- if (Modifier.isStatic(mod))
- throw new RuntimeException("cannot set to static");
+ ClassFile cf = getClassFile2();
+ if (Modifier.isStatic(mod)) {
+ int flags = cf.getInnerAccessFlags();
+ if (flags != -1 && (flags & AccessFlag.STATIC) != 0)
+ mod = mod & ~Modifier.STATIC;
+ else
+ throw new RuntimeException("cannot change " + getName() + " into a static class");
+ }
checkModify();
int acc = AccessFlag.of(mod) | AccessFlag.SUPER;
- getClassFile2().setAccessFlags(acc);
+ cf.setAccessFlags(acc);
}
public Object[] getAnnotations() throws ClassNotFoundException {