Would it be possible to just re-introduce the warning/error messages in the REPL but otherwise keep the new behaviour from #19324?
In this way, the examples (IanNZ / 28789) loose their gravity as the error/warning message just tells me what to do, i.e. prepend the variable with global
. The silent failure gives a warning, the ‘real’ failure an error, for example:
julia> for i in 1:2
beforefor = false
end
┌ Warning: `implicit assignment to global variable `beforefor``.
│ Use `global beforefor` instead.
└
julia> for file in list_of_files
# fake read file
lines_in_file = 5
total_lines += lines_in_file
end
┌ Error: `implicit assignment to global variable `total_lines``.
│ Use `global total_lines` instead.
└
I’m not sure I like (yet?) the need to write global
at some places but on the other hand it seems a coherent rule to access global variables and loosing the hard/soft scope distinction was nice (this distinction has also been criticized). But more importantly, I think the current behaviour has been choosen and I don’t hope that there is now a rush to change it again (before 2.0 and after careful consideration)!