Skip to content

Failure due to recent PR for "storage class for several enum types" #98

@martenrichter

Description

@martenrichter

The following commit
37de445
causes compiler errors such as:

[282/533] Building CXX object CMakeFiles/gquiche.dir/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_listener.cc.o
FAILED: CMakeFiles/gquiche.dir/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_listener.cc.o 
/usr/bin/c++ -DNAPI_VERSION=6 -D_ITERATOR_DEBUG_LEVEL=0 -D_LARGEFILE64_SOURCE=1 -I/workspaces/webtransport/transports/http3-quiche/platform -I/workspaces/webtransport/transports/http3-quiche/third_party/quiche -I/workspaces/webtransport/transports/http3-quiche/third_party/boringssl/src/include -I/workspaces/webtransport/transports/http3-quiche/third_party/abseil-cpp -I/workspaces/webtransport/transports/http3-quiche/third_party/googleurl -I/workspaces/webtransport/transports/http3-quiche/third_party/zlib -I/workspaces/webtransport/transports/http3-quiche/build_linux_x64/third_party/zlib -I/workspaces/webtransport/transports/http3-quiche/. -I/workspaces/webtransport/transports/http3-quiche/build_linux_x64 -I/workspaces/webtransport/node_modules/node-api-headers/include -I/workspaces/webtransport/node_modules/node-addon-api -I/workspaces/webtransport/transports/http3-quiche/third_party/protobuf/src -I/workspaces/webtransport/transports/http3-quiche/third_party/protobuf/third_party/utf8_range -DBUILDING_NODE_EXTENSION -g -std=gnu++20 -fPIC -MD -MT CMakeFiles/gquiche.dir/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_listener.cc.o -MF CMakeFiles/gquiche.dir/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_listener.cc.o.d -o CMakeFiles/gquiche.dir/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_listener.cc.o -c /workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_listener.cc
In file included from /workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_listener.h:12,
                 from /workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_listener.cc:5:
/workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/http2_hpack_constants.h:22:6: warning: elaborated-type-specifier for a scoped enum must not use the 'class' keyword
   22 | enum class HpackEntryType : uint8_t {
      | ~~~~ ^~~~~
      |      -----
/workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/http2_hpack_constants.h:22:27: error: found ':' in nested-name-specifier, expected '::'
   22 | enum class HpackEntryType : uint8_t {
      |                           ^
      |                           ::
/workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/http2_hpack_constants.h:22:12: error: 'HpackEntryType' has not been declared
   22 | enum class HpackEntryType : uint8_t {
      |            ^~~~~~~~~~~~~~
/workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/http2_hpack_constants.h:22:37: error: expected unqualified-id before '{' token
   22 | enum class HpackEntryType : uint8_t {
      |                                     ^
/workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/http2_hpack_constants.h:55:50: error: 'HpackEntryType' was not declared in this scope; did you mean 'HpackEntryTypeToString'?
   55 | QUICHE_EXPORT std::string HpackEntryTypeToString(HpackEntryType v);
      |                                                  ^~~~~~~~~~~~~~
      |                                                  HpackEntryTypeToString
/workspaces/webtransport/transports/http3-quiche/third_party/quiche/quiche/http2/hpack/http2_hpack_constants.h:58:59: error: 'HpackEntryType' has not been declared
   58 | QUICHE_EXPORT std::ostream& operator<<(std::ostream& out, HpackEntryType v);
      |                                                           ^~~~~~~~~~~~~~

The reason is that uint8_t is not defined. Adding

#include <cstdint>

to http2_hpack_constants.h fixes the problem.
@birenroy can you please look into it and fix it?
Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions