| 847 | |
| 848 | // Make an array type of t |
| 849 | private TypeMemPtr typeAry( Type t ) { |
| 850 | if( t instanceof TypeMemPtr tmp && tmp.notNull() ) |
| 851 | throw error("Arrays of reference types must always be nullable"); |
| 852 | String tname = "["+t.str()+"]"; |
| 853 | Type ta = TYPES.get(tname); |
| 854 | if( ta != null ) return (TypeMemPtr)ta; |
| 855 | // Need make an array type. |
| 856 | TypeStruct ts = TypeStruct.makeAry(TypeInteger.BOT,ALIAS++,t,ALIAS++); |
| 857 | assert ts.str().equals(tname); |
| 858 | TypeMemPtr tary = TypeMemPtr.make(ts); |
| 859 | TYPES.put(tname,tary); |
| 860 | return tary; |
| 861 | } |
| 862 | |
| 863 | // A function type is `{ type... -> type }` or `{ type }`. |
| 864 | private Type typeFunPtr() { |