and :optimization :none combination
…nsigents Check option intransigents around :output-to, :output-dir, :source-map, and :source-map-path and properly relativize source-map source files in a host independent fashion.
When not a defrecord internal constructor call check the arity of the instantiation form against the fields - ignoring extmap, meta and hash. This is done by setting :internal-ctor meta on the record symbol, otherwise the logic is identical to deftype*. Fix some formatting.
Only copy over files to the output directory if the js file record contains :source-url information.
Use :cljs.compiler/compiled-cljs key in cljs.closure/optimize for generating the source map. Use the destination path as the key as we do for :cljs.closure/compiled-cljs.
cljs.core.PersistentArrayMap.fromArray now takes a 3rd no-check parameter. The inlining array-map macro and the compiler emission for array-maps now analyzes for constants and emits a direct instantiation if possible - otherwise cljs.core.PersistentArrayMap.fromArray called with no-check set to false.
fix cljs.core.PersistentHashSet so that duplicate keys are prevented. Add a fast path for hash-set inlining macro and hash-set emission in compiler.clj, if all keys are distinct constants don't check for duplicates
Source map paths to source files can now be made relative to anything making integration with web work flows simpler.
likely to clash.
in PV -conj don't use aclone, construct the new-tail inline. Change aclone to avoid slice. Remove aclone macro.
Change cljs.analyzer/empty-env so we add a :js-globals entry. Change parse fn* so that we check this for :shadow. Reformat emit-fn-method.
JS objects are constructed in three phases. First, an object is constructed using all key-value pairs with string literals as their keys. Second, object keys are set for the key-value pairs with symbols as their keys. Lastly, remaining key-value pairs are let-bound, evaluated, and their keys are set via the let-bound gensyms.
Signed-off-by: Chris Granger <email@example.com>