Summary
UEFN 43.00: the new built-in operator’.Last’ makes every existing Verse local or field named Last a compile error (3588 “Ambiguous identifier”).
Please select what you are reporting on:
Verse
What Type of Bug are you experiencing?
Verse
Steps to Reproduce
Take a project that compiled cleanly on 42.40 and has a local or field named Last, for example:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
repro_device := class(creative_device):
var Last:?agent = false
OnBegin<override>()<suspends>:void =
if (Was := Last?):
Print("had one")
Count := 3
Last := Count - 1
Print("{Last}")
Open it in UEFN 43.00.
Run Verse > Build Verse Code.
Expected Result
The project builds as it did on 42.40. A local name declared in user code should shadow a standard-library name that was added later. At most it should give a warning or a deprecation period, not a hard error.
Observed Result
The build fails. Every use of Last gives:
Script error 3588: Ambiguous identifier; could be (///:)Last, (/Verse.org/Verse:)operator’.Last’, or (/Verse.org/Verse:)operator’.Last’
In our project that was 112 errors across 31 files, all of them locals or fields named Last. The project couldn’t be built, played or published until they were renamed.
The message lists operator’.Last’ twice.
There was no warning about the new name in 42.40 and nothing in the 43.00 release notes.
Platform(s)
Windows 11 Pro. UEFN ++Fortnite+Release-43.00-CL-59596594 (Engine 6.0.0-59596594).
Additional Notes
Each new name in /Verse.org/Verse can break existing projects this way. Please let user-declared names shadow names added to the standard library later, or at least warn for one release first.
Please list new /Verse.org/Verse names in the release notes.
The duplicate operator’.Last’ in the message looks like a separate small bug.