5 public class SetInclusion extends Inclusion {
10 public SetInclusion(Expr elementexpr, SetDescriptor set) {
11 this.elementexpr = elementexpr;
15 public Set getTargetDescriptors() {
16 HashSet v = new HashSet();
21 public Set getRequiredDescriptors() {
22 return elementexpr.getRequiredDescriptors();
25 public void generate(CodeWriter writer) {
26 VarDescriptor vd = VarDescriptor.makeNew("element");
27 elementexpr.generate(writer, vd);
28 writer.outputline(set.getSafeSymbol() + "_hash->add((int)" + vd.getSafeSymbol() + ", (int)" + vd.getSafeSymbol() + ");");
29 //writer.outputline("printf(\"" + set.getSafeSymbol() + " (add): %d\\n\", " + vd.getSafeSymbol() + ");");
32 public boolean typecheck(SemanticAnalyzer sa) {
33 TypeDescriptor td = elementexpr.typecheck(sa);
39 TypeDescriptor settype = set.getType();
41 if (!td.equals(settype)) {
42 sa.getErrorReporter().report(null, "Type mismatch: attempting to test for types '" + td.getSymbol() + "' in set of type '" + settype.getSymbol() + "'");