Closed stevendwood closed 6 years ago
You can turn off the InlineObjectLiteral pass with CompilerOptions.setCollapseObjectLiterals(false) - apologies for the confusing naming.
This should be simple to fix though, if we replace or remove all invalid JS identifier characters when generating names InlineObjectLiteral.
Thanks very much, setting that compileroptions flag got it compiling for now.
Submitted a fix internally. It should be pushed to Github soon.
@lauraharker If you write Fixes <issue URL>
or Closes <issue URL>
in the CL description, it will automatically close the bug on Github when it's pushed out. In this case it should be okay to close this now I think?
Got it, thanks Tyler.
Closing this issue.
Thanks for the quick turnaround @lauraharker !
I think this is the simplest reproduction of the issue :
(function() { var MAP = { "com.foo.bar.baz": "bang" }; }());
It works if you remove the function wrapper and if you reference the MAP and the property.
The exception is
23: java.lang.IllegalStateException: Invalid name 'JSCompiler_object_inline_com.foo.bar.baz_0'. Did you mean to use NodeUtil.newQName? at com.google.common.base.Preconditions.checkState(Preconditions.java:582) at com.google.javascript.rhino.IR.name(IR.java:385) at com.google.javascript.jscomp.NodeUtil.newVarNode(NodeUtil.java:4121) at com.google.javascript.jscomp.InlineObjectLiterals$InliningBehavior.splitObject(InlineObjectLiterals.java:421) at com.google.javascript.jscomp.InlineObjectLiterals$InliningBehavior.afterExitScope(InlineObjectLiterals.java:99) at com.google.javascript.jscomp.ReferenceCollectingCallback.exitScope(ReferenceCollectingCallback.java:250) at com.google.javascript.jscomp.NodeTraversal.popScope(NodeTraversal.java:917) at com.google.javascript.jscomp.NodeTraversal.popScope(NodeTraversal.java:908) at com.google.javascript.jscomp.NodeTraversal.traverseBlockScope(NodeTraversal.java:860) at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:767) at com.google.javascript.jscomp.NodeTraversal.traverseFunction(NodeTraversal.java:803) at com.google.javascript.jscomp.NodeTraversal.handleFunction(NodeTraversal.java:737) at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:753) at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:844) at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:769) at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:844) at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:769) at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:844) at com.google.javascript.jscomp.NodeTraversal.handleScript(NodeTraversal.java:725) at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:750) at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:844) at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:769) at com.google.javascript.jscomp.NodeTraversal.traverseRoots(NodeTraversal.java:327) at com.google.javascript.jscomp.ReferenceCollectingCallback.process(ReferenceCollectingCallback.java:113) at com.google.javascript.jscomp.InlineObjectLiterals.process(InlineObjectLiterals.java:65) at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:304) at com.google.javascript.jscomp.PhaseOptimizer$Loop.process(PhaseOptimizer.java:451) at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:230) at com.google.javascript.jscomp.Compiler.performOptimizations(Compiler.java:2580) at com.google.javascript.jscomp.Compiler$3.call(Compiler.java:841) at com.google.javascript.jscomp.Compiler$3.call(Compiler.java:837) at com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread(CompilerExecutor.java:128) at com.google.javascript.jscomp.Compiler.runInCompilerThread(Compiler.java:869) at com.google.javascript.jscomp.Compiler.stage2Passes(Compiler.java:836) at com.google.javascript.jscomp.Compiler.compile(Compiler.java:730) at com.google.javascript.jscomp.webservice.backend.CompilerInvokerImpl.compile(CompilerInvokerImpl.java:46) at com.google.javascript.jscomp.webservice.backend.ServerController.executeRequest(ServerController.java:179) at com.google.javascript.jscomp.webservice.backend.CompilationRequestHandler.serviceParsedRequest(CompilationRequestHandler.java:178) at com.google.javascript.jscomp.webservice.backend.CompilationRequestHandler.service(CompilationRequestHandler.java:160) at com.google.javascript.jscomp.webservice.frontend.CompilationServlet.doPost(CompilationServlet.java:83) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772) at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at com.google.apphosting.runtime.jetty9.SaveSessionFilter.doFilter(SaveSessionFilter.java:37) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:48) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:297) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) at org.eclipse.jetty.server.Server.handle(Server.java:534) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) at com.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:202) at com.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81) at com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:108) at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchServletRequest(JavaRuntime.java:680) at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchRequest(JavaRuntime.java:642) at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:612) at com.google.apphosting.runtime.JavaRuntime$NullSandboxRequestRunnable.run(JavaRuntime.java:806) at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:274) at java.lang.Thread.run(Thread.java:745)
Original Post Data: output_format=json&output_info=compiled_code&output_info=warnings&output_info=errors&output_info=statistics&compilation_level=SIMPLE_OPTIMIZATIONS&warning_level=default&output_file_name=default.js&js_code=(function()%20%7B%0A%0A%20%20var%20MAP%20%3D%20%7B%0A%09%09%22com.foo.bar.baz%22%3A%20%22bang%22%0A%0A%09%7D%3B%0A%0A%7D())%3B
I'm trying to use closure from within a Java app - so if I could turn off the InlineObjectLiteral pass I guess that might also work, but I couldn't figure out how to do that, I tried CompilerOptions.setInlineVariables(false); to no avail. I don't own the code that's causing the failure.