These changes silence new warnings and errors (valid or not -- we may have been getting away with something until now) emitted by the llvm-project clang compiler while building f18. The one big change was avoiding inline operator== member functions operating on sum types containing references to types that are necessarily forward-referenced in header files; these comparisons were taken out-of-line into C++ source files where all of the relevant types are fully defined. Also, a porting problem to OSX that Tim encountered with another PR is fixed here so that we don't have to wait for that big PR to merge.
f18 still builds with gcc (9.2.0 at least, will confirm 8.3.0 and 7.2.0 before merging) too.
These changes silence new warnings and errors (valid or not -- we may have been getting away with something until now) emitted by the llvm-project clang compiler while building f18. The one big change was avoiding inline
operator==
member functions operating on sum types containing references to types that are necessarily forward-referenced in header files; these comparisons were taken out-of-line into C++ source files where all of the relevant types are fully defined. Also, a porting problem to OSX that Tim encountered with another PR is fixed here so that we don't have to wait for that big PR to merge.f18 still builds with gcc (9.2.0 at least, will confirm 8.3.0 and 7.2.0 before merging) too.