1. 29 4月, 2011 7 次提交
    • T
      Fix bug in handling of expr_alt (postcond for alts was being intersected with... · 25694582
      Tim Chevalier 提交于
      Fix bug in handling of expr_alt (postcond for alts was being intersected with postcond for scrutinee)
      25694582
    • T
      Fixed bug in typeck that wasn't filling in anns for stmts · 707cd028
      Tim Chevalier 提交于
      (needed for typestate_check).
      
      Also changed a (log; fail) to (log_err; fail) in typestate_check,
      and added some more logging funs in util.common.
      707cd028
    • T
      Support all expression forms in typestate · 0190ebfe
      Tim Chevalier 提交于
      Added support for self_method, cont, chan, port, recv, send, be,
      do_while, spawn, and ext; handled break and cont correctly.
      (However, there are no non-xfailed test cases for ext or spawn in
      stage0 currently.)
      
      Although the standard library compiles and all test cases pass with
      typestate enabled, I left typestate checking disabled as rustc
      terminates abnormally when building the standard library if so,
      even though it does generate code correctly.
      0190ebfe
    • T
      Further work on typestate_check · 7c4f8cb4
      Tim Chevalier 提交于
      Lots of work on typestate_check, seems to get a lot of the way
      through checking the standard library.
      
      * Added for, for_each, assign_op, bind, cast, put, check, break,
      and cont. (I'm not sure break and cont are actually handled correctly.)
      
      * Fixed side-effect bug in seq_preconds so that unioning the
      preconditions of a sequence of statements or expressions
      is handled correctly.
      
      * Pass poststate correctly through a stmt_decl.
      
      * Handle expr_ret and expr_fail properly (after execution of a ret
      or fail, everything is true -- this is needed to handle ifs and alts
      where one branch is a ret or fail)
      
      * Fixed bug in set_prestate_ann where a thing that needed to be
      mutated wasn't getting passed as an alias
      
      * Fixed bug in how expr_alt was treated (zero is not the identity
      for intersect, who knew, right?)
      
      * Update logging to reflect log_err vs. log
      
      * Fixed find_locals so as to return all local decls and exclude
      function arguments.
      
      * Make union_postconds work on an empty vector (needed to handle
      empty blocks correctly)
      
      * Added _vec.cat_options, which takes a list of option[T] to a list
      of T, ignoring any Nones
      
      * Added two test cases.
      7c4f8cb4
    • R
      Add a very minimal set of .cfi_* statements to get part of backtraces · b0980b7d
      Rafael Ávila de Espíndola 提交于
      working (on hello world at least):
      
      ~/inst/gdb/bin/gdb --args ./foo
      (gdb) b write
      ...
      (gdb) r
      ...
      Breakpoint 1, 0xf7f04270 in write () from /lib32/libc.so.6
      (gdb) bt
      0  0xf7f04270 in write () from /lib32/libc.so.6
      1  0x0804931a in rust_native_cdecl_3 ()
      2  0x080487d7 in _rust_wrapper3_ ()
      3  0x0804890a in _rust_fn5_main ()
      4  0x08049440 in rust_native_cdecl_7 ()
      b0980b7d
    • G
      Actually perform take/drop on args (oh my!) · 6daca7ea
      Graydon Hoare 提交于
      6daca7ea
    • P
      91fe4ae0
  2. 28 4月, 2011 9 次提交
  3. 27 4月, 2011 13 次提交
  4. 26 4月, 2011 9 次提交
  5. 25 4月, 2011 2 次提交