From cdb910bd85e2aa56e59131f9b495b2d2e171b9a4 Mon Sep 17 00:00:00 2001 From: Margaret Meyerhofer Date: Mon, 11 Jun 2012 10:51:55 -0700 Subject: [PATCH] Added copies and pure functions to fix borrowck errors --- src/servo/dom/rcu.rs | 2 +- src/servo/gfx/geom.rs | 4 ++-- src/servo/layout/base.rs | 2 +- src/servo/layout/block.rs | 2 +- src/servo/layout/box_builder.rs | 5 +++-- src/servo/layout/inline.rs | 2 +- src/servo/parser/css_builder.rs | 5 +++-- src/servo/parser/lexer.rs | 7 ++++--- src/servo/util/tree.rs | 5 ++--- 9 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/servo/dom/rcu.rs b/src/servo/dom/rcu.rs index 867b9f58a88..8d723bcb093 100644 --- a/src/servo/dom/rcu.rs +++ b/src/servo/dom/rcu.rs @@ -97,7 +97,7 @@ impl private_methods for handle { fn set_rd_aux(t: *A) unsafe { (**self).rd_aux = t; } fn set_next_dirty(+h: handle) unsafe { (**self).next_dirty = h; } - fn is_null() -> bool { (*self).is_null() } + pure fn is_null() -> bool { (*self).is_null() } fn is_not_null() -> bool { (*self).is_not_null() } } diff --git a/src/servo/gfx/geom.rs b/src/servo/gfx/geom.rs index 303bf2e3f84..a66f842f336 100644 --- a/src/servo/gfx/geom.rs +++ b/src/servo/gfx/geom.rs @@ -32,10 +32,10 @@ fn zero_size_au() -> size { {width: au(0), height: au(0)} } -fn px_to_au(i: int) -> au { +pure fn px_to_au(i: int) -> au { au(i * 60) } -fn au_to_px(au: au) -> int { +pure fn au_to_px(au: au) -> int { *au / 60 } diff --git a/src/servo/layout/base.rs b/src/servo/layout/base.rs index aae5b8e0b45..7a499fc38d9 100644 --- a/src/servo/layout/base.rs +++ b/src/servo/layout/base.rs @@ -105,7 +105,7 @@ impl layout_methods for @box { fn reflow_intrinsic(size: geom::size) { self.bounds.size = copy size; - #debug["reflow_intrinsic size=%?", self.bounds]; + #debug["reflow_intrinsic size=%?", copy self.bounds]; } #[doc="Dumps the box tree, for debugging."] diff --git a/src/servo/layout/block.rs b/src/servo/layout/block.rs index fe63548187c..8aa43b19079 100644 --- a/src/servo/layout/block.rs +++ b/src/servo/layout/block.rs @@ -30,7 +30,7 @@ impl block_layout_methods for @box { self.bounds.size = {width: available_width, // FIXME height: au(current_height)}; - #debug["reflow_block size=%?", self.bounds]; + #debug["reflow_block size=%?", copy self.bounds]; } } diff --git a/src/servo/layout/box_builder.rs b/src/servo/layout/box_builder.rs index 13a45f2add2..51e27f599b2 100644 --- a/src/servo/layout/box_builder.rs +++ b/src/servo/layout/box_builder.rs @@ -10,6 +10,7 @@ import /*layout::*/base::{rd_tree_ops, wr_tree_ops}; import /*layout::*/style::style::{style_methods}; import /*layout::*/text::text_box; import util::tree; +import option::is_none; export box_builder_methods; @@ -130,7 +131,7 @@ impl methods for ctxt { } self.finish_anonymous_box_if_necessary(); - assert self.anon_box.is_none(); + assert is_none(self.anon_box); } #[doc=" @@ -138,7 +139,7 @@ impl methods for ctxt { anonymous box to the block. "] fn finish_anonymous_box_if_necessary() { - alt self.anon_box { + alt copy self.anon_box { none { /* Nothing to do. */ } some(b) { btree.add_child(self.parent_box, b); } } diff --git a/src/servo/layout/inline.rs b/src/servo/layout/inline.rs index ae2d4e4b6ee..9a25484a0ff 100644 --- a/src/servo/layout/inline.rs +++ b/src/servo/layout/inline.rs @@ -29,7 +29,7 @@ impl inline_layout_methods for @box { self.bounds.size = { width: available_width, height: au(current_height) }; - #debug["reflow_inline size=%?", self.bounds]; + #debug["reflow_inline size=%?", copy self.bounds]; } } diff --git a/src/servo/parser/css_builder.rs b/src/servo/parser/css_builder.rs index 01dd83fe951..b1c2e1d9273 100644 --- a/src/servo/parser/css_builder.rs +++ b/src/servo/parser/css_builder.rs @@ -9,19 +9,20 @@ import parser::lexer::css::{token, to_start_desc, to_end_desc, to_comma, to_elmt, to_attr, to_desc, to_eof}; import comm::recv; +import option::is_none; type token_reader = {stream : port, mut lookahead : option}; impl methods for token_reader { fn get() -> token { - alt self.lookahead { + alt copy self.lookahead { some(tok) { self.lookahead = none; tok } none { recv(self.stream) } } } fn unget(tok : token) { - assert self.lookahead.is_none(); + assert is_none(self.lookahead); self.lookahead = some(tok); } } diff --git a/src/servo/parser/lexer.rs b/src/servo/parser/lexer.rs index 8d621cca668..0ebd18e2399 100644 --- a/src/servo/parser/lexer.rs +++ b/src/servo/parser/lexer.rs @@ -2,6 +2,7 @@ import comm::{port, chan}; import html::html_methods; import css::css_methods; import dom::style; +import option::is_none; enum parse_state { ps_html_normal, @@ -43,7 +44,7 @@ impl u8_vec_methods for [u8] { impl util_methods for parser { fn get() -> char_or_eof { - alt self.lookahead { + alt copy self.lookahead { some(coe) { let rv = coe; self.lookahead = none; @@ -59,7 +60,7 @@ impl util_methods for parser { } fn unget(ch: u8) { - assert self.lookahead.is_none(); + assert is_none(self.lookahead); self.lookahead = some(coe_char(ch)); } @@ -316,7 +317,7 @@ mod css { } fn parse_css_element(c : u8) -> token { - assert self.lookahead.is_none(); + assert is_none(self.lookahead); /* Check for special attributes with an implied element, or a wildcard which is not a alphabet character.*/ diff --git a/src/servo/util/tree.rs b/src/servo/util/tree.rs index a82f822470a..38e734c715b 100644 --- a/src/servo/util/tree.rs +++ b/src/servo/util/tree.rs @@ -23,7 +23,7 @@ fn each_child>( let mut p = ops.with_tree_fields(node) { |f| f.first_child }; loop { - alt p { + alt copy p { none { ret; } some(c) { if !f(c) { ret; } @@ -54,11 +54,10 @@ fn add_child>( assert child_tf.next_sibling == none; ops.with_tree_fields(parent) { |parent_tf| - alt parent_tf.last_child { + alt copy parent_tf.last_child { none { parent_tf.first_child = some(child); } - some(lc) { let lc = lc; // satisfy alias checker ops.with_tree_fields(lc) { |lc_tf|