Function results that are pointers are always treated as full pointers. The ptr attribute is allowed on function results but it is not mandatory. The ref pointer attribute is never allowed on function results.
A function result that is a pointer always indicates new storage. A pointer parameter can reference storage that was allocated before the function was called, but a function result cannot.