throw new InconsistencyException("unexpected type " + myType);
String val1 = ((JLiteral)left).convertToString(); String val2 = ((JLiteral)right).convertToString(); return new JStringLiteral(getTokenReference(), val1+val2);
  public JExpression constantFolding() {      CType myType = getType();      try {	  if(myType==null)	      myType=computeType("unknown",left.getType(),right.getType());      } catch(UnpositionedError e) {	  System.err.println("UnpositionedError!");      }      if(myType!=null) {	  switch (myType.getTypeID()) {	  case TID_INT: {	      int val1 = ((JIntLiteral)left.convertType(myType)).intValue();	      int val2 = ((JIntLiteral)right.convertType(myType)).intValue();	      return new JIntLiteral(getTokenReference(), compute(val1, val2));	  }	  case TID_LONG: {	      long val1 = ((JLongLiteral)left.convertType(myType)).longValue();	      long val2 = ((JLongLiteral)right.convertType(myType)).longValue();	      return new JLongLiteral(getTokenReference(), compute(val1, val2));	  }	  case TID_FLOAT: {	      float val1 = ((JFloatLiteral)left.convertType(myType)).floatValue();	      float val2 = ((JFloatLiteral)right.convertType(myType)).floatValue();	      return new JFloatLiteral(getTokenReference(), compute(val1, val2));	  }	  case TID_DOUBLE: {	      double val1 = ((JDoubleLiteral)left.convertType(myType)).doubleValue(); 	      double val2 = ((JDoubleLiteral)right.convertType(myType)).doubleValue();	      return new JDoubleLiteral(getTokenReference(), compute(val1, val2));	  }	  default:	      throw new InconsistencyException("unexpected type " + myType);	  }      } else	  throw new InconsistencyException("unexpected type " + myType);  }