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
No related branches found
No related tags found
No related merge requests found
...@@ -268,10 +268,20 @@ object TypeOps extends GenTreeOps[TypeTree] { ...@@ -268,10 +268,20 @@ object TypeOps extends GenTreeOps[TypeTree] {
Math.pow(t + 1, f).toInt Math.pow(t + 1, f).toInt
} }
case cct: CaseClassType => case cct: CaseClassType =>
Some(cct.fields.map { field => Some(cct.fieldsTypes.map { tpe =>
typeCardinality(field.getType).getOrElse(return None) typeCardinality(tpe).getOrElse(return None)
}.product) }.product)
case act: AbstractClassType => 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) Some(act.knownCCDescendants.map(typeCardinality).map(_.getOrElse(return None)).sum)
case _ => None case _ => None
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment