upon tree->opval.op, if resultType can be propagated */
resultTypeProp = resultTypePropagate (tree, resultType);
- dtl = decorateType (tree->left, resultTypeProp);
+ if (tree->opval.op == '?')
+ dtl = decorateType (tree->left, RESULT_TYPE_NONE);
+ else
+ dtl = decorateType (tree->left, resultTypeProp);
/* if an array node, we may need to swap branches */
if (tree->opval.op == '[')
{
tree->type = EX_VALUE;
tree->opval.val = valDiv (valFromType (LETYPE (tree)),
- valFromType (RETYPE (tree)));
+ valFromType (RETYPE (tree)),
+ resultType == RESULT_TYPE_CHAR ? FALSE : TRUE);
tree->right = tree->left = NULL;
TETYPE (tree) = getSpec (TTYPE (tree) =
tree->opval.val->type);
{
tree->type = EX_VALUE;
tree->opval.val = valMult (valFromType (LETYPE (tree)),
- valFromType (RETYPE (tree)));
+ valFromType (RETYPE (tree)),
+ resultType == RESULT_TYPE_CHAR ? FALSE : TRUE);
tree->right = tree->left = NULL;
TETYPE (tree) = getSpec (TTYPE (tree) =
tree->opval.val->type);