ink! 2.0: Improve Diagnostics follow-up (#228)

* [lang2/macro] improve diagnostics for missing a #[ink(storage)] struct

* [lang2/macro] add UI test for missing #[ink(storage)] struct

* [lang2/macro] add test for multiple #[ink(storage)] structs

* [lang2/macro] add ui test for storage-impl conflict

* [lang2/macro] implement check that ink! impls are on #[ink(storage)] structs

* [lang2/macro] fix some success tests

* [lang2/macro] add expected output for failure UI test 16

* [lang2/macro] add conflicting ink! marker test

The conflict here is the additional #[ink(event)] marker

* [lang2/macro] utils: add filter_map_ink_attributes

* [lang2/macro] structs now dispatch on whichever ink! marker was provided first

* [lang2/macro] add failure UI test for #[ink(event)] provided with another #[ink(storage)]

* [lang2/macro] improve diagnostics for unsupported ink! markers on structs

* [lang2/macro] add test for unknown struct ink! markers

* [lang2/macro] improve diagnostics for multiple #[ink(storage)] structs

* [lang2/macro] adjust test case for multiple #[ink(storage)] structs

* [lang2/macro] improve error message for unknown method ink! markers

The error diagnostics can be further improved by showing all occurences of unknown ink! markers in an impl block.

* [lang2/macro] add test for unknown ink! method marker

* [lang2/macro] fix minor typo in tests

Co-Authored-By: Michael Müller <mich@elmueller.net>

* [lang2/macro] fix typo in test

Co-Authored-By: Andrew Jones <ascjones@gmail.com>

* [lang2/macro] fix typo in test

Co-Authored-By: Andrew Jones <ascjones@gmail.com>
10 jobs for master in 23 seconds (queued for 3 seconds)
Status Job ID Name Coverage
  Check Workspace
failed #269438
linux-docker
cargo-build-nf

00:00:18

failed #269432
linux-docker
cargo-check-af

00:00:16

failed #269433
linux-docker
cargo-check-nf

00:00:17

failed #269435
linux-docker
cargo-clippy-af

00:00:16

failed #269436
linux-docker
cargo-clippy-nf

00:00:17

failed #269434
linux-docker
cargo-fmt

00:00:22

failed #269437
linux-docker
cargo-test-af

00:00:16

 
  Examples
skipped #269441
linux-docker
examples-abi
skipped #269440
linux-docker
examples-test
skipped #269439
linux-docker
examples-wasm
 
Name Stage Failure
failed
cargo-fmt Check Workspace
No job log
failed
cargo-build-nf Check Workspace
No job log
failed
cargo-test-af Check Workspace
No job log
failed
cargo-clippy-nf Check Workspace
No job log
failed
cargo-clippy-af Check Workspace
No job log
failed
cargo-check-nf Check Workspace
No job log
failed
cargo-check-af Check Workspace
No job log