Using has_tag() outside loop

The has_tag() conditional does not have to be used inside the Loop; it can be passed a $post object as a second parameter:

has_tag( $tag, $post );

Since has_tag() defaults to the current post, you simply need to pass it the object for the next adjacent post. Fortunately, WordPress provides a function to retrieve adjacent posts: get_adjacent_post():

get_adjacent_post( $in_same_cat, $excluded_categories, $previous );

The $in_same_cat parameter defaults to false, the $excluded_categories parameter defaults to '', and the $previous parameter defaults to true. So, we just need to change that third parameter to false, to retrieve the next post, instead of the previous post:

get_adjacent_post( false, '', true );

Combining it with your has_tag() conditional:

if ( has_tag( 'mario', get_adjacent_post( false, '', true ) ) {
    // Next post has the 'mario' post tag;
    // do something
}

tech