JSType stopAfterLhsType = exprKind == Token.AND ?
JSType.FALSY : JSType.TRUTHY;
EnvTypePair shortCircuitPair =
analyzeExprFwd(lhs, inEnv, requiredType, stopAfterLhsType);
EnvTypePair lhsPair = analyzeExprFwd(
lhs, inEnv, JSType.UNKNOWN, stopAfterLhsType.negate());
EnvTypePair rhsPair =
analyzeExprFwd(rhs, lhsPair.env, requiredType, specializedType);
return EnvTypePair.join(rhsPair, shortCircuitPair);
}
}