Embeddinator-4000 icon indicating copy to clipboard operation
Embeddinator-4000 copied to clipboard

Java: IList/IDictionary implementation breaks build

Open atsushieno opened this issue 6 years ago • 1 comments

In the earlier versions (at least up to 06bc92) Java code compilation passed, but e4k started to break build for any IList or IDictionary implementation. Here is the build log for System.dll binding:

Compiling binding code...
		/home/atsushi/Desktop/TextToSpeechPlugin-master/e4k/android/system/system/componentmodel/PropertyDescriptorCollection.java:14: error: PropertyDescriptorCollection is not abstract and does not override abstract method getCount() in ICollection
public class PropertyDescriptorCollection implements mscorlib.system.collections.ICollection, mscorlib.system.collections.IEnumerable, mscorlib.system.collections.IList, mscorlib.system.collections.IDictionary {
	   ^
/home/atsushi/Desktop/TextToSpeechPlugin-master/e4k/android/system/system/componentmodel/AttributeCollection.java:14: error: AttributeCollection is not abstract and does not override abstract method getCount() in ICollection
public class AttributeCollection implements mscorlib.system.collections.ICollection, mscorlib.system.collections.IEnumerable {
	   ^
/home/atsushi/Desktop/TextToSpeechPlugin-master/e4k/android/system/system/componentmodel/StandardValuesCollection.java:14: error: StandardValuesCollection is not abstract and does not override abstract method getCount() in ICollection
public class StandardValuesCollection implements mscorlib.system.collections.ICollection, mscorlib.system.collections.IEnumerable {
	   ^
/home/atsushi/Desktop/TextToSpeechPlugin-master/e4k/android/mscorlib/system/collections/IListImpl.java:14: error: IListImpl is not abstract and does not override abstract method getIsSynchronized() in ICollection
public final class IListImpl implements mscorlib.system.collections.IList {
			 ^
/home/atsushi/Desktop/TextToSpeechPlugin-master/e4k/android/mscorlib/system/collections/IDictionaryImpl.java:14: error: IDictionaryImpl is not abstract and does not override abstract method getIsSynchronized() in ICollection
public final class IDictionaryImpl implements mscorlib.system.collections.IDictionary {
			 ^
<snip>

26 errors

Those classes have getCount_1(), getCount_2() but not for getCount() which is required by the interfaces.

CheckDeclarations.RenameDuplicates() likely does the related job.

atsushieno avatar Jan 27 '18 01:01 atsushieno

It was not a regression, in that earlier e4k had never generated any member in IEnumerable.java and derivatives.

atsushieno avatar Jan 27 '18 17:01 atsushieno