Fixing merge conflicts

nicksrules
Oliver Kennedy 2023-07-13 15:35:34 -04:00
parent 88760113ed
commit 54f855de1a
Signed by: okennedy
GPG Key ID: 3E5F9B3ABD3FDB60
2 changed files with 16 additions and 20 deletions

View File

@ -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)
)
}
}

View File

@ -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
}
}