Beispiel #1
0
  protected void checkSwitch(Stmt.Switch sw) {
    checkExpression(sw.condition());

    Type condT = sw.condition().attribute(Type.class);

    if (!(condT instanceof Type.Int)) {
      ErrorHandler.handleTypeMismatch(
          new TypeMismatchException(sw.condition(), T_INT, loader, types),
          sw.condition().attribute(SourceLocation.class));
    }

    for (Case c : sw.cases()) {
      checkExpression(c.condition());
      for (Stmt s : c.statements()) {
        checkStatement(s);
      }
    }
  }