aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog54
-rw-r--r--libcpp/charset.cc4
-rw-r--r--libcpp/expr.cc23
-rw-r--r--libcpp/include/cpplib.h11
-rw-r--r--libcpp/include/line-map.h10
-rw-r--r--libcpp/include/symtab.h5
-rw-r--r--libcpp/init.cc52
-rw-r--r--libcpp/lex.cc20
-rw-r--r--libcpp/line-map.cc38
-rw-r--r--libcpp/po/ChangeLog4
-rw-r--r--libcpp/po/ro.po1140
11 files changed, 1309 insertions, 52 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 5984915..18d5bcc 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,57 @@
+2022-10-19 Lewis Hyatt <lhyatt@gmail.com>
+
+ * include/cpplib.h (struct cpp_string): Use new "string_length" GTY.
+ * include/symtab.h (struct ht_identifier): Likewise.
+
+2022-10-14 Joseph Myers <joseph@codesourcery.com>
+
+ * charset.cc (ucn_valid_in_identifier): Check xid_identifiers not
+ cplusplus to determine whether to use CXX23 and NXX23 flags.
+ * include/cpplib.h (struct cpp_options): Add xid_identifiers.
+ * init.cc (struct lang_flags, lang_defaults): Add xid_identifiers.
+ (cpp_set_lang): Set xid_identifiers.
+ * lex.cc (warn_about_normalization): Add parameter identifier.
+ Only pedwarn about non-NFC for identifiers, not pp-numbers.
+ (_cpp_lex_direct): Update calls to warn_about_normalization.
+
+2022-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ * include/cpplib.h (CPP_N_BFLOAT16): Define.
+ * expr.cc (interpret_float_suffix): Handle bf16 and BF16 suffixes for
+ C++.
+
+2022-09-28 Eugene Rozenfeld <erozen@microsoft.com>
+
+ * include/line-map.h: Add discriminator to location_adhoc_data.
+ (get_combined_adhoc_loc): Add discriminator parameter.
+ (get_discriminator_from_adhoc_loc): Add external declaration.
+ (get_discriminator_from_loc): Add external declaration.
+ (COMBINE_LOCATION_DATA): Add discriminator parameter.
+ * lex.cc (get_location_for_byte_range_in_cur_line) Pass 0 discriminator
+ in a call to COMBINE_LOCATION_DATA.
+ (warn_about_normalization): Pass 0 discriminator in a call to
+ COMBINE_LOCATION_DATA.
+ (_cpp_lex_direct): Pass 0 discriminator in a call to
+ COMBINE_LOCATION_DATA.
+ * line-map.cc (location_adhoc_data_hash): Use discriminator compute
+ location_adhoc_data hash.
+ (location_adhoc_data_eq): Use discriminator when comparing
+ location_adhoc_data.
+ (can_be_stored_compactly_p): Check discriminator to determine
+ compact storage.
+ (get_combined_adhoc_loc): Add discriminator parameter.
+ (get_discriminator_from_adhoc_loc): New function to get the discriminator
+ from an ad-hoc location.
+ (get_discriminator_from_loc): New function to get the discriminator
+ from a location.
+
+2022-09-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/106652
+ PR c++/85518
+ * expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
+ {f,F}{32,64,128}x suffixes for C++.
+
2022-09-08 Lewis Hyatt <lhyatt@gmail.com>
* line-map.cc (location_adhoc_data_update): Remove reliance on
diff --git a/libcpp/charset.cc b/libcpp/charset.cc
index 6834969..12a398e 100644
--- a/libcpp/charset.cc
+++ b/libcpp/charset.cc
@@ -1291,7 +1291,7 @@ ucn_valid_in_identifier (cpp_reader *pfile, cppchar_t c,
valid_flags = C99 | CXX | C11 | CXX23;
if (CPP_PEDANTIC (pfile))
{
- if (CPP_OPTION (pfile, cplusplus))
+ if (CPP_OPTION (pfile, xid_identifiers))
valid_flags = CXX23;
else if (CPP_OPTION (pfile, c11_identifiers))
valid_flags = C11;
@@ -1355,7 +1355,7 @@ ucn_valid_in_identifier (cpp_reader *pfile, cppchar_t c,
return 2;
}
- if (CPP_OPTION (pfile, cplusplus))
+ if (CPP_OPTION (pfile, xid_identifiers))
invalid_start_flags = NXX23;
else if (CPP_OPTION (pfile, c11_identifiers))
invalid_start_flags = N11;
diff --git a/libcpp/expr.cc b/libcpp/expr.cc
index 1d68064..5ee28c4 100644
--- a/libcpp/expr.cc
+++ b/libcpp/expr.cc
@@ -91,10 +91,10 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len)
size_t orig_len = len;
const uchar *orig_s = s;
size_t flags;
- size_t f, d, l, w, q, i, fn, fnx, fn_bits;
+ size_t f, d, l, w, q, i, fn, fnx, fn_bits, bf16;
flags = 0;
- f = d = l = w = q = i = fn = fnx = fn_bits = 0;
+ f = d = l = w = q = i = fn = fnx = fn_bits = bf16 = 0;
/* The following decimal float suffixes, from TR 24732:2009, TS
18661-2:2015 and C2X, are supported:
@@ -131,7 +131,8 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len)
w, W - machine-specific type such as __float80 (GNU extension).
q, Q - machine-specific type such as __float128 (GNU extension).
fN, FN - _FloatN (TS 18661-3:2015).
- fNx, FNx - _FloatNx (TS 18661-3:2015). */
+ fNx, FNx - _FloatNx (TS 18661-3:2015).
+ bf16, BF16 - std::bfloat16_t (ISO C++23). */
/* Process decimal float suffixes, which are two letters starting
with d or D. Order and case are significant. */
@@ -239,6 +240,19 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len)
fn++;
}
break;
+ case 'b': case 'B':
+ if (len > 2
+ /* Except for bf16 / BF16 where case is significant. */
+ && s[1] == (s[0] == 'b' ? 'f' : 'F')
+ && s[2] == '1'
+ && s[3] == '6')
+ {
+ bf16++;
+ len -= 3;
+ s += 3;
+ break;
+ }
+ return 0;
case 'd': case 'D': d++; break;
case 'l': case 'L': l++; break;
case 'w': case 'W': w++; break;
@@ -257,7 +271,7 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len)
of N larger than can be represented in the return value. The
caller is responsible for rejecting _FloatN suffixes where
_FloatN is not supported on the chosen target. */
- if (f + d + l + w + q + fn + fnx > 1 || i > 1)
+ if (f + d + l + w + q + fn + fnx + bf16 > 1 || i > 1)
return 0;
if (fn_bits > CPP_FLOATN_MAX)
return 0;
@@ -295,6 +309,7 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len)
q ? CPP_N_MD_Q :
fn ? CPP_N_FLOATN | (fn_bits << CPP_FLOATN_SHIFT) :
fnx ? CPP_N_FLOATNX | (fn_bits << CPP_FLOATN_SHIFT) :
+ bf16 ? CPP_N_BFLOAT16 :
CPP_N_DEFAULT));
}
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index 2db1e9c..1d34c00 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -179,7 +179,11 @@ enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, CLK_GNUC17, CLK_GNUC2X,
/* Payload of a NUMBER, STRING, CHAR or COMMENT token. */
struct GTY(()) cpp_string {
unsigned int len;
- const unsigned char *text;
+
+ /* TEXT is always null terminated (terminator not included in len); but this
+ GTY markup arranges that PCH streaming works properly even if there is a
+ null byte in the middle of the string. */
+ const unsigned char * GTY((string_length ("1 + %h.len"))) text;
};
/* Flags for the cpp_token structure. */
@@ -496,6 +500,10 @@ struct cpp_options
in C11. */
unsigned char c11_identifiers;
+ /* Nonzero means extended identifiers allow the characters specified
+ by Unicode XID_Start and XID_Continue properties. */
+ unsigned char xid_identifiers;
+
/* Nonzero for C++ 2014 Standard binary constants. */
unsigned char binary_constants;
@@ -1275,6 +1283,7 @@ struct cpp_num
#define CPP_N_USERDEF 0x1000000 /* C++11 user-defined literal. */
#define CPP_N_SIZE_T 0x2000000 /* C++23 size_t literal. */
+#define CPP_N_BFLOAT16 0x4000000 /* std::bfloat16_t type. */
#define CPP_N_WIDTH_FLOATN_NX 0xF0000000 /* _FloatN / _FloatNx value
of N, divided by 16. */
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index 9bdd5b9..50207ca 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -757,6 +757,7 @@ struct GTY(()) location_adhoc_data {
location_t locus;
source_range src_range;
void * GTY((skip)) data;
+ unsigned discriminator;
};
struct htab;
@@ -1034,12 +1035,14 @@ LINEMAPS_LAST_ALLOCATED_MACRO_MAP (const line_maps *set)
}
extern location_t get_combined_adhoc_loc (line_maps *, location_t,
- source_range, void *);
+ source_range, void *, unsigned);
extern void *get_data_from_adhoc_loc (const line_maps *, location_t);
+extern unsigned get_discriminator_from_adhoc_loc (const line_maps *, location_t);
extern location_t get_location_from_adhoc_loc (const line_maps *,
location_t);
extern source_range get_range_from_loc (line_maps *set, location_t loc);
+extern unsigned get_discriminator_from_loc (line_maps *set, location_t loc);
/* Get whether location LOC is a "pure" location, or
whether it is an ad-hoc location, or embeds range information. */
@@ -1058,9 +1061,10 @@ inline location_t
COMBINE_LOCATION_DATA (class line_maps *set,
location_t loc,
source_range src_range,
- void *block)
+ void *block,
+ unsigned discriminator)
{
- return get_combined_adhoc_loc (set, loc, src_range, block);
+ return get_combined_adhoc_loc (set, loc, src_range, block, discriminator);
}
extern void rebuild_location_adhoc_htab (class line_maps *);
diff --git a/libcpp/include/symtab.h b/libcpp/include/symtab.h
index 53efe6c..8b45fd5 100644
--- a/libcpp/include/symtab.h
+++ b/libcpp/include/symtab.h
@@ -29,7 +29,10 @@ along with this program; see the file COPYING3. If not see
typedef struct ht_identifier ht_identifier;
typedef struct ht_identifier *ht_identifier_ptr;
struct GTY(()) ht_identifier {
- const unsigned char *str;
+ /* This GTY markup arranges that the null-terminated identifier would still
+ stream to PCH correctly, if a null byte were to make its way into an
+ identifier somehow. */
+ const unsigned char * GTY((string_length ("1 + %h.len"))) str;
unsigned int len;
unsigned int hash_value;
};
diff --git a/libcpp/init.cc b/libcpp/init.cc
index d3b4f00..5f34e35 100644
--- a/libcpp/init.cc
+++ b/libcpp/init.cc
@@ -82,6 +82,7 @@ struct lang_flags
char extended_numbers;
char extended_identifiers;
char c11_identifiers;
+ char xid_identifiers;
char std;
char digraphs;
char uliterals;
@@ -102,31 +103,31 @@ struct lang_flags
};
static const struct lang_flags lang_defaults[] =
-{ /* c99 c++ xnum xid c11 std digr ulit rlit udlit bincst digsep trig u8chlit vaopt scope dfp szlit elifdef warndir delim trufal */
- /* GNUC89 */ { 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
- /* GNUC99 */ { 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
- /* GNUC11 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
- /* GNUC17 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
- /* GNUC2X */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
- /* STDC89 */ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- /* STDC94 */ { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- /* STDC99 */ { 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- /* STDC11 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- /* STDC17 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- /* STDC2X */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 },
- /* GNUCXX */ { 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 },
- /* CXX98 */ { 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
- /* GNUCXX11 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 },
- /* CXX11 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
- /* GNUCXX14 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 },
- /* CXX14 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
- /* GNUCXX17 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
- /* CXX17 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1 },
- /* GNUCXX20 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
- /* CXX20 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
- /* GNUCXX23 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1 },
- /* CXX23 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1 },
- /* ASM */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+{ /* c99 c++ xnum xid c11 xidid std digr ulit rlit udlit bincst digsep trig u8chlit vaopt scope dfp szlit elifdef warndir delim trufal */
+ /* GNUC89 */ { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
+ /* GNUC99 */ { 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
+ /* GNUC11 */ { 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
+ /* GNUC17 */ { 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
+ /* GNUC2X */ { 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+ /* STDC89 */ { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ /* STDC94 */ { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ /* STDC99 */ { 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ /* STDC11 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ /* STDC17 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ /* STDC2X */ { 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 },
+ /* GNUCXX */ { 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 },
+ /* CXX98 */ { 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
+ /* GNUCXX11 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 },
+ /* CXX11 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
+ /* GNUCXX14 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 },
+ /* CXX14 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
+ /* GNUCXX17 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
+ /* CXX17 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1 },
+ /* GNUCXX20 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
+ /* CXX20 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
+ /* GNUCXX23 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1 },
+ /* CXX23 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1 },
+ /* ASM */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
/* Sets internal flags correctly for a given language. */
@@ -142,6 +143,7 @@ cpp_set_lang (cpp_reader *pfile, enum c_lang lang)
CPP_OPTION (pfile, extended_numbers) = l->extended_numbers;
CPP_OPTION (pfile, extended_identifiers) = l->extended_identifiers;
CPP_OPTION (pfile, c11_identifiers) = l->c11_identifiers;
+ CPP_OPTION (pfile, xid_identifiers) = l->xid_identifiers;
CPP_OPTION (pfile, std) = l->std;
CPP_OPTION (pfile, digraphs) = l->digraphs;
CPP_OPTION (pfile, uliterals) = l->uliterals;
diff --git a/libcpp/lex.cc b/libcpp/lex.cc
index 41f905de..cc12a52d 100644
--- a/libcpp/lex.cc
+++ b/libcpp/lex.cc
@@ -1362,7 +1362,8 @@ get_location_for_byte_range_in_cur_line (cpp_reader *pfile,
location_t combined_loc = COMBINE_LOCATION_DATA (pfile->line_table,
start_loc,
src_range,
- NULL);
+ NULL,
+ 0);
return combined_loc;
}
@@ -2006,7 +2007,8 @@ name_p (cpp_reader *pfile, const cpp_string *string)
static void
warn_about_normalization (cpp_reader *pfile,
const cpp_token *token,
- const struct normalize_state *s)
+ const struct normalize_state *s,
+ bool identifier)
{
if (CPP_OPTION (pfile, warn_normalize) < NORMALIZE_STATE_RESULT (s)
&& !pfile->state.skipping)
@@ -2028,7 +2030,7 @@ warn_about_normalization (cpp_reader *pfile,
CPP_BUF_COLUMN (pfile->buffer,
pfile->buffer->cur));
loc = COMBINE_LOCATION_DATA (pfile->line_table,
- loc, tok_range, NULL);
+ loc, tok_range, NULL, 0);
}
encoding_rich_location rich_loc (pfile, loc);
@@ -2042,7 +2044,7 @@ warn_about_normalization (cpp_reader *pfile,
if (NORMALIZE_STATE_RESULT (s) == normalized_C)
cpp_warning_at (pfile, CPP_W_NORMALIZE, &rich_loc,
"`%.*s' is not in NFKC", (int) sz, buf);
- else if (CPP_OPTION (pfile, cplusplus))
+ else if (identifier && CPP_OPTION (pfile, xid_identifiers))
cpp_pedwarning_at (pfile, CPP_W_NORMALIZE, &rich_loc,
"`%.*s' is not in NFC", (int) sz, buf);
else
@@ -3838,7 +3840,7 @@ _cpp_lex_direct (cpp_reader *pfile)
struct normalize_state nst = INITIAL_NORMALIZE_STATE;
result->type = CPP_NUMBER;
lex_number (pfile, &result->val.str, &nst);
- warn_about_normalization (pfile, result, &nst);
+ warn_about_normalization (pfile, result, &nst, false);
break;
}
@@ -3887,7 +3889,7 @@ _cpp_lex_direct (cpp_reader *pfile)
result->val.node.node = lex_identifier (pfile, buffer->cur - 1, false,
&nst,
&result->val.node.spelling);
- warn_about_normalization (pfile, result, &nst);
+ warn_about_normalization (pfile, result, &nst, true);
}
/* Convert named operators to their proper types. */
@@ -4100,7 +4102,7 @@ _cpp_lex_direct (cpp_reader *pfile)
struct normalize_state nst = INITIAL_NORMALIZE_STATE;
result->type = CPP_NUMBER;
lex_number (pfile, &result->val.str, &nst);
- warn_about_normalization (pfile, result, &nst);
+ warn_about_normalization (pfile, result, &nst, false);
}
else if (*buffer->cur == '.' && buffer->cur[1] == '.')
buffer->cur += 2, result->type = CPP_ELLIPSIS;
@@ -4191,7 +4193,7 @@ _cpp_lex_direct (cpp_reader *pfile)
result->type = CPP_NAME;
result->val.node.node = lex_identifier (pfile, base, true, &nst,
&result->val.node.spelling);
- warn_about_normalization (pfile, result, &nst);
+ warn_about_normalization (pfile, result, &nst, true);
break;
}
@@ -4256,7 +4258,7 @@ _cpp_lex_direct (cpp_reader *pfile)
result->src_loc = COMBINE_LOCATION_DATA (pfile->line_table,
result->src_loc,
- tok_range, NULL);
+ tok_range, NULL, 0);
}
return result;
diff --git a/libcpp/line-map.cc b/libcpp/line-map.cc
index 391f1d4..50e8043 100644
--- a/libcpp/line-map.cc
+++ b/libcpp/line-map.cc
@@ -67,7 +67,8 @@ location_adhoc_data_hash (const void *l)
return ((hashval_t) lb->locus
+ (hashval_t) lb->src_range.m_start
+ (hashval_t) lb->src_range.m_finish
- + (size_t) lb->data);
+ + (size_t) lb->data
+ + lb->discriminator);
}
/* Compare function for location_adhoc_data hashtable. */
@@ -82,7 +83,8 @@ location_adhoc_data_eq (const void *l1, const void *l2)
return (lb1->locus == lb2->locus
&& lb1->src_range.m_start == lb2->src_range.m_start
&& lb1->src_range.m_finish == lb2->src_range.m_finish
- && lb1->data == lb2->data);
+ && lb1->data == lb2->data
+ && lb1->discriminator == lb2->discriminator);
}
/* Update the hashtable when location_adhoc_data_map::data is reallocated.
@@ -127,13 +129,17 @@ static bool
can_be_stored_compactly_p (line_maps *set,
location_t locus,
source_range src_range,
- void *data)
+ void *data,
+ unsigned discriminator)
{
/* If there's an ad-hoc pointer, we can't store it directly in the
location_t, we need the lookaside. */
if (data)
return false;
+ if (discriminator != 0)
+ return false;
+
/* We only store ranges that begin at the locus and that are sufficiently
"sane". */
if (src_range.m_start != locus)
@@ -168,7 +174,8 @@ location_t
get_combined_adhoc_loc (line_maps *set,
location_t locus,
source_range src_range,
- void *data)
+ void *data,
+ unsigned discriminator)
{
struct location_adhoc_data lb;
struct location_adhoc_data **slot;
@@ -186,7 +193,7 @@ get_combined_adhoc_loc (line_maps *set,
|| pure_location_p (set, locus));
/* Consider short-range optimization. */
- if (can_be_stored_compactly_p (set, locus, src_range, data))
+ if (can_be_stored_compactly_p (set, locus, src_range, data, discriminator))
{
/* The low bits ought to be clear. */
linemap_assert (pure_location_p (set, locus));
@@ -206,15 +213,16 @@ get_combined_adhoc_loc (line_maps *set,
when locus == start == finish (and data is NULL). */
if (locus == src_range.m_start
&& locus == src_range.m_finish
- && !data)
+ && !data && discriminator == 0)
return locus;
- if (!data)
+ if (!data && discriminator == 0)
set->num_unoptimized_ranges++;
lb.locus = locus;
lb.src_range = src_range;
lb.data = data;
+ lb.discriminator = discriminator;
slot = (struct location_adhoc_data **)
htab_find_slot (set->location_adhoc_data_map.htab, &lb, INSERT);
if (*slot == NULL)
@@ -261,6 +269,13 @@ get_data_from_adhoc_loc (const class line_maps *set, location_t loc)
return set->location_adhoc_data_map.data[loc & MAX_LOCATION_T].data;
}
+unsigned
+get_discriminator_from_adhoc_loc (const class line_maps *set, location_t loc)
+{
+ linemap_assert (IS_ADHOC_LOC (loc));
+ return set->location_adhoc_data_map.data[loc & MAX_LOCATION_T].discriminator;
+}
+
/* Return the location for the adhoc loc. */
location_t
@@ -306,6 +321,15 @@ get_range_from_loc (line_maps *set,
return source_range::from_location (loc);
}
+unsigned
+get_discriminator_from_loc (line_maps *set,
+ location_t loc)
+{
+ if (IS_ADHOC_LOC (loc))
+ return get_discriminator_from_adhoc_loc (set, loc);
+ return 0;
+}
+
/* Get whether location LOC is a "pure" location, or
whether it is an ad-hoc location, or embeds range information. */
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index a8ffca2..7ab8d50 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2022-10-10 Joseph Myers <joseph@codesourcery.com>
+
+ * ro.po: New.
+
2022-05-04 Joseph Myers <joseph@codesourcery.com>
* es.po: Update.
diff --git a/libcpp/po/ro.po b/libcpp/po/ro.po
new file mode 100644
index 0000000..5084b0b
--- /dev/null
+++ b/libcpp/po/ro.po
@@ -0,0 +1,1140 @@
+# Mesajele în limba română pentru pachetul cpplib.
+# Copyright © 2022 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gcc package.
+#
+# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022.
+#
+# Cronologia traducerii fișierului „cpplib”:
+# Traducerea inițială, făcută de R-GC, pentru versiunea cpplib 12.1-b20220213.
+# Actualizare a traducerii pentru versiunea Y, făcută de X.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cpplib 12.1-b20220213\n"
+"Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
+"POT-Creation-Date: 2022-02-11 23:02+0000\n"
+"PO-Revision-Date: 2022-10-09 09:43+0200\n"
+"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n%100) < 20)) ? 1 : 2);\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: charset.cc:683
+#, c-format
+msgid "conversion from %s to %s not supported by iconv"
+msgstr "conversia de la %s la %s nu este acceptată de iconv"
+
+#: charset.cc:686
+msgid "iconv_open"
+msgstr "iconv_open"
+
+#: charset.cc:696
+#, c-format
+msgid "no iconv implementation, cannot convert from %s to %s"
+msgstr "nicio implementare iconv, nu se poate converti de la %s la %s"
+
+#: charset.cc:794
+#, c-format
+msgid "character 0x%lx is not in the basic source character set\n"
+msgstr "caracterul 0x%lx nu se află în setul de caractere sursă de bază\n"
+
+#: charset.cc:811 charset.cc:1800
+msgid "converting to execution character set"
+msgstr "se convertește în setul de caractere de execuție"
+
+#: charset.cc:817
+#, c-format
+msgid "character 0x%lx is not unibyte in execution character set"
+msgstr "caracterul 0x%lx nu este un octet unic în setul de caractere de execuție"
+
+#: charset.cc:1087
+msgid "universal character names are only valid in C++ and C99"
+msgstr "numele de caractere universale sunt valabile numai în C++ și C99"
+
+#: charset.cc:1091
+msgid "C99's universal character names are incompatible with C90"
+msgstr "numele de caractere universale ale lui C99 sunt incompatibile cu C90"
+
+#: charset.cc:1094
+#, c-format
+msgid "the meaning of '\\%c' is different in traditional C"
+msgstr "semnificația lui „\\%c” este diferită în limbajul C tradițional"
+
+#: charset.cc:1103
+msgid "In _cpp_valid_ucn but not a UCN"
+msgstr "Este în _cpp_valid_ucn, dar nu este un UCN(NumedeCaracterUniversal)"
+
+#: charset.cc:1136
+#, c-format
+msgid "incomplete universal character name %.*s"
+msgstr "nume de caracter universal incomplet %.*s"
+
+#: charset.cc:1151
+#, c-format
+msgid "%.*s is not a valid universal character"
+msgstr "%.*s nu este un caracter universal valid"
+
+#: charset.cc:1161 lex.cc:1876
+msgid "'$' in identifier or number"
+msgstr "„$” în identificator sau în număr"
+
+#: charset.cc:1171
+#, c-format
+msgid "universal character %.*s is not valid in an identifier"
+msgstr "caracterul universal %.*s nu este valid într-un identificator"
+
+#: charset.cc:1175
+#, c-format
+msgid "universal character %.*s is not valid at the start of an identifier"
+msgstr "caracterul universal %.*s nu este valid la începutul unui identificator"
+
+#: charset.cc:1182
+#, c-format
+msgid "%.*s is outside the UCS codespace"
+msgstr "%.*s se află în afara spațiului de cod UCS"
+
+#: charset.cc:1227 charset.cc:2145
+msgid "converting UCN to source character set"
+msgstr "se convertește UCN în setul de caractere sursă"
+
+#: charset.cc:1234
+msgid "converting UCN to execution character set"
+msgstr "se convertește UCN în setul de caractere de execuție"
+
+#: charset.cc:1298
+#, c-format
+msgid "extended character %.*s is not valid in an identifier"
+msgstr "caracterul extins %.*s nu este valid într-un identificator"
+
+#: charset.cc:1315
+#, c-format
+msgid "extended character %.*s is not valid at the start of an identifier"
+msgstr "caracterul extins %.*s nu este valid la începutul unui identificator"
+
+#: charset.cc:1401
+msgid "the meaning of '\\x' is different in traditional C"
+msgstr "semnificația lui „\\x” este diferită în limbajul C tradițional"
+
+#: charset.cc:1426
+msgid "\\x used with no following hex digits"
+msgstr "„\\x” utilizat fără să fie urmat de cifre hexazecimale"
+
+#: charset.cc:1433
+msgid "hex escape sequence out of range"
+msgstr "secvență de eludare hexazecimală în afara intervalului"
+
+#: charset.cc:1483
+msgid "octal escape sequence out of range"
+msgstr "secvență de eludare octală în afara intervalului"
+
+#: charset.cc:1564
+msgid "the meaning of '\\a' is different in traditional C"
+msgstr "semnificația lui „\\a” este diferită în limbajul C tradițional"
+
+#: charset.cc:1571
+#, c-format
+msgid "non-ISO-standard escape sequence, '\\%c'"
+msgstr "secvență de eludare non-standard ISO, „\\%c”"
+
+#: charset.cc:1579
+#, c-format
+msgid "unknown escape sequence: '\\%c'"
+msgstr "secvență de eludare necunoscută: „\\%c”"
+
+#: charset.cc:1589
+#, c-format
+msgid "unknown escape sequence: '\\%s'"
+msgstr "secvență de eludare necunoscută: „\\%s”"
+
+#: charset.cc:1597
+msgid "converting escape sequence to execution character set"
+msgstr "se convertește secvența de eludare în set de caractere de execuție"
+
+#: charset.cc:1737
+msgid "missing open quote"
+msgstr "lipsește ghilimeaua de deschidere"
+
+#: charset.cc:1955 charset.cc:2034
+msgid "character constant too long for its type"
+msgstr "constantă de caractere prea lungă pentru tipul său"
+
+#: charset.cc:1958
+msgid "multi-character character constant"
+msgstr "constantă de caractere cu mai multe caractere"
+
+#: charset.cc:2074
+msgid "empty character constant"
+msgstr "constantă de caractere goală"
+
+#: charset.cc:2230
+#, c-format
+msgid "failure to convert %s to %s"
+msgstr "eșec la conversia %s în %s"
+
+#: directives.cc:237 directives.cc:280
+#, c-format
+msgid "extra tokens at end of #%s directive"
+msgstr "simboluri suplimentare la finalul directivei #%s"
+
+#: directives.cc:387
+#, c-format
+msgid "#%s is a GCC extension"
+msgstr "#%s este o extensie GCC"
+
+#: directives.cc:392
+#, c-format
+msgid "#%s is a deprecated GCC extension"
+msgstr "#%s este o extensie GCC învechită"
+
+#: directives.cc:405
+msgid "suggest not using #elif in traditional C"
+msgstr "se sugerează neutilizarea directivei #elif în limbajul C tradițional"
+
+#: directives.cc:408
+#, c-format
+msgid "traditional C ignores #%s with the # indented"
+msgstr "limbajul C tradițional ignoră #%s cu # indentat"
+
+#: directives.cc:412
+#, c-format
+msgid "suggest hiding #%s from traditional C with an indented #"
+msgstr "se sugerează ascunderea #%s din C tradițional cu un # indentat"
+
+#: directives.cc:438
+msgid "embedding a directive within macro arguments is not portable"
+msgstr "înglobarea unei directive în argumentele macro nu este portabilă"
+
+#: directives.cc:466
+msgid "style of line directive is a GCC extension"
+msgstr "directiva de stil de linie este o extensie GCC"
+
+#: directives.cc:541
+#, c-format
+msgid "invalid preprocessing directive #%s; did you mean #%s?"
+msgstr "directivă de preprocesare nevalidă #%s; ați vrut să spuneți #%s?"
+
+#: directives.cc:547
+#, c-format
+msgid "invalid preprocessing directive #%s"
+msgstr "directivă de preprocesare nevalidă #%s"
+
+#: directives.cc:617
+#, c-format
+msgid "\"%s\" cannot be used as a macro name"
+msgstr "„%s” nu poate fi utilizat ca nume de macrocomandă"
+
+#: directives.cc:624
+#, c-format
+msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
+msgstr "„%s” nu poate fi utilizat ca nume de macrocomandă, deoarece este un operator în C++"
+
+#: directives.cc:627
+#, c-format
+msgid "no macro name given in #%s directive"
+msgstr "niciun nume de macrocomandă nu este dat în directiva #%s"
+
+#: directives.cc:630
+msgid "macro names must be identifiers"
+msgstr "numele macrocomenzilor trebuie să fie identificatori"
+
+#: directives.cc:679 directives.cc:684
+#, c-format
+msgid "undefining \"%s\""
+msgstr "a fost eliminată definiția „%s”"
+
+#: directives.cc:741
+msgid "missing terminating > character"
+msgstr "lipsește caracterul de terminare „>”"
+
+#: directives.cc:800
+#, c-format
+msgid "#%s expects \"FILENAME\" or <FILENAME>"
+msgstr "#%s se așteaptă „NUME_FIȘIER” sau <NUME_FIȘIER>"
+
+#: directives.cc:846
+#, c-format
+msgid "empty filename in #%s"
+msgstr "nume de fișier gol în #%s"
+
+#: directives.cc:855
+#, c-format
+msgid "#include nested depth %u exceeds maximum of %u (use -fmax-include-depth=DEPTH to increase the maximum)"
+msgstr "adâncimea de imbricare %u din #include depășește maximul de %u (utilizați „-fmax-include-depth=ADÂNCIME” pentru a crește valoarea maximă)"
+
+#: directives.cc:900
+msgid "#include_next in primary source file"
+msgstr "#include_next în fișierul sursă principal (primar)"
+
+#: directives.cc:926
+#, c-format
+msgid "invalid flag \"%s\" in line directive"
+msgstr "opțiune nevalidă „%s” în directiva de linie"
+
+#: directives.cc:993
+msgid "unexpected end of file after #line"
+msgstr "sfârșit de fișier neașteptat, după #line"
+
+#: directives.cc:996
+#, c-format
+msgid "\"%s\" after #line is not a positive integer"
+msgstr "„%s” aflat după #line nu este un număr întreg pozitiv"
+
+#: directives.cc:1002 directives.cc:1004
+msgid "line number out of range"
+msgstr "număr de linie în afara intervalului"
+
+#: directives.cc:1017 directives.cc:1098
+#, c-format
+msgid "\"%s\" is not a valid filename"
+msgstr "„%s” nu este un nume de fișier valid"
+
+#: directives.cc:1058
+#, c-format
+msgid "\"%s\" after # is not a positive integer"
+msgstr "„%s” aflat după # nu este un număr întreg pozitiv"
+
+#: directives.cc:1125
+#, c-format
+msgid "file \"%s\" linemarker ignored due to incorrect nesting"
+msgstr "marcatorul de linie al fișierului „%s” a fost ignorat din cauza imbricației incorecte"
+
+#: directives.cc:1203 directives.cc:1205 directives.cc:1207 directives.cc:1795
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: directives.cc:1231
+#, c-format
+msgid "invalid #%s directive"
+msgstr "directivă #%s nevalidă"
+
+#: directives.cc:1294
+#, c-format
+msgid "registering pragmas in namespace \"%s\" with mismatched name expansion"
+msgstr "se înregistrează pragmas în spațiul de nume „%s” cu o expandare a numelui ce nu coincide"
+
+#: directives.cc:1303
+#, c-format
+msgid "registering pragma \"%s\" with name expansion and no namespace"
+msgstr "se înregistrează pragma „%s” cu expandarea numelui și fără spațiu de nume"
+
+#: directives.cc:1321
+#, c-format
+msgid "registering \"%s\" as both a pragma and a pragma namespace"
+msgstr "se înregistrează „%s” atât ca pragma, cât și ca spațiu de nume pragma"
+
+#: directives.cc:1324
+#, c-format
+msgid "#pragma %s %s is already registered"
+msgstr "#pragma %s %s este deja înregistrată"
+
+#: directives.cc:1327
+#, c-format
+msgid "#pragma %s is already registered"
+msgstr "#pragma %s este deja înregistrată"
+
+#: directives.cc:1357
+msgid "registering pragma with NULL handler"
+msgstr "se înregistrează pragma cu gestionar NULL"
+
+#: directives.cc:1574
+msgid "#pragma once in main file"
+msgstr "#pragma apare o dată în fișierul principal"
+
+#: directives.cc:1597
+msgid "invalid #pragma push_macro directive"
+msgstr "directivă #pragma push_macro nevalidă"
+
+#: directives.cc:1654
+msgid "invalid #pragma pop_macro directive"
+msgstr "directivă #pragma pop_macro nevalidă"
+
+#: directives.cc:1709
+msgid "invalid #pragma GCC poison directive"
+msgstr "directivă #pragma GCC poison nevalidă"
+
+#: directives.cc:1718
+#, c-format
+msgid "poisoning existing macro \"%s\""
+msgstr "se „otrăvește” macrocomanda existentă „%s”"
+
+#: directives.cc:1737
+msgid "#pragma system_header ignored outside include file"
+msgstr "#pragma system_header ignorat în afara fișierului de includere"
+
+#: directives.cc:1762
+#, c-format
+msgid "cannot find source file %s"
+msgstr "nu se poate găsi fișierul sursă %s"
+
+#: directives.cc:1766
+#, c-format
+msgid "current file is older than %s"
+msgstr "fișierul curent este mai vechi decât %s"
+
+#: directives.cc:1790
+#, c-format
+msgid "invalid \"#pragma GCC %s\" directive"
+msgstr "directivă „#pragma GCC %s” nevalidă"
+
+#: directives.cc:1992
+msgid "_Pragma takes a parenthesized string literal"
+msgstr "_Pragma preia un șir literal între paranteze"
+
+#: directives.cc:2075
+msgid "#else without #if"
+msgstr "#else fără #if"
+
+#: directives.cc:2080
+msgid "#else after #else"
+msgstr "#else după #else"
+
+#: directives.cc:2082 directives.cc:2116
+msgid "the conditional began here"
+msgstr "condiționalul a început aici"
+
+#: directives.cc:2108
+#, c-format
+msgid "#%s without #if"
+msgstr "#%s fără #if"
+
+#: directives.cc:2113
+#, c-format
+msgid "#%s after #else"
+msgstr "#%s după #else"
+
+#: directives.cc:2136 directives.cc:2175
+#, c-format
+msgid "#%s before C++23 is a GCC extension"
+msgstr "#%s înainte de C++23 este o extensie GCC"
+
+#: directives.cc:2140 directives.cc:2179
+#, c-format
+msgid "#%s before C2X is a GCC extension"
+msgstr "#%s înainte de C2X este o extensie GCC"
+
+#: directives.cc:2215
+msgid "#endif without #if"
+msgstr "#endif fără #if"
+
+#: directives.cc:2291
+msgid "missing '(' after predicate"
+msgstr "lipsește „(” după predicat"
+
+#: directives.cc:2309
+msgid "missing ')' to complete answer"
+msgstr "lipsește „)” pentru a completa răspunsul"
+
+#: directives.cc:2321
+msgid "predicate's answer is empty"
+msgstr "răspunsul predicatului este gol"
+
+#: directives.cc:2351
+msgid "assertion without predicate"
+msgstr "afirmație fără predicat"
+
+#: directives.cc:2354
+msgid "predicate must be an identifier"
+msgstr "predicatul trebuie să fie un identificator"
+
+#: directives.cc:2436
+#, c-format
+msgid "\"%s\" re-asserted"
+msgstr "„%s” a fost reafirmat"
+
+#: directives.cc:2754
+#, c-format
+msgid "unterminated #%s"
+msgstr "neterminat #%s"
+
+#: errors.cc:335 errors.cc:350
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: errors.cc:348
+msgid "stdout"
+msgstr "ieșirea standard"
+
+#: expr.cc:632 expr.cc:749
+msgid "fixed-point constants are a GCC extension"
+msgstr "constantele cu virgulă fixă sunt o extensie GCC"
+
+#: expr.cc:657
+msgid "invalid prefix \"0b\" for floating constant"
+msgstr "prefix nevalid „0b” pentru constanta cu virgulă mobilă"
+
+#: expr.cc:670
+msgid "use of C++17 hexadecimal floating constant"
+msgstr "utilizare a constantei cu virgulă mobilă hexazecimală C++17"
+
+#: expr.cc:673
+msgid "use of C99 hexadecimal floating constant"
+msgstr "utilizare a constantei cu virgulă mobilă hexazecimală C99"
+
+#: expr.cc:717
+#, c-format
+msgid "invalid suffix \"%.*s\" on floating constant"
+msgstr "sufix nevalid „%.*s” pentru o constantă cu virgulă mobilă"
+
+#: expr.cc:728 expr.cc:795
+#, c-format
+msgid "traditional C rejects the \"%.*s\" suffix"
+msgstr "limbajul C tradițional respinge sufixul „%.*s”"
+
+#: expr.cc:736
+msgid "suffix for double constant is a GCC extension"
+msgstr "sufixul pentru constantă dublă este o extensie GCC"
+
+#: expr.cc:742
+#, c-format
+msgid "invalid suffix \"%.*s\" with hexadecimal floating constant"
+msgstr "sufix nevalid „%.*s” pentru o constantă cu virgulă mobilă hexazecimală"
+
+#: expr.cc:755 expr.cc:759
+msgid "decimal float constants are a C2X feature"
+msgstr "constantele cu virgulă mobilă zecimale sunt o caracteristică C2X"
+
+#: expr.cc:778
+#, c-format
+msgid "invalid suffix \"%.*s\" on integer constant"
+msgstr "sufix nevalid „%.*s” pentru o constantă de număr întreg"
+
+#: expr.cc:803
+msgid "use of C++11 long long integer constant"
+msgstr "utilizare a constantei de număr întreg lung lung C++11"
+
+#: expr.cc:804
+msgid "use of C99 long long integer constant"
+msgstr "utilizare a constantei de număr întreg lung lung C99"
+
+#: expr.cc:818
+msgid "use of C++23 %<size_t%> integer constant"
+msgstr "utilizare a constantei de număr întreg %<size_t%> C++23"
+
+#: expr.cc:819
+msgid "use of C++23 %<make_signed_t<size_t>%> integer constant"
+msgstr "utilizare a constantei de număr întreg %<make_signed_t<size_t>%> C++23"
+
+#: expr.cc:830
+msgid "imaginary constants are a GCC extension"
+msgstr "constantele imaginare sunt o extensie GCC"
+
+#: expr.cc:837
+msgid "binary constants are a C++14 feature or GCC extension"
+msgstr "constantele binare sunt o caracteristică C++14 sau o extensie GCC"
+
+#: expr.cc:839
+msgid "binary constants are a C2X feature or GCC extension"
+msgstr "constantele binare sunt o caracteristică C2X sau o extensie GCC"
+
+#: expr.cc:844
+msgid "binary constants are a C2X feature"
+msgstr "constantele binare sunt o caracteristică C2X"
+
+#: expr.cc:940
+msgid "integer constant is too large for its type"
+msgstr "constanta de număr întreg este prea mare pentru tipul său"
+
+#: expr.cc:971
+msgid "integer constant is so large that it is unsigned"
+msgstr "constanta de număr întreg este atât de mare încât este nesemnată"
+
+#: expr.cc:1066
+msgid "missing ')' after \"defined\""
+msgstr "lipsește „)” după «defined»"
+
+#: expr.cc:1073
+msgid "operator \"defined\" requires an identifier"
+msgstr "operatorul «defined» necesită un identificator"
+
+#: expr.cc:1081
+#, c-format
+msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
+msgstr "(„%s” este un element lexical alternativ pentru „%s” în C++)"
+
+#: expr.cc:1094
+msgid "this use of \"defined\" may not be portable"
+msgstr "este posibil ca această utilizare a lui «defined» să nu fie portabilă"
+
+#: expr.cc:1139
+msgid "user-defined literal in preprocessor expression"
+msgstr "literal definit de utilizator în expresia preprocesorului"
+
+#: expr.cc:1144
+msgid "floating constant in preprocessor expression"
+msgstr "constantă cu virgulă mobilă în expresia preprocesorului"
+
+#: expr.cc:1150
+msgid "imaginary number in preprocessor expression"
+msgstr "număr imaginar în expresia preprocesorului"
+
+#: expr.cc:1199
+#, c-format
+msgid "\"%s\" is not defined, evaluates to 0"
+msgstr "„%s” nu este definit, se evaluează la 0"
+
+#: expr.cc:1212
+msgid "assertions are a GCC extension"
+msgstr "aserțiunile sunt o extensie GCC"
+
+#: expr.cc:1215
+msgid "assertions are a deprecated extension"
+msgstr "aserțiunile sunt o extensie depreciată"
+
+#: expr.cc:1461
+#, c-format
+msgid "unbalanced stack in %s"
+msgstr "stivă dezechilibrată în %s"
+
+#: expr.cc:1481
+#, c-format
+msgid "impossible operator '%u'"
+msgstr "operator „%u” imposibil"
+
+#: expr.cc:1582
+msgid "missing ')' in expression"
+msgstr "lipsește „)” în expresie"
+
+#: expr.cc:1611
+msgid "'?' without following ':'"
+msgstr "„?” fără să fie urmat de „:”"
+
+#: expr.cc:1621
+msgid "integer overflow in preprocessor expression"
+msgstr "depășire de număr întreg în expresia preprocesorului"
+
+#: expr.cc:1626
+msgid "missing '(' in expression"
+msgstr "lipsește „(” în expresie"
+
+#: expr.cc:1658
+#, c-format
+msgid "the left operand of \"%s\" changes sign when promoted"
+msgstr "operandul din stânga lui „%s” își schimbă semnul atunci când este promovat"
+
+#: expr.cc:1663
+#, c-format
+msgid "the right operand of \"%s\" changes sign when promoted"
+msgstr "operandul din dreapta lui „%s” își schimbă semnul atunci când este promovat"
+
+#: expr.cc:1922
+msgid "traditional C rejects the unary plus operator"
+msgstr "limbajul C tradițional respinge operatorul unar plus"
+
+#: expr.cc:2020
+msgid "comma operator in operand of #if"
+msgstr "operator virgulă în operandul #if"
+
+#: expr.cc:2156
+msgid "division by zero in #if"
+msgstr "împărțire la zero în #if"
+
+#: files.cc:516
+msgid "NULL directory in find_file"
+msgstr "director NULL în find_file"
+
+#: files.cc:570
+msgid "one or more PCH files were found, but they were invalid"
+msgstr "au fost găsite unul sau mai multe fișiere PCH, dar acestea nu erau valide"
+
+#: files.cc:574
+msgid "use -Winvalid-pch for more information"
+msgstr "utilizați „-Winvalid-pch” pentru mai multe informații"
+
+#: files.cc:688
+#, c-format
+msgid "%s is a block device"
+msgstr "%s este un dispozitiv bloc"
+
+#: files.cc:707
+#, c-format
+msgid "%s is too large"
+msgstr "%s este prea mare"
+
+#: files.cc:748
+#, c-format
+msgid "%s is shorter than expected"
+msgstr "%s este mai scurt decât se aștepta"
+
+#: files.cc:1060
+#, c-format
+msgid "no include path in which to search for %s"
+msgstr "nicio cale de inclus pentru a căuta %s"
+
+#: files.cc:1578
+msgid "Multiple include guards may be useful for:\n"
+msgstr "Multiple „include guards” pot fi utile pentru:\n"
+
+#: init.cc:618
+msgid "cppchar_t must be an unsigned type"
+msgstr "cppchar_t trebuie să fie un tip nesemnat"
+
+#: init.cc:622
+#, c-format
+msgid "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits"
+msgstr "aritmetica preprocesorului are o precizie maximă de %lu biți; ținta necesită %lu biți"
+
+#: init.cc:629
+msgid "CPP arithmetic must be at least as precise as a target int"
+msgstr "Aritmetica CPP trebuie să fie cel puțin la fel de precisă ca o țintă int"
+
+#: init.cc:632
+msgid "target char is less than 8 bits wide"
+msgstr "char țintă are mai puțin de 8 biți lățime"
+
+#: init.cc:636
+msgid "target wchar_t is narrower than target char"
+msgstr "wchar_t țintă este mai îngust decât char tintă"
+
+#: init.cc:640
+msgid "target int is narrower than target char"
+msgstr "int țintă este mai îngust decât char țintă"
+
+#: init.cc:645
+msgid "CPP half-integer narrower than CPP character"
+msgstr "half-integer din CPP este mai îngust decât caracterul din CPP"
+
+# R-GC, scrie:
+# după revizarea fișerului, DȘ spune:
+# „"CPP de pe această gazdă nu poate gestiona constante de caracter largi de peste %lu biți, dar ținta necesită %lu biți" (traducerea inițială)
+# → nu știu sigur despre ce este vorba dar nu cred că „wide” se traduce cu „larg”, „lat” ar fi mai potrivit.”
+# ***
+# după „despicarea firului problemei”, am creat
+# trei propuneri de substituire a acestui mesaj:
+# .
+# a) „CPP de pe această gazdă nu poate gestiona constante de caracter largi, mai
+# lungi de %lu biți, dar ținta necesită %lu biți”
+# .
+# b) „CPP de pe această gazdă nu poate gestiona constante de caracter lungi mai
+# mari de %lu biți, dar ținta necesită %lu biți”
+# .
+# c) „CPP de pe această gazdă nu poate gestiona constante de caracter mai lungi de
+# %lu biți, dar ținta necesită %lu biți”
+# ***
+# în final, a avut «cîștig de cauză», varianta C.
+#: init.cc:649
+#, c-format
+msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits"
+msgstr "CPP de pe această gazdă nu poate gestiona constante de caracter mai lungi de %lu biți, dar ținta necesită %lu biți"
+
+#: lex.cc:1126
+msgid "backslash and newline separated by space"
+msgstr "bară oblică inversă și linie nouă separate de spațiu «\\ n»"
+
+#: lex.cc:1131
+msgid "backslash-newline at end of file"
+msgstr "bară oblică inversă și linie nouă «\\n» la sfârșit de fișier"
+
+#: lex.cc:1147
+#, c-format
+msgid "trigraph ??%c converted to %c"
+msgstr "trigraf ??%c convertit în %c"
+
+#: lex.cc:1155
+#, c-format
+msgid "trigraph ??%c ignored, use -trigraphs to enable"
+msgstr "trigraf ??%c ignorat, utilizați „-trigraphs” pentru a activa recunoașterea sa"
+
+#: lex.cc:1536
+msgid "end of bidirectional context"
+msgstr "sfârșitul contextului bidirecţional"
+
+#: lex.cc:1577
+msgid "unpaired UTF-8 bidirectional control characters detected"
+msgstr "au fost detectate caractere de control bidirecțional UTF-8 fără pereche"
+
+#: lex.cc:1581
+msgid "unpaired UTF-8 bidirectional control character detected"
+msgstr "a fost detectat un caracter de control bidirecțional UTF-8 fără pereche"
+
+#: lex.cc:1619
+#, c-format
+msgid "UTF-8 vs UCN mismatch when closing a context by \"%s\""
+msgstr "nepotrivire între UTF-8 și UCN atunci când se încheie contextul cu „%s”"
+
+#: lex.cc:1628
+#, c-format
+msgid "\"%s\" is closing an unopened context"
+msgstr "„%s” închide un context nedeschis"
+
+#: lex.cc:1632
+#, c-format
+msgid "found problematic Unicode character \"%s\""
+msgstr "s-a găsit caracterul Unicode problematic „%s”"
+
+#: lex.cc:1682
+msgid "\"/*\" within comment"
+msgstr "„/*” în comentariu"
+
+#: lex.cc:1772
+#, c-format
+msgid "%s in preprocessing directive"
+msgstr "%s în directiva de preprocesare"
+
+#: lex.cc:1784
+msgid "null character(s) ignored"
+msgstr "caracter(e) null ignorat(e)"
+
+#: lex.cc:1844
+#, c-format
+msgid "`%.*s' is not in NFKC"
+msgstr "„%.*s” nu se este în NFKC"
+
+#: lex.cc:1847 lex.cc:1850
+#, c-format
+msgid "`%.*s' is not in NFC"
+msgstr "„%.*s” nu se este în NFC"
+
+#: lex.cc:1932
+msgid "__VA_OPT__ is not available until C++20"
+msgstr "__VA_OPT__ nu este disponibilă până la C++20"
+
+#: lex.cc:1939
+msgid "__VA_OPT__ can only appear in the expansion of a C++20 variadic macro"
+msgstr "__VA_OPT__ poate apărea doar în expansiunea unei macrocomenzi C++20 cu un număr variabil de argumente"
+
+#: lex.cc:1970 lex.cc:2066
+#, c-format
+msgid "attempt to use poisoned \"%s\""
+msgstr "încercați să utilizați „%s” «otrăvit»"
+
+#: lex.cc:1980 lex.cc:2076
+msgid "__VA_ARGS__ can only appear in the expansion of a C++11 variadic macro"
+msgstr "__VA_ARGS__ poate apărea doar în expansiunea unei macrocomenzi C++11 cu un număr variabil de argumente"
+
+#: lex.cc:1984 lex.cc:2080
+msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
+msgstr "__VA_ARGS__ poate apărea doar în expansiunea unei macrocomenzi C99 cu un număr variabil de argumente"
+
+#: lex.cc:1994 lex.cc:2092
+#, c-format
+msgid "identifier \"%s\" is a special operator name in C++"
+msgstr "identificatorul „%s” este un nume de operator special în C++"
+
+#: lex.cc:2132
+msgid "adjacent digit separators"
+msgstr "separatori de cifre adiacenți"
+
+#: lex.cc:2450
+msgid "raw string delimiter longer than 16 characters"
+msgstr "delimitator de șir brut, mai lung de 16 caractere"
+
+#: lex.cc:2454
+msgid "invalid new-line in raw string delimiter"
+msgstr "linie nouă nevalidă în delimitatorul de șir brut"
+
+#: lex.cc:2458 lex.cc:5257
+#, c-format
+msgid "invalid character '%c' in raw string delimiter"
+msgstr "caracter nevalid „%c” în delimitatorul de șir brut"
+
+#: lex.cc:2497 lex.cc:2520
+msgid "unterminated raw string"
+msgstr "șir brut neterminat"
+
+#: lex.cc:2552 lex.cc:2701
+msgid "invalid suffix on literal; C++11 requires a space between literal and string macro"
+msgstr "sufix nevalid la literal; C++11 necesită un spațiu între literal și macrocomanda șir"
+
+#: lex.cc:2684
+msgid "null character(s) preserved in literal"
+msgstr "caracter(e) null păstrat(e) în literal"
+
+#: lex.cc:2687
+#, c-format
+msgid "missing terminating %c character"
+msgstr "lipsește caracterul %c de încheiere"
+
+#: lex.cc:2719
+msgid "C++11 requires a space between string literal and macro"
+msgstr "C++11 necesită un spațiu între șir literal și macro"
+
+#: lex.cc:3312
+msgid "module control-line cannot be in included file"
+msgstr "linia de control a modulului nu poate fi în fișierul inclus"
+
+#: lex.cc:3326
+#, c-format
+msgid "module control-line \"%s\" cannot be an object-like macro"
+msgstr "linia de control al modulului „%s” nu poate fi un obiect precum o macrocomandă"
+
+#: lex.cc:3714 lex.cc:5090 traditional.cc:174
+msgid "unterminated comment"
+msgstr "comentariu neterminat"
+
+#: lex.cc:3728 lex.cc:3762
+msgid "C++ style comments are not allowed in ISO C90"
+msgstr "comentariile în stil C++ nu sunt permise în ISO C90"
+
+#: lex.cc:3730 lex.cc:3741 lex.cc:3765
+msgid "(this will be reported only once per input file)"
+msgstr "(acest lucru va fi raportat o singură dată pentru fiecare fișier de intrare)"
+
+#: lex.cc:3739
+msgid "C++ style comments are incompatible with C90"
+msgstr "comentariile în stil C++ sunt incompatibile cu C90"
+
+#: lex.cc:3771
+msgid "multi-line comment"
+msgstr "comentariu pe mai multe linii"
+
+#: lex.cc:4165
+#, c-format
+msgid "unspellable token %s"
+msgstr "element neortografiabil %s"
+
+#: lex.cc:5245
+#, c-format
+msgid "raw string delimiter longer than %d characters"
+msgstr "delimitator de șir brut mai lung de %d caractere"
+
+#: lex.cc:5315
+msgid "unterminated literal"
+msgstr "literal neterminat"
+
+#: macro.cc:94
+msgid "'##' cannot appear at either end of __VA_OPT__"
+msgstr "„##” nu poate apărea la niciunul dintre capetele lui __VA_OPT__"
+
+#: macro.cc:144
+msgid "__VA_OPT__ may not appear in a __VA_OPT__"
+msgstr "__VA_OPT__ nu poate să apară într-o __VA_OPT__"
+
+#: macro.cc:157
+msgid "__VA_OPT__ must be followed by an open parenthesis"
+msgstr "__VA_OPT__ trebuie să fie urmată de o paranteză deschisă"
+
+#: macro.cc:235
+msgid "unterminated __VA_OPT__"
+msgstr "__VA_OPT__ neterminată"
+
+#: macro.cc:397
+#, c-format
+msgid "\"%s\" used outside of preprocessing directive"
+msgstr "„%s” folosit în afara directivei de preprocesare"
+
+#: macro.cc:407
+#, c-format
+msgid "missing '(' before \"%s\" operand"
+msgstr "lipsește „(” înainte de operandul „%s”"
+
+#: macro.cc:422
+#, c-format
+msgid "operator \"%s\" requires a header-name"
+msgstr "operatorul „%s” necesită un nume de antet"
+
+#: macro.cc:439
+#, c-format
+msgid "missing ')' after \"%s\" operand"
+msgstr "lipsește „)” după operandul „%s”"
+
+#: macro.cc:459
+#, c-format
+msgid "macro \"%s\" is not used"
+msgstr "macrocomanda „%s” nu este utilizată"
+
+#: macro.cc:498 macro.cc:797
+#, c-format
+msgid "invalid built-in macro \"%s\""
+msgstr "macrocomandă încorporată „%s” nevalidă"
+
+#: macro.cc:505 macro.cc:613
+#, c-format
+msgid "macro \"%s\" might prevent reproducible builds"
+msgstr "macrocomanda „%s” ar putea împiedica compilările reproductibile"
+
+#: macro.cc:536
+msgid "could not determine file timestamp"
+msgstr "nu s-a putut determina marcajul de timp al fișierului"
+
+#: macro.cc:627
+msgid "could not determine date and time"
+msgstr "nu s-a putut determina data și ora"
+
+#: macro.cc:659
+msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
+msgstr "__COUNTER__ expandat în interiorul directivei cu „-fdirectives-only”"
+
+#: macro.cc:916
+msgid "invalid string literal, ignoring final '\\'"
+msgstr "literal de șir nevalid, se ignoră „\\” final"
+
+#: macro.cc:980
+#, c-format
+msgid "pasting \"%.*s\" and \"%.*s\" does not give a valid preprocessing token"
+msgstr "lipirea lui „%.*s” și a lui„%.*s” nu oferă un element lexical de preprocesare valid"
+
+#: macro.cc:1112
+msgid "ISO C++11 requires at least one argument for the \"...\" in a variadic macro"
+msgstr "ISO C++11 necesită cel puțin un argument pentru „...” într-o macrocomandă cu un număr variabil de argumente"
+
+#: macro.cc:1116
+msgid "ISO C99 requires at least one argument for the \"...\" in a variadic macro"
+msgstr "ISO C99 necesită cel puțin un argument pentru „...” într-o macrocomandă cu un număr variabil de argumente"
+
+#: macro.cc:1123
+#, c-format
+msgid "macro \"%s\" requires %u arguments, but only %u given"
+msgstr "macrocomanda „%s” necesită %u argumente, dar numai %u sunt date"
+
+#: macro.cc:1128
+#, c-format
+msgid "macro \"%s\" passed %u arguments, but takes just %u"
+msgstr "macrocomenzii „%s” i s-au transmis %u argumente, dar are nevoie doar de %u"
+
+#: macro.cc:1132
+#, c-format
+msgid "macro \"%s\" defined here"
+msgstr "macrocomanda „%s” este definită aici"
+
+#: macro.cc:1326 traditional.cc:822
+#, c-format
+msgid "unterminated argument list invoking macro \"%s\""
+msgstr "listă neterminată de argumente care invocă macrocomanda „%s”"
+
+#: macro.cc:1472
+#, c-format
+msgid "function-like macro \"%s\" must be used with arguments in traditional C"
+msgstr "macrocomanda „%s” asemănătoare unei funcții trebuie să fie utilizată cu argumente în limbajul C tradițional"
+
+#: macro.cc:2307
+#, c-format
+msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C++98"
+msgstr "se invocă macrocomanda %s argument %d: argumentele macro goale sunt nedefinite în ISO C++98"
+
+#: macro.cc:2315 macro.cc:2324
+#, c-format
+msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90"
+msgstr "se invocă macrocomanda %s argument %d: argumentele macro goale sunt nedefinite în ISO C90"
+
+#: macro.cc:3375
+#, c-format
+msgid "duplicate macro parameter \"%s\""
+msgstr "parametru de macrocomandă duplicat „%s”"
+
+#: macro.cc:3457
+#, c-format
+msgid "expected parameter name, found \"%s\""
+msgstr "se aștepta un nume parametru, s-a găsit „%s”"
+
+#: macro.cc:3458
+#, c-format
+msgid "expected ',' or ')', found \"%s\""
+msgstr "se aștepta «,» sau «)», s-a găsit „%s”"
+
+#: macro.cc:3459
+msgid "expected parameter name before end of line"
+msgstr "se aștepta un nume de parametru înainte de sfârșitul liniei"
+
+#: macro.cc:3460
+msgid "expected ')' before end of line"
+msgstr "se aștepta „)” înainte de sfârșitul liniei"
+
+#: macro.cc:3461
+msgid "expected ')' after \"...\""
+msgstr "se aștepta „)” după „...”"
+
+#: macro.cc:3518
+msgid "anonymous variadic macros were introduced in C++11"
+msgstr "macrocomenzile anonime cu un număr variabil de argumente au fost introduse în C++11"
+
+#: macro.cc:3519 macro.cc:3523
+msgid "anonymous variadic macros were introduced in C99"
+msgstr "macrocomenzile anonime cu un număr variabil de argumente au fost introduse în C99"
+
+#: macro.cc:3529
+msgid "ISO C++ does not permit named variadic macros"
+msgstr "ISO C++ nu permite macrocomenzi variadice(cu număr variabil de argumente) cu nume"
+
+#: macro.cc:3530
+msgid "ISO C does not permit named variadic macros"
+msgstr "ISO C nu permite macrocomenzi variadice(cu număr variabil de argumente) cu nume"
+
+#: macro.cc:3576
+msgid "'##' cannot appear at either end of a macro expansion"
+msgstr "„##” nu poate apărea la niciunul dintre capetele unei expandări de macrocomandă"
+
+#: macro.cc:3614
+msgid "ISO C++11 requires whitespace after the macro name"
+msgstr "ISO C++11 necesită un spațiu alb după numele macrocomenzii"
+
+#: macro.cc:3615
+msgid "ISO C99 requires whitespace after the macro name"
+msgstr "ISO C99 necesită un spațiu alb după numele macrocomenzii"
+
+#: macro.cc:3639
+msgid "missing whitespace after the macro name"
+msgstr "lipsește spațiul alb după numele macrocomenzii"
+
+#: macro.cc:3692
+msgid "'#' is not followed by a macro parameter"
+msgstr "„#” nu este urmat de un parametru macro"
+
+#: macro.cc:3848
+#, c-format
+msgid "\"%s\" redefined"
+msgstr "„%s” redefinit"
+
+#: macro.cc:3853
+msgid "this is the location of the previous definition"
+msgstr "aceasta este locația definiției precedente"
+
+#: macro.cc:3990
+#, c-format
+msgid "macro argument \"%s\" would be stringified in traditional C"
+msgstr "argumentul macrocomenzii „%s” trebuie să fie schimbat în șir în limbajul C tradițional"
+
+#: pch.cc:90 pch.cc:342 pch.cc:356 pch.cc:374 pch.cc:380 pch.cc:389 pch.cc:396
+msgid "while writing precompiled header"
+msgstr "în timpul scrierii antetului precompilat"
+
+#: pch.cc:616
+#, c-format
+msgid "%s: not used because `%.*s' is poisoned"
+msgstr "%s: nu este folosit deoarece „%.*s” este «otrăvit»"
+
+#: pch.cc:638
+#, c-format
+msgid "%s: not used because `%.*s' not defined"
+msgstr "%s: nu este folosit deoarece „%.*s” nu este definit"
+
+#: pch.cc:650
+#, c-format
+msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'"
+msgstr "%s: nu este folosit deoarece „%.*s” este definit ca „%s” nu „%.*s”"
+
+#: pch.cc:691
+#, c-format
+msgid "%s: not used because `%s' is defined"
+msgstr "%s: nu este folosit deoarece „%s” este definit"
+
+#: pch.cc:711
+#, c-format
+msgid "%s: not used because `__COUNTER__' is invalid"
+msgstr "%s: nu este folosit deoarece „__COUNTER__” este nevalid"
+
+#: pch.cc:720 pch.cc:876
+msgid "while reading precompiled header"
+msgstr "în timpul citirii antetului precompilat"
+
+#: traditional.cc:891
+#, c-format
+msgid "detected recursion whilst expanding macro \"%s\""
+msgstr "s-a detectat recursivitate în timpul expandării macrocomenzii „%s”"
+
+# R-GC, scrie:
+# după revizarea fișierului, DȘ spune:
+# msgid "syntax error in macro parameter list"
+# msgstr "eroare de sintaxă în lista de parametri macro"
+# → poți spune „ai macrocomenzii” pentru a fi consistent cu restul fișierului
+# ***
+# Ok, corecție aplicată!
+#: traditional.cc:1114
+msgid "syntax error in macro parameter list"
+msgstr "eroare de sintaxă în lista de parametri ai macrocomenzii"