pass expression, not primary, to dynamic check