Breaking Changes
From The Oxygene Language Wiki
Breaking Changes in Oxygene 5 (Fall 2011)
Oxygene 5 features a brand new compiler rewritten from scratch. While implementing the new compiler, a number of inconsistencies were eliminated, and in a few cases bugs present in the old compiler would allow certain code to compile (and work) that was not technically correct. While we do value backwards compatibility, we also value language precision and technical correctness, so in cases where the old compiler's behavior was deemed wrong, we have not carried those defects over into the new compiler.
In particular, the following scenarios were found on our test cases and projects that the old compiler allowed do to bugs or incomplete checks:
- In the old compiler, extension methods defined witgin the project were available in all source files, even where the namespace these were defined in was not in the uses clause. This was incorrect behavior and has been changed. The new compiler will now correctly see extension methods from used namespaces only. To fix this issue when you encounter it, make sure to have the necessary namespaces in your source file's uses clause.
- Comments starting with three forward slashes ("///") indicate XmlDoc comments. This is not enforced strictly, so regular text comments starting with an extra slash will no longer compile. To fix this issue when you encounter it, simply remove the extra slash.
- The old compiler erroneously allowed use of the "notify" on non-writable properties. This is no longer supported. To fix this issue when you encounter it, simply remove the "notify" keyword.
- The new compiler more aggressively and accurately emits hints for variables that are assigned, but never used; unfortunately, this can emit some false positives in code generated b y the Windows Form Designer. We recommend either setting GenerateMember to false on any controls you do not plan to access in code, or to add a {$HIDE H7} directive at the top of your .Designer.pas file, to avoid this. All newly generated projects or Forms will automatically have this directive added, by default. (Since no user code goes into .Designer.pas, the {$HIDE H7} will not affect any hints pertaining to your own code).