source: branches/checkpointing/gj/doc/fixes.txt @ 3280

Revision 2453, 10.4 KB checked in by moschny, 8 years ago (diff)
  • Bug numbers used to have five digits.
Line 
1BUG/[id/5]
2
3BUG/00001: Tools.isRemote(Symbol sym, Symtab syms) cause assertion
4  failure "is interface"
5FIX: assertion weakened (now allowed to check interfaces, too)
6STATE: fixed.
7
8BUG/00002: Symtab.serializableType
9  was declared to be "java.lang.Serializable"
10FIX: changed to "java.io.Serializable"
11STATE: fixed.
12
13BUG/00003: TransBody._case(MethodDef t, Context c)
14  several 'NullPointerExceptions' while transforming code because of
15  missing optional Tree subnodes
16FIX: before recursing test sub node for '!= null'
17STATE: fixed.
18
19BUG/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.
23FIX: use the constants TypeTags
24STATE: fixed.
25
26BUG/00005: TransCopy
27  did not produce an fully attributed copy (types where missing)
28FIX: node types are now copied, too.
29STATE: fixed.
30
31BUG/00006: TransBody
32  did recurse into uninteresting parts like type
33  identifiers. Identifiers are assumed to be identifiers for
34  variables.
35FIX: overriding additionally _cases methods to limit
36  the recursion to interesting parts.
37STATE: fixed.
38
39BUG/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".
44FIX: The tree is cleaned after transformation from old symbol
45  references and *all* positions are reset to zero.
46
47BUG/00008: dublicated semicolon in var get/set/inc implementation methods
48  return n;;
49FIX: no semicolor after expansion of @body@
50STATE: fixed.
51
52BUG/00009: missing blank line for separating methods
53FIX: newLine() added to TransformCode, call to newLine() added after each
54  generation of method and declaration
55STATE: fixed.
56
57BUG/00010: poor indentation
58FIX: 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
62STATE: todo.
63 
64BUG/00011: output of generated code should be placed in the output
65  directory.
66STATE: todo.
67
68BUG/00012: needs full package name for package declaration
69FIX: 'cd.sym.owner.fullName()' instead of 'cd.sym.owner' in definition
70  for @package@
71STATE: fixed.
72
73BUG/00013: no remote modifiers in transformed classes
74FIX: remove REMOTE modifier in @handleclassmods@ by setting it to
75  'cd.flags & ~REMOTE'
76STATE: fixed.
77
78BUG/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;
81FIX: 'vd.name" instead of 'vd' in definition for @var@
82STATE: fixed.
83
84BUG/00015: missing opening '{' of static get/set/inc handle methods
85FIX: "{" appended in generation of handle for static method
86STATE: fixed.
87
88BUG/00016: missing closing '}' of static get/set/inc handle methods
89FIX: "}" appended in generation of handle for static method
90STATE: fixed.
91
92BUG/00017: dimension parameters for partial array access in
93  get/set methods missing
94PROBLEM: dimension parameter was 0 for access of dimension 1,
95  so no parameters and arguments were generated
96FIX: starting with dimension 1 for generating partial array access
97STATE: fixed.
98
99BUG/00018: missing semicolon in instance implementation after
100  variable declaration
101FIX: ';' added after expandion of @vardef@ in instance implementation
102STATE: fixed.
103
104BUG/00019: in general, full classname needed for 'extends xxx'
105FIX: all @superXXX@ are now set to their 'fullName()'
106STATE: fixed.
107
108BUG/00020: spelling mistake: java.rmi.RemoteExeption
109FIX.
110STATE: fixed.
111
112BUG/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  }
128FIX: 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)
133STATE: fixed.
134
135BUG/00022: increment access on remote arrays: order of index arguments is
136reversed
137FIX: changed the order of arguments created in 
138  TransBody.VarAccess.getIndexArguments(List<Tree> args)
139STATE: fixed.
140
141BUG/00023: missing pre/post increment argument in the increment method
142declaration. Only pre-increment semantics possible.
143FIX: transformation in
144  TransRemote.generateInstanceIncMethod(RemoteClassBundle gen,
145  SourceGenerator.Scope _s)
146  TransRemote.generateStaticIncMethod(RemoteClassBundle gen,
147  SourceGenerator.Scope _s) changed. 
148STATE: fixed.
149
150BUG/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. 
156FIX-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.
159FIX-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.
163STATE: fixed.
164
165BUG/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. 
169FIX:
170  use arrayElemType(expr.type)
171STATE: fixed.
172
173BUG/00026: type casted array access to objects of type Object in
174  remote classes not yet handled. Eg: ((int[]) r.x)[y]
175FIX: preliminary solution for read accesss: access whole array and
176  select localy.
177TBD: 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. 
181STATE: fixed.
182
183BUG/00027: Variable access is not transformed within method
184  arguments. Tree.doVisit() does not update the elements of the
185  visited List.
186FIX: replaced by TransRecurse.doVisit()
187STATE: fixed.
188
189BUG/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. 
192FIX: method names replaced with @classID@_[set|get|inc]_@varname@,
193  @classID@ is the fully qualified classname with '.' replaced by '_'.
194STATE: fixed.
195
196BUG/00029: In tests for equality 'null' constants were considered to
197  be eventually remote.
198FIX: Tools.maybeRemote(Tree) added, whitch tests for 'null'
199STATE: fixed.
200
201BUG/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.
204FIX: special handling of 'null' in TransBody.VarAccess
205STATE: fixed.
206
207BUG/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. 
210FIX: TopLevel.starImportScope and TopLevel.namedImportScope are now
211  used.
212STATE: fixed.
213
214BUG/00032: '.signature' files were read back as source Java files
215  instead of class files.
216FIX: ClassReader decides wether to parse a file depending on its
217  extension. It was not aware of '.signature' files in
218  ClassReader.fillIn(ClassSymbol).
219STATE: fixed.
220
221BUG/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.
225FIX: 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).
228STATE: fixed.
229
230BUG/00034: final variables are accessed through methods. This
231  causes problems when the variables are used as patterns in switch
232  statements.
233STATE: todo.
234
235BUG/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.
239FIX: public access in interface and implementation, package protected
240  access in the handle class.
241STATE: todo.
242
243BUG/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.
246STATE: todo.
247
248BUG/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 {...}
252STATE: todo.
253
254BUG/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.
258STATE: todo.
259
260BUG/00039 "KaRMI Stub generation"
261  Parameter reordering was wrong, inverse transformation was missing.
262STATE: fixed.
263
264BUG/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.
267FIX: Fix erronous check in Attrib class.
268STATE: todo.
269
270BUG/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.
275STATE: todo.
276
277BUG/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.
280STATE: todo.
Note: See TracBrowser for help on using the repository browser.