Open david-allison opened 11 months ago
I've had a quick Google, but no obvious annotations came up to tell the kotlin compiler that the Java list should be List<T>
rather than MutableList<T>
when accessed by Kotlin
If it means we need to port our codegen to Kotlin, this is likely not worthwhile
Where are you seeing mutable? I looked in the generated Note.java, and it's a plain list:
/**
* <code>repeated string fields = 7;</code>
* @return A list containing the fields.
*/
@java.lang.Override
public java.util.List<java.lang.String> getFieldsList() {
return fields_;
}
Sorry, ignore me - I assumed that List was always an immutable variant in Java, but apparently that's not the case.
And this is not our codegen by the way - it's the output of protoc.
Backend Codegen is problematic: it exposes a
java.util.List
, but this is actually acom.google.protobuf.Internal.ProtobufList
.ProtobufList
throws on mutationhttps://protobuf.dev/reference/java/api-docs/com/google/protobuf/Internal.ProtobufList
Reported in: https://github.com/ankidroid/Anki-Android/pull/14948