Consider this test function (tested in emacs -q):
(defun foo (start end)
"for testing purposes"
(interactive "r")
(when (region-active-p)
(cons start end)))
Calling M-x foo
gives no results printed in the minibuffer, even when a region is active.
If I evaluate M-: (call-interactively #'foo)
the cons is printed in the minibuffer.
I'd be happy to know why nothing is printed with M-x foo
.