@@ -936,4 +936,98 @@ namespace global_variable_conflation_test {
936
936
sink (global_pointer); // clean
937
937
sink (*global_pointer); // $ ir MISSING: ast
938
938
}
939
+ }
940
+
941
+ char * gettext (const char *);
942
+ char * dgettext (const char *, const char *);
943
+ char * ngettext (const char *, const char *, unsigned long int );
944
+ char * dngettext (const char *, const char *, const char *, unsigned long int );
945
+
946
+ namespace test_gettext {
947
+ char * source ();
948
+ char * indirect_source ();
949
+
950
+ void test_gettext () {
951
+ char * data = source ();
952
+ char * translated = gettext (data);
953
+ sink (translated); // clean
954
+ indirect_sink (translated); // clean
955
+ }
956
+
957
+ void indirect_test_dgettext () {
958
+ char * data = indirect_source ();
959
+ char * translated = gettext (data);
960
+ sink (translated); // clean
961
+ indirect_sink (translated); // $ ir MISSING: ast
962
+ }
963
+
964
+ void test_dgettext () {
965
+ char * data = source ();
966
+ char * domain = source (); // Should not trace from this source
967
+ char * translated = dgettext (domain, data);
968
+ sink (translated); // clean
969
+ indirect_sink (translated); // clean
970
+ }
971
+
972
+ void indirect_test_gettext () {
973
+ char * data = indirect_source ();
974
+ char * domain = indirect_source (); // Should not trace from this source
975
+ char * translated = dgettext (domain, data);
976
+ sink (translated); // clean
977
+ indirect_sink (translated); // $ ir MISSING: ast
978
+ }
979
+
980
+ void test_ngettext () {
981
+ char * data = source ();
982
+ char * np = nullptr ; // Don't coun't as a source
983
+
984
+ char * translated = ngettext (data, np, 0 );
985
+ sink (translated); // clean
986
+ indirect_sink (translated); // clean
987
+
988
+ translated = ngettext (np, data, 0 );
989
+ sink (translated); // clean
990
+ indirect_sink (translated); // clean
991
+ }
992
+
993
+ void indirect_test_ngettext () {
994
+ char * data = indirect_source ();
995
+ char * np = nullptr ; // Don't coun't as a source
996
+
997
+ char * translated = ngettext (data, np, 0 );
998
+ sink (translated); // clean
999
+ indirect_sink (translated); // $ ir MISSING: ast
1000
+
1001
+ translated = ngettext (np, data, 0 );
1002
+ sink (translated); // clean
1003
+ indirect_sink (translated); // $ ir MISSING: ast
1004
+ }
1005
+
1006
+ void test_dngettext () {
1007
+ char * data = source ();
1008
+ char * np = nullptr ; // Don't coun't as a source
1009
+ char * domain = source (); // Should not trace from this source
1010
+
1011
+ char * translated = dngettext (domain, data, np, 0 );
1012
+ sink (translated); // clean
1013
+ indirect_sink (translated); // clean
1014
+
1015
+ translated = dngettext (domain, np, data, 0 );
1016
+ sink (translated); // clean
1017
+ indirect_sink (translated); // clean
1018
+ }
1019
+
1020
+ void indirect_test_dngettext () {
1021
+ char * data = indirect_source ();
1022
+ char * np = nullptr ; // Don't coun't as a source
1023
+ char * domain = indirect_source (); // Should not trace from this source
1024
+
1025
+ char * translated = dngettext (domain, data, np, 0 );
1026
+ sink (translated); // clean
1027
+ indirect_sink (translated); // $ ir MISSING: ast
1028
+
1029
+ translated = dngettext (domain, np, data, 0 );
1030
+ sink (translated); // clean
1031
+ indirect_sink (translated); // $ ir MISSING: ast
1032
+ }
939
1033
}
0 commit comments