id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc
168,Separate compilation interferes with transport code generation,Bernhard Haumacher (haui at haumacher dot de),,"Local classes are transparently equipped with marshaling routines according to the Transportable interface. For abstract classes not all methods of the Transportable interface are implemented. Their implementation is deferred to a concrete subclass. This causes interference with separate compilation: Before being able to inject the additional transport code into a class, type checking of the source code is performed. But the source code does neither reference the Transportable interface nor does it provide implementations for the methods declared in the Transportable interface, because these methods are automatically generated by the compiler. When classes are compiled separately, binary class files of already compiled classes are loaded for type checking new ones. This does not work with injected Transportable interfaces: Since the already compiled abstract superclass does implement Transportable, type checking requires that a concrete subclass provides implementations of all methods of this interface. This is not the case for the newly compiled class, because it expects the implementation of these methods to be injected by the compiler after type checking. Therefore type checking fails when classes are compiled separately.
=== Solution ===
The problem can be solved by introducing signature files also for local classes. Signature files are currently only created for remote classes. They reflect the status of a remote class before the remote transformation took place. When compiling separately, the signature file is used for type checking, instead of the generated class files. This would also help for local classes where additional code was injected automatically.
=== Test ===
{{{
jp.test.TestLocalAbstract
jp.test.TestExtendLocalAbstract
}}}

'''todo''' since 1.07f.
",defect,new,normal,,jpc,1.07f,normal,,,
