001    aspect PredefinedTypes {
002      // Define the NTA
003      syn lazy List Program.getPredefinedTypeList() {
004      return new List().
005        add(new UnknownDecl("$unknown")).
006        add(new PrimitiveDecl("boolean"));
007      }
008        
009      // Broadcast the predefined types to useful places in the AST
010      syn lazy PrimitiveDecl Program.booleanType() = (PrimitiveDecl) localLookup("boolean");
011      eq Program.getBlock().booleanType() = booleanType();
012      eq Program.getPredefinedType().booleanType() = booleanType();
013      inh PrimitiveDecl BooleanLiteral.booleanType();
014      inh PrimitiveDecl WhileStmt.booleanType();
015      inh PrimitiveDecl Decl.booleanType();
016    }