File tree Expand file tree Collapse file tree 3 files changed +34
-12
lines changed Expand file tree Collapse file tree 3 files changed +34
-12
lines changed Original file line number Diff line number Diff line change 1235
1235
; ; check if prefix is some existing def
1236
1236
(if-let [resolved (resolve-var env prefix nil false )]
1237
1237
(update resolved :name #(symbol (str % " ." suffix)))
1238
- (let [idx (.lastIndexOf s " ." )
1238
+ ; ; glib imports (i.e. (:import [goog.module ModuleLoader])
1239
+ ; ; are always just dotted symbols after the recursion
1240
+ (let [s (str
1241
+ (cond->> s
1242
+ (goog-module-dep? sym)
1243
+ (resolve-import env)))
1244
+ idx (.lastIndexOf (str s) " ." )
1239
1245
pre (subs s 0 idx)
1240
1246
suf (subs s (inc idx))]
1241
1247
{:op :var
Original file line number Diff line number Diff line change 31
31
(env/with-compiler-env cenv
32
32
(ana/resolve-var aenv 'module-loader/EventType)))))))
33
33
34
+ (deftest glib-module-resolve-import-test
35
+ (testing " glib module resolve import helper test"
36
+ (let [cenv (env/default-compiler-env )
37
+ ns-ast (ana-tests/analyze-forms cenv
38
+ '[(ns foo.core
39
+ (:require [goog.module.ModuleLoader :as module-loader]))])
40
+ aenv (assoc (ana/empty-env ) :ns (ana/get-namespace cenv 'foo.core))]
41
+ (is (= 'foo.core.goog$module$goog$module$ModuleLoader
42
+ (env/with-compiler-env cenv
43
+ (ana/resolve-import aenv 'goog.module.ModuleLoader)))))))
44
+
45
+ (deftest glib-module-resolve-import-var-test
46
+ (testing " glib module :import var resolution"
47
+ (let [cenv (env/default-compiler-env )
48
+ ns-ast (ana-tests/analyze-forms cenv
49
+ '[(ns foo.core
50
+ (:import [goog.module ModuleLoader]))])
51
+ aenv (assoc (ana/empty-env ) :ns (ana/get-namespace cenv 'foo.core))]
52
+ (is (= '{:name foo.core.goog$module$goog$module$ModuleLoader
53
+ :ns goog.module ; ; a bit odd, but doesn't matter, for emission we just :name
54
+ :op :var }
55
+ (env/with-compiler-env cenv
56
+ (ana/resolve-var aenv 'ModuleLoader)))))))
57
+
34
58
(comment
35
59
36
- (test/test-vars [#'glib-module-resolve-var-test])
37
60
(test/run-tests )
38
61
39
62
)
Original file line number Diff line number Diff line change 1
1
(ns cljs.compiler.glib-module-test
2
- (:require [cljs.compiler :as comp]
3
- [cljs.compiler-tests :as comp-tests]
2
+ (:require [cljs.compiler-tests :as comp-tests]
4
3
[cljs.env :as env]
5
4
[clojure.test :as test :refer [deftest is testing]]))
6
5
12
11
(:import [goog.module ModuleLoader]))
13
12
(def module-loader (ModuleLoader. ))]))]
14
13
(is (re-find #"goog\. require\( 'goog\. module\. ModuleLoader'\) " src))
15
- (is (re-find #"test\. foo\. goog\$ module\$ goog\$ module\$ ModuleLoader = goog\. module\. get\( 'goog.module.ModuleLoader'\) " src)))))
14
+ (is (re-find #"test\. foo\. goog\$ module\$ goog\$ module\$ ModuleLoader = goog\. module\. get\( 'goog.module.ModuleLoader'\) " src))
15
+ (is (re-find #"test\. foo\. module_loader = \( new test\. foo\. goog\$ module\$ goog\$ module\$ ModuleLoader\(\)\) " src)))))
16
16
17
17
(comment
18
18
19
19
(test/run-tests )
20
20
21
- (println
22
- (env/with-compiler-env (env/default-compiler-env )
23
- (comp-tests/compile-form-seq
24
- '[(ns test.foo
25
- (:import [goog.module ModuleLoader]))
26
- (def module-loader (ModuleLoader. ))])))
27
-
28
21
)
You can’t perform that action at this time.
0 commit comments