Skip to content

ExpressionDecomposer throws IllegalStateException: Object method calls can not be decomposed #3220

@rohanpadhye

Description

@rohanpadhye

Fuzzing with JQF led to the following discovery:

o_0 => i_1 &= (undefined[(i_1 => { i_1 })(y_3)])(true)

Compiling with SIMPLE_OPTIMIZATIONS throws:

java.lang.IllegalStateException: Object method calls can not be decomposed.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:507)
	at com.google.javascript.jscomp.ExpressionDecomposer.exposeExpression(ExpressionDecomposer.java:187)
	at com.google.javascript.jscomp.ExpressionDecomposer.exposeExpression(ExpressionDecomposer.java:127)
	at com.google.javascript.jscomp.ExpressionDecomposer.maybeExposeExpression(ExpressionDecomposer.java:109)
	at com.google.javascript.jscomp.FunctionInjector$CallSiteType$6.prepare(FunctionInjector.java:421)
	at com.google.javascript.jscomp.FunctionInjector.maybePrepareCall(FunctionInjector.java:498)
	at com.google.javascript.jscomp.InlineFunctions.decomposeExpressions(InlineFunctions.java:785)
	at com.google.javascript.jscomp.InlineFunctions.process(InlineFunctions.java:142)
	at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:310)
	at com.google.javascript.jscomp.PhaseOptimizer$Loop.process(PhaseOptimizer.java:455)
	at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:231)
	at com.google.javascript.jscomp.Compiler.performOptimizations(Compiler.java:2384)
	at com.google.javascript.jscomp.Compiler.lambda$stage2Passes$1(Compiler.java:795)
	at com.google.javascript.jscomp.CompilerExecutor$2.call(CompilerExecutor.java:102
...

Repro link

Metadata

Metadata

Assignees

No one assigned

    Labels

    internal-issue-createdAn internal Google issue has been created to track this GitHub issuetriage-doneHas been reviewed by someone on triage rotation.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions