📄 no.171.mal
字号:
# Monet Mil to Mal compiler# Copyright (c) 2001-2004, CWI. All rights reserved.#Predefined code segment#The compiler can not guarantee an accurate compilation,#because MIL unlike MAL is a dynamically typed language.#A few guidelines to maximize usefullness.#- make the type of variables explicit, in particular 'nil'#- upon advice of M2m to remap identifiers, change it in your program directly#use the "mil_schema" for additional support routines# io.print("# >Number: 171\n");# io.print("# >Category: MIL\n");# io.print("# >Synopsis: X.reverse().select() fails after X.sort()\n");# io.print("# >Confidential: no\n");# io.print("# >Severity: critical\n");# io.print("# >Priority: high\n");# io.print("# >Responsible: boncz (Peter Boncz)\n");# io.print("# >State: open\n");# io.print("# >Class: sw-bug\n");# io.print("# >Submitter-Id: unknown\n");# io.print("# >Arrival-Date: Thu Dec 10 22:54:12 1998\n");# io.print("# >Originator: manegold@cwi.nl\n");# io.print("# >Organization:\n");# io.print("# CWI\n");# io.print("# >Release: 980101\n");# io.print("# >Environment:\n");# io.print("# IRIX\n");# io.print("# >Description:\n");# io.print("# a select on an bat.reverse()d BAT returns incorrect result\n");# io.print("# when a sort has been done on the same BAT before.\n");# io.print("#\n");# io.print("# sample script:\n");# io.print("# ========\n");# io.print("# s:=new(int,int);\n");# io.print("# bat.insert(s,5,5);\n");# io.print("# bat.insert(s,3,3);\n");# io.print("# bat.insert(s,4,2);\n");# io.print("# bat.insert(s,2,1);\n");# io.print("# bat.insert(s,1,1);\n");# io.print("# bat.insert(s,4,2);\n");# io.print("# bat.insert(s,4,3);\n");# io.print("# s.sort.print();\n");# io.print("# s.reverse().select(2).print();\n");# io.print("# ========\n");# io.print("#\n");# io.print("# incorrect output of the last select:\n");# io.print("# ========\n");# io.print("# s.reverse().select(2).print();\n");# io.print("# #-----------------#\n");# io.print("# # BAT: tmp_24 #\n");# io.print("# # (int) (int) #\n");# io.print("# #-----------------#\n");# io.print("# [ 1, 1 ]\n");# io.print("# [ 1, 2 ]\n");# io.print("# ========\n");# io.print("#\n");# io.print("# correct output of the last select:\n");# io.print("# ========\n");# io.print("# s.reverse().select(2).print();\n");# io.print("# #-----------------#\n");# io.print("# # BAT: tmp_24 #\n");# io.print("# # (int) (int) #\n");# io.print("# #-----------------#\n");# io.print("# [ 1, 2 ]\n");# io.print("# ========\n");# io.print("#\n");# io.print("# for a detailed test script see \n");# io.print("# tests/BugReports/Tests/no.171.*\n");# io.print("# in the Monet source repository.\n");# io.print("#\n");# io.print("# stefan\n");# io.print("var s:=new(int,int);"); s := bat.new(nil:int,nil:int);# io.print("insert(s,5,5);"); aa_a := bat.insert(s,5,5);# io.print("insert(s,3,3);"); ba_a := bat.insert(s,3,3);# io.print("insert(s,4,2);"); ca_a := bat.insert(s,4,2);# io.print("insert(s,2,1);"); da_a := bat.insert(s,2,1);# io.print("insert(s,1,1);"); ea_a := bat.insert(s,1,1);# io.print("insert(s,4,2);"); fa_a := bat.insert(s,4,2);# io.print("insert(s,4,3);"); ga_a := bat.insert(s,4,3);# io.print("s.print();"); ha_a := io.print(s);# io.print("s.select(1).print();"); ia_a := algebra.select(s,1); ja_a := io.print(ia_a);# io.print("s.select(2).print();"); ka_a := algebra.select(s,2); la_a := io.print(ka_a);# io.print("s.select(3).print();"); ma_a := algebra.select(s,3); na_a := io.print(ma_a);# io.print("s.select(4).print();"); oa_a := algebra.select(s,4); pa_a := io.print(oa_a);# io.print("s.select(5).print();"); qa_a := algebra.select(s,5); ra_a := io.print(qa_a);# io.print("s.reverse().print();"); sa_a := bat.reverse(s); ta_a := io.print(sa_a);# io.print("s.reverse().select(1).print();"); ua_a := bat.reverse(s); va_a := algebra.select(ua_a,1); wa_a := io.print(va_a);# io.print("s.reverse().select(2).print();"); xa_a := bat.reverse(s); ya_a := algebra.select(xa_a,2); ab_a := io.print(ya_a);# io.print("s.reverse().select(3).print();"); bb_a := bat.reverse(s); cb_a := algebra.select(bb_a,3); db_a := io.print(cb_a);# io.print("s.reverse().select(4).print();"); eb_a := bat.reverse(s); fb_a := algebra.select(eb_a,4); gb_a := io.print(fb_a);# io.print("s.reverse().select(5).print();"); hb_a := bat.reverse(s); ib_a := algebra.select(hb_a,5); jb_a := io.print(ib_a);# io.print("printf(\"#~BeginVariableOutput~#\\n\");"); kb_a := io.printf("#~BeginVariableOutput~#\n");# io.print("s.sort().print();"); lb_a := algebra.sort(s); mb_a := io.print(lb_a);# io.print("printf(\"#~EndVariableOutput~#\\n\");"); nb_a := io.printf("#~EndVariableOutput~#\n");# io.print("s.sortHT().print();"); ob_a := algebra.sortHT(s); pb_a := io.print(ob_a);# io.print("s.select(1).print();"); qb_a := algebra.select(s,1); rb_a := io.print(qb_a);# io.print("s.select(2).print();"); sb_a := algebra.select(s,2); tb_a := io.print(sb_a);# io.print("s.select(3).print();"); ub_a := algebra.select(s,3); vb_a := io.print(ub_a);# io.print("s.select(4).print();"); wb_a := algebra.select(s,4); xb_a := io.print(wb_a);# io.print("s.select(5).print();"); yb_a := algebra.select(s,5); ac_a := io.print(yb_a);# io.print("s.reverse().print();"); bc_a := bat.reverse(s); cc_a := io.print(bc_a);# io.print("s.reverse().select(1).print();"); dc_a := bat.reverse(s); ec_a := algebra.select(dc_a,1); fc_a := io.print(ec_a);# io.print("s.reverse().select(2).print();"); gc_a := bat.reverse(s); hc_a := algebra.select(gc_a,2); ic_a := io.print(hc_a);# io.print("s.reverse().select(3).print();"); jc_a := bat.reverse(s); kc_a := algebra.select(jc_a,3); lc_a := io.print(kc_a);# io.print("s.reverse().select(4).print();"); mc_a := bat.reverse(s); nc_a := algebra.select(mc_a,4); oc_a := io.print(nc_a);# io.print("s.reverse().select(4).sortHT().print();"); pc_a := bat.reverse(s); qc_a := algebra.select(pc_a,4); rc_a := algebra.sortHT(qc_a); sc_a := io.print(rc_a);# io.print("s.reverse().select(5).print();"); tc_a := bat.reverse(s); uc_a := algebra.select(tc_a,5); vc_a := io.print(uc_a);# io.print("printf(\"#~BeginVariableOutput~#\\n\");"); wc_a := io.printf("#~BeginVariableOutput~#\n");# io.print("s.reverse().sort().print();"); xc_a := bat.reverse(s); yc_a := algebra.sort(xc_a); ad_a := io.print(yc_a);# io.print("printf(\"#~EndVariableOutput~#\\n\");"); bd_a := io.printf("#~EndVariableOutput~#\n");# io.print("s.reverse().sortHT().print();"); cd_a := bat.reverse(s); dd_a := algebra.sortHT(cd_a); ed_a := io.print(dd_a);# io.print("s.reverse().select(1).print();"); fd_a := bat.reverse(s); gd_a := algebra.select(fd_a,1); hd_a := io.print(gd_a);# io.print("s.reverse().select(2).print();"); id_a := bat.reverse(s); jd_a := algebra.select(id_a,2); kd_a := io.print(jd_a);# io.print("s.reverse().select(3).print();"); ld_a := bat.reverse(s); md_a := algebra.select(ld_a,3); nd_a := io.print(md_a);# io.print("s.reverse().select(4).print();"); od_a := bat.reverse(s); pd_a := algebra.select(od_a,4); qd_a := io.print(pd_a);# io.print("s.reverse().select(4).sortHT().print();"); rd_a := bat.reverse(s); sd_a := algebra.select(rd_a,4); td_a := algebra.sortHT(sd_a); ud_a := io.print(td_a);# io.print("s.reverse().select(5).print();"); vd_a := bat.reverse(s); wd_a := algebra.select(vd_a,5); xd_a := io.print(wd_a);# io.print("quit();"); yd_a := clients.quit();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -