Update to syntex 0.50
diff --git a/Cargo.toml b/Cargo.toml
index b34f71e..7eae558 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -21,12 +21,12 @@
 [dependencies]
 clippy = { version = "0.*", optional = true }
 quote = { version = "0.3.0", optional = true }
-syntex_syntax = { version = "0.47.0", optional = true }
+syntex_syntax = { version = "0.50.0", optional = true }
 unicode-xid = { version = "0.0.3", optional = true }
 
 [dev-dependencies]
-syntex_pos = "0.47.0"
-syntex_syntax = "0.47.0"
+syntex_pos = "0.50.0"
+syntex_syntax = "0.50.0"
 tempdir = "0.3.5"
 time = "0.1.35"
 walkdir = "1.0.1"
diff --git a/src/registry.rs b/src/registry.rs
index 1d16805..24e1c6b 100644
--- a/src/registry.rs
+++ b/src/registry.rs
@@ -361,9 +361,8 @@
 
     let name = "syn".to_string();
     let source = tokens.to_string();
-    let cfg = Vec::new();
     let sess = ParseSess::new();
-    let krate = match parse::parse_crate_from_source_str(name, source, cfg, &sess) {
+    let krate = match parse::parse_crate_from_source_str(name, source, &sess) {
         Ok(krate) => krate,
         Err(mut err) => {
             err.emit();
diff --git a/tests/rust b/tests/rust
index f5a702d..fc2373c 160000
--- a/tests/rust
+++ b/tests/rust
@@ -1 +1 @@
-Subproject commit f5a702dc785760c74960007af389caa47546fa58
+Subproject commit fc2373c5a24646745dcbc14dc58889a9d8843f4e
diff --git a/tests/test_round_trip.rs b/tests/test_round_trip.rs
index 47c4aca..2d808b5 100644
--- a/tests/test_round_trip.rs
+++ b/tests/test_round_trip.rs
@@ -140,8 +140,7 @@
 
 fn syntex_parse<'a>(content: String, sess: &'a ParseSess) -> PResult<'a, ast::Crate> {
     let name = "test_round_trip".to_string();
-    let cfg = Vec::new();
-    parse::parse_crate_from_source_str(name, content, cfg, sess).map(respan_crate)
+    parse::parse_crate_from_source_str(name, content, sess).map(respan_crate)
 }
 
 fn respan_crate(krate: ast::Crate) -> ast::Crate {
@@ -370,7 +369,13 @@
                 Token::Literal(lit, repr) => Token::Literal(self.fold_lit(lit), repr),
                 Token::Ident(id) => Token::Ident(self.fold_ident(id)),
                 Token::Lifetime(id) => Token::Lifetime(self.fold_ident(id)),
-                Token::Interpolated(nt) => Token::Interpolated(self.fold_interpolated(nt)),
+                Token::Interpolated(nt) => {
+                    let nt = match Rc::try_unwrap(nt) {
+                        Ok(nt) => nt,
+                        Err(nt) => (*nt).clone(),
+                    };
+                    Token::Interpolated(Rc::new(self.fold_interpolated(nt)))
+                }
                 Token::SubstNt(ident) => Token::SubstNt(self.fold_ident(ident)),
                 Token::MatchNt(name, kind) => {
                     Token::MatchNt(self.fold_ident(name), self.fold_ident(kind))