aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in4
-rwxr-xr-xconfigure5
-rw-r--r--mk/check.mk2
-rw-r--r--mk/doc.mk13
-rw-r--r--src/compiler/rust-snapshot-hash2
-rw-r--r--src/components/compositing/compositing.rs2
-rw-r--r--src/components/compositing/constellation.rs2
-rw-r--r--src/components/compositing/platform/common/glfw_windowing.rs4
-rw-r--r--src/components/compositing/platform/common/glut_windowing.rs4
-rw-r--r--src/components/embedding/command_line.rs4
-rw-r--r--src/components/gfx/display_list/mod.rs5
-rw-r--r--src/components/gfx/display_list/optimizer.rs3
-rw-r--r--src/components/gfx/font.rs6
-rw-r--r--src/components/gfx/gfx.rs2
-rw-r--r--src/components/gfx/platform/freetype/font.rs6
-rw-r--r--src/components/gfx/platform/freetype/font_list.rs8
-rw-r--r--src/components/gfx/text/glyph.rs34
-rw-r--r--src/components/gfx/text/shaping/harfbuzz.rs8
-rw-r--r--src/components/layout/block.rs25
-rw-r--r--src/components/layout/flow_list.rs29
-rw-r--r--src/components/layout/flow_ref.rs1
-rw-r--r--src/components/layout/fragment.rs2
-rw-r--r--src/components/layout/inline.rs2
-rw-r--r--src/components/layout/layout.rs2
-rw-r--r--src/components/layout/layout_task.rs8
-rw-r--r--src/components/layout/parallel.rs8
-rw-r--r--src/components/layout/table.rs6
-rw-r--r--src/components/layout/table_rowgroup.rs8
-rw-r--r--src/components/layout/text.rs16
-rw-r--r--src/components/layout/wrapper.rs12
-rw-r--r--src/components/main/servo.rs6
-rw-r--r--src/components/msg/msg.rs2
-rw-r--r--src/components/net/data_loader.rs8
-rw-r--r--src/components/net/net.rs2
-rw-r--r--src/components/script/cors.rs6
-rw-r--r--src/components/script/dom/bindings/callback.rs3
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py10
-rw-r--r--src/components/script/dom/bindings/proxyhandler.rs4
-rw-r--r--src/components/script/dom/bindings/utils.rs3
-rw-r--r--src/components/script/dom/browsercontext.rs2
-rw-r--r--src/components/script/dom/clientrectlist.rs2
-rw-r--r--src/components/script/dom/document.rs4
-rw-r--r--src/components/script/dom/element.rs4
-rw-r--r--src/components/script/dom/formdata.rs2
-rw-r--r--src/components/script/dom/node.rs55
-rw-r--r--src/components/script/dom/nodelist.rs2
-rw-r--r--src/components/script/dom/urlsearchparams.rs2
-rw-r--r--src/components/script/html/hubbub_html_parser.rs35
-rw-r--r--src/components/script/layout_interface.rs2
-rw-r--r--src/components/script/script.rs2
-rw-r--r--src/components/script/script_task.rs2
-rw-r--r--src/components/script_traits/script_traits.rs2
-rw-r--r--src/components/style/selector_matching.rs28
-rw-r--r--src/components/style/style.rs2
-rw-r--r--src/components/util/cache.rs10
-rw-r--r--src/components/util/time.rs2
-rw-r--r--src/components/util/workqueue.rs2
m---------src/platform/android/servo-android-glue0
m---------src/platform/linux/rust-fontconfig0
m---------src/platform/linux/rust-freetype0
m---------src/platform/linux/rust-xlib0
m---------src/support/alert/rust-alert0
m---------src/support/azure/rust-azure0
m---------src/support/css/rust-cssparser0
m---------src/support/egl/rust-egl0
m---------src/support/geom/rust-geom0
m---------src/support/glfw/glfw-rs0
m---------src/support/harfbuzz/rust-harfbuzz0
m---------src/support/http/rust-http0
m---------src/support/hubbub/rust-hubbub0
m---------src/support/layers/rust-layers0
m---------src/support/opengles/rust-opengles0
m---------src/support/phf/rust-phf0
m---------src/support/png/rust-png0
m---------src/support/sharegl/sharegl0
m---------src/support/spidermonkey/rust-mozjs0
m---------src/support/stb-image/rust-stb-image0
m---------src/support/stringcache/string-cache0
-rw-r--r--src/support/url/Makefile.in6
m---------src/support/url/rust-url0
-rw-r--r--src/test/harness/reftest/reftest.rs14
81 files changed, 243 insertions, 214 deletions
diff --git a/Makefile.in b/Makefile.in
index 95bb58ef8b2..2d20c41e2cd 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -45,6 +45,10 @@ ifdef CFG_ENABLE_DEBUG
CFG_RUSTC_SELF_FLAGS += -g
endif
+# FIXME: Remove once we’re on a Rust version without the old url crate
+# https://github.com/rust-lang/rust/issues/16140
+CFG_RUSTC_FLAGS += --extern url=$(B)/src/support/url/rust-url/liburl.rlib
+
export CFG_RUSTC
export CFG_RUSTC_FLAGS
export CFG_LOCAL_RUSTC
diff --git a/configure b/configure
index 0c284a2cb9e..b48c7cd96b7 100755
--- a/configure
+++ b/configure
@@ -409,10 +409,7 @@ CFG_BUILD_DIR="${CFG_BUILD_HOME}${CFG_TARGET}/"
make_dir "${CFG_BUILD_DIR}"
SNAPSHOT_VERSION=$(cat ${CFG_SRC_DIR}/src/compiler/rust-snapshot-hash | rev | cut -d/ -f1 | rev)
SNAPSHOT_HASH=$(cat ${CFG_SRC_DIR}/src/compiler/rust-snapshot-hash | cut -d/ -f1)
-if [ $CFG_OSTYPE = "linux-androideabi" ]
-then
- CFG_ENABLE_TREE_RUST=1 # We don't yet have Android snapshots
-fi
+
if [ -z "$CFG_ENABLE_TREE_RUST" -a -z "$CFG_LOCAL_RUST_ROOT" ]
then
if ! [ -f ${CFG_BUILD_DIR}/rust_snapshot/${SNAPSHOT_VERSION}-${DEFAULT_TARGET}/bin/rustc -a -f ${CFG_BUILD_DIR}/src/compiler/rust-snapshot-hash-stamp -a -z "$(diff ${CFG_BUILD_DIR}/src/compiler/rust-snapshot-hash-stamp ${CFG_SRC_DIR}/src/compiler/rust-snapshot-hash)" ]
diff --git a/mk/check.mk b/mk/check.mk
index 19470a87ab4..4d9e47ec6cc 100644
--- a/mk/check.mk
+++ b/mk/check.mk
@@ -20,7 +20,7 @@ $(eval $(call DEF_SUBMODULE_TEST_RULES,$(submodule))))
define DEF_LIB_CRATE_TEST_RULES
servo-test-$(1): $$(DEPS_$(1))
@$$(call E, compile: servo-test-$(1))
- $$(Q)$$(RUSTC) $$(RFLAGS_$(1)) --test -o $$@ $$<
+ $$(Q)$$(RUSTC) $(strip $(CFG_RUSTC_FLAGS)) $$(RFLAGS_$(1)) --test -o $$@ $$<
.PHONY: check-servo-$(1)
check-servo-$(1): servo-test-$(1)
diff --git a/mk/doc.mk b/mk/doc.mk
index ef79d30362f..d9e3dca834c 100644
--- a/mk/doc.mk
+++ b/mk/doc.mk
@@ -4,7 +4,7 @@
RUSTDOC_HTML_IN_HEADER = $(S)/src/etc/rustdoc-style.html
-RUSTDOC_FLAGS = --html-in-header $(RUSTDOC_HTML_IN_HEADER)
+RUSTDOC_FLAGS = --extern url=$(B)/src/support/url/rust-url/liburl.rlib --html-in-header $(RUSTDOC_HTML_IN_HEADER)
RUSTDOC_DEPS = $(RUSTDOC_HTML_IN_HEADER)
# FIXME(#2924) These crates make rustdoc fail for undetermined reasons.
@@ -36,15 +36,24 @@ $(eval $(call DEF_SERVO_DOC_RULES,$(lib_crate))))
define DEF_SUBMODULES_DOC_RULES
+ifeq (,$(filter $(1),$(DOC_BLACKLISTED)))
+
.PHONY: doc-$(1)
doc-$(1): $$(DONE_DEPS_$(1)) $$(ROUGH_DEPS_$(1)) $$(RUSTC_DEP_$(1))
@$$(call E, rustdoc: $(1))
$$(Q) \
- RUSTDOC_FLAGS="$$(ENV_RLDFLAGS_$(1))" \
+ RUSTDOC_FLAGS="$$(ENV_RLDFLAGS_$(1)) $$(RUSTDOC_FLAGS)" \
RUSTDOC_TARGET="$$(CFG_BUILD_HOME)/doc" \
$$(ENV_EXT_DEPS_$(1)) \
$$(MAKE) -C $$(B)src/$$(PATH_$(1)) doc
+else
+
+.PHONY: doc-$(1)
+doc-$(1): $$(DONE_DEPS_$(1)) $$(ROUGH_DEPS_$(1)) $$(RUSTC_DEP_$(1))
+ @echo SKIPPED: blacklisted rustdoc: $$@
+
+endif
endef
# Only Rust submodules
diff --git a/src/compiler/rust-snapshot-hash b/src/compiler/rust-snapshot-hash
index b79086e176e..7497980738a 100644
--- a/src/compiler/rust-snapshot-hash
+++ b/src/compiler/rust-snapshot-hash
@@ -1 +1 @@
-5e4a171bd551433e8d58114744c4efbc4bc90ae4/rust-0.12.0-pre
+9de20198aedb3c3419ee503755e04bcc198d3a94/rust-0.12.0-pre
diff --git a/src/components/compositing/compositing.rs b/src/components/compositing/compositing.rs
index ef3875fc58d..314130919a7 100644
--- a/src/components/compositing/compositing.rs
+++ b/src/components/compositing/compositing.rs
@@ -35,7 +35,7 @@ extern crate servo_util = "util";
extern crate libc;
extern crate time;
-extern crate url = "url_";
+extern crate url;
#[cfg(target_os="macos")]
extern crate core_graphics;
diff --git a/src/components/compositing/constellation.rs b/src/components/compositing/constellation.rs
index 179327d9962..0cf02f2ce35 100644
--- a/src/components/compositing/constellation.rs
+++ b/src/components/compositing/constellation.rs
@@ -434,7 +434,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
});
idx.map(|idx| {
debug!("removing pending frame change for failed pipeline");
- force_pipeline_exit(&self.pending_frames.get(idx).after.pipeline);
+ force_pipeline_exit(&self.pending_frames[idx].after.pipeline);
self.pending_frames.remove(idx)
});
if idx.is_none() {
diff --git a/src/components/compositing/platform/common/glfw_windowing.rs b/src/components/compositing/platform/common/glfw_windowing.rs
index f3cb2fa02db..f612ab92931 100644
--- a/src/components/compositing/platform/common/glfw_windowing.rs
+++ b/src/components/compositing/platform/common/glfw_windowing.rs
@@ -162,7 +162,7 @@ impl WindowMethods<Application> for Window {
{
let mut event_queue = self.event_queue.borrow_mut();
if !event_queue.is_empty() {
- return event_queue.shift().unwrap();
+ return event_queue.remove(0).unwrap();
}
}
@@ -174,7 +174,7 @@ impl WindowMethods<Application> for Window {
if self.glfw_window.should_close() {
QuitWindowEvent
} else {
- self.event_queue.borrow_mut().shift().unwrap_or(IdleWindowEvent)
+ self.event_queue.borrow_mut().remove(0).unwrap_or(IdleWindowEvent)
}
}
diff --git a/src/components/compositing/platform/common/glut_windowing.rs b/src/components/compositing/platform/common/glut_windowing.rs
index 479d174e989..de90421ac85 100644
--- a/src/components/compositing/platform/common/glut_windowing.rs
+++ b/src/components/compositing/platform/common/glut_windowing.rs
@@ -161,12 +161,12 @@ impl WindowMethods<Application> for Window {
fn recv(&self) -> WindowEvent {
if !self.event_queue.borrow_mut().is_empty() {
- return self.event_queue.borrow_mut().shift().unwrap();
+ return self.event_queue.borrow_mut().remove(0).unwrap();
}
glut::check_loop();
- self.event_queue.borrow_mut().shift().unwrap_or(IdleWindowEvent)
+ self.event_queue.borrow_mut().remove(0).unwrap_or(IdleWindowEvent)
}
/// Sets the ready state.
diff --git a/src/components/embedding/command_line.rs b/src/components/embedding/command_line.rs
index 7bdcbfa52bf..d862d27706e 100644
--- a/src/components/embedding/command_line.rs
+++ b/src/components/embedding/command_line.rs
@@ -4,7 +4,7 @@
use libc::{calloc, c_int, size_t};
use std::mem;
-use std::str;
+use std::string;
use std::c_vec::CVec;
use string::{cef_string_userfree_utf16_alloc, cef_string_utf16_set};
use types::{cef_command_line_t, cef_string_t, cef_string_userfree_t, cef_string_utf16_t};
@@ -30,7 +30,7 @@ pub fn command_line_init(argc: c_int, argv: *const *const u8) {
unsafe {
let mut a: Vec<String> = vec!();
for i in range(0u, argc as uint) {
- a.push(str::raw::from_c_str(*argv.offset(i as int) as *const i8));
+ a.push(string::raw::from_buf(*argv.offset(i as int) as *const u8));
}
let cl = command_line_new();
(*cl).argc = argc;
diff --git a/src/components/gfx/display_list/mod.rs b/src/components/gfx/display_list/mod.rs
index 8af37e0b13c..21c8c8a25b5 100644
--- a/src/components/gfx/display_list/mod.rs
+++ b/src/components/gfx/display_list/mod.rs
@@ -19,7 +19,6 @@ use render_context::RenderContext;
use text::glyph::CharIndex;
use text::TextRun;
-use std::collections::Deque;
use collections::dlist::DList;
use collections::dlist;
use geom::{Point2D, Rect, SideOffsets2D, Size2D};
@@ -222,7 +221,7 @@ impl StackingContext {
}
let mut new_list = DisplayList::new();
- new_list.list.push_back(item);
+ new_list.list.push(item);
stacking_context.positioned_descendants.push((z_index, new_list))
}
}
@@ -320,7 +319,7 @@ impl DisplayList {
/// Appends the given item to the display list.
pub fn push(&mut self, item: DisplayItem) {
- self.list.push_back(item)
+ self.list.push(item)
}
/// Appends the given display list to this display list, consuming the other display list in
diff --git a/src/components/gfx/display_list/optimizer.rs b/src/components/gfx/display_list/optimizer.rs
index 54ea4227ce8..5e32238704c 100644
--- a/src/components/gfx/display_list/optimizer.rs
+++ b/src/components/gfx/display_list/optimizer.rs
@@ -6,7 +6,6 @@ use display_list::{BorderDisplayItemClass, ClipDisplayItem, ClipDisplayItemClass
use display_list::{DisplayList, ImageDisplayItemClass, LineDisplayItemClass};
use display_list::{PseudoDisplayItemClass, SolidColorDisplayItemClass, TextDisplayItemClass};
-use std::collections::Deque;
use collections::dlist::DList;
use geom::rect::Rect;
use servo_util::geometry::Au;
@@ -36,7 +35,7 @@ impl DisplayListOptimizer {
for item in display_list.iter() {
match self.process_display_item(item) {
None => {}
- Some(display_item) => result.push_back(display_item),
+ Some(display_item) => result.push(display_item),
}
}
DisplayList {
diff --git a/src/components/gfx/font.rs b/src/components/gfx/font.rs
index ed71b671c9c..0ee461b4418 100644
--- a/src/components/gfx/font.rs
+++ b/src/components/gfx/font.rs
@@ -4,7 +4,7 @@
use geom::{Point2D, Rect, Size2D};
use std::mem;
-use std::str;
+use std::string;
use std::rc::Rc;
use std::cell::RefCell;
use servo_util::cache::{Cache, HashCache};
@@ -53,7 +53,7 @@ pub trait FontTableTagConversions {
impl FontTableTagConversions for FontTableTag {
fn tag_to_str(&self) -> String {
unsafe {
- let reversed = str::raw::from_buf_len(mem::transmute(self), 4);
+ let reversed = string::raw::from_buf_len(mem::transmute(self), 4);
return String::from_chars([reversed.as_slice().char_at(3),
reversed.as_slice().char_at(2),
reversed.as_slice().char_at(1),
@@ -179,7 +179,7 @@ impl FontGroup {
assert!(self.fonts.len() > 0);
// TODO(Issue #177): Actually fall back through the FontGroup when a font is unsuitable.
- TextRun::new(&mut *self.fonts.get(0).borrow_mut(), text.clone())
+ TextRun::new(&mut *self.fonts[0].borrow_mut(), text.clone())
}
}
diff --git a/src/components/gfx/gfx.rs b/src/components/gfx/gfx.rs
index 3e3ad8a308e..a684f8201d0 100644
--- a/src/components/gfx/gfx.rs
+++ b/src/components/gfx/gfx.rs
@@ -29,7 +29,7 @@ extern crate servo_util = "util";
extern crate servo_msg = "msg";
extern crate style;
extern crate sync;
-extern crate url = "url_";
+extern crate url;
// Eventually we would like the shaper to be pluggable, as many operating systems have their own
// shapers. For now, however, this is a hard dependency.
diff --git a/src/components/gfx/platform/freetype/font.rs b/src/components/gfx/platform/freetype/font.rs
index 704dd9c8aa0..6488ceeac65 100644
--- a/src/components/gfx/platform/freetype/font.rs
+++ b/src/components/gfx/platform/freetype/font.rs
@@ -27,7 +27,7 @@ use freetype::tt_os2::TT_OS2;
use std::mem;
use std::ptr;
-use std::str;
+use std::string;
use sync::Arc;
@@ -120,10 +120,10 @@ impl FontHandleMethods for FontHandle {
self.font_data.clone()
}
fn family_name(&self) -> String {
- unsafe { str::raw::from_c_str(&*(*self.face).family_name) }
+ unsafe { string::raw::from_buf(&*(*self.face).family_name as *const i8 as *const u8) }
}
fn face_name(&self) -> String {
- unsafe { str::raw::from_c_str(&*FT_Get_Postscript_Name(self.face)) }
+ unsafe { string::raw::from_buf(&*FT_Get_Postscript_Name(self.face) as *const i8 as *const u8) }
}
fn is_italic(&self) -> bool {
unsafe { (*self.face).style_flags & FT_STYLE_FLAG_ITALIC != 0 }
diff --git a/src/components/gfx/platform/freetype/font_list.rs b/src/components/gfx/platform/freetype/font_list.rs
index afb9e555a43..87ce446381d 100644
--- a/src/components/gfx/platform/freetype/font_list.rs
+++ b/src/components/gfx/platform/freetype/font_list.rs
@@ -17,9 +17,9 @@ use fontconfig::fontconfig::{
};
use libc;
-use libc::{c_int, c_char};
+use libc::c_int;
use std::ptr;
-use std::str;
+use std::string;
pub fn get_available_families(callback: |String|) {
unsafe {
@@ -32,7 +32,7 @@ pub fn get_available_families(callback: |String|) {
let mut FC_FAMILY_C = "family".to_c_str();
let FC_FAMILY = FC_FAMILY_C.as_mut_ptr();
while FcPatternGetString(*font, FC_FAMILY, v, &mut family) == FcResultMatch {
- let family_name = str::raw::from_c_str(family as *const c_char);
+ let family_name = string::raw::from_buf(family as *const i8 as *const u8);
callback(family_name);
v += 1;
}
@@ -75,7 +75,7 @@ pub fn get_variations_for_family(family_name: &str, callback: |String|) {
let FC_FILE = FC_FILE_C.as_mut_ptr();
let mut file: *mut FcChar8 = ptr::mut_null();
let file = if FcPatternGetString(*font, FC_FILE, 0, &mut file) == FcResultMatch {
- str::raw::from_c_str(file as *const libc::c_char)
+ string::raw::from_buf(file as *const i8 as *const u8)
} else {
fail!();
};
diff --git a/src/components/gfx/text/glyph.rs b/src/components/gfx/text/glyph.rs
index 193f90643d2..fa1091f7766 100644
--- a/src/components/gfx/text/glyph.rs
+++ b/src/components/gfx/text/glyph.rs
@@ -379,7 +379,7 @@ impl<'a> DetailedGlyphStore {
.expect("Invalid index not found in detailed glyph lookup table!");
assert!(i + (detail_offset as uint) < self.detail_buffer.len());
- self.detail_buffer.get(i + (detail_offset as uint))
+ &self.detail_buffer[i + (detail_offset as uint)]
}
fn ensure_sorted(&mut self) {
@@ -451,7 +451,7 @@ pub enum GlyphInfo<'a> {
impl<'a> GlyphInfo<'a> {
pub fn id(self) -> GlyphId {
match self {
- SimpleGlyphInfo(store, entry_i) => store.entry_buffer.get(entry_i.to_uint()).id(),
+ SimpleGlyphInfo(store, entry_i) => store.entry_buffer[entry_i.to_uint()].id(),
DetailGlyphInfo(store, entry_i, detail_j) => {
store.detail_store.get_detailed_glyph_with_index(entry_i, detail_j).id
}
@@ -462,7 +462,7 @@ impl<'a> GlyphInfo<'a> {
// FIXME: Resolution conflicts with IteratorUtil trait so adding trailing _
pub fn advance(self) -> Au {
match self {
- SimpleGlyphInfo(store, entry_i) => store.entry_buffer.get(entry_i.to_uint()).advance(),
+ SimpleGlyphInfo(store, entry_i) => store.entry_buffer[entry_i.to_uint()].advance(),
DetailGlyphInfo(store, entry_i, detail_j) => {
store.detail_store.get_detailed_glyph_with_index(entry_i, detail_j).advance
}
@@ -560,7 +560,7 @@ impl<'a> GlyphStore {
self.detail_store.add_detailed_glyphs_for_entry(i, glyph);
GlyphEntry::complex(data.cluster_start, data.ligature_start, 1)
}
- }.adapt_character_flags_of_entry(*self.entry_buffer.get(i.to_uint()));
+ }.adapt_character_flags_of_entry(self.entry_buffer[i.to_uint()]);
*self.entry_buffer.get_mut(i.to_uint()) = entry;
}
@@ -586,7 +586,7 @@ impl<'a> GlyphStore {
first_glyph_data.ligature_start,
glyph_count)
}
- }.adapt_character_flags_of_entry(*self.entry_buffer.get(i.to_uint()));
+ }.adapt_character_flags_of_entry(self.entry_buffer[i.to_uint()]);
debug!("Adding multiple glyphs[idx={}, count={}]: {:?}", i, glyph_count, entry);
@@ -633,56 +633,56 @@ impl<'a> GlyphStore {
// getter methods
pub fn char_is_space(&self, i: CharIndex) -> bool {
assert!(i < self.char_len());
- self.entry_buffer.get(i.to_uint()).char_is_space()
+ self.entry_buffer[i.to_uint()].char_is_space()
}
pub fn char_is_tab(&self, i: CharIndex) -> bool {
assert!(i < self.char_len());
- self.entry_buffer.get(i.to_uint()).char_is_tab()
+ self.entry_buffer[i.to_uint()].char_is_tab()
}
pub fn char_is_newline(&self, i: CharIndex) -> bool {
assert!(i < self.char_len());
- self.entry_buffer.get(i.to_uint()).char_is_newline()
+ self.entry_buffer[i.to_uint()].char_is_newline()
}
pub fn is_ligature_start(&self, i: CharIndex) -> bool {
assert!(i < self.char_len());
- self.entry_buffer.get(i.to_uint()).is_ligature_start()
+ self.entry_buffer[i.to_uint()].is_ligature_start()
}
pub fn is_cluster_start(&self, i: CharIndex) -> bool {
assert!(i < self.char_len());
- self.entry_buffer.get(i.to_uint()).is_cluster_start()
+ self.entry_buffer[i.to_uint()].is_cluster_start()
}
pub fn can_break_before(&self, i: CharIndex) -> BreakType {
assert!(i < self.char_len());
- self.entry_buffer.get(i.to_uint()).can_break_before()
+ self.entry_buffer[i.to_uint()].can_break_before()
}
// setter methods
pub fn set_char_is_space(&mut self, i: CharIndex) {
assert!(i < self.char_len());
- let entry = *self.entry_buffer.get(i.to_uint());
+ let entry = self.entry_buffer[i.to_uint()];
*self.entry_buffer.get_mut(i.to_uint()) = entry.set_char_is_space();
}
pub fn set_char_is_tab(&mut self, i: CharIndex) {
assert!(i < self.char_len());
- let entry = *self.entry_buffer.get(i.to_uint());
+ let entry = self.entry_buffer[i.to_uint()];
*self.entry_buffer.get_mut(i.to_uint()) = entry.set_char_is_tab();
}
pub fn set_char_is_newline(&mut self, i: CharIndex) {
assert!(i < self.char_len());
- let entry = *self.entry_buffer.get(i.to_uint());
+ let entry = self.entry_buffer[i.to_uint()];
*self.entry_buffer.get_mut(i.to_uint()) = entry.set_char_is_newline();
}
pub fn set_can_break_before(&mut self, i: CharIndex, t: BreakType) {
assert!(i < self.char_len());
- let entry = *self.entry_buffer.get(i.to_uint());
+ let entry = self.entry_buffer[i.to_uint()];
*self.entry_buffer.get_mut(i.to_uint()) = entry.set_can_break_before(t);
}
}
@@ -738,12 +738,12 @@ impl<'a> Iterator<(CharIndex, GlyphInfo<'a>)> for GlyphIterator<'a> {
self.char_range.next().and_then(|i| {
self.char_index = i;
assert!(i < self.store.char_len());
- let entry = self.store.entry_buffer.get(i.to_uint());
+ let entry = self.store.entry_buffer[i.to_uint()];
if entry.is_simple() {
Some((self.char_index, SimpleGlyphInfo(self.store, i)))
} else {
// Fall back to the slow path.
- self.next_complex_glyph(entry, i)
+ self.next_complex_glyph(&entry, i)
}
})
}
diff --git a/src/components/gfx/text/shaping/harfbuzz.rs b/src/components/gfx/text/shaping/harfbuzz.rs
index b7aa417a83e..789126e767d 100644
--- a/src/components/gfx/text/shaping/harfbuzz.rs
+++ b/src/components/gfx/text/shaping/harfbuzz.rs
@@ -303,7 +303,7 @@ impl Shaper {
char_byte_span.begin(), char_byte_span.length(), glyph_span.begin());
while char_byte_span.end() != byte_max &&
- *byteToGlyph.get(char_byte_span.end() as uint) == NO_GLYPH {
+ byteToGlyph[char_byte_span.end() as uint] == NO_GLYPH {
debug!("Extending char byte span to include byte offset={} with no associated \
glyph", char_byte_span.end());
let range = text.char_range_at(char_byte_span.end() as uint);
@@ -315,8 +315,8 @@ impl Shaper {
// in cases where one char made several glyphs and left some unassociated chars.
let mut max_glyph_idx = glyph_span.end();
for i in char_byte_span.each_index() {
- if *byteToGlyph.get(i as uint) > NO_GLYPH {
- max_glyph_idx = cmp::max(*byteToGlyph.get(i as uint) as int + 1, max_glyph_idx);
+ if byteToGlyph[i as uint] > NO_GLYPH {
+ max_glyph_idx = cmp::max(byteToGlyph[i as uint] as int + 1, max_glyph_idx);
}
}
@@ -375,7 +375,7 @@ impl Shaper {
let mut covered_byte_span = char_byte_span.clone();
// extend, clipping at end of text range.
while covered_byte_span.end() < byte_max
- && *byteToGlyph.get(covered_byte_span.end() as uint) == NO_GLYPH {
+ && byteToGlyph[covered_byte_span.end() as uint] == NO_GLYPH {
let range = text.char_range_at(covered_byte_span.end() as uint);
drop(range.ch);
covered_byte_span.extend_to(range.next as int);
diff --git a/src/components/layout/block.rs b/src/components/layout/block.rs
index b4cc3a34ad9..23a402f24c9 100644
--- a/src/components/layout/block.rs
+++ b/src/components/layout/block.rs
@@ -28,7 +28,6 @@ use wrapper::ThreadSafeLayoutNode;
use style::ComputedValues;
use style::computed_values::{clear, position};
-use collections::Deque;
use collections::dlist::DList;
use geom::{Size2D, Point2D, Rect};
use gfx::color;
@@ -334,8 +333,10 @@ impl CandidateBSizeIterator {
status: InitialCandidateBSizeStatus,
}
}
+}
- pub fn next<'a>(&'a mut self) -> Option<(MaybeAuto, &'a mut Au)> {
+impl Iterator<MaybeAuto> for CandidateBSizeIterator {
+ fn next(&mut self) -> Option<MaybeAuto> {
self.status = match self.status {
InitialCandidateBSizeStatus => TryingBSizeCandidateBSizeStatus,
TryingBSizeCandidateBSizeStatus => {
@@ -360,12 +361,12 @@ impl CandidateBSizeIterator {
};
match self.status {
- TryingBSizeCandidateBSizeStatus => Some((self.block_size, &mut self.candidate_value)),
+ TryingBSizeCandidateBSizeStatus => Some(self.block_size),
TryingMaxCandidateBSizeStatus => {
- Some((Specified(self.max_block_size.unwrap()), &mut self.candidate_value))
+ Some(Specified(self.max_block_size.unwrap()))
}
TryingMinCandidateBSizeStatus => {
- Some((Specified(self.min_block_size), &mut self.candidate_value))
+ Some(Specified(self.min_block_size))
}
FoundCandidateBSizeStatus => None,
InitialCandidateBSizeStatus => fail!(),
@@ -970,8 +971,8 @@ impl BlockFlow {
let mut candidate_block_size_iterator = CandidateBSizeIterator::new(self.fragment.style(),
None);
- for (candidate_block_size, new_candidate_block_size) in candidate_block_size_iterator {
- *new_candidate_block_size = match candidate_block_size {
+ for candidate_block_size in candidate_block_size_iterator {
+ candidate_block_size_iterator.candidate_value = match candidate_block_size {
Auto => block_size,
Specified(value) => value
}
@@ -1086,8 +1087,8 @@ impl BlockFlow {
// Calculate content block-size, taking `min-block-size` and `max-block-size` into account.
let mut candidate_block_size_iterator = CandidateBSizeIterator::new(self.fragment.style(), None);
- for (candidate_block_size, new_candidate_block_size) in candidate_block_size_iterator {
- *new_candidate_block_size = match candidate_block_size {
+ for candidate_block_size in candidate_block_size_iterator {
+ candidate_block_size_iterator.candidate_value = match candidate_block_size {
Auto => content_block_size,
Specified(value) => value,
}
@@ -1230,7 +1231,7 @@ impl BlockFlow {
let mut candidate_block_size_iterator =
CandidateBSizeIterator::new(style, Some(containing_block_block_size));
- for (block_size_used_val, new_candidate_block_size) in candidate_block_size_iterator {
+ for block_size_used_val in candidate_block_size_iterator {
solution =
Some(BSizeConstraintSolution::solve_vertical_constraints_abs_nonreplaced(
block_size_used_val,
@@ -1242,7 +1243,7 @@ impl BlockFlow {
available_block_size,
static_b_offset));
- *new_candidate_block_size = solution.unwrap().block_size
+ candidate_block_size_iterator.candidate_value = solution.unwrap().block_size
}
}
}
@@ -1294,7 +1295,7 @@ impl BlockFlow {
background_color: color::rgba(1.0, 1.0, 1.0, 0.0),
scroll_policy: scroll_policy,
};
- self.base.layers.push_back(new_layer)
+ self.base.layers.push(new_layer)
}
/// Return the block-start outer edge of the hypothetical box for an absolute flow.
diff --git a/src/components/layout/flow_list.rs b/src/components/layout/flow_list.rs
index d474919d2ea..80d3998682a 100644
--- a/src/components/layout/flow_list.rs
+++ b/src/components/layout/flow_list.rs
@@ -8,16 +8,20 @@
use flow::{Flow, base, mut_base};
use flow_ref::FlowRef;
+use std::kinds::marker::ContravariantLifetime;
use std::mem;
use std::ptr;
pub type Link = Option<FlowRef>;
+
+// FIXME: use TraitObject instead of duplicating the type
#[allow(raw_pointer_deriving)]
#[deriving(Clone)]
-pub struct Rawlink {
- vtable: *const (),
+pub struct Rawlink<'a> {
+ vtable: *mut (),
obj: *mut (),
+ marker: ContravariantLifetime<'a>,
}
/// Doubly-linked list of Flows.
@@ -38,17 +42,17 @@ pub struct FlowListIterator<'a> {
/// Double-ended mutable FlowList iterator
pub struct MutFlowListIterator<'a> {
- _list: &'a mut FlowList,
- head: Rawlink,
+ head: Rawlink<'a>,
nelem: uint,
}
-impl Rawlink {
+impl<'a> Rawlink<'a> {
/// Like Option::None for Rawlink
- pub fn none() -> Rawlink {
+ pub fn none() -> Rawlink<'static> {
Rawlink {
- vtable: ptr::null(),
+ vtable: ptr::mut_null(),
obj: ptr::mut_null(),
+ marker: ContravariantLifetime,
}
}
@@ -57,7 +61,7 @@ impl Rawlink {
unsafe { mem::transmute(n) }
}
- pub unsafe fn resolve_mut(&self) -> Option<&mut Flow> {
+ pub unsafe fn resolve_mut(&self) -> Option<&'a mut Flow> {
if self.obj.is_null() {
None
} else {
@@ -201,14 +205,14 @@ impl FlowList {
/// Provide a forward iterator with mutable references
#[inline]
pub fn mut_iter<'a>(&'a mut self) -> MutFlowListIterator<'a> {
+ let len = self.len();
let head_raw = match self.list_head {
Some(ref mut h) => Rawlink::some(h.get()),
None => Rawlink::none(),
};
MutFlowListIterator {
- nelem: self.len(),
+ nelem: len,
head: head_raw,
- _list: self
}
}
}
@@ -269,7 +273,10 @@ impl<'a> Iterator<&'a mut Flow> for MutFlowListIterator<'a> {
self.head = match mut_base(next).next_sibling {
Some(ref mut node) => {
let x: &mut Flow = node.get_mut();
- Rawlink::some(x)
+ // NOTE: transmute needed here to break the link
+ // between x and next so that it is no longer
+ // borrowed.
+ mem::transmute(Rawlink::some(x))
}
None => Rawlink::none(),
};
diff --git a/src/components/layout/flow_ref.rs b/src/components/layout/flow_ref.rs
index 5c04b33b003..81bfbefcc50 100644
--- a/src/components/layout/flow_ref.rs
+++ b/src/components/layout/flow_ref.rs
@@ -13,6 +13,7 @@ use std::mem;
use std::ptr;
use std::sync::atomics::SeqCst;
+// FIXME: This should probably be a wrapper on TraitObject.
#[unsafe_no_drop_flag]
pub struct FlowRef {
vtable: *const u8,
diff --git a/src/components/layout/fragment.rs b/src/components/layout/fragment.rs
index 587d612bf19..ab004a3a17d 100644
--- a/src/components/layout/fragment.rs
+++ b/src/components/layout/fragment.rs
@@ -1130,7 +1130,7 @@ impl Fragment {
UnscannedTextFragment(_) => fail!("Unscanned text fragments should have been scanned by now!"),
ScannedTextFragment(ref text_fragment_info) => {
let mut new_line_pos = self.new_line_pos.clone();
- let cur_new_line_pos = new_line_pos.shift().unwrap();
+ let cur_new_line_pos = new_line_pos.remove(0).unwrap();
let inline_start_range = Range::new(text_fragment_info.range.begin(), cur_new_line_pos);
let inline_end_range = Range::new(text_fragment_info.range.begin() + cur_new_line_pos + CharIndex(1),
diff --git a/src/components/layout/inline.rs b/src/components/layout/inline.rs
index 94b2d46b8e8..e3aabadff35 100644
--- a/src/components/layout/inline.rs
+++ b/src/components/layout/inline.rs
@@ -719,7 +719,7 @@ impl InlineFragments {
/// A convenience function to return the fragment at a given index.
pub fn get<'a>(&'a self, index: uint) -> &'a Fragment {
- self.fragments.get(index)
+ &self.fragments[index]
}
/// A convenience function to return a mutable reference to the fragment at a given index.
diff --git a/src/components/layout/layout.rs b/src/components/layout/layout.rs
index 65acf09cc31..328e167b680 100644
--- a/src/components/layout/layout.rs
+++ b/src/components/layout/layout.rs
@@ -32,7 +32,7 @@ extern crate collections;
extern crate green;
extern crate libc;
extern crate sync;
-extern crate url = "url_";
+extern crate url;
pub mod block;
pub mod construct;
diff --git a/src/components/layout/layout_task.rs b/src/components/layout/layout_task.rs
index e90545ed6d6..83809aa137e 100644
--- a/src/components/layout/layout_task.rs
+++ b/src/components/layout/layout_task.rs
@@ -422,7 +422,7 @@ impl LayoutTask {
AddStylesheetMsg(sheet) => self.handle_add_stylesheet(sheet),
ReflowMsg(data) => {
profile(time::LayoutPerformCategory, self.time_profiler_chan.clone(), || {
- self.handle_reflow(data);
+ self.handle_reflow(&*data);
});
}
QueryMsg(query) => {
@@ -617,8 +617,10 @@ impl LayoutTask {
/// The high-level routine that performs layout tasks.
fn handle_reflow(&mut self, data: &Reflow) {
// FIXME: Isolate this transmutation into a "bridge" module.
+ // FIXME(rust#16366): The following line had to be moved because of a
+ // rustc bug. It should be in the next unsafe block.
+ let mut node: JS<Node> = unsafe { JS::from_trusted_node_address(data.document_root) };
let node: &mut LayoutNode = unsafe {
- let mut node: JS<Node> = JS::from_trusted_node_address(data.document_root);
mem::transmute(&mut node)
};
@@ -673,7 +675,7 @@ impl LayoutTask {
let mut applicable_declarations = ApplicableDeclarations::new();
let mut applicable_declarations_cache = ApplicableDeclarationsCache::new();
let mut style_sharing_candidate_cache = StyleSharingCandidateCache::new();
- drop(node.recalc_style_for_subtree(self.stylist,
+ drop(node.recalc_style_for_subtree(&*self.stylist,
&mut layout_ctx,
font_context_opt.take_unwrap(),
&mut applicable_declarations,
diff --git a/src/components/layout/parallel.rs b/src/components/layout/parallel.rs
index 2583f345d02..aa184cafda6 100644
--- a/src/components/layout/parallel.rs
+++ b/src/components/layout/parallel.rs
@@ -218,7 +218,9 @@ fn recalc_style_for_node(unsafe_layout_node: UnsafeLayoutNode,
let layout_context = unsafe { &mut **proxy.user_data() };
// Get a real layout node.
- let node: LayoutNode = layout_node_from_unsafe_layout_node(&unsafe_layout_node);
+ let node: LayoutNode = unsafe {
+ layout_node_from_unsafe_layout_node(&unsafe_layout_node)
+ };
// Initialize layout data.
//
@@ -309,7 +311,9 @@ fn construct_flows(mut unsafe_layout_node: UnsafeLayoutNode,
let layout_context = unsafe { &mut **proxy.user_data() };
// Get a real layout node.
- let node: LayoutNode = layout_node_from_unsafe_layout_node(&unsafe_layout_node);
+ let node: LayoutNode = unsafe {
+ layout_node_from_unsafe_layout_node(&unsafe_layout_node)
+ };
// Construct flows for this node.
{
diff --git a/src/components/layout/table.rs b/src/components/layout/table.rs
index 4f66564d995..db6993c2a5e 100644
--- a/src/components/layout/table.rs
+++ b/src/components/layout/table.rs
@@ -203,7 +203,7 @@ impl Flow for TableFlow {
debug!("table until the previous row has {} column(s) and this row has {} column(s)",
num_cols, num_child_cols);
for i in range(num_cols, num_child_cols) {
- self.col_inline_sizes.push( *kid_col_inline_sizes.get(i) );
+ self.col_inline_sizes.push((*kid_col_inline_sizes)[i]);
}
},
AutoLayout => {
@@ -217,9 +217,9 @@ impl Flow for TableFlow {
num_cols, num_child_cols);
for i in range(num_cols, num_child_cols) {
self.col_inline_sizes.push(Au::new(0));
- let new_kid_min = *kid.col_min_inline_sizes().get(i);
+ let new_kid_min = kid.col_min_inline_sizes()[i];
self.col_min_inline_sizes.push( new_kid_min );
- let new_kid_pref = *kid.col_pref_inline_sizes().get(i);
+ let new_kid_pref = kid.col_pref_inline_sizes()[i];
self.col_pref_inline_sizes.push( new_kid_pref );
min_inline_size = min_inline_size + new_kid_min;
pref_inline_size = pref_inline_size + new_kid_pref;
diff --git a/src/components/layout/table_rowgroup.rs b/src/components/layout/table_rowgroup.rs
index 0cfd3f080a7..b39bee19596 100644
--- a/src/components/layout/table_rowgroup.rs
+++ b/src/components/layout/table_rowgroup.rs
@@ -158,10 +158,10 @@ impl Flow for TableRowGroupFlow {
let num_child_cols = kid.col_min_inline_sizes().len();
for i in range(num_cols, num_child_cols) {
self.col_inline_sizes.push(Au::new(0));
- let new_kid_min = *kid.col_min_inline_sizes().get(i);
- self.col_min_inline_sizes.push(*kid.col_min_inline_sizes().get(i));
- let new_kid_pref = *kid.col_pref_inline_sizes().get(i);
- self.col_pref_inline_sizes.push(*kid.col_pref_inline_sizes().get(i));
+ let new_kid_min = kid.col_min_inline_sizes()[i];
+ self.col_min_inline_sizes.push(kid.col_min_inline_sizes()[i]);
+ let new_kid_pref = kid.col_pref_inline_sizes()[i];
+ self.col_pref_inline_sizes.push(kid.col_pref_inline_sizes()[i]);
min_inline_size = min_inline_size + new_kid_min;
pref_inline_size = pref_inline_size + new_kid_pref;
}
diff --git a/src/components/layout/text.rs b/src/components/layout/text.rs
index f0fc612ea32..40ce9193af3 100644
--- a/src/components/layout/text.rs
+++ b/src/components/layout/text.rs
@@ -207,9 +207,9 @@ impl TextRunScanner {
let mut new_ranges: Vec<Range<CharIndex>> = vec![];
let mut char_total = CharIndex(0);
for i in range(0, transformed_strs.len() as int) {
- let added_chars = CharIndex(transformed_strs.get(i as uint).as_slice().char_len() as int);
+ let added_chars = CharIndex(transformed_strs[i as uint].as_slice().char_len() as int);
new_ranges.push(Range::new(char_total, added_chars));
- run_str.push_str(transformed_strs.get(i as uint).as_slice());
+ run_str.push_str(transformed_strs[i as uint].as_slice());
char_total = char_total + added_chars;
}
@@ -219,7 +219,7 @@ impl TextRunScanner {
let clump = self.clump;
let run = if clump.length() != CharIndex(0) && run_str.len() > 0 {
Some(Arc::new(box TextRun::new(
- &mut *fontgroup.fonts.get(0).borrow_mut(),
+ &mut *fontgroup.fonts[0].borrow_mut(),
run_str.to_string())))
} else {
None
@@ -229,21 +229,21 @@ impl TextRunScanner {
debug!("TextRunScanner: pushing fragment(s) in range: {}", self.clump);
for i in clump.each_index() {
let logical_offset = i - self.clump.begin();
- let range = new_ranges.get(logical_offset.to_uint());
+ let range = new_ranges[logical_offset.to_uint()];
if range.length() == CharIndex(0) {
debug!("Elided an `UnscannedTextFragment` because it was zero-length after \
compression; {}", in_fragments[i.to_uint()]);
continue
}
- let new_text_fragment_info = ScannedTextFragmentInfo::new(run.get_ref().clone(), *range);
+ let new_text_fragment_info = ScannedTextFragmentInfo::new(run.get_ref().clone(), range);
let old_fragment = &in_fragments[i.to_uint()];
- let new_metrics = new_text_fragment_info.run.metrics_for_range(range);
+ let new_metrics = new_text_fragment_info.run.metrics_for_range(&range);
let bounding_box_size = LogicalSize::from_physical(
old_fragment.style.writing_mode, new_metrics.bounding_box.size);
let mut new_fragment = old_fragment.transform(
bounding_box_size, ScannedTextFragment(new_text_fragment_info));
- new_fragment.new_line_pos = new_line_positions.get(logical_offset.to_uint()).new_line_pos.clone();
+ new_fragment.new_line_pos = new_line_positions[logical_offset.to_uint()].new_line_pos.clone();
out_fragments.push(new_fragment)
}
}
@@ -263,7 +263,7 @@ impl TextRunScanner {
pub fn font_metrics_for_style(font_context: &mut FontContext, font_style: &FontStyle)
-> FontMetrics {
let fontgroup = font_context.get_layout_font_group_for_style(font_style);
- fontgroup.fonts.get(0).borrow().metrics.clone()
+ fontgroup.fonts[0].borrow().metrics.clone()
}
/// Converts a computed style to a font style used for rendering.
diff --git a/src/components/layout/wrapper.rs b/src/components/layout/wrapper.rs
index 9d1884579da..23332236e1f 100644
--- a/src/components/layout/wrapper.rs
+++ b/src/components/layout/wrapper.rs
@@ -322,7 +322,7 @@ impl<'a> Iterator<LayoutNode<'a>> for LayoutTreeIterator<'a> {
if self.index >= self.nodes.len() {
None
} else {
- let v = self.nodes.get(self.index).clone();
+ let v = self.nodes[self.index].clone();
self.index += 1;
Some(v)
}
@@ -768,9 +768,9 @@ pub fn layout_node_to_unsafe_layout_node(node: &LayoutNode) -> UnsafeLayoutNode
}
}
-pub fn layout_node_from_unsafe_layout_node(node: &UnsafeLayoutNode) -> LayoutNode {
- unsafe {
- let (node, _) = *node;
- mem::transmute(node)
- }
+// FIXME(#3044): This should be updated to use a real lifetime instead of
+// faking one.
+pub unsafe fn layout_node_from_unsafe_layout_node(node: &UnsafeLayoutNode) -> LayoutNode<'static> {
+ let (node, _) = *node;
+ mem::transmute(node)
}
diff --git a/src/components/main/servo.rs b/src/components/main/servo.rs
index c4ee380fbdc..9730a7f4191 100644
--- a/src/components/main/servo.rs
+++ b/src/components/main/servo.rs
@@ -26,7 +26,7 @@ extern crate gfx;
extern crate libc;
extern crate native;
extern crate rustrt;
-extern crate url = "url_";
+extern crate url;
#[cfg(not(test))]
use compositing::{CompositorChan, CompositorTask, Constellation};
@@ -55,7 +55,7 @@ use std::os;
#[cfg(not(test))]
use std::task::TaskBuilder;
#[cfg(not(test), target_os="android")]
-use std::str;
+use std::string;
#[cfg(not(test))]
use url::{Url, UrlParser};
@@ -78,7 +78,7 @@ pub extern "C" fn android_start(argc: int, argv: *const *const u8) -> int {
let mut args: Vec<String> = vec!();
for i in range(0u, argc as uint) {
unsafe {
- args.push(str::raw::from_c_str(*argv.offset(i as int) as *const i8));
+ args.push(string::raw::from_buf(*argv.offset(i as int) as *const u8));
}
}
diff --git a/src/components/msg/msg.rs b/src/components/msg/msg.rs
index 745b346731b..fc6b7f3dd47 100644
--- a/src/components/msg/msg.rs
+++ b/src/components/msg/msg.rs
@@ -11,7 +11,7 @@ extern crate layers;
extern crate serialize;
extern crate servo_util = "util";
extern crate std;
-extern crate url = "url_";
+extern crate url;
#[cfg(target_os="macos")]
extern crate core_foundation;
diff --git a/src/components/net/data_loader.rs b/src/components/net/data_loader.rs
index ac680c9390f..5d9fb776674 100644
--- a/src/components/net/data_loader.rs
+++ b/src/components/net/data_loader.rs
@@ -10,7 +10,7 @@ use serialize::base64::FromBase64;
use http::headers::test_utils::from_stream_with_str;
use http::headers::content_type::MediaType;
-use url::{percent_decode, OtherSchemeData};
+use url::{percent_decode, NonRelativeSchemeData};
pub fn factory() -> LoaderTask {
@@ -30,7 +30,7 @@ fn load(load_data: LoadData, start_chan: Sender<LoadResponse>) {
// Split out content type and data.
let mut scheme_data = match url.scheme_data {
- OtherSchemeData(scheme_data) => scheme_data,
+ NonRelativeSchemeData(scheme_data) => scheme_data,
_ => fail!("Expected a non-relative scheme URL.")
};
match url.query {
@@ -49,7 +49,7 @@ fn load(load_data: LoadData, start_chan: Sender<LoadResponse>) {
// ";base64" must come at the end of the content type, per RFC 2397.
// rust-http will fail to parse it because there's no =value part.
let mut is_base64 = false;
- let mut ct_str = *parts.get(0);
+ let mut ct_str = parts[0];
if ct_str.ends_with(";base64") {
is_base64 = true;
ct_str = ct_str.slice_to(ct_str.as_bytes().len() - 7);
@@ -61,7 +61,7 @@ fn load(load_data: LoadData, start_chan: Sender<LoadResponse>) {
metadata.set_content_type(&content_type);
let progress_chan = start_sending(start_chan, metadata);
- let bytes = percent_decode(parts.get(1).as_bytes());
+ let bytes = percent_decode(parts[1].as_bytes());
if is_base64 {
// FIXME(#2909): It’s unclear what to do with non-alphabet characters,
diff --git a/src/components/net/net.rs b/src/components/net/net.rs
index 497215e4ba2..9e52519319b 100644
--- a/src/components/net/net.rs
+++ b/src/components/net/net.rs
@@ -18,7 +18,7 @@ extern crate serialize;
extern crate servo_util = "util";
extern crate stb_image;
extern crate sync;
-extern crate url = "url_";
+extern crate url;
/// Image handling.
///
diff --git a/src/components/script/cors.rs b/src/components/script/cors.rs
index 556ac15eacd..3a3fd98ee90 100644
--- a/src/components/script/cors.rs
+++ b/src/components/script/cors.rs
@@ -165,12 +165,12 @@ impl CORSRequest {
.eq_ignore_ascii_case(name))
.map(|h| h.header_value())
}
- let methods_string = match find_header(response.headers, "Access-Control-Allow-Methods") {
+ let methods_string = match find_header(&*response.headers, "Access-Control-Allow-Methods") {
Some(s) => s,
_ => return error
};
let methods = methods_string.as_slice().split(',');
- let headers_string = match find_header(response.headers, "Access-Control-Allow-Headers") {
+ let headers_string = match find_header(&*response.headers, "Access-Control-Allow-Headers") {
Some(s) => s,
_ => return error
};
@@ -197,7 +197,7 @@ impl CORSRequest {
}
}
// Substep 7, 8
- let max_age: uint = find_header(response.headers, "Access-Control-Max-Age")
+ let max_age: uint = find_header(&*response.headers, "Access-Control-Max-Age")
.and_then(|h| FromStr::from_str(h.as_slice())).unwrap_or(0);
// Substep 9: Impose restrictions on max-age, if any (unimplemented)
// Substeps 10-12: Add a cache (partially implemented, XXXManishearth)
diff --git a/src/components/script/dom/bindings/callback.rs b/src/components/script/dom/bindings/callback.rs
index fb1dd9750dd..266abc3ab10 100644
--- a/src/components/script/dom/bindings/callback.rs
+++ b/src/components/script/dom/bindings/callback.rs
@@ -140,7 +140,8 @@ pub struct CallSetup {
impl CallSetup {
/// Performs the setup needed to make a call.
pub fn new<T: CallbackContainer>(callback: &T, handling: ExceptionHandling) -> CallSetup {
- let global = global_object_for_js_object(callback.callback()).root();
+ let global = global_object_for_js_object(callback.callback());
+ let global = global.root();
let cx = global.root_ref().get_cx();
CallSetup {
cx: cx,
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index a7b00cd52a7..6ff4eb8efc4 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2175,7 +2175,8 @@ class CGCallGenerator(CGThing):
if static:
glob = ""
else:
- glob = " let global = global_object_for_js_object(this.reflector().get_jsobject()).root();\n"
+ glob = " let global = global_object_for_js_object(this.reflector().get_jsobject());\n"\
+ " let global = global.root();\n"
self.cgRoot.append(CGGeneric(
"let result = match result {\n"
@@ -3915,7 +3916,8 @@ class CGClassConstructHook(CGAbstractExternMethod):
def definition_body(self):
preamble = CGGeneric("""\
-let global = global_object_for_js_object(JS_CALLEE(cx, vp).to_object()).root();
+let global = global_object_for_js_object(JS_CALLEE(cx, vp).to_object());
+let global = global.root();
""")
nativeName = MakeNativeName(self._ctor.identifier.name)
callGenerator = CGMethodCall(["&global.root_ref()"], nativeName, True,
@@ -4271,10 +4273,10 @@ class CGDictionary(CGThing):
return string.Template(
"impl<'a, 'b> ${selfName}<'a, 'b> {\n"
- " pub fn empty() -> ${selfName} {\n"
+ " pub fn empty() -> ${selfName}<'a, 'b> {\n"
" ${selfName}::new(ptr::mut_null(), NullValue()).unwrap()\n"
" }\n"
- " pub fn new(cx: *mut JSContext, val: JSVal) -> Result<${selfName}, ()> {\n"
+ " pub fn new(cx: *mut JSContext, val: JSVal) -> Result<${selfName}<'a, 'b>, ()> {\n"
" let object = if val.is_null_or_undefined() {\n"
" ptr::mut_null()\n"
" } else if val.is_object() {\n"
diff --git a/src/components/script/dom/bindings/proxyhandler.rs b/src/components/script/dom/bindings/proxyhandler.rs
index 8b5f130af1c..97fa373b24f 100644
--- a/src/components/script/dom/bindings/proxyhandler.rs
+++ b/src/components/script/dom/bindings/proxyhandler.rs
@@ -21,7 +21,7 @@ use js::{JSPROP_GETTER, JSPROP_ENUMERATE, JSPROP_READONLY, JSRESOLVE_QUALIFIED};
use libc;
use std::mem;
use std::ptr;
-use std::str;
+use std::string;
use std::mem::size_of;
static JSPROXYSLOT_EXPANDO: u32 = 0;
@@ -99,7 +99,7 @@ pub extern fn delete_(cx: *mut JSContext, proxy: *mut JSObject, id: jsid,
pub fn _obj_toString(cx: *mut JSContext, className: *const libc::c_char) -> *mut JSString {
unsafe {
- let name = str::raw::from_c_str(className);
+ let name = string::raw::from_buf(className as *const i8 as *const u8);
let nchars = "[object ]".len() + name.len();
let chars: *mut jschar = JS_malloc(cx, (nchars + 1) as libc::size_t * (size_of::<jschar>() as libc::size_t)) as *mut jschar;
if chars.is_null() {
diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs
index 4aa5c60601e..9674331ce39 100644
--- a/src/components/script/dom/bindings/utils.rs
+++ b/src/components/script/dom/bindings/utils.rs
@@ -670,7 +670,8 @@ pub fn global_object_for_js_object(obj: *mut JSObject) -> GlobalField {
/// Get the `JSContext` for the `JSRuntime` associated with the thread
/// this object is on.
fn cx_for_dom_reflector(obj: *mut JSObject) -> *mut JSContext {
- let global = global_object_for_js_object(obj).root();
+ let global = global_object_for_js_object(obj);
+ let global = global.root();
global.root_ref().get_cx()
}
diff --git a/src/components/script/dom/browsercontext.rs b/src/components/script/dom/browsercontext.rs
index 1a16d30290d..a54477a2ff8 100644
--- a/src/components/script/dom/browsercontext.rs
+++ b/src/components/script/dom/browsercontext.rs
@@ -35,7 +35,7 @@ impl BrowserContext {
}
pub fn active_document(&self) -> Temporary<Document> {
- Temporary::new(self.history.get(self.active_index).document.clone())
+ Temporary::new(self.history[self.active_index].document.clone())
}
pub fn active_window(&self) -> Temporary<Window> {
diff --git a/src/components/script/dom/clientrectlist.rs b/src/components/script/dom/clientrectlist.rs
index 86e7d3bd309..9926205b336 100644
--- a/src/components/script/dom/clientrectlist.rs
+++ b/src/components/script/dom/clientrectlist.rs
@@ -43,7 +43,7 @@ impl<'a> ClientRectListMethods for JSRef<'a, ClientRectList> {
fn Item(&self, index: u32) -> Option<Temporary<ClientRect>> {
let rects = &self.rects;
if index < rects.len() as u32 {
- Some(Temporary::new(rects.get(index as uint).clone()))
+ Some(Temporary::new(rects[index as uint].clone()))
} else {
None
}
diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs
index bd2c6baf5ec..e71db9bf578 100644
--- a/src/components/script/dom/document.rs
+++ b/src/components/script/dom/document.rs
@@ -173,7 +173,7 @@ impl<'a> DocumentHelpers for JSRef<'a, Document> {
let elem: Option<&JSRef<Element>> = ElementCast::to_ref(&node);
match elem {
Some(elem) => {
- if &*elements.get(head).root() == elem {
+ if &*(*elements)[head].root() == elem {
head = head + 1;
}
if new_node == &node || head == elements.len() {
@@ -365,7 +365,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
fn GetElementById(&self, id: DOMString) -> Option<Temporary<Element>> {
match self.idmap.deref().borrow().find_equiv(&id) {
None => None,
- Some(ref elements) => Some(Temporary::new(elements.get(0).clone())),
+ Some(ref elements) => Some(Temporary::new((*elements)[0].clone())),
}
}
diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs
index a6b894c3b5b..7e9ad337da0 100644
--- a/src/components/script/dom/element.rs
+++ b/src/components/script/dom/element.rs
@@ -323,7 +323,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
}
};
- self.deref().attrs.borrow().get(idx).root().set_value(set_type, value);
+ (*self.deref().attrs.borrow())[idx].root().set_value(set_type, value);
}
fn parse_attribute(&self, namespace: &Namespace, local_name: &str,
@@ -352,7 +352,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
}
if namespace == namespace::Null {
- let removed_raw_value = self.deref().attrs.borrow().get(idx).root().Value();
+ let removed_raw_value = (*self.deref().attrs.borrow())[idx].root().Value();
vtable_for(NodeCast::from_ref(self))
.before_remove_attr(local_name.to_string(), removed_raw_value);
}
diff --git a/src/components/script/dom/formdata.rs b/src/components/script/dom/formdata.rs
index c50f50fb71f..0de17b83107 100644
--- a/src/components/script/dom/formdata.rs
+++ b/src/components/script/dom/formdata.rs
@@ -70,7 +70,7 @@ impl<'a> FormDataMethods for JSRef<'a, FormData> {
fn Get(&self, name: DOMString) -> Option<FileOrString> {
if self.data.deref().borrow().contains_key_equiv(&name) {
- match self.data.deref().borrow().get(&name).get(0).clone() {
+ match self.data.deref().borrow().get(&name)[0].clone() {
StringData(ref s) => Some(eString(s.clone())),
FileData(ref f) => {
Some(eFile(f.clone()))
diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs
index 9b3bf18a99a..8ebd4a3f874 100644
--- a/src/components/script/dom/node.rs
+++ b/src/components/script/dom/node.rs
@@ -370,11 +370,11 @@ impl<'a> PrivateNodeHelpers for JSRef<'a, Node> {
}
}
-pub trait NodeHelpers {
- fn ancestors(&self) -> AncestorIterator;
- fn children(&self) -> AbstractNodeChildrenIterator;
- fn child_elements(&self) -> ChildElementIterator;
- fn following_siblings(&self) -> AbstractNodeChildrenIterator;
+pub trait NodeHelpers<'m, 'n> {
+ fn ancestors(&self) -> AncestorIterator<'n>;
+ fn children(&self) -> AbstractNodeChildrenIterator<'n>;
+ fn child_elements(&self) -> ChildElementIterator<'m, 'n>;
+ fn following_siblings(&self) -> AbstractNodeChildrenIterator<'n>;
fn is_in_doc(&self) -> bool;
fn is_inclusive_ancestor_of(&self, parent: &JSRef<Node>) -> bool;
fn is_parent_of(&self, child: &JSRef<Node>) -> bool;
@@ -412,9 +412,9 @@ pub trait NodeHelpers {
fn dump_indent(&self, indent: uint);
fn debug_str(&self) -> String;
- fn traverse_preorder<'a>(&'a self) -> TreeIterator<'a>;
- fn sequential_traverse_postorder<'a>(&'a self) -> TreeIterator<'a>;
- fn inclusively_following_siblings<'a>(&'a self) -> AbstractNodeChildrenIterator<'a>;
+ fn traverse_preorder(&self) -> TreeIterator<'n>;
+ fn sequential_traverse_postorder(&self) -> TreeIterator<'n>;
+ fn inclusively_following_siblings(&self) -> AbstractNodeChildrenIterator<'n>;
fn to_trusted_node_address(&self) -> TrustedNodeAddress;
@@ -427,7 +427,7 @@ pub trait NodeHelpers {
fn remove_self(&self);
}
-impl<'a> NodeHelpers for JSRef<'a, Node> {
+impl<'m, 'n> NodeHelpers<'m, 'n> for JSRef<'n, Node> {
/// Dumps the subtree rooted at this node, for debugging.
fn dump(&self) {
self.dump_indent(0);
@@ -550,20 +550,20 @@ impl<'a> NodeHelpers for JSRef<'a, Node> {
}
/// Iterates over this node and all its descendants, in preorder.
- fn traverse_preorder<'a>(&'a self) -> TreeIterator<'a> {
+ fn traverse_preorder(&self) -> TreeIterator<'n> {
let mut nodes = vec!();
gather_abstract_nodes(self, &mut nodes, false);
TreeIterator::new(nodes)
}
/// Iterates over this node and all its descendants, in postorder.
- fn sequential_traverse_postorder<'a>(&'a self) -> TreeIterator<'a> {
+ fn sequential_traverse_postorder(&self) -> TreeIterator<'n> {
let mut nodes = vec!();
gather_abstract_nodes(self, &mut nodes, true);
TreeIterator::new(nodes)
}
- fn inclusively_following_siblings<'a>(&'a self) -> AbstractNodeChildrenIterator<'a> {
+ fn inclusively_following_siblings(&self) -> AbstractNodeChildrenIterator<'n> {
AbstractNodeChildrenIterator {
current_node: Some(self.clone()),
}
@@ -573,7 +573,7 @@ impl<'a> NodeHelpers for JSRef<'a, Node> {
self == parent || parent.ancestors().any(|ancestor| &ancestor == self)
}
- fn following_siblings(&self) -> AbstractNodeChildrenIterator {
+ fn following_siblings(&self) -> AbstractNodeChildrenIterator<'n> {
AbstractNodeChildrenIterator {
current_node: self.next_sibling().root().map(|next| next.deref().clone()),
}
@@ -659,7 +659,7 @@ impl<'a> NodeHelpers for JSRef<'a, Node> {
Ok(NodeList::new_simple_list(&window.root_ref(), nodes))
}
- fn ancestors(&self) -> AncestorIterator {
+ fn ancestors(&self) -> AncestorIterator<'n> {
AncestorIterator {
current: self.parent_node.get().map(|node| (*node.root()).clone()),
}
@@ -677,13 +677,13 @@ impl<'a> NodeHelpers for JSRef<'a, Node> {
self.owner_doc().root().is_html_document
}
- fn children(&self) -> AbstractNodeChildrenIterator {
+ fn children(&self) -> AbstractNodeChildrenIterator<'n> {
AbstractNodeChildrenIterator {
current_node: self.first_child.get().map(|node| (*node.root()).clone()),
}
}
- fn child_elements(&self) -> ChildElementIterator {
+ fn child_elements(&self) -> ChildElementIterator<'m, 'n> {
self.children()
.filter(|node| {
node.is_element()
@@ -858,7 +858,8 @@ impl<'a> Iterator<JSRef<'a, Node>> for TreeIterator<'a> {
if self.index >= self.nodes.len() {
None
} else {
- let v = self.nodes.get(self.index).clone();
+ let v = self.nodes[self.index];
+ let v = v.clone();
self.index += 1;
Some(v)
}
@@ -886,7 +887,7 @@ impl NodeIterator {
}
}
- fn next_child<'b>(&self, node: &JSRef<'b, Node>) -> Option<JSRef<Node>> {
+ fn next_child<'b>(&self, node: &JSRef<'b, Node>) -> Option<JSRef<'b, Node>> {
if !self.include_descendants_of_void && node.is_element() {
let elem: &JSRef<Element> = ElementCast::to_ref(node).unwrap();
if elem.deref().is_void() {
@@ -901,7 +902,7 @@ impl NodeIterator {
}
impl<'a> Iterator<JSRef<'a, Node>> for NodeIterator {
- fn next(&mut self) -> Option<JSRef<Node>> {
+ fn next(&mut self) -> Option<JSRef<'a, Node>> {
self.current_node = match self.current_node.as_ref().map(|node| node.root()) {
None => {
if self.include_start {
@@ -1090,9 +1091,11 @@ impl Node {
return Err(HierarchyRequest);
}
match child {
- Some(ref child) if child.inclusively_following_siblings()
- .any(|child| child.is_doctype()) => {
- return Err(HierarchyRequest);
+ Some(ref child) => {
+ if child.inclusively_following_siblings()
+ .any(|child| child.is_doctype()) {
+ return Err(HierarchyRequest)
+ }
}
_ => (),
}
@@ -1109,9 +1112,11 @@ impl Node {
return Err(HierarchyRequest);
}
match child {
- Some(ref child) if child.inclusively_following_siblings()
- .any(|child| child.is_doctype()) => {
- return Err(HierarchyRequest);
+ Some(ref child) => {
+ if child.inclusively_following_siblings()
+ .any(|child| child.is_doctype()) {
+ return Err(HierarchyRequest)
+ }
}
_ => (),
}
diff --git a/src/components/script/dom/nodelist.rs b/src/components/script/dom/nodelist.rs
index 61a9884e9a9..424eb09416c 100644
--- a/src/components/script/dom/nodelist.rs
+++ b/src/components/script/dom/nodelist.rs
@@ -59,7 +59,7 @@ impl<'a> NodeListMethods for JSRef<'a, NodeList> {
fn Item(&self, index: u32) -> Option<Temporary<Node>> {
match self.list_type {
_ if index >= self.Length() => None,
- Simple(ref elems) => Some(Temporary::new(elems.get(index as uint).clone())),
+ Simple(ref elems) => Some(Temporary::new(elems[index as uint].clone())),
Children(ref node) => {
let node = node.root();
node.deref().children().nth(index as uint)
diff --git a/src/components/script/dom/urlsearchparams.rs b/src/components/script/dom/urlsearchparams.rs
index 8c76e03a0b7..63fffe6bbf5 100644
--- a/src/components/script/dom/urlsearchparams.rs
+++ b/src/components/script/dom/urlsearchparams.rs
@@ -72,7 +72,7 @@ impl<'a> URLSearchParamsMethods for JSRef<'a, URLSearchParams> {
}
fn Get(&self, name: DOMString) -> Option<DOMString> {
- self.data.deref().borrow().find_equiv(&name).map(|v| v.get(0).clone())
+ self.data.deref().borrow().find_equiv(&name).map(|v| v[0].clone())
}
fn Has(&self, name: DOMString) -> bool {
diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs
index 91fdf1bd030..e759a87f48e 100644
--- a/src/components/script/html/hubbub_html_parser.rs
+++ b/src/components/script/html/hubbub_html_parser.rs
@@ -346,14 +346,8 @@ pub fn parse_html(page: &Page,
let comment: &JSRef<Node> = NodeCast::from_ref(&*comment);
unsafe { comment.to_hubbub_node() }
},
- create_doctype: |doctype: Box<hubbub::Doctype>| {
+ create_doctype: |box hubbub::Doctype { name: name, public_id: public_id, system_id: system_id, ..}: Box<hubbub::Doctype>| {
debug!("create doctype");
- let box hubbub::Doctype {
- name: name,
- public_id: public_id,
- system_id: system_id,
- force_quirks: _
- } = doctype;
// NOTE: tmp vars are workaround for lifetime issues. Both required.
let tmp_borrow = doc_cell.borrow();
let tmp = &*tmp_borrow;
@@ -410,16 +404,19 @@ pub fn parse_html(page: &Page,
// Handle CSS style sheets from <link> elements
ElementNodeTypeId(HTMLLinkElementTypeId) => {
match (rel, href) {
- (Some(ref rel), Some(ref href)) if rel.as_slice().split(HTML_SPACE_CHARACTERS.as_slice())
- .any(|s| {
- s.as_slice().eq_ignore_ascii_case("stylesheet")
- }) => {
- debug!("found CSS stylesheet: {:s}", *href);
- match UrlParser::new().base_url(base_url).parse(href.as_slice()) {
- Ok(url) => css_chan2.send(CSSTaskNewFile(
- UrlProvenance(url, resource_task.clone()))),
- Err(e) => debug!("Parsing url {:s} failed: {:s}", *href, e)
- };
+ (Some(ref rel), Some(ref href)) => {
+ if rel.as_slice()
+ .split(HTML_SPACE_CHARACTERS.as_slice())
+ .any(|s| {
+ s.as_slice().eq_ignore_ascii_case("stylesheet")
+ }) {
+ debug!("found CSS stylesheet: {:s}", *href);
+ match UrlParser::new().base_url(base_url).parse(href.as_slice()) {
+ Ok(url) => css_chan2.send(CSSTaskNewFile(
+ UrlProvenance(url, resource_task.clone()))),
+ Err(e) => debug!("Parsing url {:s} failed: {:?}", *href, e)
+ };
+ }
}
_ => {}
}
@@ -502,7 +499,7 @@ pub fn parse_html(page: &Page,
match UrlParser::new().base_url(base_url)
.parse(src.deref().value().as_slice()) {
Ok(new_url) => js_chan2.send(JSTaskNewFile(new_url)),
- Err(e) => debug!("Parsing url {:s} failed: {:s}", src.deref().Value(), e)
+ Err(e) => debug!("Parsing url {:s} failed: {:?}", src.deref().Value(), e)
};
}
None => {
@@ -554,7 +551,7 @@ pub fn parse_html(page: &Page,
}
}
-fn build_parser(node: hubbub::NodeDataPtr) -> hubbub::Parser {
+fn build_parser<'a>(node: hubbub::NodeDataPtr) -> hubbub::Parser<'a> {
let mut parser = hubbub::Parser::new("UTF-8", false);
parser.set_document_node(node);
parser.enable_scripting(true);
diff --git a/src/components/script/layout_interface.rs b/src/components/script/layout_interface.rs
index 892c64414c3..f36c3e83167 100644
--- a/src/components/script/layout_interface.rs
+++ b/src/components/script/layout_interface.rs
@@ -173,7 +173,7 @@ impl ScriptLayoutChan for OpaqueScriptLayoutChannel {
fn sender(&self) -> Sender<Msg> {
let &OpaqueScriptLayoutChannel((ref sender, _)) = self;
- (*sender.as_ref::<Sender<Msg>>().unwrap()).clone()
+ (*sender.downcast_ref::<Sender<Msg>>().unwrap()).clone()
}
fn receiver(self) -> Receiver<Msg> {
diff --git a/src/components/script/script.rs b/src/components/script/script.rs
index 51a7caf8527..1855a257932 100644
--- a/src/components/script/script.rs
+++ b/src/components/script/script.rs
@@ -41,7 +41,7 @@ extern crate servo_util = "util";
extern crate style;
extern crate sync;
extern crate servo_msg = "msg";
-extern crate url = "url_";
+extern crate url;
extern crate gfx;
pub mod cors;
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs
index d431bc368bf..2f7df8d6ddd 100644
--- a/src/components/script/script_task.rs
+++ b/src/components/script/script_task.rs
@@ -452,7 +452,7 @@ impl ScriptTask {
let new_page = {
let window_size = parent_page.window_size.deref().get();
Page::new(new_pipeline_id, Some(subpage_id),
- LayoutChan(layout_chan.as_ref::<Sender<layout_interface::Msg>>().unwrap().clone()),
+ LayoutChan(layout_chan.downcast_ref::<Sender<layout_interface::Msg>>().unwrap().clone()),
window_size,
parent_page.resource_task.deref().clone(),
self.constellation_chan.clone(),
diff --git a/src/components/script_traits/script_traits.rs b/src/components/script_traits/script_traits.rs
index 26837b91612..67d37fab7e8 100644
--- a/src/components/script_traits/script_traits.rs
+++ b/src/components/script_traits/script_traits.rs
@@ -11,7 +11,7 @@
extern crate geom;
extern crate servo_msg = "msg";
extern crate servo_net = "net";
-extern crate url = "url_";
+extern crate url;
extern crate std;
extern crate serialize;
diff --git a/src/components/style/selector_matching.rs b/src/components/style/selector_matching.rs
index 2ca288f2f6c..c48fe830264 100644
--- a/src/components/style/selector_matching.rs
+++ b/src/components/style/selector_matching.rs
@@ -994,42 +994,42 @@ mod tests {
#[test]
fn test_rule_ordering_same_specificity(){
let rules_list = get_mock_rules(["a.intro", "img.sidebar"]);
- let rule1 = rules_list.get(0).get(0).clone();
- let rule2 = rules_list.get(1).get(0).clone();
+ let rule1 = rules_list[0][0].clone();
+ let rule2 = rules_list[1][0].clone();
assert!(rule1.property < rule2.property, "The rule that comes later should win.");
}
#[test]
fn test_get_id_name(){
let rules_list = get_mock_rules([".intro", "#top"]);
- assert_eq!(SelectorMap::get_id_name(rules_list.get(0).get(0)), None);
- assert_eq!(SelectorMap::get_id_name(rules_list.get(1).get(0)), Some("top".to_string()));
+ assert_eq!(SelectorMap::get_id_name(&rules_list[0][0]), None);
+ assert_eq!(SelectorMap::get_id_name(&rules_list[1][0]), Some("top".to_string()));
}
#[test]
fn test_get_class_name(){
let rules_list = get_mock_rules([".intro.foo", "#top"]);
- assert_eq!(SelectorMap::get_class_name(rules_list.get(0).get(0)), Some("intro".to_string()));
- assert_eq!(SelectorMap::get_class_name(rules_list.get(1).get(0)), None);
+ assert_eq!(SelectorMap::get_class_name(&rules_list[0][0]), Some("intro".to_string()));
+ assert_eq!(SelectorMap::get_class_name(&rules_list[1][0]), None);
}
#[test]
fn test_get_element_name(){
let rules_list = get_mock_rules(["img.foo", "#top", "IMG", "ImG"]);
- assert_eq!(SelectorMap::get_element_name(rules_list.get(0).get(0)), Some("img".to_string()));
- assert_eq!(SelectorMap::get_element_name(rules_list.get(1).get(0)), None);
- assert_eq!(SelectorMap::get_element_name(rules_list.get(2).get(0)), Some("img".to_string()));
- assert_eq!(SelectorMap::get_element_name(rules_list.get(3).get(0)), Some("img".to_string()));
+ assert_eq!(SelectorMap::get_element_name(&rules_list[0][0]), Some("img".to_string()));
+ assert_eq!(SelectorMap::get_element_name(&rules_list[1][0]), None);
+ assert_eq!(SelectorMap::get_element_name(&rules_list[2][0]), Some("img".to_string()));
+ assert_eq!(SelectorMap::get_element_name(&rules_list[3][0]), Some("img".to_string()));
}
#[test]
fn test_insert(){
let rules_list = get_mock_rules([".intro.foo", "#top"]);
let mut selector_map = SelectorMap::new();
- selector_map.insert(rules_list.get(1).get(0).clone());
- assert_eq!(1, selector_map.id_hash.find_equiv(&("top")).unwrap().get(0).property.source_order);
- selector_map.insert(rules_list.get(0).get(0).clone());
- assert_eq!(0, selector_map.class_hash.find_equiv(&("intro")).unwrap().get(0).property.source_order);
+ selector_map.insert(rules_list[1][0].clone());
+ assert_eq!(1, selector_map.id_hash.find_equiv(&("top")).unwrap()[0].property.source_order);
+ selector_map.insert(rules_list[0][0].clone());
+ assert_eq!(0, selector_map.class_hash.find_equiv(&("intro")).unwrap()[0].property.source_order);
assert!(selector_map.class_hash.find_equiv(&("foo")).is_none());
}
}
diff --git a/src/components/style/style.rs b/src/components/style/style.rs
index f4c5ba56e7e..1c52bbb2771 100644
--- a/src/components/style/style.rs
+++ b/src/components/style/style.rs
@@ -19,7 +19,7 @@ extern crate geom;
extern crate num;
extern crate serialize;
extern crate sync;
-extern crate url = "url_";
+extern crate url;
extern crate cssparser;
extern crate encoding;
diff --git a/src/components/util/cache.rs b/src/components/util/cache.rs
index fd4a85161e0..1b159cea8c1 100644
--- a/src/components/util/cache.rs
+++ b/src/components/util/cache.rs
@@ -138,7 +138,7 @@ impl<K: Clone + PartialEq, V: Clone> LRUCache<K,V> {
let entry = self.entries.remove(pos);
self.entries.push(entry.unwrap());
}
- self.entries.get(last_index).ref1().clone()
+ self.entries[last_index].ref1().clone()
}
pub fn iter<'a>(&'a self) -> Items<'a,(K,V)> {
@@ -206,8 +206,8 @@ impl<K:Clone+PartialEq+Hash,V:Clone> SimpleHashCache<K,V> {
#[inline]
pub fn find_equiv<'a,Q:Hash+Equiv<K>>(&'a self, key: &Q) -> Option<&'a V> {
let bucket_index = self.bucket_for_key(key);
- match self.entries.get(bucket_index) {
- &Some((ref existing_key, ref value)) if key.equiv(existing_key) => Some(value),
+ match self.entries[bucket_index] {
+ Some((ref existing_key, ref value)) if key.equiv(existing_key) => Some(value),
_ => None,
}
}
@@ -221,8 +221,8 @@ impl<K:Clone+PartialEq+Hash,V:Clone> Cache<K,V> for SimpleHashCache<K,V> {
fn find(&mut self, key: &K) -> Option<V> {
let bucket_index = self.bucket_for_key(key);
- match self.entries.get(bucket_index) {
- &Some((ref existing_key, ref value)) if existing_key == key => Some((*value).clone()),
+ match self.entries[bucket_index] {
+ Some((ref existing_key, ref value)) if existing_key == key => Some((*value).clone()),
_ => None,
}
}
diff --git a/src/components/util/time.rs b/src/components/util/time.rs
index 754828c8390..4f282aa2648 100644
--- a/src/components/util/time.rs
+++ b/src/components/util/time.rs
@@ -198,7 +198,7 @@ impl TimeProfiler {
if data_len > 0 {
let (mean, median, min, max) =
(data.iter().map(|&x|x).sum() / (data_len as f64),
- *data.get(data_len / 2),
+ (*data)[data_len / 2],
data.iter().fold(f64::INFINITY, |a, &b| a.min(b)),
data.iter().fold(-f64::INFINITY, |a, &b| a.max(b)));
println!("{:-35s}: {:15.4f} {:15.4f} {:15.4f} {:15.4f} {:15u}",
diff --git a/src/components/util/workqueue.rs b/src/components/util/workqueue.rs
index b6b6da7bba2..5b27b4a5dab 100644
--- a/src/components/util/workqueue.rs
+++ b/src/components/util/workqueue.rs
@@ -222,7 +222,7 @@ impl<QueueData: Send, WorkData: Send> WorkQueue<QueueData, WorkData> {
for i in range(0, thread_count) {
for j in range(0, thread_count) {
if i != j {
- threads.get_mut(i).other_deques.push(infos.get(j).thief.clone())
+ threads.get_mut(i).other_deques.push(infos[j].thief.clone())
}
}
assert!(threads.get(i).other_deques.len() == thread_count - 1)
diff --git a/src/platform/android/servo-android-glue b/src/platform/android/servo-android-glue
-Subproject af4cd2acbc87e37681baf23c66fccd9aa6bae20
+Subproject 1b406788b5581e3a446326f1396ca50e628dd81
diff --git a/src/platform/linux/rust-fontconfig b/src/platform/linux/rust-fontconfig
-Subproject 2e6d5b189435f9f9118af5c2f06af3711a01a08
+Subproject 6d742cf825d0266562a9f0c9735ce95e89d053d
diff --git a/src/platform/linux/rust-freetype b/src/platform/linux/rust-freetype
-Subproject 746fb521517eb58340c63c760c05e994391b0e3
+Subproject 5aa1d323ab85c7f3c3a3a1585da53a54cf301b9
diff --git a/src/platform/linux/rust-xlib b/src/platform/linux/rust-xlib
-Subproject aa718dcd3a14277ecfd51af16d5e352c6efa124
+Subproject 79904fb42ff8a0e888f70fae336fbf6c11f1e6c
diff --git a/src/support/alert/rust-alert b/src/support/alert/rust-alert
-Subproject 41fa53d78296d35e8190dcf1514a58e9ca98c02
+Subproject 6fdfe1254a29f1c742cc25545313e3463161e62
diff --git a/src/support/azure/rust-azure b/src/support/azure/rust-azure
-Subproject 494309421daed6f1de77db350a36ac1a8faaef5
+Subproject 1f88c3efac0833ff038fdcba736000e9be17260
diff --git a/src/support/css/rust-cssparser b/src/support/css/rust-cssparser
-Subproject 64c3ee2ea7898686420b8a5fe170fe41555a550
+Subproject 918bae60d4703e3db7f306b6c4a09de0670b947
diff --git a/src/support/egl/rust-egl b/src/support/egl/rust-egl
-Subproject 876c98d1d803325a6e1e13bf71ce0b001ac39a9
+Subproject 5ba3f58283d5ad6307a654f8dd72cf866755b3b
diff --git a/src/support/geom/rust-geom b/src/support/geom/rust-geom
-Subproject 8fb37cc40e977977b82e42460eccbf4edffb87a
+Subproject b41f144a3a8b6388d0956f341bcffa5bbaecc89
diff --git a/src/support/glfw/glfw-rs b/src/support/glfw/glfw-rs
-Subproject 454d3b9f7b5e046ac61d26dee5aafb50cd44f60
+Subproject 12180ed055f9df2b28cee4bbbf26fc68b3c405f
diff --git a/src/support/harfbuzz/rust-harfbuzz b/src/support/harfbuzz/rust-harfbuzz
-Subproject 3722106a0d3af88da702cb21fdc997f23b4e5b8
+Subproject ee4c20f4b6bee1b360cb708fe24fdc8350cb80e
diff --git a/src/support/http/rust-http b/src/support/http/rust-http
-Subproject 4a89d9e01f178c7dd441ddae472526c9a6641d3
+Subproject 5c2bf7ad9e0893755800ae0ee25b196a43df529
diff --git a/src/support/hubbub/rust-hubbub b/src/support/hubbub/rust-hubbub
-Subproject 99036a8596ca78b9c36de815bd4b39f050b5e6f
+Subproject 0e6502e5b1bc795dbc4927bdb4616d9d7d68627
diff --git a/src/support/layers/rust-layers b/src/support/layers/rust-layers
-Subproject 6b5af96a1e95db3c4083a411855a592ac23a6fb
+Subproject b773ce447af68ed01e219639f593f28113b7673
diff --git a/src/support/opengles/rust-opengles b/src/support/opengles/rust-opengles
-Subproject a5cd4ef464ad86d81ecfb982ed18b9b9f8a0d38
+Subproject 4e5740761b2a143e7d3290a58ccabc89200a476
diff --git a/src/support/phf/rust-phf b/src/support/phf/rust-phf
-Subproject ddcc9bae5a9e6e6ea449044f102e41310239ada
+Subproject 6bcf4146652a9868bc64c2835f7770c8a7007e9
diff --git a/src/support/png/rust-png b/src/support/png/rust-png
-Subproject 7379a686661109407abfa808a8f85000344c1be
+Subproject 869ec5657a628a72cbe0fcf9969e6a28eba4bf1
diff --git a/src/support/sharegl/sharegl b/src/support/sharegl/sharegl
-Subproject b9de1811d78554659f0f720166331ca7fa73f8c
+Subproject ae080410feafcc52632859b5f5916f44630712f
diff --git a/src/support/spidermonkey/rust-mozjs b/src/support/spidermonkey/rust-mozjs
-Subproject 6e60003076ad9db70ecf1b46bb8d6c271a77360
+Subproject 3104cf76fc0ceffec78bcbf430faabd524864d2
diff --git a/src/support/stb-image/rust-stb-image b/src/support/stb-image/rust-stb-image
-Subproject 89631a6db2c4c87cfd9c17634e3337833c555e1
+Subproject cf5cd961f5d952501c21ce64d1fcc293144a96f
diff --git a/src/support/stringcache/string-cache b/src/support/stringcache/string-cache
-Subproject 826fb1a9f8a3a72349c7feaad4ea67cbb4170c5
+Subproject ef968ec053aa7cce7b5e0c422cac23a6d249ef7
diff --git a/src/support/url/Makefile.in b/src/support/url/Makefile.in
index c9ba0cebf37..d628a6dc4b8 100644
--- a/src/support/url/Makefile.in
+++ b/src/support/url/Makefile.in
@@ -12,11 +12,11 @@ SRC=$(shell find $(VPATH)/src -type f)
.PHONY: all
all: liburl.dummy
-liburl.dummy: src/url.rs $(SRC) $(EXT_DEPS)
+liburl.dummy: src/lib.rs $(SRC) $(EXT_DEPS)
$(RUSTC) $(RUSTFLAGS) $< --out-dir . --crate-type rlib
touch $@
-url-test: src/url.rs $(SRC)
+url-test: src/lib.rs $(SRC)
$(RUSTC) $(RUSTFLAGS) $< -o $@ --test
.PHONY: check
@@ -26,7 +26,7 @@ check: url-test
.PHONY: doc
doc: $(RUSTDOC_TARGET)/url/index.html
-$(RUSTDOC_TARGET)/url/index.html: src/url.rs $(SRC) $(EXT_DEPS)
+$(RUSTDOC_TARGET)/url/index.html: src/lib.rs $(SRC) $(EXT_DEPS)
$(RUSTDOC) $(RUSTDOC_FLAGS) $< -o $(RUSTDOC_TARGET)
.PHONY: clean
diff --git a/src/support/url/rust-url b/src/support/url/rust-url
-Subproject 05e77706496b5de1c457a0868d84dc56e0cb8d3
+Subproject 678bb4d52638b1cfdab78ef8e521566c9240fb1
diff --git a/src/test/harness/reftest/reftest.rs b/src/test/harness/reftest/reftest.rs
index 75b1ee96434..b074b4e75d3 100644
--- a/src/test/harness/reftest/reftest.rs
+++ b/src/test/harness/reftest/reftest.rs
@@ -113,17 +113,17 @@ fn parse_lists(file: &String, servo_args: &[String], render_mode: RenderMode) ->
3 => {
TestLine {
conditions: "",
- kind: *parts.get(0),
- file_left: *parts.get(1),
- file_right: *parts.get(2),
+ kind: parts[0],
+ file_left: parts[1],
+ file_right: parts[2],
}
},
4 => {
TestLine {
- conditions: *parts.get(0),
- kind: *parts.get(1),
- file_left: *parts.get(2),
- file_right: *parts.get(3),
+ conditions: parts[0],
+ kind: parts[1],
+ file_left: parts[2],
+ file_right: parts[3],
}
},
_ => {