If expression is shared, check that we can access it. Give error message if not.
expression to check
context
Whether this expression is for a return statement off a ref function, in which case a single level of dereference is allowed (e.g. shared(int)*).
true on error
See Implementation
If expression is shared, check that we can access it. Give error message if not.