From: Ben Craig Date: Wed, 9 Oct 2013 14:47:48 +0000 (-0500) Subject: Revert "THRIFT-2045: C++ compiler warning and build cleanup" X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=9f9cd10e813ef574dd5578d78ca26a9088383d3a;p=common%2Fthrift.git Revert "THRIFT-2045: C++ compiler warning and build cleanup" This reverts commit 282e440c6de219b7b8f32b01cc7eb599f534f33f. This change had unintended autoconf side effects. --- diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc index 333fe60c..1faa2c33 100644 --- a/compiler/cpp/src/generate/t_cpp_generator.cc +++ b/compiler/cpp/src/generate/t_cpp_generator.cc @@ -3341,11 +3341,7 @@ void t_cpp_generator::generate_process_function(t_service* tservice, } } - if (!tfunction->is_oneway()) { - out << " catch (const std::exception& e) {" << endl; - } else { - out << " catch (const std::exception&) {" << endl; - } + out << " catch (const std::exception& e) {" << endl; indent_up(); out << @@ -3475,7 +3471,7 @@ void t_cpp_generator::generate_process_function(t_service* tservice, // TODO(dreiss): Handle TExceptions? Expose to server? out << - indent() << "catch (const std::exception&) {" << endl << + indent() << "catch (const std::exception& exn) {" << endl << indent() << " if (this->eventHandler_.get() != NULL) {" << endl << indent() << " this->eventHandler_->handlerError(ctx, " << service_func_name << ");" << endl << diff --git a/compiler/cpp/src/generate/t_go_generator.cc b/compiler/cpp/src/generate/t_go_generator.cc index 0d7e6c2b..00af893e 100644 --- a/compiler/cpp/src/generate/t_go_generator.cc +++ b/compiler/cpp/src/generate/t_go_generator.cc @@ -2165,7 +2165,7 @@ void t_go_generator::generate_service_remote(t_service* tservice) S_IRUSR | S_IWUSR | S_IXUSR -#ifndef _WIN32 +#ifndef MINGW | S_IRGRP | S_IXGRP | S_IROTH diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/generate/t_py_generator.cc index b910cf69..e2151953 100644 --- a/compiler/cpp/src/generate/t_py_generator.cc +++ b/compiler/cpp/src/generate/t_py_generator.cc @@ -1697,7 +1697,7 @@ void t_py_generator::generate_service_remote(t_service* tservice) { S_IRUSR | S_IWUSR | S_IXUSR -#ifndef _WIN32 +#ifndef MINGW | S_IRGRP | S_IXGRP | S_IROTH diff --git a/compiler/cpp/src/main.cc b/compiler/cpp/src/main.cc index 4ce22b46..b9f75135 100755 --- a/compiler/cpp/src/main.cc +++ b/compiler/cpp/src/main.cc @@ -39,14 +39,13 @@ #include #include -#ifdef _WIN32 +#ifdef MINGW # include /* for GetFullPathName */ #endif // Careful: must include globals first for extern definitions #include "globals.h" -#include "platform.h" #include "main.h" #include "parse/t_program.h" #include "parse/t_scope.h" @@ -162,11 +161,11 @@ int g_allow_64bit_consts = 0; bool gen_recurse = false; /** - * Win32 doesn't have realpath, so use fallback implementation in that case, + * MinGW doesn't have realpath, so use fallback implementation in that case, * otherwise this just calls through to realpath */ char *saferealpath(const char *path, char *resolved_path) { -#ifdef _WIN32 +#ifdef MINGW char buf[MAX_PATH]; char* basename; DWORD len = GetFullPathName(path, MAX_PATH, buf, &basename); @@ -191,7 +190,7 @@ char *saferealpath(const char *path, char *resolved_path) { } bool check_is_directory(const char *dir_name) { -#ifdef _WIN32 +#ifdef MINGW DWORD attributes = ::GetFileAttributesA(dir_name); if(attributes == INVALID_FILE_ATTRIBUTES) { fprintf(stderr, "Output directory %s is unusable: GetLastError() = %ld\n", dir_name, GetLastError()); @@ -337,7 +336,7 @@ string include_file(string filename) { // Absolute path? Just try that if (filename[0] == '/') { // Realpath! - char rp[THRIFT_PATH_MAX]; + char rp[PATH_MAX]; if (saferealpath(filename.c_str(), rp) == NULL) { pwarning(0, "Cannot open include file %s\n", filename.c_str()); return std::string(); @@ -359,7 +358,7 @@ string include_file(string filename) { string sfilename = *(it) + "/" + filename; // Realpath! - char rp[THRIFT_PATH_MAX]; + char rp[PATH_MAX]; if (saferealpath(sfilename.c_str(), rp) == NULL) { continue; } @@ -758,8 +757,8 @@ void validate_const_rec(std::string name, t_type* type, t_const_value* value) { } } if (!found) { - throw "type error: const " + name + " was declared as type " - + type->get_name() + " which is an enum, but " + throw "type error: const " + name + " was declared as type " + + type->get_name() + " which is an enum, but " + value->get_identifier() + " is not a valid value for that enum"; } } else if (type->is_struct() || type->is_xception()) { @@ -1067,7 +1066,7 @@ int main(int argc, char** argv) { } out_path = arg; -#ifdef _WIN32 +#ifdef MINGW //strip out trailing \ on Windows int last = out_path.length()-1; if (out_path[last] == '\\') @@ -1105,7 +1104,7 @@ int main(int argc, char** argv) { } // Real-pathify it - char rp[THRIFT_PATH_MAX]; + char rp[PATH_MAX]; if (argv[i] == NULL) { fprintf(stderr, "Missing file name\n"); usage(); diff --git a/compiler/cpp/src/parse/t_field.h b/compiler/cpp/src/parse/t_field.h index 7bbcc0f3..ac10d573 100644 --- a/compiler/cpp/src/parse/t_field.h +++ b/compiler/cpp/src/parse/t_field.h @@ -155,7 +155,7 @@ class t_field : public t_doc { * not it was specified by the user or automatically chosen. */ struct t_field_id { - int32_t value; + int64_t value; bool auto_assigned; }; diff --git a/compiler/cpp/src/platform.h b/compiler/cpp/src/platform.h index 7eb891d3..04f04c70 100644 --- a/compiler/cpp/src/platform.h +++ b/compiler/cpp/src/platform.h @@ -22,11 +22,7 @@ * is different for the non-POSIX MinGW */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef _WIN32 +#ifdef MINGW #include #include #else @@ -34,14 +30,8 @@ #include #endif -#ifdef _WIN32 +#if defined MINGW #define MKDIR(x) mkdir(x) #else #define MKDIR(x) mkdir(x, S_IRWXU | S_IRWXG | S_IRWXO) #endif - -#ifdef PATH_MAX -#define THRIFT_PATH_MAX PATH_MAX -#else -#define THRIFT_PATH_MAX MAX_PATH -#endif diff --git a/compiler/cpp/src/thriftl.ll b/compiler/cpp/src/thriftl.ll index db17a636..96d61ecf 100644 --- a/compiler/cpp/src/thriftl.ll +++ b/compiler/cpp/src/thriftl.ll @@ -33,26 +33,14 @@ * We should revert the Makefile.am changes once Apple ships a reasonable * GCC. */ -#ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wunused-function" #pragma GCC diagnostic ignored "-Wunused-label" -#endif - -#ifdef _MSC_VER -//warning C4102: 'find_rule' : unreferenced label -#pragma warning(disable:4102) -//avoid isatty redefinition -#define YY_NEVER_INTERACTIVE 1 -#endif #include #include #include #include -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "main.h" #include "globals.h" #include "parse/t_program.h" diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrifty.yy index a8ebf50a..f5ab4a61 100644 --- a/compiler/cpp/src/thrifty.yy +++ b/compiler/cpp/src/thrifty.yy @@ -34,19 +34,11 @@ #include #endif #include -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "main.h" #include "globals.h" #include "parse/t_program.h" #include "parse/t_scope.h" -#ifdef _MSC_VER -//warning C4065: switch statement contains 'default' but no 'case' labels -#pragma warning(disable:4065) -#endif - /** * This global variable is used for automatic numbering of field indices etc. * when parsing the members of a struct. Field values are automatically @@ -592,7 +584,7 @@ EnumDef: pwarning(1, "64-bit value supplied for enum %s.\n", $2); } validate_simple_identifier( $2); - $$ = new t_enum_value($2, static_cast($4)); + $$ = new t_enum_value($2, $4); if ($1 != NULL) { $$->set_doc($1); } @@ -772,7 +764,7 @@ Struct: delete $7; } } - + XsdAll: tok_xsd_all { @@ -994,17 +986,17 @@ FieldIdentifier: * Leave $1 as-is, and update y_field_val to be one less than $1. * The FieldList parsing will catch any duplicate key values. */ - y_field_val = static_cast($1 - 1); - $$.value = static_cast($1); + y_field_val = $1 - 1; + $$.value = $1; $$.auto_assigned = false; } else { - pwarning(1, "Nonpositive value (%d) not allowed as a field key.\n", + pwarning(1, "Nonpositive value (%"PRIi64") not allowed as a field key.\n", $1); $$.value = y_field_val--; $$.auto_assigned = true; } } else { - $$.value = static_cast($1); + $$.value = $1; $$.auto_assigned = false; } } diff --git a/compiler/cpp/src/windows/config.h b/compiler/cpp/src/windows/config.h index 356f4e5b..9d75e801 100644 --- a/compiler/cpp/src/windows/config.h +++ b/compiler/cpp/src/windows/config.h @@ -37,10 +37,6 @@ #define PRIu64 "I64d" #define PRIi64 "I64d" -// squelch deprecation warnings #pragma warning(disable:4996) -// squelch bool conversion performance warning -#pragma warning(disable:4800) - #endif // _THRIFT_WINDOWS_CONFIG_H_ diff --git a/compiler/cpp/src/windows/version.h.in b/compiler/cpp/src/windows/version.h.in index 33708bad..94b7c568 100644 --- a/compiler/cpp/src/windows/version.h.in +++ b/compiler/cpp/src/windows/version.h.in @@ -28,6 +28,15 @@ #error "This is a Windows header only" #endif +#define PATH_MAX MAX_PATH #define THRIFT_VERSION "@PACKAGE_VERSION@" +#ifndef S_ISDIR +#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#endif + +#ifndef S_ISREG +#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#endif + #endif // _THRIFT_WINDOWS_VERSION_H_