No, that's not it. So I tried: (def audio-context (js/AudioContext.)) (.decodeAudioData audio-context (js/ArrayBuffer. 256) #(println "ok" %) #(println "error" %))
and it compiled to: ;var zv = new AudioContext; zv.Rd(new ArrayBuffer(256), function(a) { return fo.c(mh(["ok", a], 0)); }, function(a) { return fo.c(mh(["error", a], 0)); }); This has really got me stumped. Crispin On Wednesday, January 28, 2015 at 6:23:29 PM UTC+8, Thomas Heller wrote: > > I just have a guess for you. > > AudioContext.decodeAudioData parameters are declared as ArrayBuffer, > Function, Function but you are passing "data" which is a String not an > ArrayBuffer. Maybe the type inference thinks you are calling a method that > is not defined in the externs? > > Maybe it will work if you pass an ArrayBuffer? Other than that I see no > reason why it would munge the name. > > /thomas > > On Wednesday, January 28, 2015 at 2:14:31 AM UTC+1, Crispin Wellington > wrote: >> >> Hi there, >> >> I have been trying to compile some audio code in clojurescript in >> advanced mode. I have setup the w3c_audio.js extern (from: >> http://closureplease.com/externs/) into my extern list. When I compile, >> it prevents the munging of "AudioContext" (without the extern, this is >> being munged, so the extern is 'working'). But it doesn't prevent the >> munging of methods on AudioContext object. >> >> A super minimal example (but not working code): >> >> (def audio-context (js/AudioContext.)) >> (.decodeAudioData audio-context "data" #(println "ok" %) #(println >> "error" %)) >> >> compiles with advanced to: >> >> ;var zv = new AudioContext; >> zv.Rd("data", function(a) { >> return fo.c(mh([a], 0)); >> }, function() { >> return(0).call(null); >> }); >> >> zv.Rd is wrong. It should be zv.decodeAudioData. >> >> The externs file does indeed have this function prototype. here are the >> excerpts: >> >> /** >> * @constructor >> */ >> var AudioContext = function() {}; >> >> .... >> >> /** >> * @param {ArrayBuffer} audioData >> * @param {Function} successCallback >> * @param {Function=} errorCallback >> */ >> AudioContext.prototype.decodeAudioData = function(audioData, >> successCallback, >> errorCallback) {}; >> >> Why would closure compiler protect the AudioContext name, but munge the >> decodeAudioData name? What am I doing wrong? >> >> Regards >> >> Crispin Wellington >> >> >> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.