1. 03 3月, 2017 1 次提交
  2. 04 2月, 2017 1 次提交
    • A
      Bump version, upgrade bootstrap · 626e7544
      Alex Crichton 提交于
      This commit updates the version number to 1.17.0 as we're not on that version of
      the nightly compiler, and at the same time this updates src/stage0.txt to
      bootstrap from freshly minted beta compiler and beta Cargo.
      626e7544
  3. 19 1月, 2017 1 次提交
  4. 17 1月, 2017 4 次提交
  5. 16 1月, 2017 1 次提交
  6. 12 1月, 2017 1 次提交
  7. 30 12月, 2016 3 次提交
    • S
      Fix LEB128 to work with the stage1 · 64de4e27
      Simonas Kazlauskas 提交于
      Stage 1 can’t really handle negative 128-bit literals, but an equivalent bit-not is fine
      64de4e27
    • S
      Cleanup FIXMEs · 4e2b946e
      Simonas Kazlauskas 提交于
      4e2b946e
    • S
      Such large. Very 128. Much bits. · b0e55a83
      Simonas Kazlauskas 提交于
      This commit introduces 128-bit integers. Stage 2 builds and produces a working compiler which
      understands and supports 128-bit integers throughout.
      
      The general strategy used is to have rustc_i128 module which provides aliases for iu128, equal to
      iu64 in stage9 and iu128 later. Since nowhere in rustc we rely on large numbers being supported,
      this strategy is good enough to get past the first bootstrap stages to end up with a fully working
      128-bit capable compiler.
      
      In order for this strategy to work, number of locations had to be changed to use associated
      max_value/min_value instead of MAX/MIN constants as well as the min_value (or was it max_value?)
      had to be changed to use xor instead of shift so both 64-bit and 128-bit based consteval works
      (former not necessarily producing the right results in stage1).
      
      This commit includes manual merge conflict resolution changes from a rebase by @est31.
      b0e55a83
  8. 28 12月, 2016 1 次提交
  9. 22 12月, 2016 2 次提交
  10. 20 12月, 2016 1 次提交
  11. 19 12月, 2016 2 次提交
  12. 22 11月, 2016 1 次提交
    • G
      Implement the `loop_break_value` feature. · 9d42549d
      Geoffry Song 提交于
      This implements RFC 1624, tracking issue #37339.
      
      - `FnCtxt` (in typeck) gets a stack of `LoopCtxt`s, which store the
        currently deduced type of that loop, the desired type, and a list of
        break expressions currently seen. `loop` loops get a fresh type
        variable as their initial type (this logic is stolen from that for
        arrays). `while` loops get `()`.
      - `break {expr}` looks up the broken loop, and unifies the type of
        `expr` with the type of the loop.
      - `break` with no expr unifies the loop's type with `()`.
      - When building MIR, `loop` loops no longer construct a `()` value at
        termination of the loop; rather, the `break` expression assigns the
        result of the loop. `while` loops are unchanged.
      - `break` respects contexts in which expressions may not end with braced
        blocks. That is, `while break { break-value } { while-body }` is
        illegal; this preserves backwards compatibility.
      - The RFC did not make it clear, but I chose to make `break ()` inside
        of a `while` loop illegal, just in case we wanted to do anything with
        that design space in the future.
      
      This is my first time dealing with this part of rustc so I'm sure
      there's plenty of problems to pick on here ^_^
      9d42549d
  13. 21 11月, 2016 3 次提交
  14. 20 11月, 2016 5 次提交
  15. 10 11月, 2016 1 次提交
  16. 09 11月, 2016 1 次提交
    • E
      Point to type argument span when used as trait · 3edb4fc5
      Esteban Küber 提交于
      Given the following code:
      
      ```rust
      struct Foo<T: Clone>(T);
      
      use std::ops::Add;
      
      impl<T: Clone, Add> Add for Foo<T> {
          type Output = usize;
      
          fn add(self, rhs: Self) -> Self::Output {
            unimplemented!();
          }
      }
      ```
      
      present the following output:
      
      ```nocode
      error[E0404]: `Add` is not a trait
       --> file3.rs:5:21
        |
      5 | impl<T: Clone, Add> Add for Okok<T> {
        |                ---  ^^^ expected trait, found type parameter
        |                |
        |                type parameter defined here
      ```
      3edb4fc5
  17. 04 11月, 2016 1 次提交
  18. 01 11月, 2016 1 次提交
    • I
      Changed most vec! invocations to use square braces · e593c3b8
      iirelu 提交于
      Most of the Rust community agrees that the vec! macro is clearer when
      called using square brackets [] instead of regular brackets (). Most of
      these ocurrences are from before macros allowed using different types of
      brackets.
      
      There is one left unchanged in a pretty-print test, as the pretty
      printer still wants it to have regular brackets.
      e593c3b8
  19. 29 10月, 2016 1 次提交
  20. 27 10月, 2016 1 次提交
  21. 24 10月, 2016 1 次提交
  22. 10 10月, 2016 1 次提交
    • N
      Avoid allocations in `Decoder::read_str`. · b043e11d
      Nicholas Nethercote 提交于
      `opaque::Decoder::read_str` is very hot within `rustc` due to its use in
      the reading of crate metadata, and it currently returns a `String`. This
      commit changes it to instead return a `Cow<str>`, which avoids a heap
      allocation.
      
      This change reduces the number of calls to `malloc` by almost 10% in
      some benchmarks.
      
      This is a [breaking-change] to libserialize.
      b043e11d
  23. 29 9月, 2016 1 次提交
    • J
      libsyntax: clearer names for some AST parts · 48e5199d
      Jonas Schievink 提交于
      This applies the HIR changes from the previous commits to the AST, and
      is thus a syntax-[breaking-change]
      
      Renames `PatKind::Vec` to `PatKind::Slice`, since these are called slice
      patterns, not vec patterns. Renames `TyKind::Vec`, which represents the
      type `[T]`, to `TyKind::Slice`. Renames `TyKind::FixedLengthVec` to
      `TyKind::Array`.
      48e5199d
  24. 23 9月, 2016 1 次提交
  25. 21 9月, 2016 2 次提交
  26. 11 9月, 2016 1 次提交