|
650 | 650 | 'baz) |
651 | 651 | first meta) |
652 | 652 |
|
653 | | - ;; User supplied externs |
| 653 | + (-> |
| 654 | + (find (externs/externs-map |
| 655 | + (closure/load-externs |
| 656 | + {:externs ["src/test/externs/test.js"] |
| 657 | + :use-only-custom-externs true})) |
| 658 | + 'Foo) |
| 659 | + first meta) |
| 660 | + |
| 661 | + ;; works, does not generate extern |
654 | 662 | (let [test-cenv (atom {::a/externs (externs/externs-map |
655 | 663 | (closure/load-externs |
656 | 664 | {:externs ["src/test/externs/test.js"]}))})] |
|
659 | 667 | (e/with-compiler-env test-cenv |
660 | 668 | (a/analyze-form-seq |
661 | 669 | '[(ns foo.core) |
662 | | - (defn baz [^js/Foo a] |
663 | | - (.wozMethod a)) |
664 | | - (js/console.log (.wozMethod (js/Foo.))) |
665 | 670 | (js/console.log (.wozMethod (js/baz)))])) |
666 | 671 | (cc/emit-externs |
667 | 672 | (reduce util/map-merge {} |
668 | 673 | (map (comp :externs second) |
669 | 674 | (get @test-cenv ::a/namespaces)))))) |
670 | 675 |
|
671 | | - ;; the following should produce externs, but does not |
| 676 | + ;; works, does not generate extern |
| 677 | + (let [test-cenv (atom {::a/externs (externs/externs-map |
| 678 | + (closure/load-externs |
| 679 | + {:externs ["src/test/externs/test.js"]}))})] |
| 680 | + (binding [a/*cljs-ns* a/*cljs-ns* |
| 681 | + a/*cljs-warnings* (assoc a/*cljs-warnings* :infer-warning true)] |
| 682 | + (e/with-compiler-env test-cenv |
| 683 | + (a/analyze-form-seq |
| 684 | + '[(ns foo.core) |
| 685 | + (defn baz [^js/Foo x] |
| 686 | + (.wozMethod x))])) |
| 687 | + (cc/emit-externs |
| 688 | + (reduce util/map-merge {} |
| 689 | + (map (comp :externs second) |
| 690 | + (get @test-cenv ::a/namespaces)))))) |
| 691 | + |
| 692 | + ;; does NOT work, does not generate extern |
672 | 693 | (let [test-cenv (atom {::a/externs (externs/externs-map |
673 | 694 | (closure/load-externs |
674 | 695 | {:externs ["src/test/externs/test.js"]}))})] |
|
678 | 699 | (a/analyze-form-seq |
679 | 700 | '[(ns foo.core) |
680 | 701 | (defn baz [^js/Foo a] |
681 | | - (.gozMethod a)) |
| 702 | + (.gozMethod a))])) |
| 703 | + (cc/emit-externs |
| 704 | + (reduce util/map-merge {} |
| 705 | + (map (comp :externs second) |
| 706 | + (get @test-cenv ::a/namespaces)))))) |
| 707 | + |
| 708 | + ;; does NOT work, does not generate extern |
| 709 | + (let [test-cenv (atom {::a/externs (externs/externs-map |
| 710 | + (closure/load-externs |
| 711 | + {:externs ["src/test/externs/test.js"]}))})] |
| 712 | + (binding [a/*cljs-ns* a/*cljs-ns* |
| 713 | + a/*cljs-warnings* (assoc a/*cljs-warnings* :infer-warning true)] |
| 714 | + (e/with-compiler-env test-cenv |
| 715 | + (a/analyze-form-seq |
| 716 | + '[(ns foo.core) |
682 | 717 | (js/console.log (.gozMethod (js/baz)))])) |
683 | 718 | (cc/emit-externs |
684 | 719 | (reduce util/map-merge {} |
|
0 commit comments