Inline functions are handled entirely by the compiler, not the preprocessor.
An inline function must be defined in every translation unit where it is odr-used (§3.2/3).
In other words, if there's a call to an inline function in a file, then the definition (not just a declaration) of that inline function must appear in the pre-processed version of that file.
No diagnostic is (currently) required for breaking this rule. The compiler could reject the code outright, or it could (for example) continue to compile and treat that function as a normal (not inline) function. You're pretty much at the mercy of the compiler though--you're clearly breaking the rules of the language, so the only real question is whether the compiler will really enforce the rules, or possibly let you get away with breaking them in this particular case.