Browse Source

TypeCheck: refine type checking to better cope with TypeVoid results

Only filter(state, ...) has special handling for TypeVoid results (special
results such as e.g. pareto results from multi-objective model checking).


git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@12034 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Joachim Klein 9 years ago
parent
commit
a78664f178
  1. 12
      prism/src/parser/visitor/TypeCheck.java

12
prism/src/parser/visitor/TypeCheck.java

@ -624,6 +624,11 @@ public class TypeCheck extends ASTTraverse
throw new PrismLangException("Type error: Boolean argument not allowed as operand for filter of type \"" + e.getOperatorName() + "\"", throw new PrismLangException("Type error: Boolean argument not allowed as operand for filter of type \"" + e.getOperatorName() + "\"",
e.getOperand()); e.getOperand());
} }
if (t instanceof TypeVoid) {
// e.g., complex results from multi-objective checking
throw new PrismLangException("Type error: Void/complex arguments not allowed as operand for filter of type \"" + e.getOperatorName() + "\"",
e.getOperand());
}
break; break;
case COUNT: case COUNT:
case FORALL: case FORALL:
@ -635,8 +640,13 @@ public class TypeCheck extends ASTTraverse
case FIRST: case FIRST:
case PRINT: case PRINT:
case PRINTALL: case PRINTALL:
if (t instanceof TypeVoid) {
throw new PrismLangException("Type error: Void/complex arguments not allowed as operand for filter of type \"" + e.getOperatorName() + "\"",
e.getOperand());
}
break;
case STATE: case STATE:
// Anything goes
// Anything goes, has special handling for TypeVoid (e.g., some multi-objective results)
break; break;
default: default:
throw new PrismLangException("Cannot type check filter of unknown type", e); throw new PrismLangException("Cannot type check filter of unknown type", e);

Loading…
Cancel
Save