MCPcopy Create free account
hub / github.com/Whiley/WhileyCompiler / pushCast

Method pushCast

src/main/java/wyil/check/FlowTypeCheck.java:1607–1621  ·  view source on GitHub ↗
(int var, Expr.Cast expr, Typing typing, Environment environment)

Source from the content-addressed store, hash-verified

1605 }
1606
1607 private Typing pushCast(int var, Expr.Cast expr, Typing typing, Environment environment) {
1608 // Filter target type
1609 Typing nTyping = typing.map(row -> filterOnSubtype(row, var, expr.getType(), environment));
1610 // Sanity check typing
1611 checkForError(expr, typing, nTyping, var, expr.getType());
1612 // <<< Propagate backwards from children
1613 nTyping = pullExpression(expr.getOperand(), true, nTyping, environment);
1614 int src = nTyping.top();
1615 // Check cast makes sense
1616 Typing nnTyping = nTyping.filter(r -> isSensibleCast(expr.getType(), r.get(src), environment));
1617 // Report errors
1618 checkForError(expr.getOperand(), nTyping, nnTyping, expr.getType(), src);
1619 // Done
1620 return nnTyping;
1621 }
1622
1623 private Typing pushConditionExpression(int var, Expr expr, Typing typing, Environment environment) {
1624 // Filter target type

Callers 1

pushExpressionMethod · 0.95

Calls 10

filterOnSubtypeMethod · 0.95
checkForErrorMethod · 0.95
pullExpressionMethod · 0.95
topMethod · 0.95
filterMethod · 0.95
isSensibleCastMethod · 0.95
mapMethod · 0.65
getTypeMethod · 0.65
getOperandMethod · 0.65
getMethod · 0.65

Tested by

no test coverage detected