return
will force its function to return whatever value is provided. The thing is that context
is a function too! So, when you do:
o: context [
a: 1
return a
]
o
word will be set to a returned value from a context
function, which takes a block, evaluates it according to make object! ...
semantics (see details here), and returns a 1
integer in the process, because that's what you've asked it to do.
I'm not quite sure what else you've expected in this case. If you want o set o
to an actual object!
-- just don't use return
.