Hi Tobias,
could you review the second patch instead? I have sent the wrong patch (early draft) and corrected it half an hour later!
Sorry, I missed that. Here's the review of the real patch :-) So, the first part is + if (ts) + e->ts.kind = ts->kind; Ok, I unerstand that - ts has been set earlier for a component. But this part + else if (e->ts.type != BT_CHARACTER) + e->ts.kind = gfc_default_character_kind; I do not quite understand. How can the type of an expression involving a substring not be BT_CHARACTER when gfc_resolve_substring_charlen is called? Or is it BT_UNKNOWN, and a check for that might be better? And, if it is indeed BT_UNKNOWN, how do we know it isn't a CHARACTER(KIND=4)? Best Regards Thomas