github.com/evanw/esbuild/internal/js_ast.EBinary.Left (field)

220 uses

	github.com/evanw/esbuild/internal/js_ast (current package)
		js_ast.go#L398: 	Left  Expr
		js_ast.go#L695: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: BinOpAssign, Left: a, Right: b}}
		js_ast.go#L798: 			return IsBooleanValue(e.Left) && IsBooleanValue(e.Right)
		js_ast.go#L801: 			return IsBooleanValue(e.Left)
		js_ast.go#L825: 			return IsNumericValue(e.Left) && IsNumericValue(e.Right)
		js_ast.go#L861: 			return IsStringValue(e.Left) || IsStringValue(e.Right)
		js_ast.go#L889: 			JoinWithLeftAssociativeOp(op, a, binary.Left),
		js_ast.go#L896: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: op, Left: a, Right: b}}
		js_ast.go#L900: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: BinOpComma, Left: a, Right: b}}

	github.com/evanw/esbuild/internal/js_parser
		js_parser.go#L872: 			return isPrimitiveWithSideEffects(e.Left.Data) && isPrimitiveWithSideEffects(e.Right.Data)
		js_parser.go#L949: 		if b, ok := right.(*js_ast.EBinary); ok && a.Op == b.Op && valuesLookTheSame(a.Left.Data, b.Left.Data) &&
		js_parser.go#L2463: 		expr = assign.Left
		js_parser.go#L2764: 					Left: part.Value,
		js_parser.go#L2781: 					Left:  value,
		js_parser.go#L2787: 						Left:  value,
		js_parser.go#L3324: 					left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpComma, Left: left, Right: p.parseExpr(js_ast.LComma)}}
		js_parser.go#L3591: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpComma, Left: left, Right: p.parseExpr(js_ast.LComma)}}
		js_parser.go#L3598: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpAdd, Left: left, Right: p.parseExpr(js_ast.LAdd)}}
		js_parser.go#L3605: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpAddAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3612: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpSub, Left: left, Right: p.parseExpr(js_ast.LAdd)}}
		js_parser.go#L3619: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpSubAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3626: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpMul, Left: left, Right: p.parseExpr(js_ast.LMultiply)}}
		js_parser.go#L3633: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpPow, Left: left, Right: p.parseExpr(js_ast.LExponentiation - 1)}}
		js_parser.go#L3640: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpPowAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3647: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpMulAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3654: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpRem, Left: left, Right: p.parseExpr(js_ast.LMultiply)}}
		js_parser.go#L3661: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpRemAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3668: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpDiv, Left: left, Right: p.parseExpr(js_ast.LMultiply)}}
		js_parser.go#L3675: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpDivAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3682: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLooseEq, Left: left, Right: p.parseExpr(js_ast.LEquals)}}
		js_parser.go#L3689: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLooseNe, Left: left, Right: p.parseExpr(js_ast.LEquals)}}
		js_parser.go#L3696: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpStrictEq, Left: left, Right: p.parseExpr(js_ast.LEquals)}}
		js_parser.go#L3703: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpStrictNe, Left: left, Right: p.parseExpr(js_ast.LEquals)}}
		js_parser.go#L3718: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLt, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3725: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLe, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3732: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpGt, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3739: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpGe, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3746: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpShl, Left: left, Right: p.parseExpr(js_ast.LShift)}}
		js_parser.go#L3753: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpShlAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3760: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpShr, Left: left, Right: p.parseExpr(js_ast.LShift)}}
		js_parser.go#L3767: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpShrAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3774: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpUShr, Left: left, Right: p.parseExpr(js_ast.LShift)}}
		js_parser.go#L3781: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpUShrAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3788: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpNullishCoalescing, Left: left, Right: p.parseExpr(js_ast.LNullishCoalescing)}}
		js_parser.go#L3795: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpNullishCoalescingAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3809: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalOr, Left: left, Right: right}}
		js_parser.go#L3824: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalOrAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3837: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalAnd, Left: left, Right: p.parseExpr(js_ast.LLogicalAnd)}}
		js_parser.go#L3852: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalAndAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3859: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseOr, Left: left, Right: p.parseExpr(js_ast.LBitwiseOr)}}
		js_parser.go#L3866: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseOrAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3873: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseAnd, Left: left, Right: p.parseExpr(js_ast.LBitwiseAnd)}}
		js_parser.go#L3880: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseAndAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3887: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseXor, Left: left, Right: p.parseExpr(js_ast.LBitwiseXor)}}
		js_parser.go#L3894: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseXorAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3917: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpIn, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3934: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpInstanceof, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L7037: 							value := js_ast.JoinWithComma(comma.Left, p.mangleIfExpr(comma.Right.Loc, &js_ast.EIf{Test: comma.Right, Yes: *left, No: *right}))
		js_parser.go#L7096: 						lastThrow = &js_ast.SThrow{Value: js_ast.JoinWithComma(comma.Left, p.mangleIfExpr(comma.Right.Loc, &js_ast.EIf{Test: comma.Right, Yes: left, No: right}))}
		js_parser.go#L7242: 			if value, status := p.substituteSingleUseSymbolInExpr(e.Left, ref, replacement, replacementCanBeRemoved); status != substituteContinue {
		js_parser.go#L7243: 				e.Left = value
		js_parser.go#L7246: 		} else if !p.exprCanBeRemovedIfUnused(e.Left) {
		js_parser.go#L7578: 				s.Test = &js_ast.Expr{Loc: s.Test.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalAnd, Left: *s.Test, Right: not}}
		js_parser.go#L7591: 					s.Test = &js_ast.Expr{Loc: s.Test.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalAnd, Left: *s.Test, Right: ifS.Test}}
		js_parser.go#L7740: 		return js_ast.JoinWithComma(comma.Left, p.mangleIfExpr(comma.Right.Loc, &js_ast.EIf{
		js_parser.go#L7805: 			js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpLogicalOr, e.Test, comma.Left),
		js_parser.go#L7813: 			js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpLogicalAnd, e.Test, comma.Left),
		js_parser.go#L7823: 			Left:  js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpLogicalAnd, e.Test, binary.Left),
		js_parser.go#L7833: 			Left:  js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpLogicalOr, e.Test, binary.Left),
		js_parser.go#L7884: 				if _, ok := binary.Right.Data.(*js_ast.ENull); ok && p.exprCanBeRemovedIfUnused(binary.Left) && valuesLookTheSame(binary.Left.Data, e.No.Data) {
		js_parser.go#L7885: 					return js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpNullishCoalescing, binary.Left, e.Yes)
		js_parser.go#L7889: 				if _, ok := binary.Left.Data.(*js_ast.ENull); ok && p.exprCanBeRemovedIfUnused(binary.Right) && valuesLookTheSame(binary.Right.Data, e.No.Data) {
		js_parser.go#L7895: 				if _, ok := binary.Right.Data.(*js_ast.ENull); ok && p.exprCanBeRemovedIfUnused(binary.Left) && valuesLookTheSame(binary.Left.Data, e.Yes.Data) {
		js_parser.go#L7896: 					return js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpNullishCoalescing, binary.Left, e.No)
		js_parser.go#L7900: 				if _, ok := binary.Left.Data.(*js_ast.ENull); ok && p.exprCanBeRemovedIfUnused(binary.Right) && valuesLookTheSame(binary.Right.Data, e.Yes.Data) {
		js_parser.go#L9297: 	if boolean, ok := e.Right.Data.(*js_ast.EBoolean); ok && js_ast.IsBooleanValue(e.Left) {
		js_parser.go#L9299: 			return js_ast.Not(e.Left), true
		js_parser.go#L9301: 			return e.Left, true
		js_parser.go#L9544: 					return e.Left
		js_parser.go#L9555: 					return e.Left
		js_parser.go#L9705: 			if idA, ok := a.Left.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L9706: 				if idB, ok := b.Left.Data.(*js_ast.EIdentifier); ok && idA.Ref == idB.Ref {
		js_parser.go#L9710: 							return a.Left, a.Right, true
		js_parser.go#L9717: 							return b.Left, b.Right, true
		js_parser.go#L9748: 	if e.Left.Loc.Start < e.Right.Loc.Start {
		js_parser.go#L9752: 		return e.Left.Loc
		js_parser.go#L10018: 		e.Left, _ = p.visitExprInOut(e.Left, exprIn{assignTarget: e.Op.BinaryAssignTarget()})
		js_parser.go#L10021: 		if e.Op == js_ast.BinOpLogicalAnd && e.Left.Data == p.typeofRequireEqualsFn {
		js_parser.go#L10028: 			if boolean, _, ok := toBooleanWithSideEffects(e.Left.Data); ok && boolean {
		js_parser.go#L10039: 			if boolean, _, ok := toBooleanWithSideEffects(e.Left.Data); ok && !boolean {
		js_parser.go#L10050: 			if isNullOrUndefined, _, ok := toNullOrUndefinedWithSideEffects(e.Left.Data); ok && !isNullOrUndefined {
		js_parser.go#L10069: 			if isPrimitiveToReorder(e.Left.Data) && !isPrimitiveToReorder(e.Right.Data) {
		js_parser.go#L10070: 				e.Left, e.Right = e.Right, e.Left
		js_parser.go#L10080: 				e.Left = p.simplifyUnusedExpr(e.Left)
		js_parser.go#L10081: 				if e.Left.Data == nil {
		js_parser.go#L10086: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Left.Loc, Data: &js_ast.ENumber{}}, e.Right), exprOut{}
		js_parser.go#L10093: 			if result, ok := checkEqualityIfNoSideEffects(e.Left.Data, e.Right.Data); ok {
		js_parser.go#L10100: 				if result && (e.Left.Data == p.typeofRequire || e.Right.Data == p.typeofRequire) {
		js_parser.go#L10107: 			if !p.warnAboutEqualityCheck("==", e.Left, afterOpLoc) {
		js_parser.go#L10110: 			p.warnAboutTypeofAndString(e.Left, e.Right)
		js_parser.go#L10124: 			if result, ok := checkEqualityIfNoSideEffects(e.Left.Data, e.Right.Data); ok {
		js_parser.go#L10128: 			if !p.warnAboutEqualityCheck("===", e.Left, afterOpLoc) {
		js_parser.go#L10131: 			p.warnAboutTypeofAndString(e.Left, e.Right)
		js_parser.go#L10135: 				if canChangeStrictToLoose(e.Left, e.Right) {
		js_parser.go#L10145: 			if result, ok := checkEqualityIfNoSideEffects(e.Left.Data, e.Right.Data); ok {
		js_parser.go#L10149: 			if !p.warnAboutEqualityCheck("!=", e.Left, afterOpLoc) {
		js_parser.go#L10152: 			p.warnAboutTypeofAndString(e.Left, e.Right)
		js_parser.go#L10166: 			if result, ok := checkEqualityIfNoSideEffects(e.Left.Data, e.Right.Data); ok {
		js_parser.go#L10170: 			if !p.warnAboutEqualityCheck("!==", e.Left, afterOpLoc) {
		js_parser.go#L10173: 			p.warnAboutTypeofAndString(e.Left, e.Right)
		js_parser.go#L10177: 				if canChangeStrictToLoose(e.Left, e.Right) {
		js_parser.go#L10187: 			if isNullOrUndefined, sideEffects, ok := toNullOrUndefinedWithSideEffects(e.Left.Data); ok {
		js_parser.go#L10189: 					return e.Left, exprOut{}
		js_parser.go#L10195: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Left.Loc, Data: &js_ast.ENumber{}}, e.Right), exprOut{}
		js_parser.go#L10205: 					e.Left = js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpNullishCoalescing, e.Left, right.Left)
		js_parser.go#L10211: 				return p.lowerNullishCoalescing(expr.Loc, e.Left, e.Right), exprOut{}
		js_parser.go#L10215: 			if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Left.Data); ok {
		js_parser.go#L10217: 					return e.Left, exprOut{}
		js_parser.go#L10223: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Left.Loc, Data: &js_ast.ENumber{}}, e.Right), exprOut{}
		js_parser.go#L10232: 					e.Left = js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpLogicalOr, e.Left, right.Left)
		js_parser.go#L10237: 				if left, right, ok := isBinaryNullAndUndefined(e.Left, e.Right, js_ast.BinOpStrictEq); ok {
		js_parser.go#L10239: 					e.Left = left
		js_parser.go#L10245: 			if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Left.Data); ok {
		js_parser.go#L10247: 					return e.Left, exprOut{}
		js_parser.go#L10253: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Left.Loc, Data: &js_ast.ENumber{}}, e.Right), exprOut{}
		js_parser.go#L10262: 					e.Left = js_ast.JoinWithLeftAssociativeOp(js_ast.BinOpLogicalAnd, e.Left, right.Left)
		js_parser.go#L10267: 				if left, right, ok := isBinaryNullAndUndefined(e.Left, e.Right, js_ast.BinOpStrictNe); ok {
		js_parser.go#L10269: 					e.Left = left
		js_parser.go#L10276: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10282: 			if result := foldStringAddition(e.Left, e.Right); result != nil {
		js_parser.go#L10286: 			if left, ok := e.Left.Data.(*js_ast.EBinary); ok && left.Op == js_ast.BinOpAdd {
		js_parser.go#L10289: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBinary{Op: left.Op, Left: left.Left, Right: *result}}, exprOut{}
		js_parser.go#L10295: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10302: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10309: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10316: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10323: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10330: 				return p.callRuntime(expr.Loc, "__pow", []js_ast.Expr{e.Left, e.Right}), exprOut{}
		js_parser.go#L10335: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10342: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10349: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10356: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10363: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10370: 				if left, right, ok := extractNumericValues(e.Left, e.Right); ok {
		js_parser.go#L10380: 			if id, ok := e.Left.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L10384: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10393: 				if result, ok := p.lowerObjectRestInAssign(e.Left, e.Right); ok {
		js_parser.go#L10399: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10404: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10409: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10414: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10419: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10429: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10434: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10439: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10444: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10449: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10454: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10459: 			if target, loc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser.go#L10481: 			if comma, ok := e.Left.Data.(*js_ast.EBinary); ok && comma.Op == js_ast.BinOpComma {
		js_parser.go#L10482: 				return js_ast.JoinWithComma(comma.Left, js_ast.Expr{
		js_parser.go#L10486: 						Left:  comma.Right,
		js_parser.go#L10731: 				return js_ast.JoinWithComma(comma.Left, js_ast.Expr{
		js_parser.go#L10921: 					e2.Left, _ = p.visitExprInOut(e2.Left, exprIn{assignTarget: js_ast.AssignTargetReplace})
		js_parser.go#L10925: 					if id, ok := e2.Left.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L10984: 					property.Value = &binary.Left
		js_parser.go#L12382: 			return p.exprCanBeRemovedIfUnused(e.Left) && p.exprCanBeRemovedIfUnused(e.Right)
		js_parser.go#L12420: 					Left:  result,
		js_parser.go#L12492: 					Left:  property.Key,
		js_parser.go#L12541: 			return maybeJoinWithComma(p.simplifyUnusedExpr(e.Left), p.simplifyUnusedExpr(e.Right))
		js_parser.go#L12548: 			if isPrimitiveWithSideEffects(e.Left.Data) && isPrimitiveWithSideEffects(e.Right.Data) {
		js_parser.go#L12549: 				return maybeJoinWithComma(p.simplifyUnusedExpr(e.Left), p.simplifyUnusedExpr(e.Right))
		js_parser.go#L12558: 				return p.simplifyUnusedExpr(e.Left)
		js_parser.go#L12599: 			left, leftIsStringAddition := simplifyUnusedStringAdditionChain(e.Left)
		js_parser.go#L12600: 			e.Left = left
		js_parser_lower.go#L720: 			Left:  expr,
		js_parser_lower.go#L790: 	if target, privateLoc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser_lower.go#L800: 	return p.lowerAssignmentOperator(e.Left, func(a js_ast.Expr, b js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L807: 	if target, privateLoc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser_lower.go#L820: 			Left:  p.lowerPrivateGet(targetFunc(), privateLoc, private),
		js_parser_lower.go#L825: 	return p.lowerAssignmentOperator(e.Left, func(a js_ast.Expr, b js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L834: 			Left:  a,
		js_parser_lower.go#L841: 	if target, privateLoc, private := p.extractPrivateIndex(e.Left); private != nil {
		js_parser_lower.go#L847: 			Left:  p.lowerPrivateGet(targetFunc(), privateLoc, private),
		js_parser_lower.go#L852: 	return p.lowerAssignmentOperator(e.Left, func(a js_ast.Expr, b js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L857: 			Left:  a,
		js_parser_lower.go#L870: 			Left:  leftFunc(),
		js_parser_lower.go#L1038: 			Left:  valueFunc(),
		js_parser_lower.go#L1047: 		Left:  value,
		js_parser_lower.go#L1057: 		Left:  p.lowerPrivateGet(targetFunc(), loc, private),
		js_parser_lower.go#L1094: 		if e.Op == js_ast.BinOpAssign && exprHasObjectRest(e.Left) {
		js_parser_lower.go#L1256: 			if e.Op == js_ast.BinOpAssign && findRestBindings(e.Left) {
		js_parser_lower.go#L1339: 			binding = &binary.Left
		js_parser_lower.go#L1500: 				Left:  js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: k.Value}},
		ts_parser.go#L1013: 				Left: js_ast.Expr{Loc: nameLoc, Data: &js_ast.EDot{
		ts_parser.go#L1035: 			Left: js_ast.Expr{Loc: nameLoc, Data: &js_ast.EIdentifier{Ref: nameRef}},

	github.com/evanw/esbuild/internal/js_printer
		js_printer.go#L2040: 			if _, ok := e.Left.Data.(*js_ast.EObject); ok {
		js_printer.go#L2063: 			if left, ok := e.Left.Data.(*js_ast.EBinary); ok && (left.Op == js_ast.BinOpLogicalOr || left.Op == js_ast.BinOpLogicalAnd) {
		js_printer.go#L2072: 			if left, ok := e.Left.Data.(*js_ast.EUnary); ok && left.Op.UnaryAssignTarget() == js_ast.AssignTargetNone {
		js_printer.go#L2074: 			} else if _, ok := e.Left.Data.(*js_ast.EAwait); ok {
		js_printer.go#L2076: 			} else if _, ok := e.Left.Data.(*js_ast.EUndefined); ok {
		js_printer.go#L2079: 			} else if _, ok := e.Left.Data.(*js_ast.ENumber); ok {
		js_printer.go#L2084: 				if _, ok := e.Left.Data.(*js_ast.EBoolean); ok {
		js_printer.go#L2090: 		p.printExpr(e.Left, leftLevel, flags&forbidIn)