| 127 | |
| 128 | // ---------------------------------------------------------- |
| 129 | public final Type meet(Type t) { |
| 130 | // Shortcut for the self case |
| 131 | if( t == this ) return this; |
| 132 | // Same-type is always safe in the subclasses |
| 133 | if( _type==t._type ) return xmeet(t); |
| 134 | // Reverse; xmeet 2nd arg is never "is_simple" and never equal to "this". |
| 135 | if( is_simple() ) return this.xmeet(t ); |
| 136 | if( t.is_simple() ) return t .xmeet(this); |
| 137 | return Type.BOTTOM; // Mixing 2 unrelated types |
| 138 | } |
| 139 | |
| 140 | // Compute meet right now. Overridden in subclasses. |
| 141 | // Handle cases where 'this.is_simple()' and unequal to 't'. |