Bummer. Something like Dart seems pretty close to Royale as far as mapping goes.
I found this, which seems to indicate there’s similar issues there: https://stackoverflow.com/questions/54933565/debugging-dart-in-visual-studio-code#54940651 Friendly Call Frames sounds promising. Fingers crossed on that. Thanks so much for working on this! Harbs > On Sep 7, 2024, at 12:22 AM, Josh Tynjala <joshtynj...@bowlerhat.dev> wrote: > > So I've kind of run into a brick wall with my attempts to get our source > maps to make JS debuggers display original AS3 field/property names instead > of the modified JS names. There doesn't seem to be any real documentation > about exactly how web browser devtools (or other debuggers, like VSCode) > use the name mappings from source maps. Other parts of source maps are > better documented than name mappings, if still a little sparse. I was able > to get some local variables renamed in my experiments, but never members of > classes. I'm kind of starting to suspect that browsers/debuggers ignore the > name mappings for anything more complex than locals. > > That being said, it's possible that the structure of our generated JS is a > little wonky due to the use of Closure library for classes/inheritance. I > may experiment a bit more with hand-written code to see if I can do more. > It's possible that I can tweak our generated JS to conform more closely to > something that ends up working better with name mappings. > > The one thing that I successfully implemented was a feature that is > Chrome-only, called "Friendly Call Frames": > > https://developer.chrome.com/blog/devtools-modern-web-debugging#friendly_call_frames > > In short, when using Chrome's devtools debugger, when stopped at a > breakpoint, you can use specifically-positioned name mappings to modify the > call stack view to show the original AS3 names. > > royale-compiler commit here: > > https://github.com/apache/royale-compiler/commit/0ea4001e55ebe1930de4c52b1669e7d96f13b112 > > Unfortunately, VSCode's debugger does not support Friendly Call Frames, and > I don't think other browsers do either (except maybe ones that are Chrome > forks). However, I opened a feature request for VSCode's debugger, and the > developer seemed open to supporting it. > > https://github.com/microsoft/vscode-js-debug/issues/2054 > > -- > Josh Tynjala > Bowler Hat LLC <https://bowlerhat.dev> > > > On Mon, Jul 22, 2024 at 12:24 PM Harbs <harbs.li...@gmail.com> wrote: > >>> I can look into adding name mapping to our debug build source maps. >> >> That would be amazing! >> >>> On Jul 22, 2024, at 6:17 PM, Josh Tynjala <joshtynj...@bowlerhat.dev> >> wrote: >>> >>> As I recall, the main thing that I focused on when implementing source >> maps >>> was ensuring that breakpoints worked properly. It is possible that the >>> Royale compiler renames some things, and we don't map the original AS3 >>> names to the generated JS names yet. (Generally, we try to keep the same >>> variable names in JS, but I recall that there are some special cases >> where >>> we rename). That's for debug builds. However, for release builds, source >>> maps are generated by Closure Compiler. I don't think that we have a lot >> of >>> control over how Closure Compiler generates source maps (nor could we >> take >>> over for it, since we wouldn't know the new names it generates for >>> variables and things). >>> >>> I can look into adding name mapping to our debug build source maps. >>> >>> -- >>> Josh Tynjala >>> Bowler Hat LLC <https://bowlerhat.dev> >>> >>> >>> On Sun, Jul 21, 2024 at 6:24 AM Gabe Harbs <harbs.li...@gmail.com> >> wrote: >>> >>>> I’ve never really tried debugging with source-maps enabled. I figured >> I’d >>>> give it a try and while cool, it doesn’t feel so useful because >> identifiers >>>> are not mapped to qualified names. >>>> >>>> That includes qualified names of classes and functions and even simple >>>> things like instance variables not being mapped to “this”. >>>> >>>> Is there any way around this limitation? What do other frameworks do? >>>> >>>> Harbs >> >>