summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2020-06-01 22:26:16 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-06-01 22:26:16 +0000
commit0fe7764608a031b4d1564ab2c3c539fe4bd74b2d (patch)
tree71c061ad10715a2ec101121ebe79e9c6777c8484
parent61061177c7a8c916f042f42ff3d295c7457dde7d (diff)
parentfae14c3aca987754edee8711c894a75d7a49e72f (diff)
downloadpaste-impl-0fe7764608a031b4d1564ab2c3c539fe4bd74b2d.tar.gz
Merge "Upgrade rust/crates/paste-impl to 0.1.15" am: fae14c3aca
Original change: undetermined Change-Id: I240eb45c4fae39e3bc42ee09a0233044d5e20266
-rw-r--r--.cargo_vcs_info.json2
-rw-r--r--Cargo.toml2
-rw-r--r--Cargo.toml.orig2
-rw-r--r--METADATA4
-rw-r--r--src/lib.rs26
5 files changed, 26 insertions, 10 deletions
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 1347e27..40fcd29 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
{
"git": {
- "sha1": "157559c3faf524ae24f8329537d2a763f6e18931"
+ "sha1": "b5ce9a40b201ffe985e13260f6b0fa9ef5330fd7"
}
}
diff --git a/Cargo.toml b/Cargo.toml
index 97a4cab..92a7a9a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,7 +13,7 @@
[package]
edition = "2018"
name = "paste-impl"
-version = "0.1.14"
+version = "0.1.15"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Implementation detail of the `paste` crate"
license = "MIT OR Apache-2.0"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 80d2071..72a12ad 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
[package]
name = "paste-impl"
-version = "0.1.14"
+version = "0.1.15"
authors = ["David Tolnay <dtolnay@gmail.com>"]
edition = "2018"
license = "MIT OR Apache-2.0"
diff --git a/METADATA b/METADATA
index 2b0d5de..4cb5af3 100644
--- a/METADATA
+++ b/METADATA
@@ -9,11 +9,11 @@ third_party {
type: GIT
value: "https://github.com/dtolnay/paste"
}
- version: "0.1.14"
+ version: "0.1.15"
license_type: NOTICE
last_upgrade_date {
year: 2020
month: 5
- day: 25
+ day: 29
}
}
diff --git a/src/lib.rs b/src/lib.rs
index 1c762d9..2feee4c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -56,15 +56,14 @@ fn parse(input: ParseStream, contains_paste: &mut bool) -> Result<TokenStream> {
let delimiter = group.delimiter();
let content = group.stream();
let span = group.span();
- let in_path = prev_colons || input.peek(Token![::]);
if delimiter == Delimiter::Bracket && is_paste_operation(&content) {
let segments = parse_bracket_as_segments.parse2(content)?;
let pasted = paste_segments(span, &segments)?;
pasted.to_tokens(&mut expanded);
*contains_paste = true;
- } else if is_none_delimited_single_ident_or_lifetime(delimiter, &content) {
+ } else if is_none_delimited_flat_group(delimiter, &content) {
content.to_tokens(&mut expanded);
- *contains_paste |= in_path;
+ *contains_paste = true;
} else {
let mut group_contains_paste = false;
let nested = (|input: ParseStream| parse(input, &mut group_contains_paste))
@@ -77,6 +76,7 @@ fn parse(input: ParseStream, contains_paste: &mut bool) -> Result<TokenStream> {
} else {
group.clone()
};
+ let in_path = prev_colons || input.peek(Token![::]);
if in_path && delimiter == Delimiter::None {
group.stream().to_tokens(&mut expanded);
*contains_paste = true;
@@ -99,7 +99,7 @@ fn is_paste_operation(input: &TokenStream) -> bool {
}
// https://github.com/dtolnay/paste/issues/26
-fn is_none_delimited_single_ident_or_lifetime(delimiter: Delimiter, input: &TokenStream) -> bool {
+fn is_none_delimited_flat_group(delimiter: Delimiter, input: &TokenStream) -> bool {
if delimiter != Delimiter::None {
return false;
}
@@ -108,20 +108,36 @@ fn is_none_delimited_single_ident_or_lifetime(delimiter: Delimiter, input: &Toke
enum State {
Init,
Ident,
+ Literal,
Apostrophe,
Lifetime,
+ Colon1,
+ Colon2,
}
let mut state = State::Init;
for tt in input.clone() {
state = match (state, &tt) {
(State::Init, TokenTree::Ident(_)) => State::Ident,
+ (State::Init, TokenTree::Literal(_)) => State::Literal,
(State::Init, TokenTree::Punct(punct)) if punct.as_char() == '\'' => State::Apostrophe,
(State::Apostrophe, TokenTree::Ident(_)) => State::Lifetime,
+ (State::Ident, TokenTree::Punct(punct))
+ if punct.as_char() == ':' && punct.spacing() == Spacing::Joint =>
+ {
+ State::Colon1
+ }
+ (State::Colon1, TokenTree::Punct(punct))
+ if punct.as_char() == ':' && punct.spacing() == Spacing::Alone =>
+ {
+ State::Colon2
+ }
+ (State::Colon2, TokenTree::Ident(_)) => State::Ident,
_ => return false,
};
}
- state == State::Ident || state == State::Lifetime
+
+ state == State::Ident || state == State::Literal || state == State::Lifetime
}
enum Segment {