/** * 4.7: Reifiable Types * * @author Martin Bravenboer */ module dryad/jls/types/Reifiable imports dryad/jls/types/Raw strategies /** * Refers to a non-generic type declaration. * * @todo When does a type refer to a non-generic type declaration? */ is-reifiable-type = fail /** * Parameterized type in which all type arguments are unbounded wildcards. */ is-reifiable-type = ClassType(id, Some(type-args-unbounded-wildcards)) is-reifiable-type = InterfaceType(id, Some(type-args-unbounded-wildcards)) is-reifiable-type = ClassOrInterfaceType(id, Some(type-args-unbounded-wildcards)) /** * Raw type */ is-reifiable-type = is-raw-type /** * Array type whose component type is reifiable. */ is-reifiable-type = ArrayType(is-reifiable-type) strategies type-args-unbounded-wildcards = TypeArgs(map(Wildcard(None())))