Skip to content
Snippets Groups Projects
Commit f34fbd4f authored by Mikaël Mayer's avatar Mikaël Mayer
Browse files

Corrected type cardinality

parent ddf8d882
Branches
Tags
No related merge requests found
......@@ -268,10 +268,20 @@ object TypeOps extends GenTreeOps[TypeTree] {
Math.pow(t + 1, f).toInt
}
case cct: CaseClassType =>
Some(cct.fields.map { field =>
typeCardinality(field.getType).getOrElse(return None)
Some(cct.fieldsTypes.map { tpe =>
typeCardinality(tpe).getOrElse(return None)
}.product)
case act: AbstractClassType =>
val possibleChildTypes = leon.utils.fixpoint((tpes: Set[TypeTree]) => {
tpes.flatMap(tpe =>
Set(tpe) ++ (tpe match {
case cct: CaseClassType => cct.fieldsTypes
case act: AbstractClassType => Set(act) ++ act.knownCCDescendants
case _ => Set.empty
})
)
})(act.knownCCDescendants.toSet)
if(possibleChildTypes(act)) return None
Some(act.knownCCDescendants.map(typeCardinality).map(_.getOrElse(return None)).sum)
case _ => None
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment