001 package escjava.vcGeneration;
002
003 // int * int -> int
004 abstract class TIntFun extends TFunction {
005
006 public TIntFun(){
007 type = _integer;
008 }
009
010 protected void typeTree(){
011
012 /*
013 * Semantic control : each son should have type 'integer'
014 */
015
016 for(int i = 0; i <= sons.size() - 1; i++){
017 TNode nodeTemp = getChildAt(i);
018
019 if(nodeTemp.type != null){
020 if(!nodeTemp.type.equals(_integer)) {
021 System.err.println("*** Typecheck error in the tree of ifpvc");
022
023 /*
024 * Print all sons
025 */
026 System.err.println("Node : "+this.toString());
027 System.err.println("should have all sons with type integer");
028 System.err.println("List of sons :");
029
030 for(int j = 0; j <= sons.size() - j; i++)
031 System.err.println("Node : "+getChildAt(j).toString());
032 }
033 }
034 else // type has not been set, setting it
035 nodeTemp.setType(_integer, true);
036
037 nodeTemp.typeTree();
038 }
039
040 }
041 }
042