diff --git a/autotests/folding/test.rs.fold b/autotests/folding/test.rs.fold new file mode 100644 index 0000000..7e43837 --- /dev/null +++ b/autotests/folding/test.rs.fold @@ -0,0 +1,87 @@ +// Comment +/* Comment + */ + +// Identifiers +hellóñαωΑΩµo!(); +HellóñαωΑΩµ::Hello; +'hellóñαωΑΩµo + +pub use self::PathParameters::*; +pub use symbol::{Ident, Symbol as Name}; +use serialize::{self, Encoder, Decoder}; +use std::u32; + +#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Copy)] + +pub struct Lifetime { + pub id: NodeId, + pub span: Span, + pub bounds: Vec +} + +impl fmt::Debug for Lifetime { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "lifetime({}: {})", self.id, pprust::lifetime_to_string(self)) + } +} +impl<'a> PartialEq<&'a str> for Path { + fn eq(&self, string: &&'a str) -> bool { + self.segments.len() == 1 && self.segments[0].identifier.name == *string + } +} + +enum TraitBoundModifier { + None, + Maybe, +} + +union tests { + a: i128, + b: isize, +} + +#[valid types] +fn types() { + let num = 333_3_; + let num_u8: u8 = 333u8; + let num_u16: u16 = 333u16; + let num_u32: u32 = 333u32; + let num_u64: u64 = 333u64; + let num_u128: u128 = 333u128; + let num_usize: usize = 333usize; + let num_float: f32 = 333.45f32; + + let binary = 0b1_010; + let invalid_binary= 0b1_015; + + let octal = 0o21535; + let invalid_octal = 0o64_92; + + let hexadecimal = 0x73A2_F; + let invalid_hexadecimal = 0x7_3AY; + + let char1: char = 'a'; + let char2: char = '\n'; + let char3: char = '\u{123_AF}'; + let invalid_char1: char = '\y'; + let invalid_char2: char = '\324'; + let invalid_char3: char = '%%'; + let invalid_char4: char = '\n\dfd'; + let invalid_char5: char = 'aaaaa'; + let open_char: char = '&&&; + + let byte1: u8 = b'a'; + let byte2: u8 = b'\x13'; + let invalid_byte1: u8 = b'ab'; + let invalid_byte2: u8 = b'\b'; + let invalid_byte2: u8 = b'\u{123}'; + + let string: str = "hello \n \r \u{123_________fd_} \ + bye"; + let invalid_string: str = "hello \b \u{_123} \u{1234567} \ bye"; + let byte_string: str = b"hello \t \0 \u{123} \b bye"; + let raw_string1: str = r"hello \t \b"; + let raw_string2: str = r####"hello \n "### bye"########; + let raw_string3: str = br####"hello \n"####; +} diff --git a/autotests/html/test.rs.html b/autotests/html/test.rs.html new file mode 100644 index 0000000..dd4da52 --- /dev/null +++ b/autotests/html/test.rs.html @@ -0,0 +1,94 @@ + + + +test.rs + +
+// Comment
+/* Comment
+	*/
+
+// Identifiers
+hellóñαωΑΩµo!();
+HellóñαωΑΩµ::Hello;
+'hellóñαωΑΩµo
+
+pub use self::PathParameters::*;
+pub use symbol::{Ident, Symbol as Name};
+use serialize::{self, Encoder, Decoder};
+use std::u32;
+
+#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Copy)]
+
+pub struct Lifetime {
+	pub id: NodeId,
+	pub span: Span,
+	pub bounds: Vec<PathSegment>
+}
+
+impl fmt::Debug for Lifetime {
+	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+		write!(f, "lifetime({}: {})", self.id, pprust::lifetime_to_string(self))
+	}
+}
+impl<'a> PartialEq<&'a str> for Path {
+	fn eq(&self, string: &&'a str) -> bool {
+		self.segments.len() == 1 && self.segments[0].identifier.name == *string
+	}
+}
+
+enum TraitBoundModifier {
+	None,
+	Maybe,
+}
+
+union tests {
+	a: i128,
+	b: isize,
+}
+
+#[valid types]
+fn types() {
+	let num = 333_3_;
+	let num_u8: u8 = 333u8;
+	let num_u16: u16 = 333u16;
+	let num_u32: u32 = 333u32;
+	let num_u64: u64 = 333u64;
+	let num_u128: u128 = 333u128;
+	let num_usize: usize = 333usize;
+	let num_float: f32 = 333.45f32;
+
+	let binary = 0b1_010;
+	let invalid_binary= 0b1_015;
+
+	let octal = 0o21535;
+	let invalid_octal = 0o64_92;
+
+	let hexadecimal = 0x73A2_F;
+	let invalid_hexadecimal = 0x7_3AY;
+
+	let char1: char = 'a';
+	let char2: char = '\n';
+	let char3: char = '\u{123_AF}';
+	let invalid_char1: char = '\y';
+	let invalid_char2: char = '\324';
+	let invalid_char3: char = '%%';
+	let invalid_char4: char = '\n\dfd';
+	let invalid_char5: char = 'aaaaa';
+	let open_char: char = '&&&;
+
+	let byte1: u8 = b'a';
+	let byte2: u8 = b'\x13';
+	let invalid_byte1: u8 = b'ab';
+	let invalid_byte2: u8 = b'\b';
+	let invalid_byte2: u8 = b'\u{123}';
+
+	let string: str = "hello \n \r \u{123_________fd_} \
+						bye";
+	let invalid_string: str = "hello \b \u{_123} \u{1234567} \  bye";
+	let byte_string: str = b"hello \t \0 \u{123} \b bye";
+	let raw_string1: str = r"hello \t \b";
+	let raw_string2: str = r####"hello \n "### bye"########;
+	let raw_string3: str = br####"hello \n"####;
+}
+
diff --git a/autotests/input/test.rs b/autotests/input/test.rs new file mode 100644 index 0000000..ec0d188 --- /dev/null +++ b/autotests/input/test.rs @@ -0,0 +1,87 @@ +// Comment +/* Comment + */ + +// Identifiers +hellóñαωΑΩµo!(); +HellóñαωΑΩµ::Hello; +'hellóñαωΑΩµo + +pub use self::PathParameters::*; +pub use symbol::{Ident, Symbol as Name}; +use serialize::{self, Encoder, Decoder}; +use std::u32; + +#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Copy)] + +pub struct Lifetime { + pub id: NodeId, + pub span: Span, + pub bounds: Vec +} + +impl fmt::Debug for Lifetime { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "lifetime({}: {})", self.id, pprust::lifetime_to_string(self)) + } +} +impl<'a> PartialEq<&'a str> for Path { + fn eq(&self, string: &&'a str) -> bool { + self.segments.len() == 1 && self.segments[0].identifier.name == *string + } +} + +enum TraitBoundModifier { + None, + Maybe, +} + +union tests { + a: i128, + b: isize, +} + +#[valid types] +fn types() { + let num = 333_3_; + let num_u8: u8 = 333u8; + let num_u16: u16 = 333u16; + let num_u32: u32 = 333u32; + let num_u64: u64 = 333u64; + let num_u128: u128 = 333u128; + let num_usize: usize = 333usize; + let num_float: f32 = 333.45f32; + + let binary = 0b1_010; + let invalid_binary= 0b1_015; + + let octal = 0o21535; + let invalid_octal = 0o64_92; + + let hexadecimal = 0x73A2_F; + let invalid_hexadecimal = 0x7_3AY; + + let char1: char = 'a'; + let char2: char = '\n'; + let char3: char = '\u{123_AF}'; + let invalid_char1: char = '\y'; + let invalid_char2: char = '\324'; + let invalid_char3: char = '%%'; + let invalid_char4: char = '\n\dfd'; + let invalid_char5: char = 'aaaaa'; + let open_char: char = '&&&; + + let byte1: u8 = b'a'; + let byte2: u8 = b'\x13'; + let invalid_byte1: u8 = b'ab'; + let invalid_byte2: u8 = b'\b'; + let invalid_byte2: u8 = b'\u{123}'; + + let string: str = "hello \n \r \u{123_________fd_} \ + bye"; + let invalid_string: str = "hello \b \u{_123} \u{1234567} \ bye"; + let byte_string: str = b"hello \t \0 \u{123} \b bye"; + let raw_string1: str = r"hello \t \b"; + let raw_string2: str = r####"hello \n "### bye"########; + let raw_string3: str = br####"hello \n"####; +} diff --git a/autotests/reference/test.rs.ref b/autotests/reference/test.rs.ref new file mode 100644 index 0000000..c2b8ba3 --- /dev/null +++ b/autotests/reference/test.rs.ref @@ -0,0 +1,87 @@ +// Comment
+/* Comment
+ */
+
+// Identifiers
+hellóñαωΑΩµo!();
+HellóñαωΑΩµ::Hello;
+'hellóñαωΑΩµo
+
+pub use self::PathParameters::*;
+pub use symbol::{Ident, Symbol as Name};
+use serialize::{self, Encoder, Decoder};
+use std::u32;
+
+#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Copy)]
+
+pub struct Lifetime {
+ pub id: NodeId,
+ pub span: Span,
+ pub bounds: Vec
+}
+
+impl fmt::Debug for Lifetime {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "lifetime({}: {})", self.id, pprust::lifetime_to_string(self))
+ }
+}
+impl<'a> PartialEq<&'a str> for Path {
+ fn eq(&self, string: &&'a str) -> bool {
+ self.segments.len() == 1 && self.segments[0].identifier.name == *string
+ }
+}
+
+enum TraitBoundModifier {
+ None,
+ Maybe,
+}
+
+union tests {
+ a: i128,
+ b: isize,
+}
+
+#[valid types]
+fn types() {
+ let num = 333_3_;
+ let num_u8: u8 = 333u8;
+ let num_u16: u16 = 333u16;
+ let num_u32: u32 = 333u32;
+ let num_u64: u64 = 333u64;
+ let num_u128: u128 = 333u128;
+ let num_usize: usize = 333usize;
+ let num_float: f32 = 333.45f32;
+
+ let binary = 0b1_010;
+ let invalid_binary= 0b1_015;
+
+ let octal = 0o21535;
+ let invalid_octal = 0o64_92;
+
+ let hexadecimal = 0x73A2_F;
+ let invalid_hexadecimal = 0x7_3AY;
+
+ let char1: char = 'a';
+ let char2: char = '\n';
+ let char3: char = '\u{123_AF}';
+ let invalid_char1: char = '\y';
+ let invalid_char2: char = '\324';
+ let invalid_char3: char = '%%';
+ let invalid_char4: char = '\n\dfd';
+ let invalid_char5: char = 'aaaaa';
+ let open_char: char = '&&&;
+
+ let byte1: u8 = b'a';
+ let byte2: u8 = b'\x13';
+ let invalid_byte1: u8 = b'ab';
+ let invalid_byte2: u8 = b'\b';
+ let invalid_byte2: u8 = b'\u{123}';
+
+ let string: str = "hello \n \r \u{123_________fd_} \
+ bye";
+ let invalid_string: str = "hello \b \u{_123} \u{1234567} \ bye";
+ let byte_string: str = b"hello \t \0 \u{123} \b bye";
+ let raw_string1: str = r"hello \t \b";
+ let raw_string2: str = r####"hello \n "### bye"########;
+ let raw_string3: str = br####"hello \n"####;
+}
diff --git a/data/syntax/rust.xml b/data/syntax/rust.xml index 8fc8a76..6657cf2 100644 --- a/data/syntax/rust.xml +++ b/data/syntax/rust.xml @@ -1,366 +1,374 @@ - - + + + + ]> - + fn type abstract alignof as become box break const continue crate + default do else enum extern final for if impl in let loop macro match mod move mut offsetof override priv proc pub pure ref return Self self sizeof static struct super trait type typeof + union unsafe unsized use virtual where while yield + + AsMut + AsRef AsSlice CharExt Clone Copy Debug Decodable Default Display DoubleEndedIterator Drop Encodable Eq - Default + ExactSizeIterator Extend Fn FnMut FnOnce + From FromPrimitive Hash + Into + IntoIterator Iterator IteratorExt MutPtrExt Ord PartialEq PartialOrd PtrExt Rand + RustcDecodable + RustcEncodable Send Sized SliceConcatExt SliceExt Str StrExt Sync + ToOwned ToString bool - int isize - uint usize i8 i16 i32 i64 + i128 u8 u16 u32 u64 + u128 f32 f64 - float char str Option Result Self Box Vec String + Path + PathBuf c_float c_double c_void FILE fpos_t DIR dirent c_char c_schar c_uchar c_short c_ushort c_int c_uint c_long c_ulong size_t ptrdiff_t clock_t time_t c_longlong c_ulonglong intptr_t uintptr_t off_t dev_t ino_t pid_t mode_t ssize_t self true false Some None Ok Err Success Failure Cons Nil EXIT_FAILURE EXIT_SUCCESS RAND_MAX EOF SEEK_SET SEEK_CUR SEEK_END _IOFBF _IONBF _IOLBF BUFSIZ FOPEN_MAX FILENAME_MAX L_tmpnam TMP_MAX O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT O_EXCL O_TRUNC S_IFIFO S_IFCHR S_IFBLK S_IFDIR S_IFREG S_IFMT S_IEXEC S_IWRITE S_IREAD S_IRWXU S_IXUSR S_IWUSR S_IRUSR F_OK R_OK W_OK X_OK STDIN_FILENO STDOUT_FILENO STDERR_FILENO - - - - - + + + - - - + + + - + - + + - - - - - - - - - + + + + + + + - - - - - + + + + + - +