I understand that inline
by itself is a suggestion to the compiler, and at its discretion it may or may not inline the function, and it will also produce linkab
I believe you misunderstand __FILE__ and __LINE__ based on this statement:
because it uses the __FILE__ and __LINE__ macros which should resolve for the caller but not this called function
There are several phases of compilation, and preprocessing is the first. __FILE__ and __LINE__ are replaced during that phase. So by the time the compiler can consider the function for inlining they have already been replaced.