[EXT_EP-8712] Unimplemented core issue 1769: Catching a thrown derived class by reference to base clas Created: 06/Dec/17  Updated: 28/Jun/22

Status: New
Project: Embedded Software & Tools
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Medium
Reporter: TI User Assignee: TI User
Resolution: Unresolved Votes: 0
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Product: Code Generation Tools
Internal ID: CODEGEN-4072
Found In Release: ARM_18.1.0.LTS
MSP430_18.1.0.LTS
C2000_22.6.0.LTS
MSP430_20.2.0.LTS
ARM_18.12.0.LTS
MSP430_21.6.0.LTS
C2000_21.6.0.LTS
MSP430_18.12.0.LTS
ARM_20.2.0.LTS
Release Notes: Core 1769, involving a resolution which states that derived classes can be thrown and caught by catch clauses denoting an unambiguous base, has not been implemented.

#include <assert.h>

struct BaseClass {
    int i;
    BaseClass() : i(0) { }
    BaseClass(int ii) : i(ii) { }
    BaseClass(const BaseClass& r) : i(r.i) { }
};

class DerivedClass : BaseClass {
    int ib;
  public:
    DerivedClass(const DerivedClass& r) : BaseClass(r.ib), ib(r.ib) { }
    DerivedClass(const BaseClass&) : BaseClass(999), ib(999) { }
    DerivedClass(int ii);
};

DerivedClass thrown_base (1);
DerivedClass::DerivedClass(int ii) : BaseClass(ii), ib(ii) { }

int main() {
    try {
        throw thrown_base;
        return 999;
    }
    catch(const BaseClass &k) { }
    catch(...) { assert(false); } // Assertion fails at runtime due to core issue 1769
    return 0;
}

 Description   

Unimplemented core issue 1769: Catching a thrown derived class by reference to base clas


Generated at Wed Apr 02 03:38:32 CDT 2025 using Jira 9.12.17#9120017-sha1:aba4002bcd633f188b6a4bb5dd8a0e1f20b79ee4.