Fixing merge conflicts
parent
88760113ed
commit
54f855de1a
|
@ -25,10 +25,10 @@ object Astral
|
|||
val bdd =
|
||||
BDDCompiler.bdd(definition, family)
|
||||
|
||||
print(bdd)
|
||||
println("============= Definition =================")
|
||||
println(definition)
|
||||
println("================ BDD =====================")
|
||||
println(bdd)
|
||||
|
||||
println(
|
||||
Rule(definition, bdd, family)
|
||||
)
|
||||
}
|
||||
}
|
|
@ -15,8 +15,7 @@ object Typecheck
|
|||
case (Type.Node(label), o:Type.ASTType) =>
|
||||
schema.nodesByName(label).allSupertypes contains o
|
||||
case (n:Type.ASTSubtype, o:Type.AST) =>
|
||||
println(schema.asts(o.family).subtypes.keys)
|
||||
schema.asts(o.family).subtypes contains n
|
||||
schema.asts(o).subtypes contains n
|
||||
case (Type.Union(elems), a) =>
|
||||
elems.forall { escalatesTo(_, a, schema) }
|
||||
case (a, Type.Union(elems)) =>
|
||||
|
@ -45,9 +44,9 @@ object Typecheck
|
|||
schema.nodesByName(label)
|
||||
.allSupertypes contains o => n
|
||||
case (n:Type.ASTSubtype, a:Type.AST) if
|
||||
schema.asts(a.family).subtypes contains n => n
|
||||
schema.asts(a).subtypes contains n => n
|
||||
case (a:Type.AST, n:Type.ASTSubtype) if
|
||||
schema.asts(a.family).subtypes contains n => n
|
||||
schema.asts(a).subtypes contains n => n
|
||||
case (Type.Union(elems), _) if elems contains b => a
|
||||
case (_, Type.Union(elems)) if elems contains a => b
|
||||
case (_, Type.Any) => a
|
||||
|
@ -84,14 +83,14 @@ object Typecheck
|
|||
(a, b) match {
|
||||
case (n:Type.Node, o:Type.ASTType) if
|
||||
schema.nodesByName(n.nodeType)
|
||||
.allSupertypes contains o => o
|
||||
.allSupertypes contains o => Some(o)
|
||||
case (o:Type.ASTType, n@Type.Node(label)) if
|
||||
schema.nodesByName(label)
|
||||
.allSupertypes contains o => o
|
||||
.allSupertypes contains o => Some(o)
|
||||
case (n:Type.ASTSubtype, o:Type.AST) if
|
||||
schema.asts(o.family).subtypes contains n => o
|
||||
schema.asts(o).subtypes contains n => Some(o)
|
||||
case (o:Type.AST, n:Type.ASTSubtype) if
|
||||
schema.asts(o.family).subtypes contains n => o
|
||||
schema.asts(o).subtypes contains n => Some(o)
|
||||
case (a:Type.Node, b:Type.Node) =>
|
||||
val sharedSuperTypes =
|
||||
schema.nodesByName(a.nodeType).allSupertypes &
|
||||
|
@ -101,15 +100,12 @@ object Typecheck
|
|||
} else {
|
||||
sharedSuperTypes.find { _.isInstanceOf[Type.ASTSubtype] }
|
||||
.orElse { sharedSuperTypes.find { _.isInstanceOf[Type.AST] }}
|
||||
.getOrElse {
|
||||
assert(false, "A node can't inherit from another node")
|
||||
}
|
||||
}
|
||||
case (Type.Union(elems), _) if elems contains b => a
|
||||
case (_, Type.Union(elems)) if elems contains a => b
|
||||
case (_, Type.Any) => Type.Any
|
||||
case (Type.Any, _) => Type.Any
|
||||
case _ => assert(false, s"Types $a and $b don't unify")
|
||||
case (Type.Union(elems), _) if elems contains b => Some(a)
|
||||
case (_, Type.Union(elems)) if elems contains a => Some(b)
|
||||
case (_, Type.Any) => Some(Type.Any)
|
||||
case (Type.Any, _) => Some(Type.Any)
|
||||
case _ => None
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue