diff mbox series

[libgpiod,4/5] bindings: cxx: Fix compile errors

Message ID 20190807195132.7538-4-alexander.stein@mailbox.org
State New
Headers show
Series [libgpiod,1/5] bindings: cxx: Use 'upstream' include path | expand

Commit Message

Alexander Stein Aug. 7, 2019, 7:51 p.m. UTC
This fixes the following compile errors:
tests-event.cpp:152:3: error: cannot declare reference to
'class std::system_error&', which is not a typedef or a template type
argument
  152 |   REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);

Signed-off-by: Alexander Stein <alexander.stein@mailbox.org>
---
 bindings/cxx/tests/tests-chip.cpp  |  8 ++++----
 bindings/cxx/tests/tests-event.cpp |  4 ++--
 bindings/cxx/tests/tests-line.cpp  | 16 ++++++++--------
 3 files changed, 14 insertions(+), 14 deletions(-)

Comments

Bartosz Golaszewski Aug. 8, 2019, 3:25 p.m. UTC | #1
śr., 7 sie 2019 o 21:51 Alexander Stein <alexander.stein@mailbox.org>
napisał(a):
>
> This fixes the following compile errors:
> tests-event.cpp:152:3: error: cannot declare reference to
> 'class std::system_error&', which is not a typedef or a template type
> argument
>   152 |   REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);
>

Hi Alexander, thanks for working on this!

I'm getting the following warning when I don't use the reference:

In file included from tests-line.cpp:8:
tests-line.cpp: In function ‘void ____C_A_T_C_H____T_E_S_T____24()’:
tests-line.cpp:254:45: warning: catching polymorphic type ‘class
std::system_error’ by value [-Wcatch-value=]
  REQUIRE_THROWS_AS(line.get_value(), ::std::system_error);
                                             ^~~~~~~~~~~~
I'm also not getting any build errors with my current next or master
branch. My gcc is:

gcc (Debian 8.3.0-6) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Bart

> Signed-off-by: Alexander Stein <alexander.stein@mailbox.org>
> ---
>  bindings/cxx/tests/tests-chip.cpp  |  8 ++++----
>  bindings/cxx/tests/tests-event.cpp |  4 ++--
>  bindings/cxx/tests/tests-line.cpp  | 16 ++++++++--------
>  3 files changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/bindings/cxx/tests/tests-chip.cpp b/bindings/cxx/tests/tests-chip.cpp
> index 11c2d4c..c9eb8e5 100644
> --- a/bindings/cxx/tests/tests-chip.cpp
> +++ b/bindings/cxx/tests/tests-chip.cpp
> @@ -107,7 +107,7 @@ TEST_CASE("Uninitialized GPIO chip behaves correctly", "[chip]")
>
>         SECTION("using uninitialized chip throws logic_error")
>         {
> -               REQUIRE_THROWS_AS(chip.name(), ::std::logic_error&);
> +               REQUIRE_THROWS_AS(chip.name(), ::std::logic_error);
>         }
>  }
>
> @@ -139,7 +139,7 @@ TEST_CASE("GPIO chip can be opened with the open() method with implicit lookup",
>
>  TEST_CASE("Trying to open a nonexistent chip throws system_error", "[chip]")
>  {
> -       REQUIRE_THROWS_AS(::gpiod::chip("nonexistent-chip"), ::std::system_error&);
> +       REQUIRE_THROWS_AS(::gpiod::chip("nonexistent-chip"), ::std::system_error);
>  }
>
>  TEST_CASE("Chip object can be reset", "[chip]")
> @@ -244,12 +244,12 @@ TEST_CASE("Errors occurring when retrieving lines are correctly reported", "[chi
>
>         SECTION("invalid offset (single line)")
>         {
> -               REQUIRE_THROWS_AS(chip.get_line(9), ::std::out_of_range&);
> +               REQUIRE_THROWS_AS(chip.get_line(9), ::std::out_of_range);
>         }
>
>         SECTION("invalid offset (multiple lines)")
>         {
> -               REQUIRE_THROWS_AS(chip.get_lines({ 1, 19, 4, 7 }), ::std::out_of_range&);
> +               REQUIRE_THROWS_AS(chip.get_lines({ 1, 19, 4, 7 }), ::std::out_of_range);
>         }
>
>         SECTION("line not found by name")
> diff --git a/bindings/cxx/tests/tests-event.cpp b/bindings/cxx/tests/tests-event.cpp
> index b34347f..b41cf7e 100644
> --- a/bindings/cxx/tests/tests-event.cpp
> +++ b/bindings/cxx/tests/tests-event.cpp
> @@ -149,7 +149,7 @@ TEST_CASE("It's possible to retrieve the event file descriptor", "[event][line]"
>
>         SECTION("error if not requested")
>         {
> -               REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);
> +               REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error);
>         }
>
>         SECTION("error if requested for values")
> @@ -157,7 +157,7 @@ TEST_CASE("It's possible to retrieve the event file descriptor", "[event][line]"
>                 config.request_type = ::gpiod::line_request::DIRECTION_INPUT;
>
>                 line.request(config);
> -               REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);
> +               REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error);
>         }
>  }
>
> diff --git a/bindings/cxx/tests/tests-line.cpp b/bindings/cxx/tests/tests-line.cpp
> index e827e60..08ff1e8 100644
> --- a/bindings/cxx/tests/tests-line.cpp
> +++ b/bindings/cxx/tests/tests-line.cpp
> @@ -122,7 +122,7 @@ TEST_CASE("Line bulk object works correctly", "[line][bulk]")
>         {
>                 auto lines = chip.get_all_lines();
>
> -               REQUIRE_THROWS_AS(lines.get(11), ::std::out_of_range&);
> +               REQUIRE_THROWS_AS(lines.get(11), ::std::out_of_range);
>         }
>  }
>
> @@ -242,7 +242,7 @@ TEST_CASE("Exported line can be released", "[line]")
>         line.release();
>
>         REQUIRE_FALSE(line.is_requested());
> -       REQUIRE_THROWS_AS(line.get_value(), ::std::system_error&);
> +       REQUIRE_THROWS_AS(line.get_value(), ::std::system_error);
>  }
>
>  TEST_CASE("Uninitialized GPIO line behaves correctly", "[line]")
> @@ -256,7 +256,7 @@ TEST_CASE("Uninitialized GPIO line behaves correctly", "[line]")
>
>         SECTION("using uninitialized line throws logic_error")
>         {
> -               REQUIRE_THROWS_AS(line.name(), ::std::logic_error&);
> +               REQUIRE_THROWS_AS(line.name(), ::std::logic_error);
>         }
>  }
>
> @@ -271,7 +271,7 @@ TEST_CASE("Uninitialized GPIO line_bulk behaves correctly", "[line][bulk]")
>
>         SECTION("using uninitialized line_bulk throws logic_error")
>         {
> -               REQUIRE_THROWS_AS(bulk.get(0), ::std::logic_error&);
> +               REQUIRE_THROWS_AS(bulk.get(0), ::std::logic_error);
>         }
>  }
>
> @@ -289,7 +289,7 @@ TEST_CASE("Cannot request the same line twice", "[line]")
>                 auto line = chip.get_line(3);
>
>                 REQUIRE_NOTHROW(line.request(config));
> -               REQUIRE_THROWS_AS(line.request(config), ::std::system_error&);
> +               REQUIRE_THROWS_AS(line.request(config), ::std::system_error);
>         }
>
>         SECTION("request the same line twice in line_bulk")
> @@ -300,7 +300,7 @@ TEST_CASE("Cannot request the same line twice", "[line]")
>                  */
>                 auto lines = chip.get_lines({ 2, 3, 4, 4 });
>
> -               REQUIRE_THROWS_AS(lines.request(config), ::std::system_error&);
> +               REQUIRE_THROWS_AS(lines.request(config), ::std::system_error);
>         }
>  }
>
> @@ -312,12 +312,12 @@ TEST_CASE("Cannot get/set values of unrequested lines", "[line]")
>
>         SECTION("get value")
>         {
> -               REQUIRE_THROWS_AS(line.get_value(), ::std::system_error&);
> +               REQUIRE_THROWS_AS(line.get_value(), ::std::system_error);
>         }
>
>         SECTION("set value")
>         {
> -               REQUIRE_THROWS_AS(line.set_value(1), ::std::system_error&);
> +               REQUIRE_THROWS_AS(line.set_value(1), ::std::system_error);
>         }
>  }
>
> --
> 2.22.0
>
Bartosz Golaszewski Aug. 8, 2019, 3:37 p.m. UTC | #2
czw., 8 sie 2019 o 17:25 Bartosz Golaszewski <brgl@bgdev.pl> napisał(a):
>
> śr., 7 sie 2019 o 21:51 Alexander Stein <alexander.stein@mailbox.org>
> napisał(a):
> >
> > This fixes the following compile errors:
> > tests-event.cpp:152:3: error: cannot declare reference to
> > 'class std::system_error&', which is not a typedef or a template type
> > argument
> >   152 |   REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);
> >
>
> Hi Alexander, thanks for working on this!
>
> I'm getting the following warning when I don't use the reference:
>
> In file included from tests-line.cpp:8:
> tests-line.cpp: In function ‘void ____C_A_T_C_H____T_E_S_T____24()’:
> tests-line.cpp:254:45: warning: catching polymorphic type ‘class
> std::system_error’ by value [-Wcatch-value=]
>   REQUIRE_THROWS_AS(line.get_value(), ::std::system_error);
>                                              ^~~~~~~~~~~~
> I'm also not getting any build errors with my current next or master
> branch. My gcc is:
>
> gcc (Debian 8.3.0-6) 8.3.0
> Copyright (C) 2018 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> Bart

Nevermind that - I was using Debian's packaged version which happens
to be quite old. The current version actually does fail to build. I'll
test and pick up your patches tomorrow.

Bart

>
> > Signed-off-by: Alexander Stein <alexander.stein@mailbox.org>
> > ---
> >  bindings/cxx/tests/tests-chip.cpp  |  8 ++++----
> >  bindings/cxx/tests/tests-event.cpp |  4 ++--
> >  bindings/cxx/tests/tests-line.cpp  | 16 ++++++++--------
> >  3 files changed, 14 insertions(+), 14 deletions(-)
> >
> > diff --git a/bindings/cxx/tests/tests-chip.cpp b/bindings/cxx/tests/tests-chip.cpp
> > index 11c2d4c..c9eb8e5 100644
> > --- a/bindings/cxx/tests/tests-chip.cpp
> > +++ b/bindings/cxx/tests/tests-chip.cpp
> > @@ -107,7 +107,7 @@ TEST_CASE("Uninitialized GPIO chip behaves correctly", "[chip]")
> >
> >         SECTION("using uninitialized chip throws logic_error")
> >         {
> > -               REQUIRE_THROWS_AS(chip.name(), ::std::logic_error&);
> > +               REQUIRE_THROWS_AS(chip.name(), ::std::logic_error);
> >         }
> >  }
> >
> > @@ -139,7 +139,7 @@ TEST_CASE("GPIO chip can be opened with the open() method with implicit lookup",
> >
> >  TEST_CASE("Trying to open a nonexistent chip throws system_error", "[chip]")
> >  {
> > -       REQUIRE_THROWS_AS(::gpiod::chip("nonexistent-chip"), ::std::system_error&);
> > +       REQUIRE_THROWS_AS(::gpiod::chip("nonexistent-chip"), ::std::system_error);
> >  }
> >
> >  TEST_CASE("Chip object can be reset", "[chip]")
> > @@ -244,12 +244,12 @@ TEST_CASE("Errors occurring when retrieving lines are correctly reported", "[chi
> >
> >         SECTION("invalid offset (single line)")
> >         {
> > -               REQUIRE_THROWS_AS(chip.get_line(9), ::std::out_of_range&);
> > +               REQUIRE_THROWS_AS(chip.get_line(9), ::std::out_of_range);
> >         }
> >
> >         SECTION("invalid offset (multiple lines)")
> >         {
> > -               REQUIRE_THROWS_AS(chip.get_lines({ 1, 19, 4, 7 }), ::std::out_of_range&);
> > +               REQUIRE_THROWS_AS(chip.get_lines({ 1, 19, 4, 7 }), ::std::out_of_range);
> >         }
> >
> >         SECTION("line not found by name")
> > diff --git a/bindings/cxx/tests/tests-event.cpp b/bindings/cxx/tests/tests-event.cpp
> > index b34347f..b41cf7e 100644
> > --- a/bindings/cxx/tests/tests-event.cpp
> > +++ b/bindings/cxx/tests/tests-event.cpp
> > @@ -149,7 +149,7 @@ TEST_CASE("It's possible to retrieve the event file descriptor", "[event][line]"
> >
> >         SECTION("error if not requested")
> >         {
> > -               REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);
> > +               REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error);
> >         }
> >
> >         SECTION("error if requested for values")
> > @@ -157,7 +157,7 @@ TEST_CASE("It's possible to retrieve the event file descriptor", "[event][line]"
> >                 config.request_type = ::gpiod::line_request::DIRECTION_INPUT;
> >
> >                 line.request(config);
> > -               REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);
> > +               REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error);
> >         }
> >  }
> >
> > diff --git a/bindings/cxx/tests/tests-line.cpp b/bindings/cxx/tests/tests-line.cpp
> > index e827e60..08ff1e8 100644
> > --- a/bindings/cxx/tests/tests-line.cpp
> > +++ b/bindings/cxx/tests/tests-line.cpp
> > @@ -122,7 +122,7 @@ TEST_CASE("Line bulk object works correctly", "[line][bulk]")
> >         {
> >                 auto lines = chip.get_all_lines();
> >
> > -               REQUIRE_THROWS_AS(lines.get(11), ::std::out_of_range&);
> > +               REQUIRE_THROWS_AS(lines.get(11), ::std::out_of_range);
> >         }
> >  }
> >
> > @@ -242,7 +242,7 @@ TEST_CASE("Exported line can be released", "[line]")
> >         line.release();
> >
> >         REQUIRE_FALSE(line.is_requested());
> > -       REQUIRE_THROWS_AS(line.get_value(), ::std::system_error&);
> > +       REQUIRE_THROWS_AS(line.get_value(), ::std::system_error);
> >  }
> >
> >  TEST_CASE("Uninitialized GPIO line behaves correctly", "[line]")
> > @@ -256,7 +256,7 @@ TEST_CASE("Uninitialized GPIO line behaves correctly", "[line]")
> >
> >         SECTION("using uninitialized line throws logic_error")
> >         {
> > -               REQUIRE_THROWS_AS(line.name(), ::std::logic_error&);
> > +               REQUIRE_THROWS_AS(line.name(), ::std::logic_error);
> >         }
> >  }
> >
> > @@ -271,7 +271,7 @@ TEST_CASE("Uninitialized GPIO line_bulk behaves correctly", "[line][bulk]")
> >
> >         SECTION("using uninitialized line_bulk throws logic_error")
> >         {
> > -               REQUIRE_THROWS_AS(bulk.get(0), ::std::logic_error&);
> > +               REQUIRE_THROWS_AS(bulk.get(0), ::std::logic_error);
> >         }
> >  }
> >
> > @@ -289,7 +289,7 @@ TEST_CASE("Cannot request the same line twice", "[line]")
> >                 auto line = chip.get_line(3);
> >
> >                 REQUIRE_NOTHROW(line.request(config));
> > -               REQUIRE_THROWS_AS(line.request(config), ::std::system_error&);
> > +               REQUIRE_THROWS_AS(line.request(config), ::std::system_error);
> >         }
> >
> >         SECTION("request the same line twice in line_bulk")
> > @@ -300,7 +300,7 @@ TEST_CASE("Cannot request the same line twice", "[line]")
> >                  */
> >                 auto lines = chip.get_lines({ 2, 3, 4, 4 });
> >
> > -               REQUIRE_THROWS_AS(lines.request(config), ::std::system_error&);
> > +               REQUIRE_THROWS_AS(lines.request(config), ::std::system_error);
> >         }
> >  }
> >
> > @@ -312,12 +312,12 @@ TEST_CASE("Cannot get/set values of unrequested lines", "[line]")
> >
> >         SECTION("get value")
> >         {
> > -               REQUIRE_THROWS_AS(line.get_value(), ::std::system_error&);
> > +               REQUIRE_THROWS_AS(line.get_value(), ::std::system_error);
> >         }
> >
> >         SECTION("set value")
> >         {
> > -               REQUIRE_THROWS_AS(line.set_value(1), ::std::system_error&);
> > +               REQUIRE_THROWS_AS(line.set_value(1), ::std::system_error);
> >         }
> >  }
> >
> > --
> > 2.22.0
> >
diff mbox series

Patch

diff --git a/bindings/cxx/tests/tests-chip.cpp b/bindings/cxx/tests/tests-chip.cpp
index 11c2d4c..c9eb8e5 100644
--- a/bindings/cxx/tests/tests-chip.cpp
+++ b/bindings/cxx/tests/tests-chip.cpp
@@ -107,7 +107,7 @@  TEST_CASE("Uninitialized GPIO chip behaves correctly", "[chip]")
 
 	SECTION("using uninitialized chip throws logic_error")
 	{
-		REQUIRE_THROWS_AS(chip.name(), ::std::logic_error&);
+		REQUIRE_THROWS_AS(chip.name(), ::std::logic_error);
 	}
 }
 
@@ -139,7 +139,7 @@  TEST_CASE("GPIO chip can be opened with the open() method with implicit lookup",
 
 TEST_CASE("Trying to open a nonexistent chip throws system_error", "[chip]")
 {
-	REQUIRE_THROWS_AS(::gpiod::chip("nonexistent-chip"), ::std::system_error&);
+	REQUIRE_THROWS_AS(::gpiod::chip("nonexistent-chip"), ::std::system_error);
 }
 
 TEST_CASE("Chip object can be reset", "[chip]")
@@ -244,12 +244,12 @@  TEST_CASE("Errors occurring when retrieving lines are correctly reported", "[chi
 
 	SECTION("invalid offset (single line)")
 	{
-		REQUIRE_THROWS_AS(chip.get_line(9), ::std::out_of_range&);
+		REQUIRE_THROWS_AS(chip.get_line(9), ::std::out_of_range);
 	}
 
 	SECTION("invalid offset (multiple lines)")
 	{
-		REQUIRE_THROWS_AS(chip.get_lines({ 1, 19, 4, 7 }), ::std::out_of_range&);
+		REQUIRE_THROWS_AS(chip.get_lines({ 1, 19, 4, 7 }), ::std::out_of_range);
 	}
 
 	SECTION("line not found by name")
diff --git a/bindings/cxx/tests/tests-event.cpp b/bindings/cxx/tests/tests-event.cpp
index b34347f..b41cf7e 100644
--- a/bindings/cxx/tests/tests-event.cpp
+++ b/bindings/cxx/tests/tests-event.cpp
@@ -149,7 +149,7 @@  TEST_CASE("It's possible to retrieve the event file descriptor", "[event][line]"
 
 	SECTION("error if not requested")
 	{
-		REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);
+		REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error);
 	}
 
 	SECTION("error if requested for values")
@@ -157,7 +157,7 @@  TEST_CASE("It's possible to retrieve the event file descriptor", "[event][line]"
 		config.request_type = ::gpiod::line_request::DIRECTION_INPUT;
 
 		line.request(config);
-		REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error&);
+		REQUIRE_THROWS_AS(line.event_get_fd(), ::std::system_error);
 	}
 }
 
diff --git a/bindings/cxx/tests/tests-line.cpp b/bindings/cxx/tests/tests-line.cpp
index e827e60..08ff1e8 100644
--- a/bindings/cxx/tests/tests-line.cpp
+++ b/bindings/cxx/tests/tests-line.cpp
@@ -122,7 +122,7 @@  TEST_CASE("Line bulk object works correctly", "[line][bulk]")
 	{
 		auto lines = chip.get_all_lines();
 
-		REQUIRE_THROWS_AS(lines.get(11), ::std::out_of_range&);
+		REQUIRE_THROWS_AS(lines.get(11), ::std::out_of_range);
 	}
 }
 
@@ -242,7 +242,7 @@  TEST_CASE("Exported line can be released", "[line]")
 	line.release();
 
 	REQUIRE_FALSE(line.is_requested());
-	REQUIRE_THROWS_AS(line.get_value(), ::std::system_error&);
+	REQUIRE_THROWS_AS(line.get_value(), ::std::system_error);
 }
 
 TEST_CASE("Uninitialized GPIO line behaves correctly", "[line]")
@@ -256,7 +256,7 @@  TEST_CASE("Uninitialized GPIO line behaves correctly", "[line]")
 
 	SECTION("using uninitialized line throws logic_error")
 	{
-		REQUIRE_THROWS_AS(line.name(), ::std::logic_error&);
+		REQUIRE_THROWS_AS(line.name(), ::std::logic_error);
 	}
 }
 
@@ -271,7 +271,7 @@  TEST_CASE("Uninitialized GPIO line_bulk behaves correctly", "[line][bulk]")
 
 	SECTION("using uninitialized line_bulk throws logic_error")
 	{
-		REQUIRE_THROWS_AS(bulk.get(0), ::std::logic_error&);
+		REQUIRE_THROWS_AS(bulk.get(0), ::std::logic_error);
 	}
 }
 
@@ -289,7 +289,7 @@  TEST_CASE("Cannot request the same line twice", "[line]")
 		auto line = chip.get_line(3);
 
 		REQUIRE_NOTHROW(line.request(config));
-		REQUIRE_THROWS_AS(line.request(config), ::std::system_error&);
+		REQUIRE_THROWS_AS(line.request(config), ::std::system_error);
 	}
 
 	SECTION("request the same line twice in line_bulk")
@@ -300,7 +300,7 @@  TEST_CASE("Cannot request the same line twice", "[line]")
 		 */
 		auto lines = chip.get_lines({ 2, 3, 4, 4 });
 
-		REQUIRE_THROWS_AS(lines.request(config), ::std::system_error&);
+		REQUIRE_THROWS_AS(lines.request(config), ::std::system_error);
 	}
 }
 
@@ -312,12 +312,12 @@  TEST_CASE("Cannot get/set values of unrequested lines", "[line]")
 
 	SECTION("get value")
 	{
-		REQUIRE_THROWS_AS(line.get_value(), ::std::system_error&);
+		REQUIRE_THROWS_AS(line.get_value(), ::std::system_error);
 	}
 
 	SECTION("set value")
 	{
-		REQUIRE_THROWS_AS(line.set_value(1), ::std::system_error&);
+		REQUIRE_THROWS_AS(line.set_value(1), ::std::system_error);
 	}
 }