Tagged: gem Toggle Comment Threads | Keyboard Shortcuts

  • ThomasPowell 11:35 am on April 5, 2022 Permalink | Reply
    Tags: , gem, pg,   

    pg gem pg-0.18.4 install errors: implicit declaration of function ‘gettimeofday’ is invalid in C99 

    Reflexively trying the usual suspects installing pg-0.18.4:

    https://stackoverflow.com/questions/63182467/not-able-to-install-pg-gem-with-rails

    Maybe xcode is improperly installed?

    sudo xcode-select -s /Library/Developer/CommandLineTools

    Maybe postgresql is improperly installed?

    brew install postgresql
    Running `brew update --preinstall`...
    Warning: postgresql 14.2_1 is already installed and up-to-date.
    To reinstall 14.2_1, run:
    brew reinstall postgresql
    ❯ brew reinstall postgresql
    gem install pg -v '0.18.4'

    It would have been beneficial to search on the actual error occurring:

    pg_connection.c:2394:3: error: implicit declaration of function 'gettimeofday' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                    gettimeofday(&currtime, NULL);
                    ^
    pg_connection.c:2411:4: error: implicit declaration of function 'gettimeofday' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                            gettimeofday(&currtime, NULL);

    https://stackoverflow.com/questions/36455625/postgresql-gem-install-pg-0-18-4-passes-bundle-install-fails

    Configuring the pg gem in bundle to ignore the C99 implicit declaration error was what was required to get this version of the gem to install:

    bundle config build.pg '-- --with-cflags="-Wno-error=implicit-function-declaration"'

    Installing pg 0.18.4 with native extensions
    Using consumer_info 1.6.7 from https://travis@gitlab.com/everlywell/apps/consumer-info.git (at v1.6.7@9bf01b4)
    Bundle complete! 137 Gemfile dependencies, 350 gems now installed.
    Use bundle info [gemname] to see where a bundled gem is installed.
    1 installed gem you directly depend on is looking for funding.
    Run bundle fund for details

    Success!

    Error Details

    current directory: /Users/tpowell/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/pg-0.18.4/ext
    /Users/tpowell/.rbenv/versions/2.5.7/bin/ruby -r ./siteconf20220405-9763-gz4mbx.rb extconf.rb
    checking for pg_config... yes
    Using config values from /usr/local/bin/pg_config
    checking for libpq-fe.h... yes
    checking for libpq/libpq-fs.h... yes
    checking for pg_config_manual.h... yes
    checking for PQconnectdb() in -lpq... yes
    checking for PQconnectionUsedPassword()... yes
    checking for PQisthreadsafe()... yes
    checking for PQprepare()... yes
    checking for PQexecParams()... yes
    checking for PQescapeString()... yes
    checking for PQescapeStringConn()... yes
    checking for PQescapeLiteral()... yes
    checking for PQescapeIdentifier()... yes
    checking for PQgetCancel()... yes
    checking for lo_create()... yes
    checking for pg_encoding_to_char()... yes
    checking for pg_char_to_encoding()... yes
    checking for PQsetClientEncoding()... yes
    checking for PQlibVersion()... yes
    checking for PQping()... yes
    checking for PQsetSingleRowMode()... yes
    checking for PQconninfo()... yes
    checking for rb_encdb_alias()... yes
    checking for rb_enc_alias()... no
    checking for rb_thread_call_without_gvl()... yes
    checking for rb_thread_call_with_gvl()... yes
    checking for rb_thread_fd_select()... yes
    checking for rb_w32_wrap_io_handle()... no
    checking for rb_str_modify_expand()... yes
    checking for rb_hash_dup()... yes
    checking for PGRES_COPY_BOTH in libpq-fe.h... yes
    checking for PGRES_SINGLE_TUPLE in libpq-fe.h... yes
    checking for PG_DIAG_TABLE_NAME in libpq-fe.h... yes
    checking for struct pgNotify.extra in libpq-fe.h... yes
    checking for unistd.h... yes
    checking for inttypes.h... yes
    checking for ruby/st.h... yes
    checking for C99 variable length arrays... yes
    creating extconf.h
    creating Makefile
    
    current directory: /Users/tpowell/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/pg-0.18.4/ext
    make "DESTDIR=" clean
    
    current directory: /Users/tpowell/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/pg-0.18.4/ext
    make "DESTDIR="
    compiling gvl_wrappers.c
    compiling pg.c
    compiling pg_binary_decoder.c
    compiling pg_binary_encoder.c
    compiling pg_coder.c
    pg_coder.c:188:63: warning: implicit conversion loses integer precision: 'VALUE' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
            res = this->dec_func(this, val, RSTRING_LEN(argv[0]), tuple, field, ENCODING_GET(argv[0]));
                  ~~~~                                                   ^~~~~
    pg_coder.c:188:56: warning: implicit conversion loses integer precision: 'VALUE' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
            res = this->dec_func(this, val, RSTRING_LEN(argv[0]), tuple, field, ENCODING_GET(argv[0]));
                  ~~~~                                            ^~~~~
    pg_coder.c:188:34: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
            res = this->dec_func(this, val, RSTRING_LEN(argv[0]), tuple, field, ENCODING_GET(argv[0]));
                  ~~~~                      ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:975:6: note: expanded from macro 'RSTRING_LEN'
         RSTRING_EMBED_LEN(str) : \
         ^~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:971:6: note: expanded from macro 'RSTRING_EMBED_LEN'
         (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    pg_coder.c:188:34: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
            res = this->dec_func(this, val, RSTRING_LEN(argv[0]), tuple, field, ENCODING_GET(argv[0]));
                  ~~~~                      ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:976:28: note: expanded from macro 'RSTRING_LEN'
         RSTRING(str)->as.heap.len)
         ~~~~~~~~~~~~~~~~~~~~~~^~~
    pg_coder.c:417:16: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            s_id_encode = rb_intern("encode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_coder.c:417:16: note: '{' token is here
            s_id_encode = rb_intern("encode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_coder.c:417:16: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            s_id_encode = rb_intern("encode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_coder.c:417:16: note: ')' token is here
            s_id_encode = rb_intern("encode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    pg_coder.c:418:16: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            s_id_decode = rb_intern("decode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_coder.c:418:16: note: '{' token is here
            s_id_decode = rb_intern("decode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_coder.c:418:16: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            s_id_decode = rb_intern("decode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_coder.c:418:16: note: ')' token is here
            s_id_decode = rb_intern("decode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    pg_coder.c:419:15: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            s_id_CFUNC = rb_intern("CFUNC");
                         ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_coder.c:419:15: note: '{' token is here
            s_id_CFUNC = rb_intern("CFUNC");
                         ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_coder.c:419:15: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            s_id_CFUNC = rb_intern("CFUNC");
                         ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_coder.c:419:15: note: ')' token is here
            s_id_CFUNC = rb_intern("CFUNC");
                         ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    10 warnings generated.
    compiling pg_connection.c
    pg_connection.c:104:26: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    rb_funcall( socket_io, rb_intern("close"), 0 );
                                           ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:104:26: note: '{' token is here
                    rb_funcall( socket_io, rb_intern("close"), 0 );
                                           ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:104:26: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    rb_funcall( socket_io, rb_intern("close"), 0 );
                                           ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:104:26: note: ')' token is here
                    rb_funcall( socket_io, rb_intern("close"), 0 );
                                           ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:126:30: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("keyword")), rb_str_new2(options[i].keyword));
                                                      ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:126:30: note: '{' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("keyword")), rb_str_new2(options[i].keyword));
                                                      ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:126:30: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("keyword")), rb_str_new2(options[i].keyword));
                                                      ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:126:30: note: ')' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("keyword")), rb_str_new2(options[i].keyword));
                                                      ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:128:30: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("envvar")), rb_str_new2(options[i].envvar));
                                                      ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:128:30: note: '{' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("envvar")), rb_str_new2(options[i].envvar));
                                                      ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:128:30: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("envvar")), rb_str_new2(options[i].envvar));
                                                      ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:128:30: note: ')' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("envvar")), rb_str_new2(options[i].envvar));
                                                      ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:130:30: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("compiled")), rb_str_new2(options[i].compiled));
                                                      ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:130:30: note: '{' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("compiled")), rb_str_new2(options[i].compiled));
                                                      ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:130:30: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("compiled")), rb_str_new2(options[i].compiled));
                                                      ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:130:30: note: ')' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("compiled")), rb_str_new2(options[i].compiled));
                                                      ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:132:30: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("val")), rb_str_new2(options[i].val));
                                                      ^~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:132:30: note: '{' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("val")), rb_str_new2(options[i].val));
                                                      ^~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:132:30: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("val")), rb_str_new2(options[i].val));
                                                      ^~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:132:30: note: ')' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("val")), rb_str_new2(options[i].val));
                                                      ^~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:134:30: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("label")), rb_str_new2(options[i].label));
                                                      ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:134:30: note: '{' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("label")), rb_str_new2(options[i].label));
                                                      ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:134:30: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("label")), rb_str_new2(options[i].label));
                                                      ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:134:30: note: ')' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("label")), rb_str_new2(options[i].label));
                                                      ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:136:30: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("dispchar")), rb_str_new2(options[i].dispchar));
                                                      ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:136:30: note: '{' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("dispchar")), rb_str_new2(options[i].dispchar));
                                                      ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:136:30: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                            rb_hash_aset(hash, ID2SYM(rb_intern("dispchar")), rb_str_new2(options[i].dispchar));
                                                      ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:136:30: note: ')' token is here
                            rb_hash_aset(hash, ID2SYM(rb_intern("dispchar")), rb_str_new2(options[i].dispchar));
                                                      ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:137:29: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    rb_hash_aset(hash, ID2SYM(rb_intern("dispsize")), INT2NUM(options[i].dispsize));
                                              ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:137:29: note: '{' token is here
                    rb_hash_aset(hash, ID2SYM(rb_intern("dispsize")), INT2NUM(options[i].dispsize));
                                              ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:137:29: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    rb_hash_aset(hash, ID2SYM(rb_intern("dispsize")), INT2NUM(options[i].dispsize));
                                              ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:137:29: note: ')' token is here
                    rb_hash_aset(hash, ID2SYM(rb_intern("dispsize")), INT2NUM(options[i].dispsize));
                                              ^~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:272:38: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            conninfo = rb_funcall2( rb_cPGconn, rb_intern("parse_connect_args"), argc, argv );
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_connection.c:272:38: note: '{' token is here
            conninfo = rb_funcall2( rb_cPGconn, rb_intern("parse_connect_args"), argc, argv );
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_connection.c:272:38: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            conninfo = rb_funcall2( rb_cPGconn, rb_intern("parse_connect_args"), argc, argv );
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_connection.c:272:38: note: ')' token is here
            conninfo = rb_funcall2( rb_cPGconn, rb_intern("parse_connect_args"), argc, argv );
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    pg_connection.c:324:33: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            conninfo = rb_funcall2( klass, rb_intern("parse_connect_args"), argc, argv );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_connection.c:324:33: note: '{' token is here
            conninfo = rb_funcall2( klass, rb_intern("parse_connect_args"), argc, argv );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_connection.c:324:33: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            conninfo = rb_funcall2( klass, rb_intern("parse_connect_args"), argc, argv );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_connection.c:324:33: note: ')' token is here
            conninfo = rb_funcall2( klass, rb_intern("parse_connect_args"), argc, argv );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    pg_connection.c:367:33: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            conninfo = rb_funcall2( klass, rb_intern("parse_connect_args"), argc, argv );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_connection.c:367:33: note: '{' token is here
            conninfo = rb_funcall2( klass, rb_intern("parse_connect_args"), argc, argv );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_connection.c:367:33: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            conninfo = rb_funcall2( klass, rb_intern("parse_connect_args"), argc, argv );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_connection.c:367:33: note: ')' token is here
            conninfo = rb_funcall2( klass, rb_intern("parse_connect_args"), argc, argv );
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    pg_connection.c:842:20: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            ID id_autoclose = rb_intern("autoclose=");
                              ^~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_connection.c:842:20: note: '{' token is here
            ID id_autoclose = rb_intern("autoclose=");
                              ^~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_connection.c:842:20: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            ID id_autoclose = rb_intern("autoclose=");
                              ^~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_connection.c:842:20: note: ')' token is here
            ID id_autoclose = rb_intern("autoclose=");
                              ^~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    pg_connection.c:856:35: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    socket_io = rb_funcall( rb_cIO, rb_intern("for_fd"), 1, INT2NUM(ruby_sd) );
                                                    ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:856:35: note: '{' token is here
                    socket_io = rb_funcall( rb_cIO, rb_intern("for_fd"), 1, INT2NUM(ruby_sd) );
                                                    ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:856:35: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    socket_io = rb_funcall( rb_cIO, rb_intern("for_fd"), 1, INT2NUM(ruby_sd) );
                                                    ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:856:35: note: ')' token is here
                    socket_io = rb_funcall( rb_cIO, rb_intern("for_fd"), 1, INT2NUM(ruby_sd) );
                                                    ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2220:23: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_relname = ID2SYM(rb_intern("relname"));
                                 ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2220:23: note: '{' token is here
            sym_relname = ID2SYM(rb_intern("relname"));
                                 ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2220:23: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_relname = ID2SYM(rb_intern("relname"));
                                 ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2220:23: note: ')' token is here
            sym_relname = ID2SYM(rb_intern("relname"));
                                 ^~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2221:22: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_be_pid = ID2SYM(rb_intern("be_pid"));
                                ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2221:22: note: '{' token is here
            sym_be_pid = ID2SYM(rb_intern("be_pid"));
                                ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2221:22: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_be_pid = ID2SYM(rb_intern("be_pid"));
                                ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2221:22: note: ')' token is here
            sym_be_pid = ID2SYM(rb_intern("be_pid"));
                                ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2222:21: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_extra = ID2SYM(rb_intern("extra"));
                               ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2222:21: note: '{' token is here
            sym_extra = ID2SYM(rb_intern("extra"));
                               ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2222:21: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_extra = ID2SYM(rb_intern("extra"));
                               ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2222:21: note: ')' token is here
            sym_extra = ID2SYM(rb_intern("extra"));
                               ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:2394:3: error: implicit declaration of function 'gettimeofday' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                    gettimeofday(&currtime, NULL);
                    ^
    pg_connection.c:2411:4: error: implicit declaration of function 'gettimeofday' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                            gettimeofday(&currtime, NULL);
                            ^
    pg_connection.c:2734:26: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            if(rb_respond_to(stream,rb_intern("fileno")) == Qfalse)
                                    ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_connection.c:2734:26: note: '{' token is here
            if(rb_respond_to(stream,rb_intern("fileno")) == Qfalse)
                                    ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_connection.c:2734:26: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            if(rb_respond_to(stream,rb_intern("fileno")) == Qfalse)
                                    ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_connection.c:2734:26: note: ')' token is here
            if(rb_respond_to(stream,rb_intern("fileno")) == Qfalse)
                                    ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    pg_connection.c:2737:30: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            fileno = rb_funcall(stream, rb_intern("fileno"), 0);
                                        ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2737:30: note: '{' token is here
            fileno = rb_funcall(stream, rb_intern("fileno"), 0);
                                        ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2737:30: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            fileno = rb_funcall(stream, rb_intern("fileno"), 0);
                                        ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2737:30: note: ')' token is here
            fileno = rb_funcall(stream, rb_intern("fileno"), 0);
                                        ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2754:32: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            new_file = rb_funcall(rb_cIO, rb_intern("new"), 1, INT2NUM(new_fd));
                                          ^~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2754:32: note: '{' token is here
            new_file = rb_funcall(rb_cIO, rb_intern("new"), 1, INT2NUM(new_fd));
                                          ^~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2754:32: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            new_file = rb_funcall(rb_cIO, rb_intern("new"), 1, INT2NUM(new_fd));
                                          ^~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2754:32: note: ')' token is here
            new_file = rb_funcall(rb_cIO, rb_intern("new"), 1, INT2NUM(new_fd));
                                          ^~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2773:33: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            rb_funcall(this->trace_stream, rb_intern("close"), 0);
                                           ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2773:33: note: '{' token is here
            rb_funcall(this->trace_stream, rb_intern("close"), 0);
                                           ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2773:33: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            rb_funcall(this->trace_stream, rb_intern("close"), 0);
                                           ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2773:33: note: ')' token is here
            rb_funcall(this->trace_stream, rb_intern("close"), 0);
                                           ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2792:37: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    rb_funcall(this->notice_receiver, rb_intern("call"), 1, result);
                                                      ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2792:37: note: '{' token is here
                    rb_funcall(this->notice_receiver, rb_intern("call"), 1, result);
                                                      ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2792:37: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    rb_funcall(this->notice_receiver, rb_intern("call"), 1, result);
                                                      ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2792:37: note: ')' token is here
                    rb_funcall(this->notice_receiver, rb_intern("call"), 1, result);
                                                      ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2869:37: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    rb_funcall(this->notice_receiver, rb_intern("call"), 1, message_str);
                                                      ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2869:37: note: '{' token is here
                    rb_funcall(this->notice_receiver, rb_intern("call"), 1, message_str);
                                                      ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2869:37: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
                    rb_funcall(this->notice_receiver, rb_intern("call"), 1, message_str);
                                                      ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:2869:37: note: ')' token is here
                    rb_funcall(this->notice_receiver, rb_intern("call"), 1, message_str);
                                                      ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:2473:20: note: expanded from macro 'rb_funcall'
            rb_funcallv(recv, mid, \
                              ^~~
    pg_connection.c:3771:16: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            s_id_encode = rb_intern("encode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    pg_connection.c:3771:16: note: '{' token is here
            s_id_encode = rb_intern("encode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    pg_connection.c:3771:16: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            s_id_encode = rb_intern("encode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    pg_connection.c:3771:16: note: ')' token is here
            s_id_encode = rb_intern("encode");
                          ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    pg_connection.c:3772:20: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_type = ID2SYM(rb_intern("type"));
                              ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3772:20: note: '{' token is here
            sym_type = ID2SYM(rb_intern("type"));
                              ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3772:20: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_type = ID2SYM(rb_intern("type"));
                              ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3772:20: note: ')' token is here
            sym_type = ID2SYM(rb_intern("type"));
                              ^~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3773:22: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_format = ID2SYM(rb_intern("format"));
                                ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3773:22: note: '{' token is here
            sym_format = ID2SYM(rb_intern("format"));
                                ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3773:22: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_format = ID2SYM(rb_intern("format"));
                                ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3773:22: note: ')' token is here
            sym_format = ID2SYM(rb_intern("format"));
                                ^~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3774:21: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_value = ID2SYM(rb_intern("value"));
                               ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:23: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                          ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3774:21: note: '{' token is here
            sym_value = ID2SYM(rb_intern("value"));
                               ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1740:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        {                                                   \
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3774:21: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
            sym_value = ID2SYM(rb_intern("value"));
                               ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:24: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1745:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
        }
        ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    pg_connection.c:3774:21: note: ')' token is here
            sym_value = ID2SYM(rb_intern("value"));
                               ^~~~~~~~~~~~~~~~~~
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:1755:56: note: expanded from macro 'rb_intern'
            __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                           ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:385:29: note: expanded from macro 'ID2SYM'
    #define ID2SYM(x) RB_ID2SYM(x)
                                ^
    /Users/tpowell/.rbenv/versions/2.5.7/include/ruby-2.5.0/ruby/ruby.h:380:33: note: expanded from macro 'RB_ID2SYM'
    #define RB_ID2SYM(x) (rb_id2sym(x))
                                    ^
    52 warnings and 2 errors generated.
    make: *** [pg_connection.o] Error 1
    
    make failed, exit code 2
    
    

     
  • ThomasPowell 4:27 am on June 29, 2021 Permalink | Reply
    Tags: , gem, ,   

    NoMethodError undefined method `shared_examples_for’ for main:Object for bundle gem rspec 

    If you create a gem stub using bundle gem thing and select rspec as your test suite, you may get an error similar to the following:

    ❯ bundle exec rspec
    
    An error occurred while loading ./spec/thing_spec.rb.
    Failure/Error:
      shared_examples_for 'saying hello' do
        puts "hi"
      end
    
    NoMethodError:
      undefined method `shared_examples_for' for main:Object
    # ./spec/thing_spec.rb:1:in `<top (required)>'
    No examples found.
    

    whenever using describe, shared_examples, and shared_examples_for, etc…

    After a lot of diving into rspec source code to verify where shared_examples_for was defined (rspec-core so…) I noticed the following code in the stubbed spec_helper.rb:

      # Disable RSpec exposing methods globally on `Module` and `main`
      config.disable_monkey_patching!
    

    If you comment out config.disable_monkey_patching!, then those methods will be included at a top level.

     
  • ThomasPowell 3:51 pm on June 6, 2014 Permalink
    Tags: gem, paperclip,   

    rails generate paperclip_database:migration getting protected method `migration_file_name’ error 

    Quick fix (put this in application.rb or similar in order to run the rails generate paperclip_databasee:migration command):

    module PaperclipDatabase
      module Generators
        class MigrationGenerator
          public :migration_file_name
        end
      end
    end
    

    There are two errors causing this error, one in paperclip and one in paperclip_database. Not sure what changes to Rails 4 caused this, but the issue is fixed in this commit in paperclip, which probably needs to be mirrored in paperclip_database. (Even if I point to the github repo for paperclip, I still get the error due to protected being specified on paperclip_database as well.

    The error only appears to affect the generator.

    If you’d rather not have a temporary monkey patch, you can write the migration by hand:

    Example (for a User with an avatar attachment):

    class CreateUserAvatar < ActiveRecord::Migration
      def self.up
        create_table :avatars do |t|
          t.integer    :user_id
          t.string     :style
          t.binary     :file_contents
        end
      end
    
      def self.down
        drop_table :avatars
      end
    end
    
     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel
%d bloggers like this: