diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-04-03 03:05:02 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-04-03 03:05:02 +0000 |
commit | ad2434ef54e2f8cbbbe0888c18d12873c3a1b04b (patch) | |
tree | 4f65437682237a2c6bbafef186110d3bed2fd832 | |
parent | 6fa8cef43029fa0b0ffc73b92d8fae432818736b (diff) | |
parent | c93282a9e490317571f250916b717b2279b7c2da (diff) | |
download | paste-android12-tests-release.tar.gz |
Snap for 7256110 from c93282a9e490317571f250916b717b2279b7c2da to sc-releaseandroid-vts-12.0_r9android-vts-12.0_r8android-vts-12.0_r7android-vts-12.0_r6android-vts-12.0_r5android-vts-12.0_r4android-vts-12.0_r3android-vts-12.0_r2android-vts-12.0_r12android-vts-12.0_r11android-vts-12.0_r10android-vts-12.0_r1android-security-12.0.0_r59android-security-12.0.0_r58android-security-12.0.0_r57android-security-12.0.0_r56android-security-12.0.0_r55android-security-12.0.0_r54android-security-12.0.0_r53android-security-12.0.0_r52android-security-12.0.0_r51android-security-12.0.0_r50android-security-12.0.0_r49android-security-12.0.0_r48android-security-12.0.0_r47android-security-12.0.0_r46android-security-12.0.0_r45android-security-12.0.0_r44android-security-12.0.0_r43android-security-12.0.0_r42android-security-12.0.0_r41android-security-12.0.0_r40android-security-12.0.0_r39android-security-12.0.0_r38android-security-12.0.0_r37android-security-12.0.0_r36android-security-12.0.0_r35android-security-12.0.0_r34android-security-11.0.0_r71android-platform-12.0.0_r9android-platform-12.0.0_r8android-platform-12.0.0_r7android-platform-12.0.0_r6android-platform-12.0.0_r5android-platform-12.0.0_r4android-platform-12.0.0_r31android-platform-12.0.0_r30android-platform-12.0.0_r3android-platform-12.0.0_r29android-platform-12.0.0_r28android-platform-12.0.0_r27android-platform-12.0.0_r26android-platform-12.0.0_r25android-platform-12.0.0_r24android-platform-12.0.0_r23android-platform-12.0.0_r22android-platform-12.0.0_r21android-platform-12.0.0_r20android-platform-12.0.0_r2android-platform-12.0.0_r19android-platform-12.0.0_r18android-platform-12.0.0_r17android-platform-12.0.0_r16android-platform-12.0.0_r15android-platform-12.0.0_r14android-platform-12.0.0_r13android-platform-12.0.0_r12android-platform-12.0.0_r11android-platform-12.0.0_r10android-platform-12.0.0_r1android-cts-12.0_r9android-cts-12.0_r8android-cts-12.0_r7android-cts-12.0_r6android-cts-12.0_r5android-cts-12.0_r4android-cts-12.0_r3android-cts-12.0_r2android-cts-12.0_r12android-cts-12.0_r11android-cts-12.0_r10android-cts-12.0_r1android-12.0.0_r9android-12.0.0_r8android-12.0.0_r34android-12.0.0_r33android-12.0.0_r31android-12.0.0_r30android-12.0.0_r3android-12.0.0_r25android-12.0.0_r2android-12.0.0_r11android-12.0.0_r10android-12.0.0_r1android12-tests-releaseandroid12-security-releaseandroid12-s5-releaseandroid12-s4-releaseandroid12-s3-releaseandroid12-s2-releaseandroid12-s1-releaseandroid12-releaseandroid12-platform-release
Change-Id: If7522348434a9f5599f04ee45737ccdf8cd185d5
-rw-r--r-- | .cargo_vcs_info.json | 2 | ||||
-rw-r--r-- | .clippy.toml | 1 | ||||
-rw-r--r-- | .github/workflows/ci.yml | 2 | ||||
-rw-r--r-- | Android.bp | 1 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | Cargo.toml.orig | 2 | ||||
-rw-r--r-- | METADATA | 10 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | src/attr.rs | 2 | ||||
-rw-r--r-- | src/lib.rs | 38 | ||||
-rw-r--r-- | tests/test_doc.rs | 23 |
11 files changed, 65 insertions, 20 deletions
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json index 5163423..bd3aebb 100644 --- a/.cargo_vcs_info.json +++ b/.cargo_vcs_info.json @@ -1,5 +1,5 @@ { "git": { - "sha1": "3eb762421182b53411e58ff93765b5604ed89c8b" + "sha1": "b38636e38862f1df2c7b167073b022fcc8819a05" } } diff --git a/.clippy.toml b/.clippy.toml new file mode 100644 index 0000000..3d30690 --- /dev/null +++ b/.clippy.toml @@ -0,0 +1 @@ +msrv = "1.31.0" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4412b64..dc09e20 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,4 +43,4 @@ jobs: steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@clippy - - run: cargo clippy -- -Dclippy::all + - run: cargo clippy -- -Dclippy::all -Dclippy::pedantic @@ -1,4 +1,5 @@ // This file is generated by cargo2android.py --run --dependencies. +// Do not modify this file as changes will be overridden on upgrade. package { default_applicable_licenses: ["external_rust_crates_paste_license"], @@ -13,7 +13,7 @@ [package] edition = "2018" name = "paste" -version = "1.0.4" +version = "1.0.5" authors = ["David Tolnay <dtolnay@gmail.com>"] description = "Macros for all your token pasting needs" readme = "README.md" diff --git a/Cargo.toml.orig b/Cargo.toml.orig index ec7baa1..782f2f4 100644 --- a/Cargo.toml.orig +++ b/Cargo.toml.orig @@ -1,6 +1,6 @@ [package] name = "paste" -version = "1.0.4" +version = "1.0.5" authors = ["David Tolnay <dtolnay@gmail.com>"] edition = "2018" license = "MIT OR Apache-2.0" @@ -7,13 +7,13 @@ third_party { } url { type: ARCHIVE - value: "https://static.crates.io/crates/paste/paste-1.0.4.crate" + value: "https://static.crates.io/crates/paste/paste-1.0.5.crate" } - version: "1.0.4" + version: "1.0.5" license_type: NOTICE last_upgrade_date { - year: 2020 - month: 12 - day: 9 + year: 2021 + month: 4 + day: 1 } } @@ -134,6 +134,8 @@ macro_rules! method_new { }; } +pub struct Paste {} + method_new!(Paste); // expands to #[doc = "Create a new `Paste` object"] ``` diff --git a/src/attr.rs b/src/attr.rs index be64a79..8626d11 100644 --- a/src/attr.rs +++ b/src/attr.rs @@ -63,7 +63,7 @@ pub fn expand_attr( let mut group_contains_paste = false; let mut expanded = TokenStream::new(); let mut nested_attr = TokenStream::new(); - for tt in group.stream().into_iter() { + for tt in group.stream() { match &tt { TokenTree::Punct(punct) if punct.as_char() == ',' => { expanded.extend(expand_attr( @@ -132,11 +132,17 @@ //! }; //! } //! -//! # struct Paste; +//! pub struct Paste {} +//! //! method_new!(Paste); // expands to #[doc = "Create a new `Paste` object"] //! ``` -#![allow(clippy::needless_doctest_main)] +#![allow( + clippy::doc_markdown, + clippy::module_name_repetitions, + clippy::needless_doctest_main, + clippy::too_many_lines +)] extern crate proc_macro; @@ -154,7 +160,8 @@ use std::panic; #[proc_macro] pub fn paste(input: TokenStream) -> TokenStream { let mut contains_paste = false; - match expand(input, &mut contains_paste) { + let flatten_single_interpolation = true; + match expand(input, &mut contains_paste, flatten_single_interpolation) { Ok(expanded) => expanded, Err(err) => err.to_compile_error(), } @@ -172,7 +179,11 @@ pub fn expr(input: TokenStream) -> TokenStream { paste(input) } -fn expand(input: TokenStream, contains_paste: &mut bool) -> Result<TokenStream> { +fn expand( + input: TokenStream, + contains_paste: &mut bool, + flatten_single_interpolation: bool, +) -> Result<TokenStream> { let mut expanded = TokenStream::new(); let mut lookbehind = Lookbehind::Other; let mut prev_none_group = None::<Group>; @@ -203,15 +214,22 @@ fn expand(input: TokenStream, contains_paste: &mut bool) -> Result<TokenStream> let tokens = pasted_to_tokens(pasted, span)?; expanded.extend(tokens); *contains_paste = true; - } else if delimiter == Delimiter::None && is_flat_group(&content) { + } else if flatten_single_interpolation + && delimiter == Delimiter::None + && is_single_interpolation_group(&content) + { expanded.extend(content); *contains_paste = true; } else { let mut group_contains_paste = false; - let mut nested = expand(content, &mut group_contains_paste)?; - if delimiter == Delimiter::Bracket - && (lookbehind == Lookbehind::Pound || lookbehind == Lookbehind::PoundBang) - { + let is_attribute = delimiter == Delimiter::Bracket + && (lookbehind == Lookbehind::Pound || lookbehind == Lookbehind::PoundBang); + let mut nested = expand( + content, + &mut group_contains_paste, + flatten_single_interpolation && !is_attribute, + )?; + if is_attribute { nested = expand_attr(nested, span, &mut group_contains_paste)? } let group = if group_contains_paste { @@ -262,7 +280,7 @@ enum Lookbehind { } // https://github.com/dtolnay/paste/issues/26 -fn is_flat_group(input: &TokenStream) -> bool { +fn is_single_interpolation_group(input: &TokenStream) -> bool { #[derive(PartialEq)] enum State { Init, diff --git a/tests/test_doc.rs b/tests/test_doc.rs index 1ceaf23..2e2b14d 100644 --- a/tests/test_doc.rs +++ b/tests/test_doc.rs @@ -52,3 +52,26 @@ fn test_case() { let expected = "HTTP GET!"; assert_eq!(doc, expected); } + +// https://github.com/dtolnay/paste/issues/63 +#[test] +fn test_stringify() { + macro_rules! create { + ($doc:expr) => { + paste! { + #[doc = $doc] + pub struct Struct; + } + }; + } + + macro_rules! forward { + ($name:ident) => { + create!(stringify!($name)); + }; + } + + forward!(documentation); + + let _ = Struct; +} |