summaryrefslogtreecommitdiff
path: root/src/parser/cvc/Cvc.g
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/cvc/Cvc.g')
-rw-r--r--src/parser/cvc/Cvc.g19
1 files changed, 2 insertions, 17 deletions
diff --git a/src/parser/cvc/Cvc.g b/src/parser/cvc/Cvc.g
index dca61fe48..3fde52bbe 100644
--- a/src/parser/cvc/Cvc.g
+++ b/src/parser/cvc/Cvc.g
@@ -1836,23 +1836,8 @@ postfixTerm[CVC4::Expr& f]
{ f = (args.size() == 1) ? MK_CONST(bool(true)) : MK_EXPR(CVC4::kind::DISTINCT, args); }
)
( typeAscription[f, t]
- { if(f.getKind() == CVC4::kind::APPLY_CONSTRUCTOR && t.isDatatype()) {
- std::vector<CVC4::Expr> v;
- Expr e = f.getOperator();
- const DatatypeConstructor& dtc = Datatype::datatypeOf(e)[Datatype::indexOf(e)];
- v.push_back(MK_EXPR( CVC4::kind::APPLY_TYPE_ASCRIPTION,
- MK_CONST(AscriptionType(dtc.getSpecializedConstructorType(t))), f.getOperator() ));
- v.insert(v.end(), f.begin(), f.end());
- f = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, v);
- } else if(f.getKind() == CVC4::kind::EMPTYSET && t.isSet()) {
- f = MK_CONST(CVC4::EmptySet(t));
- } else if(f.getKind() == CVC4::kind::UNIVERSE_SET && t.isSet()) {
- f = EXPR_MANAGER->mkNullaryOperator(t, kind::UNIVERSE_SET);
- } else {
- if(f.getType() != t) {
- PARSER_STATE->parseError("Type ascription not satisfied.");
- }
- }
+ {
+ f = PARSER_STATE->applyTypeAscription(f,t).getExpr();
}
)?
;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback