function assign_then_alias() {
  var obj: { x: string | number };
  obj = { x: "hey" };
  glob = obj;    // error: subsequent assignment might make glob.x a number
}
test handling of unaliased value assignment.

An unaliased object rvalue may be assigned to a supertype lvalue,
because later widening mutations on the rvalue can't break assumptions
made by other lvalues.

However, upon assignment the rvalue must take on the type of the
lvalue, to avoid both false positives and false negatives
(unsoundness), as shown below.

@flow