Skip to content

Commit af300d2

Browse files
committed
---
yaml --- r: 161335 b: refs/heads/snap-stage3 c: 702127f h: refs/heads/master i: 161333: 683a170 161331: 6f75ff8 161327: c25f343 v: v3
1 parent 126e101 commit af300d2

File tree

219 files changed

+5678
-2764
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

219 files changed

+5678
-2764
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 4eb72d268f337a8f117c86a2ac1b98336cab9e9d
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 2a6f197bf4358f6ed9211777e59553128caa459b
4+
refs/heads/snap-stage3: 702127f6f1b099f8a34804ddb71f821444b7b64e
55
refs/heads/try: 0f0d21c1eb5c7be04d323e0b06faf252ad790af6
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d

branches/snap-stage3/Makefile.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@ include $(CFG_SRC_DIR)mk/rustllvm.mk
198198
include $(CFG_SRC_DIR)mk/docs.mk
199199
# LLVM
200200
include $(CFG_SRC_DIR)mk/llvm.mk
201+
# Rules for installing debugger scripts
202+
include $(CFG_SRC_DIR)mk/debuggers.mk
201203

202204
######################################################################
203205
# Secondary makefiles, conditionalized for speed

branches/snap-stage3/configure

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,6 @@ probe CFG_LD ld
624624
probe CFG_VALGRIND valgrind
625625
probe CFG_PERF perf
626626
probe CFG_ISCC iscc
627-
probe CFG_LLNEXTGEN LLnextgen
628627
probe CFG_JAVAC javac
629628
probe CFG_ANTLR4 antlr4
630629
probe CFG_GRUN grun

branches/snap-stage3/mk/clean.mk

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ clean-generic-$(2)-$(1):
6363
-name '*.lib' -o \
6464
-name '*.dll' -o \
6565
-name '*.def' -o \
66+
-name '*.py' -o \
6667
-name '*.bc' \
6768
\) \
6869
| xargs rm -f
@@ -78,7 +79,7 @@ define CLEAN_HOST_STAGE_N
7879

7980
clean$(1)_H_$(2): \
8081
$$(foreach crate,$$(CRATES),clean$(1)_H_$(2)-lib-$$(crate)) \
81-
$$(foreach tool,$$(TOOLS),clean$(1)_H_$(2)-tool-$$(tool))
82+
$$(foreach tool,$$(TOOLS) $$(DEBUGGER_BIN_SCRIPTS),clean$(1)_H_$(2)-tool-$$(tool))
8283
$$(Q)rm -fr $(2)/rt/libbacktrace
8384

8485
clean$(1)_H_$(2)-tool-%:
@@ -98,7 +99,7 @@ define CLEAN_TARGET_STAGE_N
9899

99100
clean$(1)_T_$(2)_H_$(3): \
100101
$$(foreach crate,$$(CRATES),clean$(1)_T_$(2)_H_$(3)-lib-$$(crate)) \
101-
$$(foreach tool,$$(TOOLS),clean$(1)_T_$(2)_H_$(3)-tool-$$(tool))
102+
$$(foreach tool,$$(TOOLS) $$(DEBUGGER_BIN_SCRIPTS),clean$(1)_T_$(2)_H_$(3)-tool-$$(tool))
102103
$$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a
103104
$$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libcompiler-rt.a
104105
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/librun_pass_stage* # For unix

branches/snap-stage3/mk/crates.mk

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
################################################################################
5151

5252
TARGET_CRATES := libc std flate arena term \
53-
serialize sync getopts collections test time rand \
53+
serialize getopts collections test time rand \
5454
log regex graphviz core rbml alloc rustrt \
5555
unicode
5656
HOST_CRATES := syntax rustc rustc_trans rustdoc regex_macros fmt_macros \
@@ -63,7 +63,7 @@ DEPS_libc := core
6363
DEPS_unicode := core
6464
DEPS_alloc := core libc native:jemalloc
6565
DEPS_rustrt := alloc core libc collections native:rustrt_native
66-
DEPS_std := core libc rand alloc collections rustrt sync unicode \
66+
DEPS_std := core libc rand alloc collections rustrt unicode \
6767
native:rust_builtin native:backtrace
6868
DEPS_graphviz := std
6969
DEPS_syntax := std term serialize log fmt_macros arena libc
@@ -81,7 +81,6 @@ DEPS_glob := std
8181
DEPS_serialize := std log
8282
DEPS_rbml := std log serialize
8383
DEPS_term := std log
84-
DEPS_sync := core alloc rustrt collections
8584
DEPS_getopts := std
8685
DEPS_collections := core alloc unicode
8786
DEPS_num := std

branches/snap-stage3/mk/debuggers.mk

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
# file at the top-level directory of this distribution and at
3+
# http://rust-lang.org/COPYRIGHT.
4+
#
5+
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
# option. This file may not be copied, modified, or distributed
9+
# except according to those terms.
10+
11+
######################################################################
12+
# Copy debugger related scripts
13+
######################################################################
14+
15+
DEBUGGER_RUSTLIB_ETC_SCRIPTS=lldb_rust_formatters.py
16+
DEBUGGER_BIN_SCRIPTS=rust-lldb
17+
18+
DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS=$(foreach script,$(DEBUGGER_RUSTLIB_ETC_SCRIPTS), \
19+
$(CFG_SRC_DIR)src/etc/$(script))
20+
DEBUGGER_BIN_SCRIPTS_ABS=$(foreach script,$(DEBUGGER_BIN_SCRIPTS), \
21+
$(CFG_SRC_DIR)src/etc/$(script))
22+
23+
DEBUGGER_SCRIPTS_ALL=$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS) $(DEBUGGER_BIN_SCRIPTS_ABS)
24+
25+
# $(1) - the stage to copy to
26+
# $(2) - the host triple
27+
define DEF_INSTALL_DEBUGGER_SCRIPTS_HOST
28+
29+
tmp/install-debugger-scripts$(1)_H_$(2).done: $$(DEBUGGER_SCRIPTS_ALL)
30+
$(Q)mkdir -p $$(HBIN$(1)_H_$(2))
31+
$(Q)mkdir -p $$(HLIB$(1)_H_$(2))/rustlib/etc
32+
$(Q)install $(DEBUGGER_BIN_SCRIPTS_ABS) $$(HBIN$(1)_H_$(2))
33+
$(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS) $$(HLIB$(1)_H_$(2))/rustlib/etc
34+
$(Q)touch $$@
35+
endef
36+
37+
# Expand host make-targets for all stages
38+
$(foreach stage,$(STAGES), \
39+
$(foreach host,$(CFG_HOST), \
40+
$(eval $(call DEF_INSTALL_DEBUGGER_SCRIPTS_HOST,$(stage),$(host)))))
41+
42+
# $(1) is the stage number
43+
# $(2) is the target triple
44+
# $(3) is the host triple
45+
define DEF_INSTALL_DEBUGGER_SCRIPTS_TARGET
46+
47+
tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3).done: $$(DEBUGGER_SCRIPTS_ALL)
48+
$(Q)mkdir -p $$(TBIN$(1)_T_$(2)_H_$(3))
49+
$(Q)mkdir -p $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc
50+
$(Q)install $(DEBUGGER_BIN_SCRIPTS_ABS) $$(TBIN$(1)_T_$(2)_H_$(3))
51+
$(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS) $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc
52+
$(Q)touch $$@
53+
endef
54+
55+
# Expand target make-targets for all stages
56+
$(foreach stage,$(STAGES), \
57+
$(foreach target,$(CFG_TARGET), \
58+
$(foreach host,$(CFG_HOST), \
59+
$(eval $(call DEF_INSTALL_DEBUGGER_SCRIPTS_TARGET,$(stage),$(target),$(host))))))

branches/snap-stage3/mk/docs.mk

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -246,26 +246,6 @@ endef
246246
$(foreach lang,$(L10N_LANGS),$(eval $(call DEF_L10N_DOC,$(lang),guide)))
247247

248248

249-
######################################################################
250-
# LLnextgen (grammar analysis from refman)
251-
######################################################################
252-
253-
ifeq ($(CFG_LLNEXTGEN),)
254-
$(info cfg: no llnextgen found, omitting grammar-verification)
255-
else
256-
.PHONY: verify-grammar
257-
258-
doc/rust.g: $(D)/rust.md $(S)src/etc/extract_grammar.py
259-
@$(call E, extract_grammar: $@)
260-
$(Q)$(CFG_PYTHON) $(S)src/etc/extract_grammar.py $< >$@
261-
262-
verify-grammar: doc/rust.g
263-
@$(call E, LLnextgen: $<)
264-
$(Q)$(CFG_LLNEXTGEN) --generate-lexer-wrapper=no $< >$@
265-
$(Q)rm -f doc/rust.c doc/rust.h
266-
endif
267-
268-
269249
######################################################################
270250
# Rustdoc (libstd/extra)
271251
######################################################################

branches/snap-stage3/mk/main.mk

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,8 @@ HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
356356
else
357357
HSREQ$(1)_H_$(3) = \
358358
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
359-
$$(MKFILE_DEPS)
359+
$$(MKFILE_DEPS) \
360+
tmp/install-debugger-scripts$(1)_H_$(3).done
360361
endif
361362

362363
# Prerequisites for using the stageN compiler to build target artifacts
@@ -370,7 +371,8 @@ TSREQ$(1)_T_$(2)_H_$(3) = \
370371
SREQ$(1)_T_$(2)_H_$(3) = \
371372
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
372373
$$(foreach dep,$$(TARGET_CRATES), \
373-
$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep))
374+
$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep)) \
375+
tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3).done
374376

375377
# Prerequisites for a working stageN compiler and complete set of target
376378
# libraries

branches/snap-stage3/mk/prepare.mk

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ prepare-base-$(1): PREPARE_DEST_LIB_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_LIBDIR_RELAT
155155
prepare-base-$(1): PREPARE_DEST_MAN_DIR=$$(PREPARE_DEST_DIR)/share/man/man1
156156
prepare-base-$(1): prepare-everything-$(1)
157157

158-
prepare-everything-$(1): prepare-host-$(1) prepare-targets-$(1)
158+
prepare-everything-$(1): prepare-host-$(1) prepare-targets-$(1) prepare-debugger-scripts-$(1)
159159

160160
prepare-host-$(1): prepare-host-tools-$(1)
161161

@@ -167,8 +167,13 @@ prepare-host-tools-$(1): \
167167
prepare-host-dirs-$(1): prepare-maybe-clean-$(1)
168168
$$(call PREPARE_DIR,$$(PREPARE_DEST_BIN_DIR))
169169
$$(call PREPARE_DIR,$$(PREPARE_DEST_LIB_DIR))
170+
$$(call PREPARE_DIR,$$(PREPARE_DEST_LIB_DIR)/rustlib/etc)
170171
$$(call PREPARE_DIR,$$(PREPARE_DEST_MAN_DIR))
171172

173+
prepare-debugger-scripts-$(1): prepare-host-dirs-$(1) $(DEBUGGER_SCRIPTS_ALL)
174+
$$(Q)$$(PREPARE_BIN_CMD) $(DEBUGGER_BIN_SCRIPTS_ABS) $$(PREPARE_DEST_BIN_DIR)
175+
$$(Q)$$(PREPARE_LIB_CMD) $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS) $$(PREPARE_DEST_LIB_DIR)/rustlib/etc
176+
172177
$$(foreach tool,$$(PREPARE_TOOLS), \
173178
$$(foreach host,$$(CFG_HOST), \
174179
$$(eval $$(call DEF_PREPARE_HOST_TOOL,$$(tool),$$(PREPARE_STAGE),$$(host),$(1)))))

branches/snap-stage3/src/compiletest/errors.rs

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
10+
use self::WhichLine::*;
1011

1112
use std::ascii::AsciiExt;
1213
use std::io::{BufferedReader, File};
@@ -18,28 +19,74 @@ pub struct ExpectedError {
1819
pub msg: String,
1920
}
2021

21-
pub static EXPECTED_PATTERN : &'static str = r"//~(?P<adjusts>\^*)\s*(?P<kind>\S*)\s*(?P<msg>.*)";
22+
/// Looks for either "//~| KIND MESSAGE" or "//~^^... KIND MESSAGE"
23+
/// The former is a "follow" that inherits its target from the preceding line;
24+
/// the latter is an "adjusts" that goes that many lines up.
25+
///
26+
/// Goal is to enable tests both like: //~^^^ ERROR go up three
27+
/// and also //~^ ERROR message one for the preceding line, and
28+
/// //~| ERROR message two for that same line.
29+
30+
pub static EXPECTED_PATTERN : &'static str =
31+
r"//~(?P<follow>\|)?(?P<adjusts>\^*)\s*(?P<kind>\S*)\s*(?P<msg>.*)";
32+
33+
#[deriving(PartialEq, Show)]
34+
enum WhichLine { ThisLine, FollowPrevious(uint), AdjustBackward(uint) }
2235

2336
// Load any test directives embedded in the file
2437
pub fn load_errors(re: &Regex, testfile: &Path) -> Vec<ExpectedError> {
2538
let mut rdr = BufferedReader::new(File::open(testfile).unwrap());
2639

40+
// `last_nonfollow_error` tracks the most recently seen
41+
// line with an error template that did not use the
42+
// follow-syntax, "//~| ...".
43+
//
44+
// (pnkfelix could not find an easy way to compose Iterator::scan
45+
// and Iterator::filter_map to pass along this information into
46+
// `parse_expected`. So instead I am storing that state here and
47+
// updating it in the map callback below.)
48+
let mut last_nonfollow_error = None;
49+
2750
rdr.lines().enumerate().filter_map(|(line_no, ln)| {
28-
parse_expected(line_no + 1, ln.unwrap().as_slice(), re)
51+
parse_expected(last_nonfollow_error,
52+
line_no + 1,
53+
ln.unwrap().as_slice(), re)
54+
.map(|(which, error)| {
55+
match which {
56+
FollowPrevious(_) => {}
57+
_ => last_nonfollow_error = Some(error.line),
58+
}
59+
error
60+
})
2961
}).collect()
3062
}
3163

32-
fn parse_expected(line_num: uint, line: &str, re: &Regex) -> Option<ExpectedError> {
64+
fn parse_expected(last_nonfollow_error: Option<uint>,
65+
line_num: uint,
66+
line: &str,
67+
re: &Regex) -> Option<(WhichLine, ExpectedError)> {
3368
re.captures(line).and_then(|caps| {
3469
let adjusts = caps.name("adjusts").len();
3570
let kind = caps.name("kind").to_ascii_lower();
3671
let msg = caps.name("msg").trim().to_string();
72+
let follow = caps.name("follow").len() > 0;
73+
74+
let (which, line) = if follow {
75+
assert!(adjusts == 0, "use either //~| or //~^, not both.");
76+
let line = last_nonfollow_error.unwrap_or_else(|| {
77+
panic!("encountered //~| without preceding //~^ line.")
78+
});
79+
(FollowPrevious(line), line)
80+
} else {
81+
let which =
82+
if adjusts > 0 { AdjustBackward(adjusts) } else { ThisLine };
83+
let line = line_num - adjusts;
84+
(which, line)
85+
};
3786

38-
debug!("line={} kind={} msg={}", line_num, kind, msg);
39-
Some(ExpectedError {
40-
line: line_num - adjusts,
41-
kind: kind,
42-
msg: msg,
43-
})
87+
debug!("line={} which={} kind={} msg={}", line_num, which, kind, msg);
88+
Some((which, ExpectedError { line: line,
89+
kind: kind,
90+
msg: msg, }))
4491
})
4592
}

branches/snap-stage3/src/doc/reference.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1689,7 +1689,20 @@ methods in such an implementation can only be used as direct calls on the
16891689
values of the type that the implementation targets. In such an implementation,
16901690
the trait type and `for` after `impl` are omitted. Such implementations are
16911691
limited to nominal types (enums, structs), and the implementation must appear
1692-
in the same module or a sub-module as the `self` type.
1692+
in the same module or a sub-module as the `self` type:
1693+
1694+
```
1695+
struct Point {x: int, y: int}
1696+
1697+
impl Point {
1698+
fn log(&self) {
1699+
println!("Point is at ({}, {})", self.x, self.y);
1700+
}
1701+
}
1702+
1703+
let my_point = Point {x: 10, y:11};
1704+
my_point.log();
1705+
```
16931706

16941707
When a trait _is_ specified in an `impl`, all methods declared as part of the
16951708
trait must be implemented, with matching types and type parameter counts.

branches/snap-stage3/src/etc/emacs/rust-mode.el

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@
3131
(modify-syntax-entry ?\" "\"" table)
3232
(modify-syntax-entry ?\\ "\\" table)
3333

34-
;; _ is a word-char
35-
(modify-syntax-entry ?_ "w" table)
36-
3734
;; Comments
3835
(modify-syntax-entry ?/ ". 124b" table)
3936
(modify-syntax-entry ?* ". 23" table)
@@ -397,7 +394,7 @@ This is written mainly to be used as `beginning-of-defun-function' for Rust.
397394
Don't move to the beginning of the line. `beginning-of-defun',
398395
which calls this, does that afterwards."
399396
(interactive "p")
400-
(re-search-backward (concat "^\\(" rust-top-item-beg-re "\\)\\b")
397+
(re-search-backward (concat "^\\(" rust-top-item-beg-re "\\)\\_>")
401398
nil 'move (or arg 1)))
402399

403400
(defun rust-end-of-defun ()

branches/snap-stage3/src/etc/licenseck.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,9 @@
3838
"rt/isaac/randport.cpp", # public domain
3939
"rt/isaac/rand.h", # public domain
4040
"rt/isaac/standard.h", # public domain
41-
"libsync/mpsc_queue.rs", # BSD
42-
"libsync/spsc_queue.rs", # BSD
43-
"libsync/mpmc_bounded_queue.rs", # BSD
44-
"libsync/mpsc_intrusive.rs", # BSD
41+
"libstd/sync/mpsc_queue.rs", # BSD
42+
"libstd/sync/spsc_queue.rs", # BSD
43+
"libstd/sync/mpmc_bounded_queue.rs", # BSD
4544
"test/bench/shootout-binarytrees.rs", # BSD
4645
"test/bench/shootout-chameneos-redux.rs", # BSD
4746
"test/bench/shootout-fannkuch-redux.rs", # BSD

branches/snap-stage3/src/etc/lldb_rust_formatters.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,14 @@ def print_struct_val_starting_from(field_start_index, val, internal_dict):
6969
assert val.GetType().GetTypeClass() == lldb.eTypeClassStruct
7070

7171
t = val.GetType()
72-
has_field_names = type_has_field_names(t)
7372
type_name = extract_type_name(t.GetName())
73+
num_children = val.num_children
74+
75+
if (num_children - field_start_index) == 0:
76+
# The only field of this struct is the enum discriminant
77+
return type_name
78+
79+
has_field_names = type_has_field_names(t)
7480

7581
if has_field_names:
7682
template = "%(type_name)s {\n%(body)s\n}"
@@ -83,8 +89,6 @@ def print_struct_val_starting_from(field_start_index, val, internal_dict):
8389
# this is a tuple, so don't print the type name
8490
type_name = ""
8591

86-
num_children = val.num_children
87-
8892
def render_child(child_index):
8993
this = ""
9094
if has_field_names:
@@ -105,7 +109,6 @@ def print_enum_val(val, internal_dict):
105109

106110
assert val.GetType().GetTypeClass() == lldb.eTypeClassUnion
107111

108-
109112
if val.num_children == 1:
110113
# This is either an enum with just one variant, or it is an Option-like enum
111114
# where the discriminant is encoded in a non-nullable pointer field. We find

0 commit comments

Comments
 (0)