On Fri Jul 4 13:00:38 2025 +0000, Rémi Bernon wrote:
It doesn't seem safe to access expression like that. The `activatable` attribute may have an interface or not. When it has, the expression is an `EXPR_MEMBER (decl_spec, contract_req)` but when not, the expression is a `contract_req` expression only `EXPR_GTREQL (decl_spec, version)` and its decl_spec type is an apicontract, not an interface. This was enough until now, but maybe we should start using dedicated attribute values instead of abusing expressions.
Or, alternatively, we could change `activatable_attr` to always generate the same kind of expressions, by creating an implicit `IActivationFactory` interface.