This one is very weird, especially for Oxygene (the error itself is from C#, it’s is a “can-treat-as-fixed” error). The only time id expect something like this in Oxygene is when theres ambiguity about value vs call - say for a block or event, never for a real method.
This error is new and DCM-only.
(E62) Type mismatch, cannot assign “Byte” to “^Void”
this is the omnly error that also appears outside of DCM – and it seems somewhat valid. this should need a cast?
Update: this is related to untyped parameters. which are… dodgy, to say the least, esp on .NET. We need to review what the final outcome here is. Did this work before!? Not just compile, bit work?
(E793) Untyped parameters are only supported on the Island platform
IIRC this was a deliberate limitation; i recall discussing this with the team. Nut if so, it’s odd that this restruction woudl only apply to DCM. @david.millington i suggest we revert and allow this using the old behavior, on non-Island?
(E64) Type mismatch, cannot find operator to evaluate “” + “Char”
i see this as Class1.pas, line 90 — (E64) Type mismatch, cannot find operator to evaluate "<method group>" + "Char", s really this is the same issue as the E500 and E513 above, where it thinks it needs the (). Fixing that will also fix this.
FWIW, i had to add more wreferences ot the Java testcase; it all compiles file without DCM (after i cmment out strict, but NREs in a late clompile phase. Logged. SO all the reported issues are DCM-only:
(E406) No overloaded method “Background” with these parameters on type “JLabel”, best matching overload is “setBackground(arg1: Color)”
It seems we somehow lose “method to property mapping”, in DCM only. Background: Java doesn’t really have properties. any method pair of foo: x and setFoo(x) is treated as a property. Why this would have regressed in DCM-only; unsure.
(E486) Parameter 1 is “^RemObjects.Oxygene.System.Void”, should be “Object”, in call to tatukgis.rtl.disposeAndNil(_obj: Object)
i dont see this one here.
(E486) Parameter 1 is “RemObjects.Oxygene.System.Integer”, should be “Color”, in call to TGIS_ValueValidator.setFontColor(_color: Color)
(E62) Type mismatch, cannot assign “RemObjects.Oxygene.System.Integer” to “Color”
This is a case issue. Color is a class, it has a field RED of type Color and a property Red of type Integer. Sigh, that’ Java for you. But we need to check what changed that DCM–only now picks the wrong one.
Forcing the case with «» also doesn’t fix it:
cnv.Color := java.awt.Color.«Red»;
Update: in non-DCM i ge this warning:
Program.pas, line 19 — (E464) Case for identifier “Red” does not match original case “RED”
Program.pas, line 23 — (E464) Case for identifier “Red” does not match original case “RED”
As it tries to use the “correct” (which is a relative term here, since neither really is more correct) one…
(E62) Type mismatch, cannot assign “RemObjects.Elements.System.Byte” to “^RemObjects.Oxygene.System.Void”
Same as above, imho this is “correct”.
(E793) Untyped parameters are only supported on the Island platform
Also see above.
@david.millington pls check into this with top prio. 