Given an API like fatalError which takes a file: StaticString = #file parameter, is there a functional difference at runtime if I instead pass a #fileID value?
#fileID is when you don't want to leak the full paths to your source files (or whatever paths your build system uses when you pass them to the compiler) into your binary. #filePath is for the cases where you don't care; e.g., for binaries that will never get released.
So my rule of thumb is that #filePath is fine for things like unit test helper methods, and #fileID should be used for things like logging inside your production code.
I know when I'd want to use one or the other, the question was more around whether the internals of fatalError or the associated debugging tools would care whether the value coming in, which defaults to #file, is #fileID instead, regardless of Swift language mode.
I don't believe so. AFAIK Xcode/LLDB use debug info and not the specific message that's printed to figure out where to navigate to when something traps.