if arg.ends_with(".rs") || arg.ends_with(".rc") {
(arg.slice_to(arg.len() - 3).to_owned(), copy *arg)
} else {
- (copy *arg, arg + ".rs")
+ (copy *arg, *arg + ".rs")
};
match compile_crate(filename, copy repl.binary) {
Some(_) => loaded_crates.push(crate),
use cmp::{TotalOrd, Ordering, Less, Equal, Greater, Eq, Ord, Equiv, TotalEq};
use super::{Str, eq_slice};
- impl<'self> Add<&'self str,~str> for ~str {
+ impl<'self> Add<&'self str,~str> for &'self str {
#[inline(always)]
fn add(&self, rhs: & &'self str) -> ~str {
- self.append((*rhs))
+ let mut ret = self.to_owned();
+ ret.push_str(*rhs);
+ ret
}
}
assert_eq!("abc".char_range_at_reverse(0).next, 0);
}
+ #[test]
+ fn test_add() {
+ macro_rules! t (
+ ($s1:expr, $s2:expr, $e:expr) => {
+ assert_eq!($s1 + $s2, $e);
+ assert_eq!($s1.to_owned() + $s2, $e);
+ assert_eq!($s1.to_managed() + $s2, $e);
+ }
+ );
+
+ t!("foo", "bar", ~"foobar");
+ t!("foo", @"bar", ~"foobar");
+ t!("foo", ~"bar", ~"foobar");
+ t!("ศไทย中", "华Việt Nam", ~"ศไทย中华Việt Nam");
+ t!("ศไทย中", @"华Việt Nam", ~"ศไทย中华Việt Nam");
+ t!("ศไทย中", ~"华Việt Nam", ~"ศไทย中华Việt Nam");
+ }
+
#[test]
fn test_iterator() {
use iterator::*;