clojurescript silently ignores missing externs files possibly leading a developer to chase their tail.
Presently it can be very confusing using advanced compilation if you have made a mistake in the path name of one of your :externs files. This patch makes the compiler print a warning on stderr so you can quickly determine the cause of the broken advanced compilation output.
As a side effect, when doing a basic lein-cljsbuild a warning is always printed:
WARNING: js resource path closure-js/externs does not exist
This is because lein-cljsbuild quietly adds this extra path to your :externs listing without you knowing.
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
The solution does not work for cljsbuild. It's unclear why there so much machinery in place over the approach taken for deps.clj.
Comment made by: retrogradeorbit
This lein-cljsbuild issue is what made me make it just a warning initially, and not a hard error like raising IllegalArgumentException does. Though I agree it should be a hard error. If we start with a warning, it enables the immediate problem for the developer to be resolved, and leaves a wart that the cljs-build project can then see that need fixing on their end. Then when that end is fixed it could be made a hard error. If cljsbuild is fixed fairly soon then all is well, but if it takes a long time, a warning might be a good first step.