google / google/closure-compiler
Internal compiler error due to unexpected variable (which is not part of the program)
- Dominant language
- JavaScript
- Stars
- 7.7k
- Forks
- 1.2k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 6
Description
Input for `SIMPLE_OPTIMIZATIONS`:
```
throw (function(u_0){ ((function(a_3){ while (u_9){ if (f_10) { break;var f_10;continue };{ throw true } } })())})
```
Error output:
```
java.lang.RuntimeException: INTERNAL COMPILER ERROR.
Please file a bug at http://go/jscompiler-bug with this stack trace, sponge link, and repro steps (a CL# and a build target).
Unexpected variable a
Node(NAME a): input0:1:56
throw (function(u_0){ ((function(a_3){ while (u_9){ if (f_10) { break;var f_10;continue };{ throw true } } })())})
Parent(NOT): input0:1:56
throw (function(u_0){ ((function(a_3){ while (u_9){ if (f_10) { break;var f_10;continue };{ throw true } } })())})
at com.google.javascript.jscomp.VarCheck.handleUndeclaredVariableRef(VarCheck.java:344)
at com.google.javascript.jscomp.VarCheck.checkName(VarCheck.java:274)
at com.google.javascript.jscomp.VarCheck.visit(VarCheck.java:209)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:909)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:902)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:902)
at com.google.javascript.jscomp.NodeTraversal.traverseFunction(NodeTraversal.java:948)
at com.google.javascript.jscomp.NodeTraversal.handleFunction(NodeTraversal.java:854)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:880)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.handleScript(NodeTraversal.java:842)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:877)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1037)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:905)
at com.google.javascript.jscomp.NodeTraversal.traverseRoots(NodeTraversal.java:445)
at com.google.javascript.jscomp.VarCheck.process(VarCheck.java:172)
at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:317)
at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:232)
at com.google.javascript.jscomp.Compiler.performOptimizations(Compiler.java:2417)
at com.google.javascript.jscomp.Compiler.lambda$stage2Passes$1(Compiler.java:802)
at com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread(CompilerExecutor.java:129)
at com.google.javascript.jscomp.Compiler.runInCompilerThread(Compiler.java:829)
at com.google.javascript.jscomp.Compiler.stage2Passes(Compiler.java:799)
at com.google.javascript.jscomp.Compiler.compileModules(Compiler.java:744)
at com.google.javascript.jscomp.debugger.CompilationServlet.service(CompilationServlet.java:99)
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.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
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.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at com.google.apphosting.runtime.jetty9.ParseBlobUploadHandler.handle(ParseBlobUploadHandler.java:119)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1182)
at com.google.apphosting.runtime.jetty9.AppEngineWebAppContext.doHandle(AppEngineWebAppContext.java:187)
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:293)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at org.eclipse.jetty.server.Server.handle(Server.java:539)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
at com.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:213)
at com.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81)
at com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchServletRequest(JavaRuntime.java:757)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchRequest(JavaRuntime.java:720)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:690)
at com.google.apphosting.runtime.JavaRuntime$NullSandboxRequestRunnable.run(JavaRuntime.java:882)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:270)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Unexpected variable a
... 64 more
```
Reproduce URL: https://closure-compiler-debugger.appspot.com/#input0%3Dthrow%2520(function(u_0)%257B%2520((function(a_3)%257B%2520while%2520(u_9)%257B%2520if%2520(f_10)%2520%257B%2520break%253Bvar%2520f_10%253Bcontinue%2520%257D%253B%257B%2520throw%2520true%2520%257D%2520%257D%2520%257D)())%257D)%250A%26input1%26conformanceConfig%26externs%26refasterjs-template%26includeDefaultExterns%3Dtrue%26ALIAS_ALL_STRINGS%3Dtrue%26AMBIGUATE_PROPERTIES%3Dtrue%26COALESCE_VARIABLE_NAMES%3Dtrue%26COLLAPSE_VARIABLE_DECLARATIONS%3Dtrue%26COLLAPSE_ANONYMOUS_FUNCTIONS%3Dtrue%26COLLAPSE_PROPERTIES%3Dtrue%26COLLAPSE_OBJECT_LITERALS%3Dtrue%26COMPUTE_FUNCTION_SIDE_EFFECTS%3Dtrue%26CONVERT_TO_DOTTED_PROPERTIES%3Dtrue%26CROSS_CHUNK_CODE_MOTION%3Dtrue%26CROSS_CHUNK_METHOD_MOTION%3Dtrue%26DEAD_ASSIGNMENT_ELIMINATION%3Dtrue%26DISAMBIGUATE_PROPERTIES%3Dtrue%26EXTRACT_PROTOTYPE_MEMBER_DECLARATIONS%3Dtrue%26FOLD_CONSTANTS%3Dtrue%26INLINE_CONSTANTS%3Dtrue%26INLINE_FUNCTIONS%3Dtrue%26INLINE_PROPERTIES%3Dtrue%26INLINE_VARIABLES%3Dtrue%26LABEL_RENAMING%3Dtrue%26OPTIMIZE_CALLS%3Dtrue%26REMOVE_ABSTRACT_METHODS%3Dtrue%26REMOVE_DEAD_CODE%3Dtrue%26REMOVE_UNUSED_CLASS_PROPERTIES%3Dtrue%26REMOVE_UNUSED_PROTOTYPE_PROPERTIES%3Dtrue%26REMOVE_UNUSED_PROTOTYPE_PROPERTIES_IN_EXTERNS%3Dtrue%26REMOVE_UNUSED_VARIABLES%3Dtrue%26REWRITE_FUNCTION_EXPRESSIONS%3Dtrue%26SMART_NAME_REMOVAL%3Dtrue%26USE_TYPES_FOR_LOCAL_OPTIMIZATION%3Dtrue%26VARIABLE_RENAMING%3Dtrue%26PROPERTY_RENAMING%3Dtrue%26MOVE_FUNCTION_DECLARATIONS%3Dtrue%26SYNTHETIC_BLOCK_MARKER%3Dtrue%26CHROME_PASS%3Dtrue%26PRESERVE_TYPE_ANNOTATIONS%3Dtrue
Compiler Options (default options)
```
aggressiveFusion=false
aliasableStrings=[]
aliasAllStrings=false
aliasHandler=com.google.javascript.jscomp.CompilerOptions$NullAliasTransformationHandler@5bb21b69
aliasStringsBlacklist=
allowHotswapReplaceScript=false
ambiguateProperties=false
angularPass=false
anonymousFunctionNaming=OFF
assumeClosuresOnlyCaptureReferences=false
assumeGettersArePure=true
assumeStrictThis=false
browserResolverPrefixReplacements={}
brokenClosureRequiresLevel=ERROR
checkDeterminism=false
checkGlobalNamesLevel=OFF
checkGlobalThisLevel=OFF
checkMissingGetCssNameLevel=OFF
checksOnly=false
checkSuspiciousCode=false
checkSymbols=false
checkTypes=false
closurePass=true
coalesceVariableNames=true
collapseAnonymousFunctions=false
collapseObjectLiterals=true
collapseProperties=NONE
collapseVariableDeclarations=true
colorizeErrorOutput=false
computeFunctionSideEffects=false
conformanceConfigs=[]
conformanceRemoveRegexFromPath=Optional.of(^((.*/)?google3/)?((^/)?(blaze|bazel)-out/[^/]+/bin/)?)
continueAfterErrors=false
convertToDottedProperties=true
crossChunkCodeMotion=false
crossChunkCodeMotionNoStubMethods=false
crossChunkMethodMotion=false
dartPass=false
deadAssignmentElimination=true
declaredGlobalExternsOnWindow=true
defineReplacements={}
dependencyOptions=DependencyOptions{mode=SORT_ONLY
entryPoints=[]}
devirtualizeMethods=false
devMode=OFF
disambiguatePrivateProperties=false
disambiguateProperties=false
enableModuleRewriting=true
enforceAccessControlCodingConventions=false
environment=BROWSER
errorFormat=SINGLELINE
es6ModuleTranspilation=COMPILE
exportLocalPropertyDefinitions=false
exportTestFunctions=false
externExports=false
extractPrototypeMemberDeclarations=OFF
extraSmartNameRemoval=false
filesToPrintAfterEachPassRegexList=[]
flowSensitiveInlineVariables=false
foldConstants=true
forceLibraryInjection=[]
gatherCssNames=false
generateExports=false
generatePseudoNames=false
generateTypedExterns=false
idGenerators={}
incrementalCheckMode=OFF
inferConsts=true
inferTypes=false
inlineConstantVars=false
inlineFunctionsLevel=LOCAL_ONLY
inlineGetters=false
inlineLocalVariables=true
inlineProperties=false
inlineVariables=false
inputDelimiter=// Input %num%
inputSourceMaps={}
instrumentForCoverage=false
instrumentForCoverageOnly=false
instrumentBranchCoverage=false
isolatePolyfills=false
j2clMinifierEnabled=true
j2clPassMode=AUTO
labelRenaming=true
languageIn=ECMASCRIPT_2019
languageOutIsDefaultStrict=Optional.absent()
legacyCodeCompile=false
lineBreak=false
lineLengthThreshold=500
markAsCompiled=false
maxFunctionSizeAfterInlining=-1
moduleRoots=[./]
chunksToPrintAfterEachPassRegexList=[]
moveFunctionDeclarations=false
nameGenerator=com.google.javascript.jscomp.DefaultNameGenerator@32464a14
optimizeArgumentsArray=true
optimizeCalls=false
outputFeatureSet=Optional.absent()
outputJs=NORMAL
outputJsStringUsage=false
parentChunkCanSeeSymbolsDeclaredInChildren=false
parseJsDocDocumentation=TYPES_ONLY
pathEscaper=ESCAPE
polymerExportPolicy=LEGACY
preferLineBreakAtEndOfFile=false
preferSingleQuotes=false
preferStableNames=false
preserveDetailedSourceInfo=false
preserveGoogProvidesAndRequires=false
preserveTypeAnnotations=false
prettyPrint=false
preventLibraryInjection=false
printConfig=true
printInputDelimiter=false
printSourceAfterEachPass=false
processCommonJSModules=false
propertyInvalidationErrors={}
propertyRenaming=OFF
protectHiddenSideEffects=true
quoteKeywordProperties=false
removeAbstractMethods=false
removeClosureAsserts=false
removeJ2clAsserts=true
removeDeadCode=true
removeUnusedClassProperties=false
removeUnusedConstructorProperties=false
removeUnusedLocalVars=true
removeUnusedPrototypeProperties=false
removeUnusedPrototypePropertiesInExterns=false
removeUnusedVars=false
renamePrefixNamespaceAssumeCrossChunkNames=false
replaceIdGenerators=false
replaceMessagesWithChromeI18n=false
replaceStringsFunctionDescriptions=[]
replaceStringsPlaceholderToken=
replaceStringsReservedStrings=[]
reserveRawExports=false
rewriteFunctionExpressions=false
rewritePolyfills=false
runtimeTypeCheck=false
shadowVariables=true
rewriteModulesBeforeTypechecking=true
skipNonTranspilationPasses=false
smartNameRemoval=false
sourceMapDetailLevel=ALL
sourceMapFormat=DEFAULT
sourceMapLocationMappings=[]
stripNamePrefixes=[]
stripNameSuffixes=[]
stripTypePrefixes=[]
stripTypes=[]
summaryDetailLevel=1
tracer=OFF
transformAMDToCJSModules=false
trustedStrings=false
tweakProcessing=OFF
tweakReplacements={}
emitUseStrict=Optional.absent()
useTypesForLocalOptimization=false
variableRenaming=LOCAL
warningsGuard=DiagnosticGroup(OFF)
DiagnosticGroup(ERROR)
DiagnosticGroup(OFF)
com.google.javascript.jscomp.DiagnosticGroup@4e4aea35(OFF)
wrapGoogModulesForWhitespaceOnly=true
```
Affects: v20200405
Contributor guide
Assessment
This issue has not been assessed yet.