Message ID | CAKwh3qhAwPLLRTiy9N+pbJVB0OTuE3eyAsY8ySksDCdsDdUFmA@mail.gmail.com |
---|---|
State | New |
Headers | show |
ping! 2016-02-05 19:19 GMT+01:00 Janus Weil <janus@gcc.gnu.org>: > Hi all, > > I have slightly updated the patch now to avoid string-breaking issues > (even if it may not be a problem at all, as mentioned by Jospeh). Also > I removed the questionable part in intrinsic.c that I was not sure > about. > > This version of the patch should not be too far from obvious now. Ok for trunk? > > Cheers, > Janus > > > > 2016-02-03 23:27 GMT+01:00 Joseph Myers <joseph@codesourcery.com>: >> On Wed, 3 Feb 2016, Manfred Schwarb wrote: >> >>> There are 2 things with translation, and there is a third issue: >>> - As you noticed, breaking things differently means translation has to be >>> done again. >>> - Normally, each string is translated independently, and depending on the >>> language there may be lack of context (e.g. adjectives get different >>> suffixes >>> depending on the noun). >> >> I believe gettext works fine with (compile-time) string constant >> concatenation - that is, extracts the whole concatenated string for >> translation, so these are non-issues. What doesn't work includes: >> >> * Runtime concatenation of strings or otherwise putting English fragments >> together at runtime. >> >> * String constant concatenation where one of the concatenated pieces comes >> from a macro expansion. >> >> * The argument for translation being a conditional expression: >> >> error (cond ? "message 1" : "message 2"); >> >> (in this case, only one of the messages may be extracted for translation, >> so you need to mark both of them up with appropriate macros such as G_). >> >> -- >> Joseph S. Myers >> joseph@codesourcery.com
double-ping ... 2016-02-12 0:29 GMT+01:00 Janus Weil <janus@gcc.gnu.org>: > ping! > > 2016-02-05 19:19 GMT+01:00 Janus Weil <janus@gcc.gnu.org>: >> Hi all, >> >> I have slightly updated the patch now to avoid string-breaking issues >> (even if it may not be a problem at all, as mentioned by Jospeh). Also >> I removed the questionable part in intrinsic.c that I was not sure >> about. >> >> This version of the patch should not be too far from obvious now. Ok for trunk? >> >> Cheers, >> Janus >> >> >> >> 2016-02-03 23:27 GMT+01:00 Joseph Myers <joseph@codesourcery.com>: >>> On Wed, 3 Feb 2016, Manfred Schwarb wrote: >>> >>>> There are 2 things with translation, and there is a third issue: >>>> - As you noticed, breaking things differently means translation has to be >>>> done again. >>>> - Normally, each string is translated independently, and depending on the >>>> language there may be lack of context (e.g. adjectives get different >>>> suffixes >>>> depending on the noun). >>> >>> I believe gettext works fine with (compile-time) string constant >>> concatenation - that is, extracts the whole concatenated string for >>> translation, so these are non-issues. What doesn't work includes: >>> >>> * Runtime concatenation of strings or otherwise putting English fragments >>> together at runtime. >>> >>> * String constant concatenation where one of the concatenated pieces comes >>> from a macro expansion. >>> >>> * The argument for translation being a conditional expression: >>> >>> error (cond ? "message 1" : "message 2"); >>> >>> (in this case, only one of the messages may be extracted for translation, >>> so you need to mark both of them up with appropriate macros such as G_). >>> >>> -- >>> Joseph S. Myers >>> joseph@codesourcery.com
Index: gcc/fortran/check.c =================================================================== --- gcc/fortran/check.c (Revision 233182) +++ gcc/fortran/check.c (Arbeitskopie) @@ -5180,7 +5180,8 @@ gfc_check_transfer (gfc_expr *source, gfc_expr *mo return true; if (source_size < result_size) - gfc_warning (0, "Intrinsic TRANSFER at %L has partly undefined result: " + gfc_warning (OPT_Wsurprising, + "Intrinsic TRANSFER at %L has partly undefined result: " "source size %ld < result size %ld", &source->where, (long) source_size, (long) result_size); Index: gcc/fortran/frontend-passes.c =================================================================== --- gcc/fortran/frontend-passes.c (Revision 233182) +++ gcc/fortran/frontend-passes.c (Arbeitskopie) @@ -715,10 +715,12 @@ do_warn_function_elimination (gfc_expr *e) if (e->expr_type != EXPR_FUNCTION) return; if (e->value.function.esym) - gfc_warning (0, "Removing call to function %qs at %L", + gfc_warning (OPT_Wfunction_elimination, + "Removing call to function %qs at %L", e->value.function.esym->name, &(e->where)); else if (e->value.function.isym) - gfc_warning (0, "Removing call to function %qs at %L", + gfc_warning (OPT_Wfunction_elimination, + "Removing call to function %qs at %L", e->value.function.isym->name, &(e->where)); } /* Callback function for the code walker for doing common function Index: gcc/fortran/invoke.texi =================================================================== --- gcc/fortran/invoke.texi (Revision 233182) +++ gcc/fortran/invoke.texi (Arbeitskopie) @@ -709,8 +709,10 @@ Check the code for syntax errors, but do not actua will generate module files for each module present in the code, but no other output file. -@item -pedantic +@item -Wpedantic +@itemx -pedantic @opindex @code{pedantic} +@opindex @code{Wpedantic} Issue warnings for uses of extensions to Fortran 95. @option{-pedantic} also applies to C-language constructs where they occur in GNU Fortran source files, such as use of @samp{\e} in a Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (Revision 233182) +++ gcc/fortran/resolve.c (Arbeitskopie) @@ -2127,7 +2127,8 @@ resolve_elemental_actual (gfc_expr *expr, gfc_code && (set_by_optional || arg->expr->rank != rank) && !(isym && isym->id == GFC_ISYM_CONVERSION)) { - gfc_warning (0, "%qs at %L is an array and OPTIONAL; IF IT IS " + gfc_warning (OPT_Wpedantic, + "%qs at %L is an array and OPTIONAL; IF IT IS " "MISSING, it cannot be the actual argument of an " "ELEMENTAL procedure unless there is a non-optional " "argument with the same rank (12.4.1.5)", @@ -3685,7 +3686,8 @@ resolve_operator (gfc_expr *e) else msg = "Inequality comparison for %s at %L"; - gfc_warning (0, msg, gfc_typename (&op1->ts), &op1->where); + gfc_warning (OPT_Wcompare_reals, msg, + gfc_typename (&op1->ts), &op1->where); } } @@ -14890,12 +14892,13 @@ warn_unused_fortran_label (gfc_st_label *label) switch (label->referenced) { case ST_LABEL_UNKNOWN: - gfc_warning (0, "Label %d at %L defined but not used", label->value, - &label->where); + gfc_warning (OPT_Wunused_label, "Label %d at %L defined but not used", + label->value, &label->where); break; case ST_LABEL_BAD_TARGET: - gfc_warning (0, "Label %d at %L defined but cannot be used", + gfc_warning (OPT_Wunused_label, + "Label %d at %L defined but cannot be used", label->value, &label->where); break; Index: gcc/fortran/trans-common.c =================================================================== --- gcc/fortran/trans-common.c (Revision 233182) +++ gcc/fortran/trans-common.c (Arbeitskopie) @@ -1138,13 +1138,13 @@ translate_common (gfc_common_head *common, gfc_sym if (warn_align_commons) { if (strcmp (common->name, BLANK_COMMON_NAME)) - gfc_warning (0, + gfc_warning (OPT_Walign_commons, "Padding of %d bytes required before %qs in " "COMMON %qs at %L; reorder elements or use " "-fno-align-commons", (int)offset, s->sym->name, common->name, &common->where); else - gfc_warning (0, + gfc_warning (OPT_Walign_commons, "Padding of %d bytes required before %qs in " "COMMON at %L; reorder elements or use " "-fno-align-commons", (int)offset, Index: gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90 =================================================================== --- gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90 (Revision 233182) +++ gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90 (Arbeitskopie) @@ -1,4 +1,5 @@ ! { dg-do run } +! { dg-options "-Wpedantic" } ! ! PR fortran/53692 !