1. 17 7月, 2013 12 次提交
    • B
      auto merge of #7831 : ozten/rust/issues-7764-swap_unwarp-take-unwrap, r=pcwalton · 4bd716ac
      bors 提交于
      Fixes Issue #7764
      
      Running `make check` I do get a failure:
      
          test rt::io::extensions::test::push_bytes ... ok
          rustest rt::comm::test::oneshot_single_thread_send_port_close ... t: task failed at 'Unhandled condition:
           read_error: {kind: OtherIoError, desc: "Placeholder error. You shouldn\'t be seeing this", detail: None}',
           /Users/shout/Projects/rust/src/libstd/condition.rs:50
          /bin/sh: line 1: 35056 Abort trap: 6           x86_64-apple-darwin/stage2/test/stdtest-x86_64-apple-darwin --logfile
           tmp/check-stage2-T-x86_64-apple-darwin-H-x86_64-apple-darwin-std.log
          make: *** [tmp/check-stage2-T-x86_64-apple-darwin-H-x86_64-apple-darwin-std.ok] Error 134
      4bd716ac
    • B
      auto merge of #7827 : jdm/rust/enumlength, r=graydon · 8a1002fb
      bors 提交于
      Allowing them in type signatures is a significant amount of extra work, unfortunately. This also doesn't apply to static values, which takes a different code path.
      8a1002fb
    • B
      auto merge of #7684 : pnkfelix/rust/fsk-invert-range-rev-halfclosedness-issue5270-2ndpr, r=cmr · 53e934c2
      bors 提交于
      Changes int/uint range_rev to iterate over range `(hi,lo]` instead of `[hi,lo)`.
      
      Fix #5270.
      
      Also:
      * Adds unit tests for int/uint range functions
      * Updates the uses of `range_rev` to account for the new semantics.  (Note that pretty much all of the updates there were strict improvements to the code in question; yay!)
      * Exposes new function, `range_step_inclusive`, which does the range `[hi,lo]`, (at least when `hi-lo` is a multiple of the `step` parameter).
      * Special-cases when `|step| == 1` removing unnecessary bounds-check.  (I did not check whether LLVM was already performing this optimization; I figure it would be a net win to not leave that analysis to the compiler.  If reviewer objects, I can easily remove that from the refactored code.)
      
      (This pull request is a rebased version of PR #7524, which went stale due to recent unrelated changes to num libraries.)
      53e934c2
    • B
      auto merge of #7823 : pnkfelix/rust/issue7821-document-lint-attributes, r=graydon · 9db19030
      bors 提交于
      r? anyone
      
      Fix #7821.
      9db19030
    • A
      712ac836
    • B
      auto merge of #7822 : huonw/rust/cond-debug, r=graydon · ad212ece
      bors 提交于
      As per @pcwalton's request, `debug!(..)` is only activated when the `debug` cfg is set; that is, for `RUST_LOG=some_module=4 ./some_program` to work, it needs to be compiled with `rustc --cfg debug some_program.rs`. (Although, there is the sneaky `__debug!(..)` macro that is always active, if you *really* need it.)
      
      It functions by making `debug!` expand to `if false { __debug!(..) }` (expanding to an `if` like this is required to make sure `debug!` statements are typechecked and to avoid unused variable warnings), and adjusting trans to skip the pointless branches in `if true ...` and `if false ...`.
      
      The conditional expansion change also required moving the inject-std-macros step into a new pass, and makes it actually insert them at the top of the crate; this means that the cfg stripping traverses over the macros and so filters out the unused ones.
      
      This appears to takes an unoptimised build of `librustc` from 65s to 59s; and the full bootstrap from 18m41s to 18m26s on my computer (with general background use).
      
      `./configure --enable-debug` will enable `debug!` statements in the bootstrap build.
      ad212ece
    • H
      rustc: selectively trans branches for `if <literal-bool>`. · 4797dd40
      Huon Wilson 提交于
      That is, the `b` branch in `if true { a } else { b }` will not be
      trans'd, and that expression will be exactly the same as `a`. This
      means that, for example, macros conditionally expanding to `if false
      { .. }` (like debug!) will not waste time in LLVM (or trans).
      4797dd40
    • H
      rustc: handle allocas and LoadRangeAsserts in unreachable blocks correctly. · e252277f
      Huon Wilson 提交于
      An alloca in an unreachable block would shortcircuit with Undef, but with type
      `Type`, rather than type `*Type` (i.e. a plain value, not a pointer) but it is
      expected to return a pointer into the stack, leading to confusion and LLVM
      asserts later.
      
      Similarly, attaching the range metadata to a Load in an unreachable block
      makes LLVM unhappy, since the Load returns Undef.
      
      Fixes #7344.
      e252277f
    • H
      Clean-up tests after debug!/std-macros change. · e4f7561b
      Huon Wilson 提交于
      The entire testsuite is converted to using info! rather than debug!
      because some depend on the code within the debug! being trans'd.
      e4f7561b
    • B
      auto merge of #7726 : omasanori/rust/semver-2.0.0, r=graydon · a317584e
      bors 提交于
      The Ord impl of Version refered to the algorithm in release candidate versions of semver. [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html) says, "Build metadata SHOULD be ignored when determining version precedence."
      
      Note that Version's `le` is not "less than or equal to" now, since `lt` ignores build metadata. I think the new ordering algorithm satisfies strict weak ordering which C++ STL requires, instead of strict total ordering.
      
      BTW, is `a || b || ... || x`-style code better or idiomatic in Rust than `if a { return true; } if b { return true; } ... if x { return true; } return false;`-style one?
      a317584e
    • F
      Add doc and examples for attributes allow/warn/deny/forbid. · 8515abe0
      Felix S. Klock II 提交于
      Fix #7821.
      8515abe0
    • J
  2. 16 7月, 2013 16 次提交
  3. 15 7月, 2013 12 次提交