The data() function doesn't return a loaded object. It loads the objects into your environment, assigns it the predetermined name, and then returns a character vector of the name(s).
So Boston <- data(Boston) does the following:
data(Boston) loads the dataset and assigns it to the Boston variable. Then it returns the vector "Boston".
Boston <- ... takes that character vector and assigns it to the Boston variable, replacing the dataset with "Boston".
If you just use data(Boston) as it's own line, it'll work how you want.
If dim(Boston) returns NULL, that means the Boston object already exists. Otherwise, you'd get an error. Because there's a local version, R uses that instead of looking into any attached packages.
Restart your R session (CTRL + SHIFT + F10) and try it again.