Skip to content

Commit fdfc7f0

Browse files
committed
fix(shell): Switch to annotate snippets for warn/note
1 parent 642411f commit fdfc7f0

File tree

111 files changed

+689
-674
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+689
-674
lines changed

src/cargo/core/shell.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,12 +222,18 @@ impl Shell {
222222

223223
/// Prints an amber 'warning' message.
224224
pub fn warn<T: fmt::Display>(&mut self, message: T) -> CargoResult<()> {
225-
self.print(&"warning", Some(&message), &WARN, false)
225+
let report = &[annotate_snippets::Group::with_title(
226+
annotate_snippets::Level::WARNING.secondary_title(message.to_string()),
227+
)];
228+
self.print_report(report, false)
226229
}
227230

228231
/// Prints a cyan 'note' message.
229232
pub fn note<T: fmt::Display>(&mut self, message: T) -> CargoResult<()> {
230-
self.print(&"note", Some(&message), &NOTE, false)
233+
let report = &[annotate_snippets::Group::with_title(
234+
annotate_snippets::Level::NOTE.secondary_title(message.to_string()),
235+
)];
236+
self.print_report(report, false)
231237
}
232238

233239
/// Updates the verbosity of the shell.

tests/testsuite/alt_registry.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ fn publish_with_registry_dependency() {
350350
.with_stderr_data(str![[r#"
351351
[UPDATING] `alternative` index
352352
[WARNING] manifest has no description, license, license-file, documentation, homepage or repository.
353-
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
353+
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
354354
[PACKAGING] foo v0.0.1 ([ROOT]/foo)
355355
[UPDATING] `alternative` index
356356
[PACKAGED] 4 files, [FILE_SIZE]B ([FILE_SIZE]B compressed)
@@ -363,7 +363,7 @@ See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for
363363
[UPLOADING] foo v0.0.1 ([ROOT]/foo)
364364
[UPLOADED] foo v0.0.1 to registry `alternative`
365365
[NOTE] waiting for foo v0.0.1 to be available at registry `alternative`.
366-
You may press ctrl-c to skip waiting; the crate should be available shortly.
366+
You may press ctrl-c to skip waiting; the crate should be available shortly.
367367
[PUBLISHED] foo v0.0.1 at registry `alternative`
368368
369369
"#]])
@@ -517,7 +517,7 @@ fn publish_to_alt_registry() {
517517
.with_stderr_data(str![[r#"
518518
[UPDATING] `alternative` index
519519
[WARNING] manifest has no description, license, license-file, documentation, homepage or repository.
520-
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
520+
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
521521
[PACKAGING] foo v0.0.1 ([ROOT]/foo)
522522
[PACKAGED] 4 files, [FILE_SIZE]B ([FILE_SIZE]B compressed)
523523
[VERIFYING] foo v0.0.1 ([ROOT]/foo)
@@ -526,7 +526,7 @@ See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for
526526
[UPLOADING] foo v0.0.1 ([ROOT]/foo)
527527
[UPLOADED] foo v0.0.1 to registry `alternative`
528528
[NOTE] waiting for foo v0.0.1 to be available at registry `alternative`.
529-
You may press ctrl-c to skip waiting; the crate should be available shortly.
529+
You may press ctrl-c to skip waiting; the crate should be available shortly.
530530
[PUBLISHED] foo v0.0.1 at registry `alternative`
531531
532532
"#]])
@@ -595,7 +595,7 @@ fn publish_with_crates_io_dep() {
595595
.with_stderr_data(str![[r#"
596596
[UPDATING] `alternative` index
597597
[WARNING] manifest has no documentation, homepage or repository.
598-
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
598+
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
599599
[PACKAGING] foo v0.0.1 ([ROOT]/foo)
600600
[UPDATING] `dummy-registry` index
601601
[PACKAGED] 4 files, [FILE_SIZE]B ([FILE_SIZE]B compressed)
@@ -608,7 +608,7 @@ See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for
608608
[UPLOADING] foo v0.0.1 ([ROOT]/foo)
609609
[UPLOADED] foo v0.0.1 to registry `alternative`
610610
[NOTE] waiting for foo v0.0.1 to be available at registry `alternative`.
611-
You may press ctrl-c to skip waiting; the crate should be available shortly.
611+
You may press ctrl-c to skip waiting; the crate should be available shortly.
612612
[PUBLISHED] foo v0.0.1 at registry `alternative`
613613
614614
"#]])

tests/testsuite/artifact_dep.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2262,7 +2262,7 @@ fn publish_artifact_dep() {
22622262
[UPLOADING] foo v0.1.0 ([ROOT]/foo)
22632263
[UPLOADED] foo v0.1.0 to registry `crates-io`
22642264
[NOTE] waiting for foo v0.1.0 to be available at registry `crates-io`.
2265-
You may press ctrl-c to skip waiting; the crate should be available shortly.
2265+
You may press ctrl-c to skip waiting; the crate should be available shortly.
22662266
[PUBLISHED] foo v0.1.0 at registry `crates-io`
22672267
22682268
"#]])

tests/testsuite/bad_config.rs

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@ fn dev_dependencies2() {
842842
.build();
843843
p.cargo("check").with_stderr_data(str![[r#"
844844
[WARNING] `dev_dependencies` is deprecated in favor of `dev-dependencies` and will not work in the 2024 edition
845-
(in the `foo` package)
845+
(in the `foo` package)
846846
[LOCKING] 1 package to latest compatible version
847847
[CHECKING] foo v0.1.0 ([ROOT]/foo)
848848
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
@@ -957,7 +957,7 @@ fn build_dependencies2() {
957957
.build();
958958
p.cargo("check").with_stderr_data(str![[r#"
959959
[WARNING] `build_dependencies` is deprecated in favor of `build-dependencies` and will not work in the 2024 edition
960-
(in the `foo` package)
960+
(in the `foo` package)
961961
[LOCKING] 1 package to latest compatible version
962962
[CHECKING] foo v0.1.0 ([ROOT]/foo)
963963
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
@@ -1065,7 +1065,7 @@ fn lib_crate_type2() {
10651065
p.cargo("check")
10661066
.with_stderr_data(str![[r#"
10671067
[WARNING] `crate_type` is deprecated in favor of `crate-type` and will not work in the 2024 edition
1068-
(in the `foo` library target)
1068+
(in the `foo` library target)
10691069
[CHECKING] foo v0.5.0 ([ROOT]/foo)
10701070
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
10711071
@@ -1156,7 +1156,7 @@ fn bin_crate_type2() {
11561156
p.cargo("check")
11571157
.with_stderr_data(str![[r#"
11581158
[WARNING] `crate_type` is deprecated in favor of `crate-type` and will not work in the 2024 edition
1159-
(in the `foo` binary target)
1159+
(in the `foo` binary target)
11601160
[CHECKING] foo v0.5.0 ([ROOT]/foo)
11611161
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
11621162
@@ -1265,9 +1265,9 @@ fn examples_crate_type2() {
12651265
p.cargo("check")
12661266
.with_stderr_data(str![[r#"
12671267
[WARNING] `crate_type` is deprecated in favor of `crate-type` and will not work in the 2024 edition
1268-
(in the `ex` example target)
1268+
(in the `ex` example target)
12691269
[WARNING] `crate_type` is deprecated in favor of `crate-type` and will not work in the 2024 edition
1270-
(in the `goodbye` example target)
1270+
(in the `goodbye` example target)
12711271
[CHECKING] foo v0.5.0 ([ROOT]/foo)
12721272
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
12731273
@@ -1404,7 +1404,7 @@ fn cargo_platform_build_dependencies2() {
14041404
p.cargo("check")
14051405
.with_stderr_data(str![[r#"
14061406
[WARNING] `build_dependencies` is deprecated in favor of `build-dependencies` and will not work in the 2024 edition
1407-
(in the `[HOST_TARGET]` platform target)
1407+
(in the `[HOST_TARGET]` platform target)
14081408
[LOCKING] 1 package to latest compatible version
14091409
[COMPILING] build v0.5.0 ([ROOT]/foo/build)
14101410
[COMPILING] foo v0.5.0 ([ROOT]/foo)
@@ -1535,7 +1535,7 @@ fn cargo_platform_dev_dependencies2() {
15351535
p.cargo("check")
15361536
.with_stderr_data(str![[r#"
15371537
[WARNING] `dev_dependencies` is deprecated in favor of `dev-dependencies` and will not work in the 2024 edition
1538-
(in the `[HOST_TARGET]` platform target)
1538+
(in the `[HOST_TARGET]` platform target)
15391539
[LOCKING] 1 package to latest compatible version
15401540
[CHECKING] foo v0.5.0 ([ROOT]/foo)
15411541
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
@@ -1664,7 +1664,7 @@ fn default_features2() {
16641664

16651665
p.cargo("check").with_stderr_data(str![[r#"
16661666
[WARNING] `default_features` is deprecated in favor of `default-features` and will not work in the 2024 edition
1667-
(in the `a` dependency)
1667+
(in the `a` dependency)
16681668
[LOCKING] 1 package to latest compatible version
16691669
[CHECKING] a v0.1.0 ([ROOT]/foo/a)
16701670
[CHECKING] foo v0.1.0 ([ROOT]/foo)
@@ -1833,13 +1833,13 @@ fn workspace_default_features2() {
18331833
p.cargo("check")
18341834
.with_stderr_data(
18351835
str![[r#"
1836-
(in the `dep_workspace_only` dependency)
18371836
[CHECKING] dep_package_only v0.1.0 ([ROOT]/foo/dep_package_only)
18381837
[CHECKING] dep_workspace_only v0.1.0 ([ROOT]/foo/dep_workspace_only)
18391838
[CHECKING] package_only v0.1.0 ([ROOT]/foo/package_only)
18401839
[CHECKING] workspace_only v0.1.0 ([ROOT]/foo/workspace_only)
18411840
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
18421841
[WARNING] [ROOT]/foo/workspace_only/Cargo.toml: `default_features` is deprecated in favor of `default-features` and will not work in the 2024 edition
1842+
(in the `dep_workspace_only` dependency)
18431843
18441844
"#]]
18451845
.unordered(),
@@ -1950,7 +1950,7 @@ fn lib_proc_macro2() {
19501950
foo.cargo("check")
19511951
.with_stderr_data(str![[r#"
19521952
[WARNING] `proc_macro` is deprecated in favor of `proc-macro` and will not work in the 2024 edition
1953-
(in the `foo` library target)
1953+
(in the `foo` library target)
19541954
[CHECKING] foo v0.1.0 ([ROOT]/foo)
19551955
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
19561956
@@ -2038,7 +2038,7 @@ fn bin_proc_macro2() {
20382038
foo.cargo("check")
20392039
.with_stderr_data(str![[r#"
20402040
[WARNING] `proc_macro` is deprecated in favor of `proc-macro` and will not work in the 2024 edition
2041-
(in the `foo` binary target)
2041+
(in the `foo` binary target)
20422042
[CHECKING] foo v0.5.0 ([ROOT]/foo)
20432043
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
20442044
@@ -3476,22 +3476,22 @@ fn legacy_binary_paths_warnings() {
34763476
p.cargo("check -v")
34773477
.with_stderr_data(str![[r#"
34783478
[WARNING] An explicit [[bin]] section is specified in Cargo.toml which currently
3479-
disables Cargo from automatically inferring other binary targets.
3480-
This inference behavior will change in the Rust 2018 edition and the following
3481-
files will be included as a binary target:
3482-
3483-
* src/main.rs
3484-
3485-
This is likely to break cargo build or cargo test as these files may not be
3486-
ready to be compiled as a binary target today. You can future-proof yourself
3487-
and disable this warning by adding `autobins = false` to your [package]
3488-
section. You may also move the files to a location where Cargo would not
3489-
automatically infer them to be a target, such as in subfolders.
3490-
3491-
For more information on this warning you can consult
3492-
https://github.com/rust-lang/cargo/issues/5330
3479+
disables Cargo from automatically inferring other binary targets.
3480+
This inference behavior will change in the Rust 2018 edition and the following
3481+
files will be included as a binary target:
3482+
3483+
* src/main.rs
3484+
3485+
This is likely to break cargo build or cargo test as these files may not be
3486+
ready to be compiled as a binary target today. You can future-proof yourself
3487+
and disable this warning by adding `autobins = false` to your [package]
3488+
section. You may also move the files to a location where Cargo would not
3489+
automatically infer them to be a target, such as in subfolders.
3490+
3491+
For more information on this warning you can consult
3492+
https://github.com/rust-lang/cargo/issues/5330
34933493
[WARNING] path `src/main.rs` was erroneously implicitly accepted for binary `bar`,
3494-
please set bin.path in Cargo.toml
3494+
please set bin.path in Cargo.toml
34953495
[CHECKING] foo v1.0.0 ([ROOT]/foo)
34963496
[RUNNING] `rustc [..]`
34973497
[RUNNING] `rustc [..]`
@@ -3521,22 +3521,22 @@ please set bin.path in Cargo.toml
35213521
p.cargo("check -v")
35223522
.with_stderr_data(str![[r#"
35233523
[WARNING] An explicit [[bin]] section is specified in Cargo.toml which currently
3524-
disables Cargo from automatically inferring other binary targets.
3525-
This inference behavior will change in the Rust 2018 edition and the following
3526-
files will be included as a binary target:
3527-
3528-
* src/bin/main.rs
3529-
3530-
This is likely to break cargo build or cargo test as these files may not be
3531-
ready to be compiled as a binary target today. You can future-proof yourself
3532-
and disable this warning by adding `autobins = false` to your [package]
3533-
section. You may also move the files to a location where Cargo would not
3534-
automatically infer them to be a target, such as in subfolders.
3535-
3536-
For more information on this warning you can consult
3537-
https://github.com/rust-lang/cargo/issues/5330
3524+
disables Cargo from automatically inferring other binary targets.
3525+
This inference behavior will change in the Rust 2018 edition and the following
3526+
files will be included as a binary target:
3527+
3528+
* src/bin/main.rs
3529+
3530+
This is likely to break cargo build or cargo test as these files may not be
3531+
ready to be compiled as a binary target today. You can future-proof yourself
3532+
and disable this warning by adding `autobins = false` to your [package]
3533+
section. You may also move the files to a location where Cargo would not
3534+
automatically infer them to be a target, such as in subfolders.
3535+
3536+
For more information on this warning you can consult
3537+
https://github.com/rust-lang/cargo/issues/5330
35383538
[WARNING] path `src/bin/main.rs` was erroneously implicitly accepted for binary `bar`,
3539-
please set bin.path in Cargo.toml
3539+
please set bin.path in Cargo.toml
35403540
[CHECKING] foo v1.0.0 ([ROOT]/foo)
35413541
[RUNNING] `rustc [..]`
35423542
[RUNNING] `rustc [..]`
@@ -3565,7 +3565,7 @@ please set bin.path in Cargo.toml
35653565
p.cargo("check -v")
35663566
.with_stderr_data(str![[r#"
35673567
[WARNING] path `src/bar.rs` was erroneously implicitly accepted for binary `bar`,
3568-
please set bin.path in Cargo.toml
3568+
please set bin.path in Cargo.toml
35693569
[CHECKING] foo v1.0.0 ([ROOT]/foo)
35703570
[RUNNING] `rustc [..]`
35713571
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s

tests/testsuite/bench.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -716,20 +716,20 @@ fn bench_autodiscover_2015() {
716716
p.cargo("bench bench_basic")
717717
.with_stderr_data(str![[r#"
718718
[WARNING] An explicit [[bench]] section is specified in Cargo.toml which currently
719-
disables Cargo from automatically inferring other benchmark targets.
720-
This inference behavior will change in the Rust 2018 edition and the following
721-
files will be included as a benchmark target:
722-
723-
* [..]bench_basic.rs
724-
725-
This is likely to break cargo build or cargo test as these files may not be
726-
ready to be compiled as a benchmark target today. You can future-proof yourself
727-
and disable this warning by adding `autobenches = false` to your [package]
728-
section. You may also move the files to a location where Cargo would not
729-
automatically infer them to be a target, such as in subfolders.
730-
731-
For more information on this warning you can consult
732-
https://github.com/rust-lang/cargo/issues/5330
719+
disables Cargo from automatically inferring other benchmark targets.
720+
This inference behavior will change in the Rust 2018 edition and the following
721+
files will be included as a benchmark target:
722+
723+
* [..]bench_basic.rs
724+
725+
This is likely to break cargo build or cargo test as these files may not be
726+
ready to be compiled as a benchmark target today. You can future-proof yourself
727+
and disable this warning by adding `autobenches = false` to your [package]
728+
section. You may also move the files to a location where Cargo would not
729+
automatically infer them to be a target, such as in subfolders.
730+
731+
For more information on this warning you can consult
732+
https://github.com/rust-lang/cargo/issues/5330
733733
[COMPILING] foo v0.0.1 ([ROOT]/foo)
734734
[FINISHED] `bench` profile [optimized] target(s) in [ELAPSED]s
735735
[RUNNING] [..] (target/release/deps/foo-[HASH][EXE])
@@ -1944,7 +1944,7 @@ fn legacy_bench_name() {
19441944
p.cargo("bench")
19451945
.with_stderr_data(str![[r#"
19461946
[WARNING] path `src/bench.rs` was erroneously implicitly accepted for benchmark `bench`,
1947-
please set bench.path in Cargo.toml
1947+
please set bench.path in Cargo.toml
19481948
[COMPILING] foo v0.1.0 ([ROOT]/foo)
19491949
[FINISHED] `bench` profile [optimized] target(s) in [ELAPSED]s
19501950
[RUNNING] unittests src/lib.rs (target/release/deps/foo-[HASH][EXE])

tests/testsuite/build.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -471,8 +471,8 @@ fn cargo_compile_duplicate_build_targets() {
471471
p.cargo("build")
472472
.with_stderr_data(str![[r#"
473473
[WARNING] file `[ROOT]/foo/src/main.rs` found to be present in multiple build targets:
474-
* `lib` target `main`
475-
* `bin` target `foo`
474+
* `lib` target `main`
475+
* `bin` target `foo`
476476
[COMPILING] foo v0.0.1 ([ROOT]/foo)
477477
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
478478
@@ -1992,7 +1992,7 @@ fn many_crate_types_old_style_lib_location() {
19921992
p.cargo("build")
19931993
.with_stderr_data(str![[r#"
19941994
[WARNING] path `src/foo.rs` was erroneously implicitly accepted for library `foo`,
1995-
please rename the file to `src/lib.rs` or set lib.path in Cargo.toml
1995+
please rename the file to `src/lib.rs` or set lib.path in Cargo.toml
19961996
[COMPILING] foo v0.5.0 ([ROOT]/foo)
19971997
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
19981998

tests/testsuite/build_script_env.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ fn rustc_bootstrap() {
145145
.with_stderr_data(str![[r#"
146146
[COMPILING] has-dashes v0.0.1 ([ROOT]/foo)
147147
[WARNING] [email protected]: Cannot set `RUSTC_BOOTSTRAP=1` from build script of `has-dashes v0.0.1 ([ROOT]/foo)`.
148-
[NOTE] Crates cannot set `RUSTC_BOOTSTRAP` themselves, as doing so would subvert the stability guarantees of Rust for your project.
148+
[NOTE] Crates cannot set `RUSTC_BOOTSTRAP` themselves, as doing so would subvert the stability guarantees of Rust for your project.
149149
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
150150
151151
"#]])
@@ -155,7 +155,7 @@ fn rustc_bootstrap() {
155155
.env("RUSTC_BOOTSTRAP", "has_dashes")
156156
.with_stderr_data(str![[r#"
157157
[WARNING] [email protected]: Cannot set `RUSTC_BOOTSTRAP=1` from build script of `has-dashes v0.0.1 ([ROOT]/foo)`.
158-
[NOTE] Crates cannot set `RUSTC_BOOTSTRAP` themselves, as doing so would subvert the stability guarantees of Rust for your project.
158+
[NOTE] Crates cannot set `RUSTC_BOOTSTRAP` themselves, as doing so would subvert the stability guarantees of Rust for your project.
159159
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
160160
161161
"#]])
@@ -190,7 +190,7 @@ fn rustc_bootstrap() {
190190
.with_stderr_data(str![[r#"
191191
[COMPILING] foo v0.0.1 ([ROOT]/foo)
192192
[WARNING] [email protected]: Cannot set `RUSTC_BOOTSTRAP=1` from build script of `foo v0.0.1 ([ROOT]/foo)`.
193-
[NOTE] Crates cannot set `RUSTC_BOOTSTRAP` themselves, as doing so would subvert the stability guarantees of Rust for your project.
193+
[NOTE] Crates cannot set `RUSTC_BOOTSTRAP` themselves, as doing so would subvert the stability guarantees of Rust for your project.
194194
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
195195
196196
"#]])

tests/testsuite/build_script_extra_link_arg.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ fn cdylib_link_arg_transitive() {
222222
[RUNNING] `[ROOT]/foo/target/debug/build/bar-[HASH]/build-script-build`
223223
[WARNING] [email protected]: cargo::rustc-link-arg-cdylib was specified in the build script of bar v1.0.0 \
224224
([ROOT]/foo/bar), but that package does not contain a cdylib target
225-
226-
Allowing this was an unintended change in the 1.50 release, and may become an error in \
225+
226+
Allowing this was an unintended change in the 1.50 release, and may become an error in \
227227
the future. For more information, see <https://github.com/rust-lang/cargo/issues/9562>.
228228
[RUNNING] `rustc --crate-name bar --edition=2015 bar/src/lib.rs [..]
229229
[COMPILING] foo v0.1.0 ([ROOT]/foo)

tests/testsuite/cargo_add/add_no_vendored_package_with_alter_registry/stderr.term.svg

Lines changed: 1 addition & 1 deletion
Loading

0 commit comments

Comments
 (0)