x = 0
y = 1
local print, x = print, x
do <error-on-free-name> print(x) -- no issue
print(_ENV.y) -- no issue
print(y) -- error at compile time
end
I.e. inside the annotated do/end block, any free name raises an error at compile time, instead of being translated to _ENV.y .