Go to the documentation of this file. 1 package com.cliffc.aa.type;
7 import java.util.HashMap;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertTrue;
23 System.out.println(a1);
46 assertTrue(t0.
isa(t1));
48 assertTrue(t0.
isa(t2));
73 assertTrue(t0.
isa(t1));
103 assertEquals(xi8,xi8.
meet(xi16));
104 assertEquals( z ,z .meet(xi8 ));
105 assertEquals(i8 ,i8 .meet(z ));
106 assertEquals(i16,i16.
meet(xi8 ));
107 assertEquals( o ,o .meet(xi8 ));
108 assertEquals(i8 ,i8 .meet(o ));
117 assertEquals(no ,no .meet(xni8));
118 assertEquals(ni8,ni8.
meet(no ));
119 assertEquals(nz ,nz .meet(xni8));
120 assertEquals(ni8,ni8.
meet(nz ));
121 assertEquals(no ,no .meet(xni8));
126 assertEquals(xni8,xni8.
meet( xi8));
127 assertEquals( z, z .meet(xni8));
128 assertEquals( i8, ni8.
meet( z));
129 assertEquals( i8, i8.
meet( ni8));
130 assertEquals( z, z.
meet( nz));
132 assertEquals(xni8,xi8.
meet(xni8));
133 assertEquals(o, o .meet(xni8));
159 assertTrue( top.
isa(memX));
164 assertTrue( strX.
isa(abc));
165 assertTrue( tupX.
isa(tp0));
166 assertTrue(!strX.
isa(zer));
167 assertTrue(!tupX.
isa(zer));
169 assertTrue( abc .isa(str));
170 assertTrue( tp0 .isa(tup));
171 assertTrue(!zer .isa(str));
172 assertTrue(!zer .isa(tup));
177 assertTrue( mem .isa(bot));
200 assertTrue( top .isa(xmem0));
201 assertTrue(xmem0.
isa(xmem ));
203 assertTrue(xmem0.
isa(xstr0));
204 assertTrue(xmem .isa(xstr ));
205 assertTrue(xmem0.
isa(xtup0));
206 assertTrue(xmem .isa(xtup ));
216 assertTrue (xstr0.
isa(pabc0));
217 assertTrue (xstr .isa(pabc ));
224 assertTrue (xtup0.
isa(pzer0));
225 assertTrue (xtup .isa(pzer ));
228 assertTrue(xnil .isa(pabc0));
229 assertTrue(xnil .isa(pstr0));
230 assertTrue(xnil .isa(ptup0));
231 assertTrue(xnil .isa(pzer0));
233 assertTrue (pabc0.
isa(pstr0));
234 assertTrue (pabc .isa(pstr ));
236 assertTrue (pzer0.
isa(ptup0));
237 assertTrue (pzer .isa(ptup ));
238 assertTrue (ptup0.
isa(pmem0));
239 assertTrue (ptup .isa(pmem ));
241 assertTrue (pmem .isa(pmem0));
242 assertTrue (pmem0.
isa( bot ));
257 assertEquals(tf,tff);
260 Type tss = ts0.meet(t0);
261 assertEquals(t0,tss);
284 assertTrue(ld.
isa(ax));
300 assertTrue(f1i2i.
isa(gf));
303 assertTrue(gf.
dual().isa(f1i2i));
305 assertTrue(f1i2i.
isa(gf));
307 assertTrue(f1f2f.
isa(gf));
309 int fidx0 = f1i2i.
fidx();
310 int fidx1 = f1f2f.
fidx();
313 assertEquals(f3i2r,mt);
314 assertTrue(f3i2r.
isa(gf));
315 assertTrue(f1i2i.
isa(f3i2r));
316 assertTrue(f1f2f.
isa(f3i2r));
319 assertTrue(f2.
isa(gf));
348 Type tsmt = ts0.meet(ts1);
349 assertEquals(ts1,tsmt);
351 assertEquals(ts1mem,tsmemmt);
389 Type mta = mem234.
ld(ptr34);
393 Type xta = xts.set_name(
"A:");
394 assertEquals(xta,mta);
400 Type mtab = ta2.meet(tfb);
404 assertEquals(
"n",mtab0.
fld(0).
_fld);
405 assertEquals(
"v",mtab0.
fld(1).
_fld);
422 for(
int i=1; i<20; i++ ) {
427 HashMap<Type,Integer> ds = phi.
depth();
429 assertTrue(0 <= d && d <10);
459 Type das1 = as1.dual();
460 Type dbs4 = bs4.dual();
466 assertEquals(smt,smp.
_obj);
469 Type mx = as1.dual().meet(dbs4);
470 assertEquals(smt,mx);
487 for(
int i=0; i<tmps.length-1; i++ )
488 assertTrue(tmps[i].isa(tmps[i+1]));
499 for(
int j=0; j<tmems.length-1; j++ )
500 assertTrue(tmems[j].isa(tmems[j+1]));
503 for(
int i=0; i<tmps.length; i++ )
504 for(
int j=0; j<tmems.length; j++ )
505 rez[i][j] = tmems[j].ld(tmps[i]);
507 for(
int i0=0; i0<tmps.length; i0++ )
508 for(
int j0=0; j0<tmems.length; j0++ )
509 for(
int i1=i0; i1<tmps.length; i1++ )
510 for(
int j1=j0; j1<tmems.length; j1++ )
511 assertTrue( rez[i0][j0].isa(rez[i1][j1]) );
530 for(
int i=0; i<objs.length; i++ ) {
532 for(
int j=i; j<objs.length; j++ ) {
546 assertTrue(tic.
isa(tjc));
static final TypeMemPtr ABC0
static final Type[] TYPES
static final Type NO_DISP
static final TypeInt INT8
static TypeMem make(TypeObj[] pubs)
TypeObj ld(TypeMemPtr ptr)
void testCrush0(TypeObj ti, TypeObj tj)
static final TypeMemPtr STRUCT0
static BitsFun make0(int bit)
static final TypeMemPtr ABCPTR
Memory type; the state of all of memory; memory edges order memory ops.
static final TypeMemPtr OOP
static int type_alias(int par)
static final Type XSCALAR
static final TypeFunPtr GENERIC_FUNPTR
an implementation of language AA
static final TypeStruct ALLSTRUCT
static final TypeStruct POINT
static final TypeStruct TFLT64
static final TypeStruct A
static final TypeFld NO_DISP
static TypeInt con(long con)
static final TypeMem ALLMEM
static TypeFunPtr make_new_fidx(int parent, int nargs, Type disp)
TypeStruct install_cyclic(Ary< Type > reachs)
static int new_alias(int par)
A memory-based collection of optionally named fields.
static TypeFld make(String fld, Type t, int order)
static boolean test(long[] bits, int i)
static final TypeMem ANYMEM
static Type[] ts(Type t0)
static final TypeStruct INT64_INT64
static TypeMem make0(TypeObj[] as)
static final TypeInt INT64
final T set_name(String name)
static final String fldBot
static final TypeMemPtr STR0
void testCommuteSymmetricAssociative()
static int RECURSIVE_MEET
static final TypeStruct DISPLAY
static BitsAlias RECORD_BITS
static final TypeObj XOBJ
static final TypeMem MEM_ABC
static final TypeInt INT32
static final TypeObj ISUSED
static final TypeMemPtr STRUCT
static TypeFunPtr make(BitsFun fidxs, int nargs, Type disp)
static final TypeStruct ARW
static boolean check_startup()
static TypeFld malloc(String fld, Type t, Access access, int order)
TypeStruct approx(int cutoff, int alias)
static final TypeInt INT16
static final TypeStruct[] TYPES
static TypeStruct make(String fld_name, Type t)
HashMap< Type, Integer > depth()
static TypeStruct malloc(String name, boolean any, TypeFld[] flds, boolean open)
static final TypeMemPtr STRPTR
static final TypeMemPtr OOP0
static int max(int alias, HashMap< Type, Integer > ds)
static final TypeInt TRUE
static final TypeStruct NAMEPT
static TypeMemPtr make_nil(int alias, TypeObj obj)
static TypeFld[] ts(TypeFld t0)
static final TypeFlt FLT64
static TypeMemPtr make(BitsAlias aliases, TypeObj obj)