[cfe-dev] RFC: unreachable catch-clauses due to superclass cathes

Erik Verbruggen erikjv at me.com
Fri Jul 31 01:20:08 PDT 2009


Rolling all feedback together would give an algorithm like: 

- start with an empty list of okayed-types 
- for each handler in the AST: 
--- get the canonical type A 
--- if A is ambiguous, give a warning and continue [2] 
--- if the okayed-types list is empty, just put A in, and continue 
--- for each handler in the okayed-types list: 
------- get the canonical type B 
------- "deep check" if B is a base-class for A [1] 
------- if it is, give a warning 
------- if not, put A into the okayed-types list 

[1]: do this in a separate method, which "skips" ambiguous base-classes[2], but otherwise just recursively/iteratively walks the base-classes. This method can be changed with an improved Sema/CodeGen. 

[2]: Remaining question is if there is a utility method to check if a class is the base-class of a diamond-construct (as mentioned in AlisdairM's mail)....? 

-- Erik. 



More information about the cfe-dev mailing list