1 module linker_test_2 1.0; 2 3 require { 4 class file { read write }; 5 class lnk_file { unlink }; 6 attribute g_b_attr_5; 7 attribute g_b_attr_6; 8 attribute g_m1_attr_3; 9 attribute o3_m1_attr_2; 10 } 11 12 type tag_g_m2; 13 14 type g_m2_type_1; 15 role g_m2_role_1 types g_m2_type_1; 16 17 type g_m2_type_4, g_b_attr_5; 18 type g_m2_type_5, g_b_attr_6; 19 20 #add types to role declared in base test 21 type g_m2_type_2; 22 role g_b_role_3 types g_m2_type_2; 23 24 #optional base role w/ adds in 2 modules 25 role o4_b_role_1 types g_m2_type_1; 26 27 # attr a added to in base optional, declared/added to in module, added to in other module 28 type g_m2_type_3, g_m1_attr_3; 29 30 # attr a added to in base optional, declared/added in module optional, added to in other module 31 type g_m2_type_6, o3_m1_attr_2; 32 33 # cond mapping tests 34 bool g_m2_bool_1 true; 35 bool g_m2_bool_2 false; 36 if (g_m2_bool_1 && g_m2_bool_2) { 37 allow g_m2_type_1 g_m2_type_2 : lnk_file unlink; 38 } 39 40 optional { 41 require { 42 type optional_type; 43 } 44 45 type tag_o1_m2; 46 47 type o1_m2_type_1; 48 role o1_m2_role_1 types o1_m2_type_1; 49 } 50 51 52 optional { 53 require { 54 attribute g_m1_attr_4; 55 attribute o4_m1_attr_1; 56 } 57 type tag_o2_m2; 58 59 type o2_m2_type_1, g_m1_attr_4; 60 type o2_m2_type_2, o4_m1_attr_1; 61 62 } 63