https://gcc.gnu.org/g:efae253b9f863b066e899106d7f3ad9ef0cd3c58

commit r15-4496-gefae253b9f863b066e899106d7f3ad9ef0cd3c58
Author: Tobias Burnus <tbur...@baylibre.com>
Date:   Sat Oct 19 10:19:14 2024 +0200

    Fortran: Fix translatability of diagnostic strings
    
    gcc/fortran/ChangeLog:
    
            * check.cc (is_c_interoperable): Use _(...) around to mark strings
            as translatable.
            * data.cc (gfc_assign_data_value): Move string literal to gfc_error
            to make it translatable.
            * resolve.cc (resolve_fl_variable, resolve_equivalence): Use G_(...)
            around string literals.
            * scanner.cc (skip_fixed_omp_sentinel): Replace '...' by %<...%>.
            * trans-openmp.cc (gfc_split_omp_clauses,
            gfc_trans_omp_declare_variant): Likewise.

Diff:
---
 gcc/fortran/check.cc        | 20 ++++++++++----------
 gcc/fortran/data.cc         |  6 +++---
 gcc/fortran/resolve.cc      | 20 ++++++++++----------
 gcc/fortran/scanner.cc      |  2 +-
 gcc/fortran/trans-openmp.cc |  4 ++--
 5 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc
index 79e6668d0afe..e90073ad4b04 100644
--- a/gcc/fortran/check.cc
+++ b/gcc/fortran/check.cc
@@ -5615,32 +5615,32 @@ is_c_interoperable (gfc_expr *expr, const char **msg, 
bool c_loc, bool c_f_ptr)
 
   if (expr->expr_type == EXPR_NULL && expr->ts.type == BT_UNKNOWN)
     {
-      *msg = "NULL() is not interoperable";
+      *msg = _("NULL() is not interoperable");
       return false;
     }
 
   if (expr->ts.type == BT_BOZ)
     {
-      *msg = "BOZ literal constant";
+      *msg = _("BOZ literal constant");
       return false;
     }
 
   if (expr->ts.type == BT_CLASS)
     {
-      *msg = "Expression is polymorphic";
+      *msg = _("Expression is polymorphic");
       return false;
     }
 
   if (expr->ts.type == BT_DERIVED && !expr->ts.u.derived->attr.is_bind_c
       && !expr->ts.u.derived->ts.is_iso_c)
     {
-      *msg = "Expression is a noninteroperable derived type";
+      *msg = _("Expression is a noninteroperable derived type");
       return false;
     }
 
   if (expr->ts.type == BT_PROCEDURE)
     {
-      *msg = "Procedure unexpected as argument";
+      *msg = _("Procedure unexpected as argument");
       return false;
     }
 
@@ -5650,14 +5650,14 @@ is_c_interoperable (gfc_expr *expr, const char **msg, 
bool c_loc, bool c_f_ptr)
       for (i = 0; gfc_logical_kinds[i].kind; i++)
         if (gfc_logical_kinds[i].kind == expr->ts.kind)
           return true;
-      *msg = "Extension to use a non-C_Bool-kind LOGICAL";
+      *msg = _("Extension to use a non-C_Bool-kind LOGICAL");
       return false;
     }
 
   if (gfc_notification_std (GFC_STD_GNU) && expr->ts.type == BT_CHARACTER
       && expr->ts.kind != 1)
     {
-      *msg = "Extension to use a non-C_CHAR-kind CHARACTER";
+      *msg = _("Extension to use a non-C_CHAR-kind CHARACTER");
       return false;
     }
 
@@ -5678,7 +5678,7 @@ is_c_interoperable (gfc_expr *expr, const char **msg, 
bool c_loc, bool c_f_ptr)
        && expr->ts.u.cl
        && !gfc_length_one_character_type_p (&expr->ts))
       {
-       *msg = "Type shall have a character length of 1";
+       *msg = _("Type shall have a character length of 1");
        return false;
       }
     }
@@ -5689,7 +5689,7 @@ is_c_interoperable (gfc_expr *expr, const char **msg, 
bool c_loc, bool c_f_ptr)
 
   if (gfc_is_coarray (expr))
     {
-      *msg = "Coarrays are not interoperable";
+      *msg = _("Coarrays are not interoperable");
       return false;
     }
 
@@ -5700,7 +5700,7 @@ is_c_interoperable (gfc_expr *expr, const char **msg, 
bool c_loc, bool c_f_ptr)
       gfc_array_ref *ar = gfc_find_array_ref (expr);
       if (ar->type == AR_FULL && ar->as->type == AS_ASSUMED_SIZE)
        {
-         *msg = "Assumed-size arrays are not interoperable";
+         *msg = _("Assumed-size arrays are not interoperable");
          return false;
        }
     }
diff --git a/gcc/fortran/data.cc b/gcc/fortran/data.cc
index c0974be88b22..e7202455b3ec 100644
--- a/gcc/fortran/data.cc
+++ b/gcc/fortran/data.cc
@@ -272,8 +272,6 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, 
mpz_t index,
   gfc_symbol *symbol;
   gfc_typespec *last_ts;
   mpz_t offset;
-  const char *msg = "F18(R841): data-implied-do object at %L is neither an "
-                   "array-element nor a scalar-structure-component";
 
   symbol = lvalue->symtree->n.sym;
   init = symbol->value;
@@ -523,7 +521,9 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, 
mpz_t index,
             violates F18(R841). If the error is removed, the expected result
             is obtained. Leaving the code in place ensures a clean error
             recovery.  */
-         gfc_error (msg, &lvalue->where);
+         gfc_error ("data-implied-do object at %L is neither an array-element "
+                    "nor a scalar-structure-component (F2018: R841)",
+                    &lvalue->where);
 
          /* This breaks with the other reference types in that the output
             constructor has to be of type COMPLEX, whereas the lvalue is
diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
index 0ff63beb6a8f..ce4bf036c545 100644
--- a/gcc/fortran/resolve.cc
+++ b/gcc/fortran/resolve.cc
@@ -13984,8 +13984,8 @@ deferred_requirements (gfc_symbol *sym)
 static bool
 resolve_fl_variable (gfc_symbol *sym, int mp_flag)
 {
-  const char *auto_save_msg = "Automatic object %qs at %L cannot have the "
-                             "SAVE attribute";
+  const char *auto_save_msg = G_("Automatic object %qs at %L cannot have the "
+                                "SAVE attribute");
 
   if (!resolve_fl_var_and_proc (sym, mp_flag))
     return false;
@@ -18246,8 +18246,8 @@ resolve_equivalence (gfc_equiv *eq)
       /* Since the pair of objects is not of the same type, mixed or
         non-default sequences can be rejected.  */
 
-      msg = "Sequence %s with mixed components in EQUIVALENCE "
-           "statement at %L with different type objects";
+      msg = G_("Sequence %s with mixed components in EQUIVALENCE "
+              "statement at %L with different type objects");
       if ((object ==2
           && last_eq_type == SEQ_MIXED
           && last_where
@@ -18256,8 +18256,8 @@ resolve_equivalence (gfc_equiv *eq)
              && !gfc_notify_std (GFC_STD_GNU, msg, sym->name, &e->where)))
        continue;
 
-      msg = "Non-default type object or sequence %s in EQUIVALENCE "
-           "statement at %L with objects of different type";
+      msg = G_("Non-default type object or sequence %s in EQUIVALENCE "
+              "statement at %L with objects of different type");
       if ((object ==2
           && last_eq_type == SEQ_NONDEFAULT
           && last_where
@@ -18266,15 +18266,15 @@ resolve_equivalence (gfc_equiv *eq)
              && !gfc_notify_std (GFC_STD_GNU, msg, sym->name, &e->where)))
        continue;
 
-      msg ="Non-CHARACTER object %qs in default CHARACTER "
-          "EQUIVALENCE statement at %L";
+      msg = G_("Non-CHARACTER object %qs in default CHARACTER "
+              "EQUIVALENCE statement at %L");
       if (last_eq_type == SEQ_CHARACTER
          && eq_type != SEQ_CHARACTER
          && !gfc_notify_std (GFC_STD_GNU, msg, sym->name, &e->where))
                continue;
 
-      msg ="Non-NUMERIC object %qs in default NUMERIC "
-          "EQUIVALENCE statement at %L";
+      msg = G_("Non-NUMERIC object %qs in default NUMERIC "
+              "EQUIVALENCE statement at %L");
       if (last_eq_type == SEQ_NUMERIC
          && eq_type != SEQ_NUMERIC
          && !gfc_notify_std (GFC_STD_GNU, msg, sym->name, &e->where))
diff --git a/gcc/fortran/scanner.cc b/gcc/fortran/scanner.cc
index 3d853aca0f34..09d7d8c5e399 100644
--- a/gcc/fortran/scanner.cc
+++ b/gcc/fortran/scanner.cc
@@ -1008,7 +1008,7 @@ skip_fixed_omp_sentinel (locus *start)
     }
   else if (UNLIKELY (c == 'x' || c == 'X'))
     gfc_warning_now (OPT_Wsurprising,
-                    "Ignoring '!$omx' vendor-extension sentinel at %C");
+                    "Ignoring %<!$omx%> vendor-extension sentinel at %C");
   return false;
 }
 
diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc
index 153efd812334..5f7e29c2c644 100644
--- a/gcc/fortran/trans-openmp.cc
+++ b/gcc/fortran/trans-openmp.cc
@@ -7216,7 +7216,7 @@ gfc_split_omp_clauses (gfc_code *code,
                 }
             }
           if (!found)
-            gfc_error ("%qs specified in 'allocate' clause at %L but not "
+            gfc_error ("%qs specified in %<allocate%> clause at %L but not "
                        "in an explicit privatization clause",
                        alloc_nl->sym->name, &alloc_nl->where);
         }
@@ -8424,7 +8424,7 @@ gfc_trans_omp_declare_variant (gfc_namespace *ns)
        {
          if (!search_ns->proc_name->attr.function
              && !search_ns->proc_name->attr.subroutine)
-           gfc_error ("The base name for 'declare variant' must be "
+           gfc_error ("The base name for %<declare variant%> must be "
                       "specified at %L ", &odv->where);
          else
            error_found = false;

Reply via email to