Skip to content

Commit

Permalink
bump clojurescript and fix goog.object require regression
Browse files Browse the repository at this point in the history
  • Loading branch information
darwin committed Mar 5, 2022
1 parent 06e1fa1 commit 0246f7e
Show file tree
Hide file tree
Showing 9 changed files with 35 additions and 24 deletions.
2 changes: 1 addition & 1 deletion deps.edn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{:paths ["src/lib"]
:deps {org.clojure/clojure {:mvn/version "1.10.3"}
org.clojure/clojurescript {:mvn/version "1.10.844"}
org.clojure/clojurescript {:mvn/version "1.11.4"}
binaryage/env-config {:mvn/version "0.2.2"}}}
2 changes: 1 addition & 1 deletion project.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(def clojurescript-version (or (System/getenv "CANARY_CLOJURESCRIPT_VERSION") "1.10.844"))
(def clojurescript-version (or (System/getenv "CANARY_CLOJURESCRIPT_VERSION") "1.11.4"))
(def required-deps
[['binaryage/env-config "0.2.2"]])
(def provided-deps
Expand Down
6 changes: 3 additions & 3 deletions src/lib/oops/codegen.clj
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,12 @@
(defn gen-key-get [obj key]
(case (config/key-get-mode)
:core `(~'js* "(~{}[~{}])" ~obj ~key) ; using aget could raise a warning, see CLJS-2148
:goog `(goog.object/get ~obj ~key)))
:goog `(oops.core/gobj-get ~obj ~key)))

(defn gen-key-set [obj key val]
(case (config/key-set-mode)
:core `(~'js* "(~{}[~{}] = ~{})" ~obj ~key ~val) ; using aset could raise a warning, see CLJS-2148
:goog `(goog.object/set ~obj ~key ~val)))
:goog `(oops.core/gobj-set ~obj ~key ~val)))

(defn gen-dynamic-object-access-validation-wrapper [obj-sym mode key push? check-key-read? check-key-write? body]
(debug-assert (symbol? obj-sym))
Expand Down Expand Up @@ -297,7 +297,7 @@
(debug-assert (symbol? obj-sym))
(debug-assert (symbol? mode-sym))
`(if (and (= ~mode-sym ~dot-access)
(not (goog.object/containsKey ~obj-sym ~key)))
(not (oops.core/gobj-containsKey ~obj-sym ~key)))
~(gen-report-if-needed :missing-object-key `{:obj (oops.state/get-target-object)
:key ~key
:path (oops.state/get-key-path-str)})
Expand Down
10 changes: 10 additions & 0 deletions src/lib/oops/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,16 @@

; -- runtime support for macros ---------------------------------------------------------------------------------------------

; work around https://clojurescript.org/news/2021-11-04-release#_google_closure_library_goog_module_global_access
(defn gobj-get [obj key]
(goog.object/get obj key))

(defn gobj-set [obj key val]
(goog.object/set obj key val))

(defn gobj-containsKey [obj key]
(goog.object/containsKey obj key))

(defn ^boolean validate-object-access-dynamically [obj mode key push? check-key-read? check-key-write?]
(runtime/validate-object-access-dynamically obj mode key push? check-key-read? check-key-write?))

Expand Down
6 changes: 3 additions & 3 deletions test/transcripts/expected/gcall_static_goog.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// (gcall "f" "p1" "p2"))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var call_info_1 = [goog.global, goog.object$get(goog$global, "f")],
var call_info_1 = [goog.global, module.contents$goog.object_get.call(null, goog.global, "f")],
fn_1 = call_info_1[1];
null != fn_1 && fn_1.call(call_info_1[0], "p1", "p2");

Expand All @@ -27,7 +27,7 @@ null != fn_1 && fn_1.call(call_info_1[0], "p1", "p2");
// (gcall "a.f" "p1" "p2"))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var call_info_2, target_obj_1 = goog.object.get(goog.global, "a");
call_info_2 = [target_obj_1, goog.object$get(target_obj_1, "f")];
var call_info_2, target_obj_1 = module$contents$goog.object_get.call(null, goog.global, "a");
call_info_2 = [target_obj_1, module$contents$goog$object_get.call(null, target_obj_1, "f")];
var fn_2 = call_info_2[1];
null != fn_2 && fn_2.call(call_info_2[0], "p1", "p2");
7 changes: 4 additions & 3 deletions test/transcripts/expected/oapply_static_goog.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ var target_obj_1 = {
return 42
}
},
call_info_1 = [target_obj_1, goog.object.get(target_obj_1, "f")],
call_info_1 = [target_obj_1, module$contents$goog$object_get.call(null, target_obj_1, "f")],
fn_1 = call_info_1[1];
null != fn_1 && fn_1.apply(call_info_1[0], oops.helpers.to_native_array());

Expand All @@ -32,13 +32,14 @@ null != fn_1 && fn_1.apply(call_info_1[0], oops.helpers.to_native_array());
// (oapply #js {"a" #js {"f" (fn [] 42)}} "a.f" ["p1" "p2"]))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var call_info_2, target_obj_2 = goog.object.get({
var call_info_2, target_obj_2;
target_obj_2 = module$contents$goog.object_get.call(null, {
a: {
f: function() {
return 42
}
}
}, "a");
call_info_2 = [target_obj_2, goog.object.get(target_obj_2, "f")];
call_info_2 = [target_obj_2, module.contents$goog$object_get.call(null, target_obj_2, "f")];
var fn_2 = call_info_2[1];
null != fn_2 && fn_2.apply(call_info_2[0], oops.helpers.to_native_array());
12 changes: 6 additions & 6 deletions test/transcripts/expected/ocall_static_goog.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ var target_obj_1 = {
return 42
}
},
call_info_1 = [target_obj_1, goog.object.get(target_obj_1, "f")],
call_info_1 = [target_obj_1, oops.core.gobj_get(target_obj_1, "f")],
fn_1 = call_info_1[1];
null != fn_1 && fn_1.call(call_info_1[0], "p1", "p2");

Expand All @@ -32,14 +32,14 @@ null != fn_1 && fn_1.call(call_info_1[0], "p1", "p2");
// (ocall #js {"a" #js {"f" (fn [] 42)}} "a.f" "p1" "p2"))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var call_info_2, target_obj_2 = goog.object.get({
var call_info_2, target_obj_2 = oops.core.gobj_get({
a: {
f: function() {
return 42
}
}
}, "a");
call_info_2 = [target_obj_2, goog.object.get(target_obj_2, "f")];
call_info_2 = [target_obj_2, oops.core.gobj_get(target_obj_2, "f")];
var fn_2 = call_info_2[1];
null != fn_2 && fn_2.call(call_info_2[0], "p1", "p2");

Expand All @@ -51,7 +51,7 @@ null != fn_2 && fn_2.call(call_info_2[0], "p1", "p2");
// (ocall "g" 2 3))))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var target_obj_3, call_info_3, target_obj_4 = goog.object.get({
var target_obj_3, call_info_3, target_obj_4 = oops.core.gobj_get({
e: {
f: function(x13) {
return {
Expand All @@ -62,9 +62,9 @@ var target_obj_3, call_info_3, target_obj_4 = goog.object.get({
}
}
}, "e");
call_info_3 = [target_obj_4, goog.object.get(target_obj_4, "f")];
call_info_3 = [target_obj_4, oops.core.gobj_get(target_obj_4, "f")];
var fn_3 = call_info_3[1];
target_obj_3 = null != fn_3 ? fn_3.call(call_info_3[0], 1) : null;
var call_info_4 = [target_obj_3, goog.object.get(target_obj_3, "g")],
var call_info_4 = [target_obj_3, oops.core.gobj_get(target_obj_3, "g")],
fn_4 = call_info_4[1];
null != fn_4 && fn_4.call(call_info_4[0], 2, 3);
4 changes: 2 additions & 2 deletions test/transcripts/expected/oget_static_goog.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
// (.log js/console (oget #js {"key" "val"} "key")))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

console.log(goog.object.get({
console.log(module$contents$goog$object_get.call(null, {
key: "val"
}, "key"));

Expand All @@ -71,6 +71,6 @@ console.log(goog.object.get({
// (.log js/console (oget #js {"key" "val"} "xxx")))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

console.log(goog.object.get({
console.log(module$contents$goog$object_get.call(null, {
key: "val"
}, "xxx"));
10 changes: 5 additions & 5 deletions test/transcripts/expected/oset_static_goog.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,21 @@
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var target_obj_1 = window,
next_obj_1 = goog.object.get(target_obj_1, "k1");
(null == next_obj_1 ? oops.core.punch_key_dynamically_BANG_.cljs.core.IFn$_invoke$arity$4$ ? oops.core.punch_key_dynamically_BANG_.cljs.core.IFn$_invoke$arity$4$(target_obj_1, "k1") : oops.core.punch_key_dynamically_BANG_.call(null, target_obj_1, "k1") : next_obj_1).k2 = "val";
next_obj_1 = module$contents$goog.object_get.call(null, target_obj_1, "k1");
(null == next_obj_1 ? oops.core.punch_key_dynamically_BANG_.cljs.core$IFn$_invoke$arity$4$ ? oops.core.punch_key_dynamically_BANG_.cljs.core.IFn$_invoke$arity$4$(target_obj_1, "k1") : oops.core.punch_key_dynamically_BANG_.call(null, target_obj_1, "k1") : next_obj_1).k2 = "val";

// SNIPPET #2:
// (testing "oset! expansion with macro-generated params should be static"
// (oset! js/window (macro-identity "!k1.!k2") "val"))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var target_obj_2 = window,
next_obj_2 = goog.object.get(target_obj_2, "k1");
(null == next_obj_2 ? oops.core.punch_key_dynamically_BANG_.cljs.core.IFn$_invoke$arity$4$ ? oops.core.punch_key_dynamically_BANG_.cljs.core.IFn$_invoke$arity$4$(target_obj_2, "k1") : oops.core.punch_key_dynamically_BANG_.call(null, target_obj_2, "k1") : next_obj_2).k2 = "val";
next_obj_2 = module$contents$goog.object_get.call(null, target_obj_2, "k1");
(null == next_obj_2 ? oops.core.punch_key_dynamically_BANG_.cljs.core$IFn$_invoke$arity$4$ ? oops.core.punch_key_dynamically_BANG_.cljs.core.IFn$_invoke$arity$4$(target_obj_2, "k1") : oops.core.punch_key_dynamically_BANG_.call(null, target_obj_2, "k1") : next_obj_2).k2 = "val";

// SNIPPET #3:
// (testing "static oset! expansion without punching"
// (oset! js/window "k1.k2" "val"))
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

goog.object.get(window, "k1").k2 = "val";
module$contents$goog$object_get.call(null, window, "k1").k2 = "val";

0 comments on commit 0246f7e

Please sign in to comment.