diff options
author | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2006-08-06 15:09:45 +0000 |
---|---|---|
committer | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2006-08-06 15:09:45 +0000 |
commit | a62c5816078737cc3a392beaa88c2c03d95ea961 (patch) | |
tree | f788a9ab836ed5ede98af59d62e51b249d5b5ab8 /src/main | |
parent | a7fadc1d366518915abd29928d53d6abda1ccd63 (diff) | |
download | javassist-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.java | 12 |
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 { |