| 1 | BUG/[id/5] |
|---|
| 2 | |
|---|
| 3 | BUG/00001: Tools.isRemote(Symbol sym, Symtab syms) cause assertion |
|---|
| 4 | failure "is interface" |
|---|
| 5 | FIX: assertion weakened (now allowed to check interfaces, too) |
|---|
| 6 | STATE: fixed. |
|---|
| 7 | |
|---|
| 8 | BUG/00002: Symtab.serializableType |
|---|
| 9 | was declared to be "java.lang.Serializable" |
|---|
| 10 | FIX: changed to "java.io.Serializable" |
|---|
| 11 | STATE: fixed. |
|---|
| 12 | |
|---|
| 13 | BUG/00003: TransBody._case(MethodDef t, Context c) |
|---|
| 14 | several 'NullPointerExceptions' while transforming code because of |
|---|
| 15 | missing optional Tree subnodes |
|---|
| 16 | FIX: before recursing test sub node for '!= null' |
|---|
| 17 | STATE: fixed. |
|---|
| 18 | |
|---|
| 19 | BUG/00004: TransCopy._case(Literal that, Factory f) |
|---|
| 20 | a literal was created with the Tree.tag instead of the |
|---|
| 21 | Literal.typetag. This caused the string literal to loos their double |
|---|
| 22 | quotes while pretty printing them. |
|---|
| 23 | FIX: use the constants TypeTags |
|---|
| 24 | STATE: fixed. |
|---|
| 25 | |
|---|
| 26 | BUG/00005: TransCopy |
|---|
| 27 | did not produce an fully attributed copy (types where missing) |
|---|
| 28 | FIX: node types are now copied, too. |
|---|
| 29 | STATE: fixed. |
|---|
| 30 | |
|---|
| 31 | BUG/00006: TransBody |
|---|
| 32 | did recurse into uninteresting parts like type |
|---|
| 33 | identifiers. Identifiers are assumed to be identifiers for |
|---|
| 34 | variables. |
|---|
| 35 | FIX: overriding additionally _cases methods to limit |
|---|
| 36 | the recursion to interesting parts. |
|---|
| 37 | STATE: fixed. |
|---|
| 38 | |
|---|
| 39 | BUG/00007: Wrong source code positions after transformation. The |
|---|
| 40 | attribution phase relies on correct ordering of source code |
|---|
| 41 | positions (Tree.pos). After transformation some of these positions |
|---|
| 42 | are set to zero, which leads to the error message "illegal forward |
|---|
| 43 | reference". |
|---|
| 44 | FIX: The tree is cleaned after transformation from old symbol |
|---|
| 45 | references and *all* positions are reset to zero. |
|---|
| 46 | |
|---|
| 47 | BUG/00008: dublicated semicolon in var get/set/inc implementation methods |
|---|
| 48 | return n;; |
|---|
| 49 | FIX: no semicolor after expansion of @body@ |
|---|
| 50 | STATE: fixed. |
|---|
| 51 | |
|---|
| 52 | BUG/00009: missing blank line for separating methods |
|---|
| 53 | FIX: newLine() added to TransformCode, call to newLine() added after each |
|---|
| 54 | generation of method and declaration |
|---|
| 55 | STATE: fixed. |
|---|
| 56 | |
|---|
| 57 | BUG/00010: poor indentation |
|---|
| 58 | FIX: added indent() and unindent() methods to TransformCode, indenting |
|---|
| 59 | all methods and definition inside classes Use the indentation |
|---|
| 60 | facility of the pretty printer for code, which is inserted in the |
|---|
| 61 | SourceGenerator |
|---|
| 62 | STATE: todo. |
|---|
| 63 | |
|---|
| 64 | BUG/00011: output of generated code should be placed in the output |
|---|
| 65 | directory. |
|---|
| 66 | STATE: todo. |
|---|
| 67 | |
|---|
| 68 | BUG/00012: needs full package name for package declaration |
|---|
| 69 | FIX: 'cd.sym.owner.fullName()' instead of 'cd.sym.owner' in definition |
|---|
| 70 | for @package@ |
|---|
| 71 | STATE: fixed. |
|---|
| 72 | |
|---|
| 73 | BUG/00013: no remote modifiers in transformed classes |
|---|
| 74 | FIX: remove REMOTE modifier in @handleclassmods@ by setting it to |
|---|
| 75 | 'cd.flags & ~REMOTE' |
|---|
| 76 | STATE: fixed. |
|---|
| 77 | |
|---|
| 78 | BUG/00014: crazy static set/get methods for arrays public |
|---|
| 79 | examples.first.Simple[] static Simple[] objs = new Simple[10]_get_() |
|---|
| 80 | throws java.rmi.RemoteException; |
|---|
| 81 | FIX: 'vd.name" instead of 'vd' in definition for @var@ |
|---|
| 82 | STATE: fixed. |
|---|
| 83 | |
|---|
| 84 | BUG/00015: missing opening '{' of static get/set/inc handle methods |
|---|
| 85 | FIX: "{" appended in generation of handle for static method |
|---|
| 86 | STATE: fixed. |
|---|
| 87 | |
|---|
| 88 | BUG/00016: missing closing '}' of static get/set/inc handle methods |
|---|
| 89 | FIX: "}" appended in generation of handle for static method |
|---|
| 90 | STATE: fixed. |
|---|
| 91 | |
|---|
| 92 | BUG/00017: dimension parameters for partial array access in |
|---|
| 93 | get/set methods missing |
|---|
| 94 | PROBLEM: dimension parameter was 0 for access of dimension 1, |
|---|
| 95 | so no parameters and arguments were generated |
|---|
| 96 | FIX: starting with dimension 1 for generating partial array access |
|---|
| 97 | STATE: fixed. |
|---|
| 98 | |
|---|
| 99 | BUG/00018: missing semicolon in instance implementation after |
|---|
| 100 | variable declaration |
|---|
| 101 | FIX: ';' added after expandion of @vardef@ in instance implementation |
|---|
| 102 | STATE: fixed. |
|---|
| 103 | |
|---|
| 104 | BUG/00019: in general, full classname needed for 'extends xxx' |
|---|
| 105 | FIX: all @superXXX@ are now set to their 'fullName()' |
|---|
| 106 | STATE: fixed. |
|---|
| 107 | |
|---|
| 108 | BUG/00020: spelling mistake: java.rmi.RemoteExeption |
|---|
| 109 | FIX. |
|---|
| 110 | STATE: fixed. |
|---|
| 111 | |
|---|
| 112 | BUG/00021: Transformation error, _handleToXXX(XXX_class _x) |
|---|
| 113 | expects a class interface, is invoked with the instance |
|---|
| 114 | implementation (implementing the instance interface). The original |
|---|
| 115 | transformation generates a method, which expects an object of type |
|---|
| 116 | XXX_intf. |
|---|
| 117 | |
|---|
| 118 | public static Simple _handleToSimple(Simple_class _x) { |
|---|
| 119 | return new Simple(_x); |
|---|
| 120 | } |
|---|
| 121 | |
|---|
| 122 | public synchronized void _init() |
|---|
| 123 | throws java.rmi.RemoteException |
|---|
| 124 | { |
|---|
| 125 | __init(); |
|---|
| 126 | _this = XXX._handleToXXX(this); |
|---|
| 127 | } |
|---|
| 128 | FIX: transformation adjusted: |
|---|
| 129 | in TransRemote.generateAdditionals() changed |
|---|
| 130 | public static @handle@ _handleTo@handle@(@classIntf@ _x) |
|---|
| 131 | to |
|---|
| 132 | public static @handle@ _handleTo@handle@(@instanceIntf@ _x) |
|---|
| 133 | STATE: fixed. |
|---|
| 134 | |
|---|
| 135 | BUG/00022: increment access on remote arrays: order of index arguments is |
|---|
| 136 | reversed |
|---|
| 137 | FIX: changed the order of arguments created in |
|---|
| 138 | TransBody.VarAccess.getIndexArguments(List<Tree> args) |
|---|
| 139 | STATE: fixed. |
|---|
| 140 | |
|---|
| 141 | BUG/00023: missing pre/post increment argument in the increment method |
|---|
| 142 | declaration. Only pre-increment semantics possible. |
|---|
| 143 | FIX: transformation in |
|---|
| 144 | TransRemote.generateInstanceIncMethod(RemoteClassBundle gen, |
|---|
| 145 | SourceGenerator.Scope _s) |
|---|
| 146 | TransRemote.generateStaticIncMethod(RemoteClassBundle gen, |
|---|
| 147 | SourceGenerator.Scope _s) changed. |
|---|
| 148 | STATE: fixed. |
|---|
| 149 | |
|---|
| 150 | BUG/00024: missing import declarations: The transformed method |
|---|
| 151 | bodies and signatures may reference types, which are imported |
|---|
| 152 | through an import declaration. These type references are not |
|---|
| 153 | adjusted to fully qualified names by the transformation. To produce |
|---|
| 154 | a valid source code representation of the transformed code all |
|---|
| 155 | necessary import declarations must be added. |
|---|
| 156 | FIX-1: All type references in the scope of the transformed class, which |
|---|
| 157 | are unique in this scope, are imported explicitly with a separate |
|---|
| 158 | import statement. |
|---|
| 159 | FIX-2: FIX-1 results in many superflous import declarations, some of |
|---|
| 160 | them referencing non-public inner classes, which crashes the next |
|---|
| 161 | attribution phase. The old import declarations are now collected in |
|---|
| 162 | another tree traversal and prepended to the transformaed class. |
|---|
| 163 | STATE: fixed. |
|---|
| 164 | |
|---|
| 165 | BUG/00025: TransBody.VarAccess.makeIncAccess(int opcode, Factory |
|---|
| 166 | f) used arrayElemType(var.type) to determine the required type for |
|---|
| 167 | the Literal representing the value, with witch the variable is |
|---|
| 168 | incvremented. This is inadequate, if the variable is casted. |
|---|
| 169 | FIX: |
|---|
| 170 | use arrayElemType(expr.type) |
|---|
| 171 | STATE: fixed. |
|---|
| 172 | |
|---|
| 173 | BUG/00026: type casted array access to objects of type Object in |
|---|
| 174 | remote classes not yet handled. Eg: ((int[]) r.x)[y] |
|---|
| 175 | FIX: preliminary solution for read accesss: access whole array and |
|---|
| 176 | select localy. |
|---|
| 177 | TBD: set access results in incorrect code, because the side effect |
|---|
| 178 | occurs localy and is therefore lost. This case might be handled in |
|---|
| 179 | an extended transformation for general access to local subobjects of |
|---|
| 180 | remote objects. |
|---|
| 181 | STATE: fixed. |
|---|
| 182 | |
|---|
| 183 | BUG/00027: Variable access is not transformed within method |
|---|
| 184 | arguments. Tree.doVisit() does not update the elements of the |
|---|
| 185 | visited List. |
|---|
| 186 | FIX: replaced by TransRecurse.doVisit() |
|---|
| 187 | STATE: fixed. |
|---|
| 188 | |
|---|
| 189 | BUG/00028: names for variable access methods must contain the |
|---|
| 190 | class name to aviod overriding the method in a super class, which |
|---|
| 191 | declares a variable of the same name. |
|---|
| 192 | FIX: method names replaced with @classID@_[set|get|inc]_@varname@, |
|---|
| 193 | @classID@ is the fully qualified classname with '.' replaced by '_'. |
|---|
| 194 | STATE: fixed. |
|---|
| 195 | |
|---|
| 196 | BUG/00029: In tests for equality 'null' constants were considered to |
|---|
| 197 | be eventually remote. |
|---|
| 198 | FIX: Tools.maybeRemote(Tree) added, whitch tests for 'null' |
|---|
| 199 | STATE: fixed. |
|---|
| 200 | |
|---|
| 201 | BUG/00030: 'null' constants were prepended with a package or class |
|---|
| 202 | reference like variables of classes. 'null' is represented internally |
|---|
| 203 | as variable and the class TransBody.VarAccess was not aware of that. |
|---|
| 204 | FIX: special handling of 'null' in TransBody.VarAccess |
|---|
| 205 | STATE: fixed. |
|---|
| 206 | |
|---|
| 207 | BUG/00031: no import declarations were generated. The wrong |
|---|
| 208 | 'Scope' was used in Tools.prependImports() for figuring out all |
|---|
| 209 | names, which have to be imported. |
|---|
| 210 | FIX: TopLevel.starImportScope and TopLevel.namedImportScope are now |
|---|
| 211 | used. |
|---|
| 212 | STATE: fixed. |
|---|
| 213 | |
|---|
| 214 | BUG/00032: '.signature' files were read back as source Java files |
|---|
| 215 | instead of class files. |
|---|
| 216 | FIX: ClassReader decides wether to parse a file depending on its |
|---|
| 217 | extension. It was not aware of '.signature' files in |
|---|
| 218 | ClassReader.fillIn(ClassSymbol). |
|---|
| 219 | STATE: fixed. |
|---|
| 220 | |
|---|
| 221 | BUG/00033: access to 'this' is not transformed to '_this'. This |
|---|
| 222 | happened if 'this' occurs e.g. as parameter in a method call, witch |
|---|
| 223 | itself occurs in a reference of a method call. The reference of a |
|---|
| 224 | method call was not visited in some circumstances. |
|---|
| 225 | FIX: visit the reference of a method call, if the reference is not |
|---|
| 226 | static and not a self reference. See TransBody._case(Apply, |
|---|
| 227 | Context). |
|---|
| 228 | STATE: fixed. |
|---|
| 229 | |
|---|
| 230 | BUG/00034: final variables are accessed through methods. This |
|---|
| 231 | causes problems when the variables are used as patterns in switch |
|---|
| 232 | statements. |
|---|
| 233 | STATE: todo. |
|---|
| 234 | |
|---|
| 235 | BUG/00035: 'private' and 'protected' variables get private and |
|---|
| 236 | protected access method within the handle class. They are no longer |
|---|
| 237 | accessible from all parts (static and instance) of the remote |
|---|
| 238 | object. |
|---|
| 239 | FIX: public access in interface and implementation, package protected |
|---|
| 240 | access in the handle class. |
|---|
| 241 | STATE: todo. |
|---|
| 242 | |
|---|
| 243 | BUG/00036: support for inner classes in remote classes. If this is |
|---|
| 244 | not possible, better error output is required. At the moment an |
|---|
| 245 | InternalError is thrown. |
|---|
| 246 | STATE: todo. |
|---|
| 247 | |
|---|
| 248 | BUG/00037 |
|---|
| 249 | Remote classes are not checked not to extend a local class. They are |
|---|
| 250 | silently not transformed: |
|---|
| 251 | remote class Worker extends java.lang.Thread {...} |
|---|
| 252 | STATE: todo. |
|---|
| 253 | |
|---|
| 254 | BUG/00038 |
|---|
| 255 | "T.class" is not transformed correctly. In static contexts the |
|---|
| 256 | construct is transformed to "this.class". This causes an error while |
|---|
| 257 | compiling the transformed code. |
|---|
| 258 | STATE: todo. |
|---|
| 259 | |
|---|
| 260 | BUG/00039 "KaRMI Stub generation" |
|---|
| 261 | Parameter reordering was wrong, inverse transformation was missing. |
|---|
| 262 | STATE: fixed. |
|---|
| 263 | |
|---|
| 264 | BUG/00040 |
|---|
| 265 | Member fields of static inner classes are incorrectly reported to hide |
|---|
| 266 | non-static member fields of the outer class's super class. |
|---|
| 267 | FIX: Fix erronous check in Attrib class. |
|---|
| 268 | STATE: todo. |
|---|
| 269 | |
|---|
| 270 | BUG/00041 "Java5 support" |
|---|
| 271 | Adjust GJ generics to match those of Java5. This includes support for |
|---|
| 272 | bounded and unboundes wildcard type parameters such as <? extends Tree>, |
|---|
| 273 | <? super Tree>, <?>. Additionally there are differences in semantics. Type |
|---|
| 274 | parameters are not accessible from within static contexts, for example. |
|---|
| 275 | STATE: todo. |
|---|
| 276 | |
|---|
| 277 | BUG/00042 "Classfile compatibility" |
|---|
| 278 | See BUG/0041: Changes required in the signature parsing methods to support |
|---|
| 279 | wildcard type params. Type params with an interface bound are coded differently. |
|---|
| 280 | STATE: todo. |
|---|