| 829 | |
| 830 | // Make an array type of t |
| 831 | private TypeMemPtr typeAry( Type t ) { |
| 832 | if( t instanceof TypeMemPtr tmp && tmp.notNull() ) |
| 833 | throw error("Arrays of reference types must always be nullable"); |
| 834 | String tname = "["+t.str()+"]"; |
| 835 | Type ta = TYPES.get(tname); |
| 836 | if( ta != null ) return (TypeMemPtr)ta; |
| 837 | // Need make an array type. |
| 838 | TypeStruct ts = TypeStruct.makeAry(TypeInteger.U32,_code.getALIAS(),t,_code.getALIAS()); |
| 839 | assert ts.str().equals(tname); |
| 840 | TypeMemPtr tary = TypeMemPtr.make(ts); |
| 841 | TYPES.put(tname,tary); |
| 842 | return tary; |
| 843 | } |
| 844 | |
| 845 | // A function type is `{ type... -> type }` or `{ type }`. |
| 846 | private Type typeFunPtr() { |