Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51da619eec | ||
|
|
7544de0b47 | ||
|
|
491456e8de | ||
|
|
5b51db1999 | ||
|
|
46eaddc411 | ||
|
|
71c6cb6c6c | ||
|
|
0452f0aad9 | ||
|
|
478ccb6abd | ||
|
|
7504532e58 | ||
|
|
9621430533 | ||
|
|
3ef10f294e | ||
|
|
e394edb630 | ||
|
|
3eb50568e9 | ||
|
|
e65e602bab | ||
|
|
866b145645 | ||
|
|
65ec5abb72 | ||
|
|
fc909f88ba | ||
|
|
c22d13af30 | ||
|
|
290a53e934 | ||
|
|
4b20f32c39 | ||
|
|
5ce976f322 | ||
|
|
352e0bf2ff | ||
|
|
684404f29c | ||
|
|
478fb3c245 | ||
|
|
c3cfd55762 | ||
|
|
b2d989f85f | ||
|
|
bb3d290d6b | ||
|
|
33bdb7f425 | ||
|
|
94c12812e0 | ||
|
|
3144d82fb4 | ||
|
|
5a56dfc749 | ||
|
|
bddb1ba342 | ||
|
|
cafce7c050 | ||
|
|
324cd1bd59 | ||
|
|
ad5fe867c5 | ||
|
|
cc862b039e | ||
|
|
446eb16e7a | ||
|
|
e09702e5dc | ||
|
|
48000bdbda | ||
|
|
f8b8e094f9 | ||
|
|
9762fe5397 | ||
|
|
5780e18487 | ||
|
|
3c6f603aea | ||
|
|
35ab3eb26d | ||
|
|
302f4226cf | ||
|
|
377896c30a | ||
|
|
13893fbfb2 | ||
|
|
d603786a13 | ||
|
|
407342f482 | ||
|
|
5c8b812075 | ||
|
|
2a2d928075 | ||
|
|
e160229500 | ||
|
|
60cfb9998d | ||
|
|
6ec8c14a98 | ||
|
|
98f13a6f11 | ||
|
|
7b3ac0a22e | ||
|
|
0d85aea687 | ||
|
|
04b0be0452 | ||
|
|
25d2b76514 | ||
|
|
b0e7500bcb | ||
|
|
296bee8000 | ||
|
|
ec4977971e | ||
|
|
71684e0f90 | ||
|
|
7a99678e6f | ||
|
|
8bf5d6e9aa | ||
|
|
6fbf4df21d | ||
|
|
5cc9930813 | ||
|
|
5aa8b56cb7 | ||
|
|
4dfb2a39a6 | ||
|
|
cc11b68e20 | ||
|
|
5e327771ef | ||
|
|
0ec40d9000 | ||
|
|
dbfa0c5ed5 | ||
|
|
9b20549cef | ||
|
|
ce2fcf0c62 | ||
|
|
605c8032f8 | ||
|
|
bfdcba4449 | ||
|
|
fc9209f55a | ||
|
|
5a337901a6 | ||
|
|
6cabb390fd | ||
|
|
4efc47f955 | ||
|
|
8334b15f4e | ||
|
|
84343d04d3 | ||
|
|
e2c0f014dd | ||
|
|
e2bddc1901 | ||
|
|
c417da6ed4 | ||
|
|
2ad0a95bd4 | ||
|
|
e5b80da312 | ||
|
|
42dfef3f6b | ||
|
|
10125dfb08 | ||
|
|
3b7755a4d2 | ||
|
|
f0bef8dca6 | ||
|
|
1ce1e9cd71 | ||
|
|
fec8a4e07f | ||
|
|
65163966d5 | ||
|
|
e201d7905e | ||
|
|
32b9947b57 | ||
|
|
7b03e025a7 | ||
|
|
a81c4645c0 | ||
|
|
675720d466 | ||
|
|
646d9cfd6a | ||
|
|
d1e7326f4d | ||
|
|
0fd0adad84 | ||
|
|
aef2fa974e | ||
|
|
001b3a5721 | ||
|
|
350c1c3890 | ||
|
|
64c1327716 | ||
|
|
40fe35c8e2 | ||
|
|
532eee96fe | ||
|
|
febcf11215 | ||
|
|
7a76ee1ec5 | ||
|
|
81a026435d | ||
|
|
9f2d17d40c | ||
|
|
2e66dc794b | ||
|
|
3644b94ee9 | ||
|
|
cf2a1112f4 | ||
|
|
bcc7d61266 | ||
|
|
3c5e7e260e | ||
|
|
b137b7c3ed | ||
|
|
67118593b8 | ||
|
|
85514f21bc | ||
|
|
fa774544ea | ||
|
|
a45c8f8670 | ||
|
|
a014fe80bd | ||
|
|
b9bd78e64e | ||
|
|
21bc17ac6e | ||
|
|
d03f2d48fa | ||
|
|
edf8e0a155 | ||
|
|
82b8f261a8 | ||
|
|
1e779a5a3c | ||
|
|
4083075476 | ||
|
|
e4696c5dec | ||
|
|
9bf1c1d5a5 | ||
|
|
34745e0b10 | ||
|
|
5e96765467 | ||
|
|
9b49182355 | ||
|
|
88f419fc11 | ||
|
|
fc4fc00803 | ||
|
|
4b9ca430ba | ||
|
|
885b4c0a61 | ||
|
|
79a78ba994 | ||
|
|
982c4fb9cf | ||
|
|
9b7f7deb4d | ||
|
|
a6f535fd54 | ||
|
|
edb810aa3d | ||
|
|
42b3c28ab1 | ||
|
|
b745ebc218 | ||
|
|
6b6c16e378 | ||
|
|
8f55a2e8d2 | ||
|
|
5f68e6a868 | ||
|
|
93dc3737fb | ||
|
|
6f2714bfbb | ||
|
|
fafca55335 | ||
|
|
2605cac2a9 | ||
|
|
98a9b0cabe | ||
|
|
dc0a7af0aa | ||
|
|
3adcec81a4 | ||
|
|
b96737a919 | ||
|
|
c4d68fd859 | ||
|
|
2d3cac0dea | ||
|
|
0fcc415231 | ||
|
|
8431b37201 | ||
|
|
23f3b47e6f | ||
|
|
7d73a3124d | ||
|
|
b69d17a0f5 | ||
|
|
be8b6fb693 | ||
|
|
2041315910 | ||
|
|
04f822ab92 | ||
|
|
5a486fc8cd | ||
|
|
62fb757bb3 | ||
|
|
b79a965613 | ||
|
|
148a709e0e | ||
|
|
4916b2f361 | ||
|
|
f7c2cc869a | ||
|
|
79c8d1d64a | ||
|
|
54c73eaade | ||
|
|
a397a4731a | ||
|
|
4dfea3b68c | ||
|
|
384b33386b | ||
|
|
1a3afd10fc | ||
|
|
a2a0297ae9 | ||
|
|
8cf332baba | ||
|
|
77af87e92e | ||
|
|
01a747ad35 | ||
|
|
c8cbf6c0ba | ||
|
|
edaf6dce78 | ||
|
|
58e184fdc0 | ||
|
|
07efeb4c6c | ||
|
|
3555e2f1ab | ||
|
|
cf2ebd75fe | ||
|
|
ac74b5b6a3 | ||
|
|
c22c28d0c6 | ||
|
|
399daf9b27 | ||
|
|
b3a337aad0 | ||
|
|
ed1a1ca57e | ||
|
|
cae6c42928 | ||
|
|
4abec441f9 | ||
|
|
8e23df99d8 | ||
|
|
abe65b5879 | ||
|
|
20e220354d | ||
|
|
bc6bfac71a | ||
|
|
f40e9bc569 | ||
|
|
fa3e927011 | ||
|
|
9f9bfddd47 | ||
|
|
7fec8ba15f | ||
|
|
24f5fdd122 | ||
|
|
6a063be33f | ||
|
|
150c7aaf84 | ||
|
|
bbf2832356 | ||
|
|
e2e6662bae | ||
|
|
da3a4382dd | ||
|
|
eca31aa8a1 | ||
|
|
186ace28e0 | ||
|
|
c549c07fa6 | ||
|
|
340c00dc92 | ||
|
|
53b6bb29ec | ||
|
|
ed51a08388 | ||
|
|
140eb83f73 | ||
|
|
f1d9211b92 | ||
|
|
64b429c9a0 | ||
|
|
8a81837bd4 | ||
|
|
716979e1e3 | ||
|
|
117ec80611 | ||
|
|
6379d6e799 | ||
|
|
373e7face5 | ||
|
|
50eb6f94dd | ||
|
|
801c8dd5d4 | ||
|
|
27abc63d1c | ||
|
|
0a23125ae5 | ||
|
|
e8a33ff410 | ||
|
|
25162597e1 | ||
|
|
6502f27963 | ||
|
|
13e0bd2cff | ||
|
|
591242ab5f | ||
|
|
93e633490a | ||
|
|
250b5ca064 | ||
|
|
f0ae9b3a12 | ||
|
|
edb0af19c4 | ||
|
|
6329ba4091 | ||
|
|
ef48323a9b | ||
|
|
87a1e507ac | ||
|
|
0e3114a252 | ||
|
|
21f6ea640f | ||
|
|
03ebaf8783 | ||
|
|
d575335ade | ||
|
|
31abc1847f | ||
|
|
0b08fc9bac | ||
|
|
2bb1462f10 | ||
|
|
0ab9f770ea | ||
|
|
4416479d1c | ||
|
|
6231202374 | ||
|
|
6542b63660 | ||
|
|
fcab84cf6a | ||
|
|
e2e350883e | ||
|
|
47353932a1 | ||
|
|
850c61dc76 | ||
|
|
84bacd7edc | ||
|
|
773e60e31e | ||
|
|
9bce9d7a5d | ||
|
|
f1457ecffc | ||
|
|
8c284037c9 | ||
|
|
f2311d7dba | ||
|
|
3b4092f1ac | ||
|
|
2608f1a47c | ||
|
|
656018a440 | ||
|
|
70637aeb69 | ||
|
|
543aa5e3bb | ||
|
|
119a06f807 | ||
|
|
cb5b588711 | ||
|
|
adb9a4112c | ||
|
|
48653c0854 | ||
|
|
49e5dfdc24 | ||
|
|
35ebdb302a | ||
|
|
58f15d95d4 | ||
|
|
17db1d5970 | ||
|
|
0b97bea982 | ||
|
|
f054ffe9c8 | ||
|
|
2855600b5b | ||
|
|
ebb24763bd | ||
|
|
0c0f78d915 | ||
|
|
b0182fdd9a | ||
|
|
378e37adc9 | ||
|
|
3612c22adf | ||
|
|
230bce9864 | ||
|
|
f611df293f | ||
|
|
46944da663 | ||
|
|
518ea5bc31 | ||
|
|
3ee264015a | ||
|
|
65fcb15c09 | ||
|
|
304a336b57 | ||
|
|
28762c4be2 | ||
|
|
c2ca699e39 | ||
|
|
a8694b59a0 | ||
|
|
f0ecdd4862 | ||
|
|
98bfb54efc | ||
|
|
3a8e920a0d | ||
|
|
ba0cc65530 | ||
|
|
320d355e5d | ||
|
|
feae362cc3 | ||
|
|
66b0dbb945 | ||
|
|
14f2cc2bf4 | ||
|
|
c2fdf75c8c | ||
|
|
281d04feaf | ||
|
|
3526f5092c | ||
|
|
2be467ed68 | ||
|
|
38ed24f6a0 | ||
|
|
b56711ff6c | ||
|
|
379d1c8472 | ||
|
|
03b3995e19 | ||
|
|
466fb3b6bc | ||
|
|
08fd6214c9 | ||
|
|
feb70a3680 | ||
|
|
093757d182 | ||
|
|
a51209e051 | ||
|
|
4f86df6fa2 | ||
|
|
479368da95 | ||
|
|
9e9430e9b4 | ||
|
|
b38e9ef00a | ||
|
|
58cce1a996 | ||
|
|
ddc3857e36 | ||
|
|
0806b5774c | ||
|
|
3ff67ac89a | ||
|
|
5d358dc8de | ||
|
|
2832e546e0 | ||
|
|
5669aeb26a | ||
|
|
c846e8106d | ||
|
|
35c55c2555 | ||
|
|
065454194a | ||
|
|
9e5237fa99 | ||
|
|
7d7ff29911 | ||
|
|
5e019a77da | ||
|
|
68c9cb9236 | ||
|
|
36f04f0fce | ||
|
|
168eba4e28 | ||
|
|
39366406c5 | ||
|
|
9b1bf3b238 | ||
|
|
8eb5e9cd0e | ||
|
|
effd140a87 | ||
|
|
2afbce5b28 | ||
|
|
0c2b40b22f | ||
|
|
b590e097dc | ||
|
|
2f3f444b17 | ||
|
|
d04085e017 | ||
|
|
3eff13967a | ||
|
|
cba220883b | ||
|
|
423f838ce8 | ||
|
|
20f9990784 | ||
|
|
d6574c6d3f | ||
|
|
f5d711bd0b | ||
|
|
bd3102ad91 | ||
|
|
9005aca568 | ||
|
|
54c6227d89 | ||
|
|
41303ed8cc | ||
|
|
b885e2c39a | ||
|
|
853a4f3582 | ||
|
|
6ee27f5716 | ||
|
|
d8c3426058 | ||
|
|
886d3c58e9 | ||
|
|
ae17dab804 | ||
|
|
9fd2438d4c | ||
|
|
1ac61ed3b6 | ||
|
|
6bd2bb5fdb | ||
|
|
ac1e3274ec | ||
|
|
14be9092a1 | ||
|
|
5dfb14f86e | ||
|
|
b42091e660 | ||
|
|
646f40b8b5 | ||
|
|
c357584ec0 | ||
|
|
5d736cc6c8 | ||
|
|
304858c0cb | ||
|
|
fa32357231 | ||
|
|
8879e4e399 | ||
|
|
f1712ca20b | ||
|
|
0445fc4207 | ||
|
|
34c3835151 | ||
|
|
f38f551cda | ||
|
|
93fcc05944 | ||
|
|
12dbf2cd68 | ||
|
|
6a97dd8c93 | ||
|
|
16b4710f8c | ||
|
|
3d58b640f0 | ||
|
|
a5b573dbcd | ||
|
|
9360987d31 | ||
|
|
08776b77f7 | ||
|
|
b34766054b | ||
|
|
8914e28c26 | ||
|
|
2a39dc402a | ||
|
|
b55a98c697 | ||
|
|
fe9cfe318a | ||
|
|
08b9c995bd | ||
|
|
6da34e4236 | ||
|
|
2080e28813 | ||
|
|
79e846844f | ||
|
|
e172440607 | ||
|
|
996453b3a8 | ||
|
|
0eb68d22a0 | ||
|
|
a2a8d77445 | ||
|
|
032d9a288e | ||
|
|
3a74d10317 | ||
|
|
ef637af801 | ||
|
|
833795da79 | ||
|
|
68bc9642f4 | ||
|
|
a8bae9e3a6 | ||
|
|
fe2c5ef04b | ||
|
|
83521bc682 | ||
|
|
59ea146b6e | ||
|
|
09a1ce1e8a | ||
|
|
58a9ec846f | ||
|
|
6f3ae65833 | ||
|
|
a8e6695b55 | ||
|
|
c7edc9981f | ||
|
|
4d0912eb9d | ||
|
|
7747ac6226 | ||
|
|
13155149ea | ||
|
|
d3fffbad7b | ||
|
|
6fe98d2f54 | ||
|
|
a2683630e0 | ||
|
|
590923ca99 | ||
|
|
2a5198ed9d | ||
|
|
4a85594360 | ||
|
|
3d7f5ea0ca | ||
|
|
982314db80 | ||
|
|
3abe8a564b | ||
|
|
2dc0a86605 | ||
|
|
84f5f6505d | ||
|
|
cc685c8d7f | ||
|
|
9b07d494c6 | ||
|
|
3263fab54f | ||
|
|
145a1aa470 | ||
|
|
3254d7db33 | ||
|
|
5d4867e0ab | ||
|
|
a665cb1329 | ||
|
|
77bdf4b028 | ||
|
|
ca16d85890 | ||
|
|
b29d5e8d33 | ||
|
|
74f12d8071 | ||
|
|
dc6b33eda2 | ||
|
|
bde931bc3a | ||
|
|
81827f6536 | ||
|
|
8e5f3af858 | ||
|
|
9397ddb725 | ||
|
|
872c86ad20 | ||
|
|
6736b6771f | ||
|
|
4b4ea51138 | ||
|
|
a5de3a5c11 | ||
|
|
14e31e0d1d | ||
|
|
8bff10f1cb | ||
|
|
baf58c847e | ||
|
|
4fc18a7eb4 | ||
|
|
40821ed32c | ||
|
|
3aa99e6cc8 | ||
|
|
d6469bfd33 | ||
|
|
83c08306f9 | ||
|
|
6735b644c2 | ||
|
|
b16d0f9f42 | ||
|
|
c3dd4405a6 | ||
|
|
617261dc52 | ||
|
|
1120cb7280 | ||
|
|
969f2c1db2 | ||
|
|
2238e7347f | ||
|
|
feb8a6421a | ||
|
|
bf2674fd0c | ||
|
|
9cc30c2ccd | ||
|
|
b294eb7a9c | ||
|
|
b25fb3fd0e | ||
|
|
32ba555dee | ||
|
|
f3b60f296d | ||
|
|
f31caa30f4 | ||
|
|
04eeb03292 | ||
|
|
7b7effbe81 | ||
|
|
0d0b9ee120 | ||
|
|
62ac866bbc | ||
|
|
fc69d50751 | ||
|
|
7f21a55337 | ||
|
|
85c9b30c05 | ||
|
|
91380b3f58 | ||
|
|
fab35332eb | ||
|
|
f0d43ce102 | ||
|
|
08ab287ff7 | ||
|
|
380dcbbb58 | ||
|
|
3c98246141 | ||
|
|
0a002db1e5 | ||
|
|
b5b1c2b9df | ||
|
|
0428ebddb0 | ||
|
|
dd8f358076 | ||
|
|
34cd49174e | ||
|
|
7810d7cb34 | ||
|
|
3243e39c4f | ||
|
|
e60ae9290c | ||
|
|
00274d5090 | ||
|
|
56c1a6314f | ||
|
|
23038f4477 | ||
|
|
9f7d7fd997 | ||
|
|
982255d45c | ||
|
|
a28a456aee | ||
|
|
6d53961493 | ||
|
|
b93b58cb49 | ||
|
|
3cb4a9078c | ||
|
|
504800336c | ||
|
|
dda36530cd | ||
|
|
ffd59ee3c8 | ||
|
|
e3365bbfe4 | ||
|
|
71e9d239e3 | ||
|
|
2874fd2600 | ||
|
|
56db55a3dc | ||
|
|
8b9e009fc9 | ||
|
|
23720f5fd8 | ||
|
|
8bea1ecb35 | ||
|
|
dd3938c934 | ||
|
|
cf9b2565d0 | ||
|
|
caecbf9532 | ||
|
|
a250a53361 | ||
|
|
375d62c335 | ||
|
|
c3312d3fba | ||
|
|
df9469ca4e | ||
|
|
a07c8fd6c0 | ||
|
|
e41ead271e | ||
|
|
c1e3843bcf | ||
|
|
7886ac0e98 | ||
|
|
af38a6c7c8 | ||
|
|
9fb4ce53a5 | ||
|
|
1f7204baac | ||
|
|
f3932b797b | ||
|
|
24d7926bc7 | ||
|
|
f4db8e996a | ||
|
|
fa91e7d113 | ||
|
|
5889017c02 | ||
|
|
ad8278a3ae | ||
|
|
79c2319c16 | ||
|
|
e36cb639f2 | ||
|
|
23823e650a | ||
|
|
7fdddf23fe | ||
|
|
8eea7fb23e | ||
|
|
03c9918b58 | ||
|
|
2cbe7d6313 | ||
|
|
ffb1b832f6 | ||
|
|
d56135ea82 | ||
|
|
7216af8981 | ||
|
|
b8eb77a61a | ||
|
|
ed1fd8077c | ||
|
|
94e02c78a1 | ||
|
|
e6558706b8 | ||
|
|
ec511b941d | ||
|
|
accd0fb4af | ||
|
|
17140a9fde | ||
|
|
d0d269b61f | ||
|
|
f7adfc83e8 | ||
|
|
125b6576a4 | ||
|
|
67669b497e | ||
|
|
f809a81829 | ||
|
|
9ea7328ab4 | ||
|
|
ef5926422a | ||
|
|
111a6534e1 | ||
|
|
fcd74cb13c | ||
|
|
49720023bd | ||
|
|
96a12da3a3 | ||
|
|
67eea35d8f | ||
|
|
9d6ea035a9 | ||
|
|
fcd8f25e8b | ||
|
|
5f888eef30 | ||
|
|
c02440cfe1 | ||
|
|
e5abfbca71 | ||
|
|
b30c098dc1 | ||
|
|
b4625c7c30 | ||
|
|
b960aecb76 | ||
|
|
2ebc31b273 | ||
|
|
e135b011bc | ||
|
|
2913721755 | ||
|
|
7a83d8d76a | ||
|
|
db67ca332c | ||
|
|
69cf11512a | ||
|
|
4ea422f34e | ||
|
|
5c44eec26e | ||
|
|
99ac776dbb | ||
|
|
41f2cd70ed | ||
|
|
485dbdeb33 | ||
|
|
1772769c6d | ||
|
|
7393ba3b6b | ||
|
|
af71bc0cd1 | ||
|
|
a3b79dc06d | ||
|
|
011b5c12a9 | ||
|
|
d4df455dc0 | ||
|
|
025ab76ca6 | ||
|
|
1613298710 | ||
|
|
bcd6c9ef50 | ||
|
|
6f62c61bb4 | ||
|
|
b5c13664a6 | ||
|
|
f95b1cebf7 | ||
|
|
4813194480 | ||
|
|
97fd5b6bb9 | ||
|
|
2cbc5f4b7b | ||
|
|
0ba3df9253 | ||
|
|
f33afd0379 | ||
|
|
f15c635167 | ||
|
|
ec5044da85 | ||
|
|
5818e888f1 | ||
|
|
3b4c8e71e7 | ||
|
|
75d131d3ea | ||
|
|
6ad565886b | ||
|
|
abc3c11cab | ||
|
|
30991405b1 | ||
|
|
6e325b1eb1 | ||
|
|
f2834da643 | ||
|
|
13345e3f85 | ||
|
|
4092a12895 | ||
|
|
c694184fea | ||
|
|
2d1f8e09ac | ||
|
|
32e2c38fc4 | ||
|
|
d0ffef78f1 | ||
|
|
88f0bbebb9 | ||
|
|
75fc2a842c | ||
|
|
c0ff0efbed | ||
|
|
01290a44fb | ||
|
|
7b175d4ab4 | ||
|
|
4f2b7e2d68 | ||
|
|
01c3b227a2 | ||
|
|
144845c0b4 | ||
|
|
29e8ff6f3b | ||
|
|
2b44312fe4 | ||
|
|
d0985f5c82 | ||
|
|
ff4cdc8d31 | ||
|
|
b4c1b9dced | ||
|
|
8d097048e8 | ||
|
|
14592c4b37 | ||
|
|
a333ee19e3 | ||
|
|
49fcfad692 | ||
|
|
62f052a36c | ||
|
|
1bd76ebd2d | ||
|
|
6d99657dc0 | ||
|
|
e6003fe683 | ||
|
|
58e1a78191 | ||
|
|
cfd43015c6 | ||
|
|
aa4c8647ba | ||
|
|
6f39f3b2cf | ||
|
|
af6a56ff5a | ||
|
|
7f996068d4 | ||
|
|
6a60262bd6 | ||
|
|
50e3a2f40d | ||
|
|
ed98521ba6 | ||
|
|
a3be300f42 | ||
|
|
1ebb6aaef3 | ||
|
|
8815aa5d83 | ||
|
|
14b197149b | ||
|
|
27d1ac3897 | ||
|
|
74030963f4 | ||
|
|
83df072462 | ||
|
|
cdfe77f798 | ||
|
|
bf25e3ddb7 | ||
|
|
c5d64e06c8 | ||
|
|
e4e40ef38e | ||
|
|
ed60b9c77b | ||
|
|
2bdbdebd29 | ||
|
|
6c4049fe6a | ||
|
|
4b85228811 | ||
|
|
25eb322aba | ||
|
|
aa53c7181b | ||
|
|
91ce65c312 | ||
|
|
400ef22046 | ||
|
|
c735a48f37 | ||
|
|
081bf843d5 | ||
|
|
33e16e8ff8 | ||
|
|
f6d1bd8dc5 | ||
|
|
80161f19a0 | ||
|
|
4c48a2b997 | ||
|
|
b57e66d238 | ||
|
|
36e3707eee | ||
|
|
b2f2a4c088 | ||
|
|
f379a7e4d2 | ||
|
|
61de515ba9 | ||
|
|
d66e3b1d1d | ||
|
|
64aed44a59 | ||
|
|
25b73da64a | ||
|
|
4016be17d0 | ||
|
|
a18b91b864 | ||
|
|
6b003436e3 | ||
|
|
2b4a82d17e | ||
|
|
cd8aa4750c | ||
|
|
b69581ce7a | ||
|
|
8b7ad9ecad | ||
|
|
ee7b2f1efa | ||
|
|
48b120cf0b | ||
|
|
b0a82a8bdc | ||
|
|
a10a6d28ad | ||
|
|
2cbba0be71 | ||
|
|
4f03cfdcbe | ||
|
|
0b94fdefe9 | ||
|
|
e68b898a14 | ||
|
|
a06d8e601b | ||
|
|
b54dbce505 | ||
|
|
6216e3f87b | ||
|
|
e792d23cbc | ||
|
|
b388523e2e | ||
|
|
242d69ad55 | ||
|
|
23b370ba7b | ||
|
|
1fb046518a | ||
|
|
6a8b0ede01 | ||
|
|
2fa28a4645 | ||
|
|
23c07aa017 | ||
|
|
adca369b9f | ||
|
|
f086e5cd5b | ||
|
|
9b398b11d7 | ||
|
|
740b98b660 | ||
|
|
ef339a4322 | ||
|
|
75289ad75f | ||
|
|
75f6870919 | ||
|
|
309a6d899e | ||
|
|
b785c76714 | ||
|
|
89d3daeb53 | ||
|
|
f74049089b | ||
|
|
b8b26bb7bf | ||
|
|
640df0fe06 | ||
|
|
2015521a64 | ||
|
|
e24c264f89 | ||
|
|
c0b216c888 | ||
|
|
212ba53ec6 | ||
|
|
ee0052f953 | ||
|
|
937026ccad | ||
|
|
f1f339ee10 | ||
|
|
d5e77d82aa | ||
|
|
9f7d45363f | ||
|
|
bc0557718c | ||
|
|
91aa923203 | ||
|
|
791832845d | ||
|
|
a62acdb5a5 | ||
|
|
cd949b9ced | ||
|
|
7a9d0aae08 | ||
|
|
a5f4a5a734 | ||
|
|
999f28bf83 | ||
|
|
dfdb047546 | ||
|
|
e58ea779db | ||
|
|
f7d0b1bf22 | ||
|
|
979d86f8b9 | ||
|
|
f052b4e2d5 | ||
|
|
2ec6d5a1f6 | ||
|
|
32ac8ae30d | ||
|
|
2f78e86da4 | ||
|
|
f814414502 | ||
|
|
0e3dd7a275 | ||
|
|
ecaf985ae6 | ||
|
|
4f137fe9de | ||
|
|
1b323b6b58 | ||
|
|
8efa45e649 | ||
|
|
5ae826c117 | ||
|
|
26dff27224 | ||
|
|
05b0934e79 | ||
|
|
89251c7796 | ||
|
|
9e0c520ded | ||
|
|
391acc849a | ||
|
|
3c260b59e4 | ||
|
|
e0898fa949 | ||
|
|
bc84cdb538 | ||
|
|
a0912abebd | ||
|
|
1826ebc362 | ||
|
|
61d288db52 | ||
|
|
dd3479425b | ||
|
|
5b361fa8e5 | ||
|
|
8bac39c35f | ||
|
|
d31eff278b | ||
|
|
f28b78931d | ||
|
|
88040d5d35 | ||
|
|
4e216cf144 | ||
|
|
7516eefb4f | ||
|
|
1db3e20d72 | ||
|
|
3f81cc0838 | ||
|
|
f26f88b8e1 | ||
|
|
6f4ce8fe3d | ||
|
|
db9ef1fa46 | ||
|
|
26022ba2b0 | ||
|
|
e86fd97d71 | ||
|
|
1aa22b8124 | ||
|
|
19b55199d4 | ||
|
|
5dcb3081e5 | ||
|
|
60aa015a2b | ||
|
|
353d03a152 | ||
|
|
6ce2b28b80 | ||
|
|
ae7fa0d500 | ||
|
|
f5d1567440 | ||
|
|
ccfc40a47c | ||
|
|
5436cbbb6d | ||
|
|
6610004132 | ||
|
|
5623d1ecf5 | ||
|
|
49d4b82330 | ||
|
|
3e1266e3de | ||
|
|
35964e0756 | ||
|
|
d6b9003f6f | ||
|
|
eede66558e | ||
|
|
f7ab54c951 | ||
|
|
62acfc8d90 | ||
|
|
f02661a472 | ||
|
|
1ed96026ae | ||
|
|
4cb51b72e1 | ||
|
|
928a5d4b03 | ||
|
|
a9890f62ae | ||
|
|
93b14d5744 | ||
|
|
4ea5a278c0 | ||
|
|
86f1a0977d | ||
|
|
d726367408 | ||
|
|
a213d227a5 | ||
|
|
e921604cea | ||
|
|
7034b4b5a4 | ||
|
|
1a2c37a2db | ||
|
|
1d10e0446e | ||
|
|
b7a8a07a39 | ||
|
|
45e5d6caa7 | ||
|
|
c98303bd2c | ||
|
|
c7945e8509 | ||
|
|
df6bd14d70 | ||
|
|
c788dd02c0 | ||
|
|
c658673abb | ||
|
|
3917fc4f08 | ||
|
|
c916e8d930 | ||
|
|
7230cf3954 | ||
|
|
4c3b402925 | ||
|
|
36dd2d2458 | ||
|
|
a4c1e6a5be | ||
|
|
ed64b7cbf2 | ||
|
|
a0b665b9c7 | ||
|
|
4d76f74f59 | ||
|
|
377c126a4a | ||
|
|
3bcc88e4a5 | ||
|
|
9c62fce293 | ||
|
|
9f25573e73 | ||
|
|
d562206309 | ||
|
|
590dd677e3 | ||
|
|
bdbbfd3786 | ||
|
|
d3a38d9f28 | ||
|
|
c5a7a01889 | ||
|
|
604a2b7d87 | ||
|
|
d1372f928b | ||
|
|
c7e99415e0 | ||
|
|
bc4457c957 | ||
|
|
ecdb08ec8c | ||
|
|
3afa6206ff | ||
|
|
f2d4dec5a6 | ||
|
|
62fff2b37b | ||
|
|
fe2064d5b9 | ||
|
|
c2419ad58d | ||
|
|
6b99f44475 | ||
|
|
eee5aa3060 | ||
|
|
948bc0e138 | ||
|
|
deb7a7da46 | ||
|
|
90fb9919f4 | ||
|
|
11ed061136 | ||
|
|
c98d437c0d | ||
|
|
9c53c7090e | ||
|
|
a86d713e8a | ||
|
|
92384bf0c6 | ||
|
|
bbe5c42e64 | ||
|
|
9791061ca2 | ||
|
|
f87d7a735e | ||
|
|
14055547fa | ||
|
|
9843f739db | ||
|
|
3a3a3453e7 | ||
|
|
0228b9725e | ||
|
|
385a267208 | ||
|
|
bbf217f090 | ||
|
|
f474c284f4 | ||
|
|
7ad30dae85 | ||
|
|
3967429440 | ||
|
|
29b0b0611a | ||
|
|
2ab63a451a | ||
|
|
2a9afe8046 | ||
|
|
51b983509d | ||
|
|
36939092fb | ||
|
|
598ac0aff3 | ||
|
|
ae14e4bb3d | ||
|
|
857bce91ee | ||
|
|
ef52c25aa6 | ||
|
|
18d59c29ae | ||
|
|
f26ee1fb67 | ||
|
|
f82b1beaa0 | ||
|
|
e0c90207de | ||
|
|
e2d49e7c7a | ||
|
|
87b4652f92 | ||
|
|
812ab5e250 | ||
|
|
767c538bbf | ||
|
|
49b8160a58 | ||
|
|
6dba4f60ff | ||
|
|
4d80ef39cb | ||
|
|
8e0074e580 | ||
|
|
8ea76a7d8b | ||
|
|
046821112b | ||
|
|
399f19752d | ||
|
|
883972a466 | ||
|
|
5a48ce22c7 | ||
|
|
2278b396a8 | ||
|
|
54bf446cbc | ||
|
|
ecfe50be26 | ||
|
|
7ecc049fd4 | ||
|
|
7e4fa575f8 | ||
|
|
1994fa1a7e | ||
|
|
623029cc62 | ||
|
|
4076edd843 | ||
|
|
a6c015adc3 | ||
|
|
20954f7f75 | ||
|
|
315f3086f3 | ||
|
|
783e4bc227 | ||
|
|
26fdb44186 | ||
|
|
39f50a85c4 | ||
|
|
f973792142 | ||
|
|
1ad52f98b1 | ||
|
|
934a8563df | ||
|
|
034390f36c | ||
|
|
6d85f9cdf9 | ||
|
|
58d3a5285a | ||
|
|
989ca62269 | ||
|
|
13968a9723 | ||
|
|
1d0a886ec6 | ||
|
|
5798b073a1 | ||
|
|
976c901875 | ||
|
|
b8fe2ac52e | ||
|
|
18ac98a353 | ||
|
|
fad828ed78 | ||
|
|
4b1be560bb | ||
|
|
ee36eab4b6 | ||
|
|
c2a1a88257 | ||
|
|
3150de06ca | ||
|
|
61ef05afc8 | ||
|
|
357cc3fdc1 | ||
|
|
fa0fe29791 | ||
|
|
f675d7ece3 | ||
|
|
213799975c | ||
|
|
a1044f2f30 | ||
|
|
df670f8e13 | ||
|
|
a64b60670f | ||
|
|
473ce33fec | ||
|
|
63193e123b | ||
|
|
1e47af5b6f | ||
|
|
11f7300035 | ||
|
|
c67590a505 | ||
|
|
9e592073dd | ||
|
|
3512a088d6 | ||
|
|
8ec3dfa3fd | ||
|
|
e5cdfac6b7 | ||
|
|
f7543e3aaa | ||
|
|
7a2de290cf | ||
|
|
8c49ac2a8d | ||
|
|
557ced4b75 | ||
|
|
106bde2dc6 | ||
|
|
a509b332b5 | ||
|
|
905f8dc216 | ||
|
|
6464f55fcf | ||
|
|
6ae687faa3 | ||
|
|
2e00bb9a31 | ||
|
|
10090a03a6 | ||
|
|
1f278e75c3 | ||
|
|
dba4a28d88 | ||
|
|
bcc256ec16 | ||
|
|
53a3864fdc | ||
|
|
0ea25159d4 | ||
|
|
42fe8076e6 | ||
|
|
5297166d4f | ||
|
|
b89e45a4b6 | ||
|
|
060c14117c | ||
|
|
b00df8d64d | ||
|
|
4e7b679889 | ||
|
|
30950f0aaa | ||
|
|
385c336ba7 | ||
|
|
b8fae51686 | ||
|
|
c750359475 | ||
|
|
618c9c7d0c | ||
|
|
8b36869283 | ||
|
|
64c9e5f67a | ||
|
|
5dae210933 | ||
|
|
85312ed31d | ||
|
|
19db7fe4b5 | ||
|
|
38e90ce750 | ||
|
|
76f22333e6 | ||
|
|
740c141887 | ||
|
|
b00eaa2670 | ||
|
|
3a839384bb | ||
|
|
5f307788e2 | ||
|
|
ce9ab28489 | ||
|
|
3ca675fd58 | ||
|
|
09519ae210 | ||
|
|
a370b3d064 | ||
|
|
1246f5a62c | ||
|
|
164a2962b6 | ||
|
|
5f14aab942 | ||
|
|
1502b87e47 | ||
|
|
88768b9c28 | ||
|
|
94ab7f9087 | ||
|
|
e5abb36d32 | ||
|
|
91393ad80e | ||
|
|
ad6fd53398 | ||
|
|
d85e30e746 | ||
|
|
1935d85357 | ||
|
|
18f29bffa8 | ||
|
|
f0a8c1aa16 | ||
|
|
f3c8c5f389 | ||
|
|
52f7999233 | ||
|
|
173f79ca4e | ||
|
|
7ed461992e | ||
|
|
57f9e1e5c9 | ||
|
|
0bb6c89282 | ||
|
|
bfab754869 | ||
|
|
957b812f78 | ||
|
|
288978b251 | ||
|
|
9a37e6882c | ||
|
|
143207aadb | ||
|
|
b2c9167eec | ||
|
|
8b7dc8ba3a | ||
|
|
7ea76ed031 | ||
|
|
f092c8fadf | ||
|
|
1001afecc8 | ||
|
|
add968510d | ||
|
|
68c891e713 | ||
|
|
2ad3a4006e | ||
|
|
cc1eb1a977 | ||
|
|
0edf6c3ea7 | ||
|
|
bdd881b4e7 | ||
|
|
0b4f51b32e | ||
|
|
4e22b6577f | ||
|
|
1ab60bc247 | ||
|
|
25d98de880 | ||
|
|
7fa6d48ce4 | ||
|
|
a07827e079 | ||
|
|
7290c0ce6a | ||
|
|
cc13a92a06 | ||
|
|
0c1df4edb1 | ||
|
|
e1cf5abc32 | ||
|
|
d9551d2dcc | ||
|
|
35d12432e7 | ||
|
|
8bf86bedcf | ||
|
|
33eb2f6abe | ||
|
|
11262438e3 | ||
|
|
53d99cddc4 | ||
|
|
8aa5f40dfa | ||
|
|
7133b63c95 | ||
|
|
885881294d | ||
|
|
aecb7d541b | ||
|
|
db7c9c78b9 | ||
|
|
0d2e793df7 | ||
|
|
0317f3439d | ||
|
|
673a68d4cc | ||
|
|
ae2faa7b2d | ||
|
|
fd63b2674a | ||
|
|
437d9b333a | ||
|
|
0139274856 | ||
|
|
87cfa702bc | ||
|
|
47b502b965 | ||
|
|
013bff267e | ||
|
|
56ac2218d5 | ||
|
|
ac0801f75e | ||
|
|
0924f5c0e9 | ||
|
|
0e4389c96f | ||
|
|
61e33bda63 | ||
|
|
80b4c418ad | ||
|
|
483f9823c8 | ||
|
|
607bc7af62 | ||
|
|
905fc0fe9b | ||
|
|
e79dbfb671 | ||
|
|
217760ea68 | ||
|
|
71d78e310b | ||
|
|
b641611b86 | ||
|
|
50a8c7b1df | ||
|
|
f7a1d32bea | ||
|
|
062b0a80d3 | ||
|
|
81989243ad | ||
|
|
d37cffa9d8 | ||
|
|
bde41134f9 | ||
|
|
4497b7fb2b | ||
|
|
d942d64b7b | ||
|
|
63dbbb8b38 | ||
|
|
1a2bf6fc4c | ||
|
|
64cc5c42e7 | ||
|
|
17f7cd1c2c | ||
|
|
0b66fe2535 | ||
|
|
1cc0983315 | ||
|
|
828589705d | ||
|
|
fb0b4d1504 | ||
|
|
390c987081 | ||
|
|
87f0b9fdee | ||
|
|
c83637e6fe | ||
|
|
c4b44d3038 | ||
|
|
0b1064ea7d | ||
|
|
16f5f68ff8 | ||
|
|
d2cb68506b | ||
|
|
9b290c5a8a | ||
|
|
7bac5a7101 | ||
|
|
736cf279c3 | ||
|
|
3d49cfa0e7 | ||
|
|
9e7b2d68ad | ||
|
|
32c1d6bf52 | ||
|
|
2199ec324d | ||
|
|
4f3e3c8f63 | ||
|
|
585cb66534 | ||
|
|
ebd5314b48 | ||
|
|
5c7f551dba | ||
|
|
325ea2939d | ||
|
|
1a26463bcb | ||
|
|
8401086544 | ||
|
|
5b44545fd2 | ||
|
|
71a1005720 | ||
|
|
52b2b8f6df | ||
|
|
67345e0e6d | ||
|
|
fcd84dda26 | ||
|
|
dfd4970060 | ||
|
|
256d0cd95f | ||
|
|
9d4238b236 | ||
|
|
9ba19af496 | ||
|
|
c15f359d8f | ||
|
|
7fc86af212 | ||
|
|
10c477eb09 | ||
|
|
4f4d662541 | ||
|
|
9196ba593b | ||
|
|
0c6e43c33d | ||
|
|
6514d98b2c | ||
|
|
64b502b4f2 | ||
|
|
3b0b4d1ef0 | ||
|
|
5661f0a56d | ||
|
|
1534bc53d8 | ||
|
|
ecf57ce8d2 | ||
|
|
0259eeeb5d | ||
|
|
8c989a057d | ||
|
|
3a0aa9eaa9 | ||
|
|
76e427fdb2 | ||
|
|
0a13cdec11 | ||
|
|
6ff23b461c | ||
|
|
f17ce8703d | ||
|
|
978d9ae574 | ||
|
|
399b43666f | ||
|
|
880277c473 | ||
|
|
3faceeb863 | ||
|
|
5746586532 | ||
|
|
b1deef866d | ||
|
|
6ccea3878b | ||
|
|
e5fd036af9 | ||
|
|
4254419e76 | ||
|
|
fb89c1c2d8 | ||
|
|
fdda9c2db5 | ||
|
|
89cdae0456 | ||
|
|
f73a5d169a | ||
|
|
f9ecc9c6f9 | ||
|
|
9405f41521 | ||
|
|
5f94a645d5 | ||
|
|
f9b6d18af4 | ||
|
|
51fff8eb42 | ||
|
|
e4809d9f90 | ||
|
|
bbcc3fdcab | ||
|
|
781e813abd | ||
|
|
37cca41225 | ||
|
|
ed584b23e2 | ||
|
|
8e8482b527 | ||
|
|
f7cab674a4 | ||
|
|
3e2488a9e7 | ||
|
|
2a94a2b26d | ||
|
|
42586081fa | ||
|
|
c49e51d386 | ||
|
|
51557b5ae9 | ||
|
|
1201a56169 | ||
|
|
3c32946d88 | ||
|
|
41b7678e62 | ||
|
|
1145a49108 | ||
|
|
02c547b60e | ||
|
|
46e6b87d13 | ||
|
|
1bf090238d | ||
|
|
438a7e337d | ||
|
|
4ae2f001fa | ||
|
|
effb26733e | ||
|
|
1fa4f67afd | ||
|
|
6254bb6ad2 | ||
|
|
bf6bc96437 | ||
|
|
71d1f4c701 | ||
|
|
26d5679d5d | ||
|
|
f297d411df | ||
|
|
2ad35c83c0 | ||
|
|
72c9f2115e | ||
|
|
805f884b17 | ||
|
|
26726df578 | ||
|
|
b7a0279352 | ||
|
|
f724ae8912 | ||
|
|
ab55557ddb | ||
|
|
c70dc9e93b | ||
|
|
0aaf0c5af4 | ||
|
|
29ff9be9f7 | ||
|
|
52469738d3 | ||
|
|
8dd2efd090 | ||
|
|
07683b02fe | ||
|
|
a0a7d5b678 | ||
|
|
3e34ba2227 | ||
|
|
08a28c3fd5 | ||
|
|
95ae82ff5c | ||
|
|
94294dd372 | ||
|
|
61e98c0e0d | ||
|
|
bb910aa280 | ||
|
|
a6c7ffd8f5 | ||
|
|
4c2124ebf4 | ||
|
|
aefe53cab1 | ||
|
|
ce3d3fa403 | ||
|
|
55a9117ecf | ||
|
|
e5d08d2a9e | ||
|
|
3194b10e62 | ||
|
|
12c653fa7b | ||
|
|
0c32d707ab | ||
|
|
b4e2a8457f | ||
|
|
f6d7577688 | ||
|
|
c026a827c6 | ||
|
|
55421659dc | ||
|
|
1a718f3f0e | ||
|
|
68078182bf | ||
|
|
7bcbea62e9 | ||
|
|
ec66642c60 | ||
|
|
4119b6c263 |
@@ -0,0 +1,79 @@
|
||||
name: Bug Report - Language Service
|
||||
description: Create a bug report for IntelliSense, code editing, code navigation, code completion, code formatting, semantic colorization, etc.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
### Is there an existing issue for this?
|
||||
Please search our [existing issues](https://github.com/microsoft/vscode-cpptools/issues) to see if an issue already exists for the bug you encountered.
|
||||
|
||||
Please also review our [documentation](https://code.visualstudio.com/docs/languages/cpp) and [FAQs](https://code.visualstudio.com/docs/cpp/faq-cpp).
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Environment
|
||||
description: |
|
||||
Please provide the information for the following:
|
||||
- OS and Version
|
||||
- VS Code Version
|
||||
- C/C++ Extension Version
|
||||
- If using SSH remote, specify OS of remote machine
|
||||
value: |
|
||||
- OS and Version:
|
||||
- VS Code Version:
|
||||
- C/C++ Extension Version:
|
||||
- If using SSH remote, specify OS of remote machine:
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Bug Summary and Steps to Reproduce
|
||||
description: |
|
||||
Please describe the language service issue or language service feature that is not working as expected. Include information about the actual workspace project (for example, is the workspace a single project or multiple projects, size of the project, etc).
|
||||
|
||||
Include clear steps on how to reproduce the issue and a description of what you expected to happen.
|
||||
value: |
|
||||
Bug Summary:
|
||||
|
||||
|
||||
Steps to reproduce:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
Expected behavior:
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Configuration and Logs
|
||||
description: |
|
||||
Please provide your c_cpp_properties.json and logs:
|
||||
- Configurations in `c_cpp_properties.json`
|
||||
- Logs from running `C/C++: Log Diagnostics` from the VS Code command palette
|
||||
- Logs from [the language server logging](https://code.visualstudio.com/docs/cpp/enable-logging-cpp#_enable-logging-for-the-language-server)
|
||||
render: shell
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Other Extensions
|
||||
description: If applicable, please list other extensions installed and if the issue persists after disabling other extensions.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: |
|
||||
Optionally provide other information that will give us more context about the issue you are encountering, such as code sample, screenshots, screen recording of the issue, call stacks, etc.
|
||||
|
||||
Providing call stacks:
|
||||
For bugs like crashes, deadlocks, infinite loops, etc. that we are not able to repro and for which the call stack may be useful, please attach a debugger and/or create a dmp and provide the call stacks. Windows binaries have symbols available in VS Code by setting your "symbolSearchPath" to "https://msdl.microsoft.com/download/symbols".
|
||||
|
||||
Instructions for attaching debugger to language service process:
|
||||
https://github.com/microsoft/vscode-cpptools/wiki/Attaching-debugger-to-cpptools-or-cpptools%E2%80%90srv.
|
||||
|
||||
Performance analysis:
|
||||
For a performance issue see instructions at https://github.com/microsoft/vscode-cpptools/wiki/Troubleshooting-Performance-Issues.
|
||||
validations:
|
||||
required: false
|
||||
@@ -0,0 +1,78 @@
|
||||
name: Bug Report - Debugger
|
||||
description: Create a bug report for debugging such as call stack, breakpoints, watch window, launching or attaching to a debuggee.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
### Is there an existing issue for this?
|
||||
Please search our [existing issues](https://github.com/microsoft/vscode-cpptools/issues) to see if an issue already exists for the bug you encountered.
|
||||
|
||||
Please also review our [documentation](https://code.visualstudio.com/docs/languages/cpp) and [FAQs](https://code.visualstudio.com/docs/cpp/faq-cpp).
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Environment
|
||||
description: |
|
||||
Please provide the information for the following:
|
||||
- OS and version
|
||||
- VS Code version
|
||||
- C/C++ extension version
|
||||
- OS and version of remote machine (if applicable)
|
||||
- GDB / LLDB version
|
||||
value: |
|
||||
- OS and version:
|
||||
- VS Code:
|
||||
- C/C++ extension:
|
||||
- OS and version of remote machine (if applicable):
|
||||
- GDB / LLDB version:
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Bug Summary and Steps to Reproduce
|
||||
description: |
|
||||
Please describe the debugging issue or debugger feature that is not working as expected.
|
||||
|
||||
Include clear steps on how to reproduce the issue.
|
||||
value: |
|
||||
Bug Summary:
|
||||
|
||||
|
||||
Steps to reproduce:
|
||||
1. In this environment...
|
||||
2. With this config...
|
||||
3. Do '...'
|
||||
4. See error...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Debugger Configurations
|
||||
description: Please provide the debugger configurations from the **tasks.json** and **launch.json** files.
|
||||
render: shell
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Debugger Logs
|
||||
description: |
|
||||
If applicable, please include [logging for the debugger adapter](https://code.visualstudio.com/docs/cpp/enable-logging-cpp#_enable-logging-for-the-debug-adapter) by adding `"logging": { "engineLogging": true, "trace": true, "traceResponse": true }` in the **launch.json** file.
|
||||
|
||||
Include logs or error messages from the Debug Console or Output windows.
|
||||
render: shell
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Other Extensions
|
||||
description: If applicable, please list other extensions installed and if the issue persists after disabling other extensions.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Information
|
||||
description: |
|
||||
Optionally provide other information that will give us more context about the issue you are encountering, such as a code sample, screenshots, or screen recording of the issue.
|
||||
|
||||
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||
validations:
|
||||
required: false
|
||||
@@ -0,0 +1,15 @@
|
||||
name: Feature Request
|
||||
description: Suggest an idea for the C/C++ extension.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
### Is there an existing request for this feature?
|
||||
Prior to creating a new feature request, please review our [existing feature requests](https://github.com/microsoft/vscode-cpptools/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+Request%22) to avoid duplicates.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Feature Request
|
||||
description: |
|
||||
Describe the feature you'd like.
|
||||
validations:
|
||||
required: true
|
||||
@@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Discussion or question
|
||||
url: https://github.com/microsoft/vscode-cpptools/discussions/new
|
||||
about: Please use our Discussions board to start a discussion or to ask a question.
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
name: Debugger
|
||||
about: Issues pertaining to debugging such as call stack, breakpoints, watch window,
|
||||
launching or attaching to a debuggee.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Type: Debugger
|
||||
<!----- Input information below ----->
|
||||
|
||||
<!--
|
||||
**Prior to filing an issue, please review:**
|
||||
- Existing issues at https://github.com/Microsoft/vscode-cpptools/issues
|
||||
- Our documentation at https://code.visualstudio.com/docs/languages/cpp
|
||||
- FAQs at https://code.visualstudio.com/docs/cpp/faq-cpp
|
||||
-->
|
||||
|
||||
**Describe the bug**
|
||||
- OS and Version:
|
||||
- VS Code Version:
|
||||
- C/C++ Extension Version:
|
||||
- Other extensions you installed (and if the issue persists after disabling them):
|
||||
- A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
*Please include a code sample and `launch.json` configuration.*
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Additional context**
|
||||
*If applicable, please include logging by adding "logging": { "engineLogging": true, "trace": true, "traceResponse": true } in your `launch.json`*
|
||||
Add any other context about the problem here including log or error messages in your Debug Console or Output windows.
|
||||
@@ -1,42 +0,0 @@
|
||||
---
|
||||
name: General Extension
|
||||
about: Issues pertaining to downloading, installing, or building the extension.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Type: General
|
||||
<!----- Input information below ----->
|
||||
|
||||
<!--
|
||||
**Prior to filing an issue, please review:**
|
||||
- Existing issues at https://github.com/Microsoft/vscode-cpptools/issues
|
||||
- Our documentation at https://code.visualstudio.com/docs/languages/cpp
|
||||
- FAQs at https://code.visualstudio.com/docs/cpp/faq-cpp
|
||||
-->
|
||||
|
||||
**Describe the bug**
|
||||
- OS and Version:
|
||||
- VS Code Version:
|
||||
- C/C++ Extension Version:
|
||||
- Other extensions you installed (and if the issue persists after disabling them):
|
||||
- A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
*Please include code sample and `task.json` files.*
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here including log messages from the Output window.
|
||||
@@ -1,58 +0,0 @@
|
||||
---
|
||||
name: Language Service
|
||||
about: 'Issues pertaining to IntelliSense, autocomplete, code editing, etc. '
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Type: LanguageService**
|
||||
<!----- Input information below ----->
|
||||
|
||||
<!--
|
||||
**Prior to filing an issue, please review:**
|
||||
- Existing issues at https://github.com/Microsoft/vscode-cpptools/issues
|
||||
- Our documentation at https://code.visualstudio.com/docs/languages/cpp
|
||||
- FAQs at https://code.visualstudio.com/docs/cpp/faq-cpp
|
||||
-->
|
||||
|
||||
**Describe the bug**
|
||||
- OS and Version:
|
||||
- VS Code Version:
|
||||
- C/C++ Extension Version:
|
||||
- Other extensions you installed (and if the issue persists after disabling them):
|
||||
- Does this issue involve using SSH remote to run the extension on a remote machine?:
|
||||
- A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).
|
||||
|
||||
**Steps to reproduce**
|
||||
<!-- Provide clear steps to reproduce the behavior: -->
|
||||
<!-- *The most actionable issue reports include a code sample including configuration files such as c_cpp_properties.json* -->
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
<!-- A clear and concise description of what you expected to happen. -->
|
||||
|
||||
<!-- Please provide the following logs that show diagnostics and debugging information about the language server.
|
||||
1. Logs from the command `C/C++: Log Diagnostics`
|
||||
2. Logs from [the language server](https://code.visualstudio.com/docs/cpp/enable-logging-cpp#_enable-logging-for-the-language-server)
|
||||
-->
|
||||
<details>
|
||||
<summary><strong>Logs</strong></summary>
|
||||
|
||||
<!-- Note: do not remove empty line after </summary> tag, otherwise the code blocks formatting won't show correctly. -->
|
||||
```
|
||||
Insert logs here.
|
||||
```
|
||||
</details>
|
||||
|
||||
**Screenshots**
|
||||
<!-- If applicable, add screenshots to help explain your problem. -->
|
||||
|
||||
**Additional context**
|
||||
<!--
|
||||
* Call Stacks: For bugs like crashes, deadlocks, infinite loops, etc. that we are not able to repro and for which the call stack may be useful, please attach a debugger and/or create a dmp and provide the call stacks. Windows binaries have symbols available in VS Code by setting your "symbolSearchPath" to "https://msdl.microsoft.com/download/symbols".
|
||||
-->
|
||||
@@ -15,8 +15,8 @@ class Locker extends ActionBase_1.ActionBase {
|
||||
this.daysSinceUpdate = daysSinceUpdate;
|
||||
}
|
||||
async run() {
|
||||
const closedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceClose);
|
||||
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceUpdate);
|
||||
const closedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.daysSinceClose);
|
||||
const updatedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.daysSinceUpdate);
|
||||
const query = this.buildQuery((this.daysSinceClose ? `closed:<${closedTimestamp} ` : "") + (this.daysSinceUpdate ? `updated:<${updatedTimestamp} ` : "") + "is:closed is:unlocked");
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
await Promise.all(page.map(async (issue) => {
|
||||
@@ -24,15 +24,15 @@ class Locker extends ActionBase_1.ActionBase {
|
||||
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
|
||||
// TODO: Verify closed and updated timestamps
|
||||
) {
|
||||
console.log(`Locking issue ${hydrated.number}`);
|
||||
(0, utils_1.safeLog)(`Locking issue ${hydrated.number}`);
|
||||
await issue.lockIssue();
|
||||
}
|
||||
else {
|
||||
if (hydrated.locked) {
|
||||
console.log(`Issue ${hydrated.number} is already locked. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is already locked. Ignoring`);
|
||||
}
|
||||
else if (hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { GitHub, Issue } from '../api/api'
|
||||
import { daysAgoToHumanReadbleDate } from '../common/utils'
|
||||
import { ActionBase } from '../common/ActionBase'
|
||||
import { GitHub, Issue } from '../api/api';
|
||||
import { daysAgoToHumanReadbleDate, safeLog } from '../common/utils';
|
||||
import { ActionBase } from '../common/ActionBase';
|
||||
|
||||
export class Locker extends ActionBase {
|
||||
constructor(
|
||||
@@ -26,26 +26,26 @@ export class Locker extends ActionBase {
|
||||
}
|
||||
|
||||
async run() {
|
||||
const closedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceClose)
|
||||
const updatedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceUpdate)
|
||||
const closedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceClose);
|
||||
const updatedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceUpdate);
|
||||
|
||||
const query = this.buildQuery((this.daysSinceClose ? `closed:<${closedTimestamp} ` : "") + (this.daysSinceUpdate ? `updated:<${updatedTimestamp} ` : "") + "is:closed is:unlocked");
|
||||
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
await Promise.all(
|
||||
page.map(async (issue) => {
|
||||
const hydrated = await issue.getIssue()
|
||||
const hydrated = await issue.getIssue();
|
||||
|
||||
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
|
||||
// TODO: Verify closed and updated timestamps
|
||||
) {
|
||||
console.log(`Locking issue ${hydrated.number}`)
|
||||
await issue.lockIssue()
|
||||
safeLog(`Locking issue ${hydrated.number}`);
|
||||
await issue.lockIssue();
|
||||
} else {
|
||||
if (hydrated.locked) {
|
||||
console.log(`Issue ${hydrated.number} is already locked. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is already locked. Ignoring`);
|
||||
} else if (hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is open. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -13,7 +13,7 @@ class LockerAction extends Action_1.Action {
|
||||
this.id = 'Locker';
|
||||
}
|
||||
async onTriggered(github) {
|
||||
await new Locker_1.Locker(github, +utils_1.getRequiredInput('daysSinceClose'), +utils_1.getRequiredInput('daysSinceUpdate'), utils_1.getInput('labels') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
|
||||
await new Locker_1.Locker(github, +(0, utils_1.getRequiredInput)('daysSinceClose'), +(0, utils_1.getRequiredInput)('daysSinceUpdate'), (0, utils_1.getInput)('labels') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999)).run();
|
||||
}
|
||||
}
|
||||
new LockerAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { OctoKit } from '../api/octokit'
|
||||
import { getInput, getRequiredInput } from '../common/utils'
|
||||
import { Locker } from './Locker'
|
||||
import { Action } from '../common/Action'
|
||||
import { OctoKit } from '../api/octokit';
|
||||
import { getInput, getRequiredInput } from '../common/utils';
|
||||
import { Locker } from './Locker';
|
||||
import { Action } from '../common/Action';
|
||||
|
||||
class LockerAction extends Action {
|
||||
id = 'Locker'
|
||||
id = 'Locker';
|
||||
|
||||
async onTriggered(github: OctoKit) {
|
||||
await new Locker(
|
||||
@@ -24,8 +24,8 @@ class LockerAction extends Action {
|
||||
getInput('ignoreMilestoneIds') || undefined,
|
||||
+(getInput('minimumVotes') || 0),
|
||||
+(getInput('maximumVotes') || 9999999)
|
||||
).run()
|
||||
).run();
|
||||
}
|
||||
}
|
||||
|
||||
new LockerAction().run() // eslint-disable-line
|
||||
new LockerAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Reopener = void 0;
|
||||
const utils_1 = require("../common/utils");
|
||||
const ActionBase_1 = require("../common/ActionBase");
|
||||
class Reopener extends ActionBase_1.ActionBase {
|
||||
constructor(github, alsoApplyToOpenIssues, addLabels, removeLabels, reopenComment, setMilestoneId, labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
|
||||
@@ -19,7 +20,7 @@ class Reopener extends ActionBase_1.ActionBase {
|
||||
async run() {
|
||||
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
|
||||
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
|
||||
console.log(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
|
||||
(0, utils_1.safeLog)(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
|
||||
const query = this.buildQuery((this.alsoApplyToOpenIssues ? "" : "is:closed ") + "is:unlocked");
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
await Promise.all(page.map(async (issue) => {
|
||||
@@ -28,17 +29,17 @@ class Reopener extends ActionBase_1.ActionBase {
|
||||
// TODO: Verify closed and updated timestamps
|
||||
) {
|
||||
if (hydrated.open === false) {
|
||||
console.log(`Reopening issue ${hydrated.number}`);
|
||||
(0, utils_1.safeLog)(`Reopening issue ${hydrated.number}`);
|
||||
await issue.reopenIssue();
|
||||
}
|
||||
if (this.setMilestoneId != undefined) {
|
||||
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
(0, utils_1.safeLog)(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
(0, utils_1.safeLog)(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
@@ -46,22 +47,22 @@ class Reopener extends ActionBase_1.ActionBase {
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
(0, utils_1.safeLog)(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.reopenComment) {
|
||||
console.log(`Posting comment to issue ${hydrated.number}.`);
|
||||
(0, utils_1.safeLog)(`Posting comment to issue ${hydrated.number}.`);
|
||||
await issue.postComment(this.reopenComment);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (hydrated.locked) {
|
||||
console.log(`Issue ${hydrated.number} is locked. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is locked. Ignoring`);
|
||||
}
|
||||
else if (!this.alsoApplyToOpenIssues && hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { GitHub, Issue } from '../api/api'
|
||||
import { ActionBase } from '../common/ActionBase'
|
||||
import { GitHub, Issue } from '../api/api';
|
||||
import { daysAgoToHumanReadbleDate, safeLog } from '../common/utils';
|
||||
import { ActionBase } from '../common/ActionBase';
|
||||
|
||||
export class Reopener extends ActionBase {
|
||||
constructor(
|
||||
@@ -31,50 +32,50 @@ export class Reopener extends ActionBase {
|
||||
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
|
||||
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
|
||||
|
||||
console.log(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
|
||||
safeLog(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
|
||||
|
||||
const query = this.buildQuery((this.alsoApplyToOpenIssues ? "": "is:closed ") + "is:unlocked");
|
||||
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
await Promise.all(
|
||||
page.map(async (issue) => {
|
||||
const hydrated = await issue.getIssue()
|
||||
const hydrated = await issue.getIssue();
|
||||
if (!hydrated.locked && (this.alsoApplyToOpenIssues || hydrated.open === false) && this.validateIssue(hydrated)
|
||||
// TODO: Verify closed and updated timestamps
|
||||
) {
|
||||
if (hydrated.open === false) {
|
||||
console.log(`Reopening issue ${hydrated.number}`)
|
||||
await issue.reopenIssue()
|
||||
safeLog(`Reopening issue ${hydrated.number}`);
|
||||
await issue.reopenIssue();
|
||||
}
|
||||
if (this.setMilestoneId != undefined) {
|
||||
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
|
||||
await issue.setMilestone(+this.setMilestoneId)
|
||||
safeLog(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`)
|
||||
await issue.removeLabel(removeLabel)
|
||||
safeLog(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`)
|
||||
await issue.addLabel(addLabel)
|
||||
safeLog(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.reopenComment) {
|
||||
console.log(`Posting comment to issue ${hydrated.number}.`)
|
||||
await issue.postComment(this.reopenComment)
|
||||
safeLog(`Posting comment to issue ${hydrated.number}.`);
|
||||
await issue.postComment(this.reopenComment);
|
||||
}
|
||||
} else {
|
||||
if (hydrated.locked) {
|
||||
console.log(`Issue ${hydrated.number} is locked. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is locked. Ignoring`);
|
||||
} else if (!this.alsoApplyToOpenIssues && hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is open. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -10,11 +10,11 @@ const Action_1 = require("../common/Action");
|
||||
class ReopenerAction extends Action_1.Action {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.id = 'Locker';
|
||||
this.id = 'Reopener';
|
||||
}
|
||||
async onTriggered(github) {
|
||||
const alsoApplyToOpenIssues = utils_1.getInput('alsoApplyToOpenIssues');
|
||||
await new Reopener_1.Reopener(github, alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true', utils_1.getInput('addLabels') || undefined, utils_1.getInput('removeLabels') || undefined, utils_1.getInput('reopenComment') || '', utils_1.getInput('setMilestoneId') || undefined, utils_1.getInput('labels') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
|
||||
const alsoApplyToOpenIssues = (0, utils_1.getInput)('alsoApplyToOpenIssues');
|
||||
await new Reopener_1.Reopener(github, alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true', (0, utils_1.getInput)('addLabels') || undefined, (0, utils_1.getInput)('removeLabels') || undefined, (0, utils_1.getInput)('reopenComment') || '', (0, utils_1.getInput)('setMilestoneId') || undefined, (0, utils_1.getInput)('labels') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999)).run();
|
||||
}
|
||||
}
|
||||
new ReopenerAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { OctoKit } from '../api/octokit'
|
||||
import { getInput, getRequiredInput } from '../common/utils'
|
||||
import { Reopener } from './Reopener'
|
||||
import { Action } from '../common/Action'
|
||||
import { OctoKit } from '../api/octokit';
|
||||
import { getInput, getRequiredInput } from '../common/utils';
|
||||
import { Reopener } from './Reopener';
|
||||
import { Action } from '../common/Action';
|
||||
|
||||
class ReopenerAction extends Action {
|
||||
id = 'Locker'
|
||||
id = 'Reopener';
|
||||
|
||||
async onTriggered(github: OctoKit) {
|
||||
const alsoApplyToOpenIssues: string | undefined = getInput('alsoApplyToOpenIssues');
|
||||
@@ -28,8 +28,8 @@ class ReopenerAction extends Action {
|
||||
getInput('ignoreMilestoneIds') || undefined,
|
||||
+(getInput('minimumVotes') || 0),
|
||||
+(getInput('maximumVotes') || 9999999)
|
||||
).run()
|
||||
).run();
|
||||
}
|
||||
}
|
||||
|
||||
new ReopenerAction().run() // eslint-disable-line
|
||||
new ReopenerAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -1,106 +1,106 @@
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.StaleCloser = void 0;
|
||||
const ActionBase_1 = require("../common/ActionBase");
|
||||
const utils_1 = require("../common/utils");
|
||||
class StaleCloser extends ActionBase_1.ActionBase {
|
||||
constructor(github, closeDays, labels, closeComment, pingDays, pingComment, additionalTeam, addLabels, removeLabels, setMilestoneId, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
|
||||
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
|
||||
this.github = github;
|
||||
this.closeDays = closeDays;
|
||||
this.closeComment = closeComment;
|
||||
this.pingDays = pingDays;
|
||||
this.pingComment = pingComment;
|
||||
this.additionalTeam = additionalTeam;
|
||||
this.addLabels = addLabels;
|
||||
this.removeLabels = removeLabels;
|
||||
this.setMilestoneId = setMilestoneId;
|
||||
}
|
||||
async run() {
|
||||
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.closeDays);
|
||||
const pingTimestamp = this.pingDays ? utils_1.daysAgoToTimestamp(this.pingDays) : undefined;
|
||||
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
|
||||
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
|
||||
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
for (const issue of page) {
|
||||
const hydrated = await issue.getIssue();
|
||||
const lastCommentIterator = await issue.getComments(true).next();
|
||||
if (lastCommentIterator.done) {
|
||||
throw Error('Unexpected comment data');
|
||||
}
|
||||
const lastComment = lastCommentIterator.value[0];
|
||||
if (hydrated.open && this.validateIssue(hydrated)
|
||||
// TODO: Verify updated timestamp
|
||||
) {
|
||||
if (!lastComment ||
|
||||
lastComment.author.isGitHubApp ||
|
||||
pingTimestamp == undefined ||
|
||||
// TODO: List the collaborators once per go rather than checking a single user each issue
|
||||
this.additionalTeam.includes(lastComment.author.name) ||
|
||||
await issue.hasWriteAccess(lastComment.author)) {
|
||||
if (pingTimestamp != undefined) {
|
||||
if (lastComment) {
|
||||
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`);
|
||||
}
|
||||
else {
|
||||
console.log(`No comments on issue ${hydrated.number}. Closing.`);
|
||||
}
|
||||
}
|
||||
if (this.closeComment) {
|
||||
console.log(`Posting comment on issue ${hydrated.number}`);
|
||||
await issue.postComment(this.closeComment);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
await issue.closeIssue();
|
||||
if (this.setMilestoneId != undefined) {
|
||||
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
console.log(`Closing issue ${hydrated.number}.`);
|
||||
}
|
||||
else {
|
||||
// Ping
|
||||
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
|
||||
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`);
|
||||
if (this.pingComment) {
|
||||
await issue.postComment(this.pingComment
|
||||
.replace('${assignee}', hydrated.assignee)
|
||||
.replace('${author}', hydrated.author.name));
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${hydrated.assignee ? ' cc @' + hydrated.assignee : ''}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is not open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.StaleCloser = StaleCloser;
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.StaleCloser = void 0;
|
||||
const ActionBase_1 = require("../common/ActionBase");
|
||||
const utils_1 = require("../common/utils");
|
||||
class StaleCloser extends ActionBase_1.ActionBase {
|
||||
constructor(github, closeDays, labels, closeComment, pingDays, pingComment, additionalTeam, addLabels, removeLabels, setMilestoneId, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves) {
|
||||
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves);
|
||||
this.github = github;
|
||||
this.closeDays = closeDays;
|
||||
this.closeComment = closeComment;
|
||||
this.pingDays = pingDays;
|
||||
this.pingComment = pingComment;
|
||||
this.additionalTeam = additionalTeam;
|
||||
this.addLabels = addLabels;
|
||||
this.removeLabels = removeLabels;
|
||||
this.setMilestoneId = setMilestoneId;
|
||||
}
|
||||
async run() {
|
||||
const updatedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.closeDays);
|
||||
const pingTimestamp = this.pingDays ? (0, utils_1.daysAgoToTimestamp)(this.pingDays) : undefined;
|
||||
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
|
||||
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
|
||||
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
for (const issue of page) {
|
||||
const hydrated = await issue.getIssue();
|
||||
const lastCommentIterator = await issue.getComments(true).next();
|
||||
if (lastCommentIterator.done) {
|
||||
throw Error('Unexpected comment data');
|
||||
}
|
||||
const lastComment = lastCommentIterator.value[0];
|
||||
if (hydrated.open && this.validateIssue(hydrated)
|
||||
// TODO: Verify updated timestamp
|
||||
) {
|
||||
if (!lastComment ||
|
||||
lastComment.author.isGitHubApp ||
|
||||
pingTimestamp == undefined ||
|
||||
// TODO: List the collaborators once per go rather than checking a single user each issue
|
||||
this.additionalTeam.includes(lastComment.author.name) ||
|
||||
await issue.hasWriteAccess(lastComment.author)) {
|
||||
if (pingTimestamp != undefined) {
|
||||
if (lastComment) {
|
||||
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`);
|
||||
}
|
||||
else {
|
||||
(0, utils_1.safeLog)(`No comments on issue ${hydrated.number}. Closing.`);
|
||||
}
|
||||
}
|
||||
if (this.closeComment) {
|
||||
(0, utils_1.safeLog)(`Posting comment on issue ${hydrated.number}`);
|
||||
await issue.postComment(this.closeComment);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
(0, utils_1.safeLog)(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
(0, utils_1.safeLog)(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
await issue.closeIssue("not_planned");
|
||||
if (this.setMilestoneId != undefined) {
|
||||
(0, utils_1.safeLog)(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
(0, utils_1.safeLog)(`Closing issue ${hydrated.number}.`);
|
||||
}
|
||||
else {
|
||||
// Ping
|
||||
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
|
||||
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`);
|
||||
if (this.pingComment) {
|
||||
await issue.postComment(this.pingComment
|
||||
.replace('${assignee}', hydrated.assignee)
|
||||
.replace('${author}', hydrated.author.name));
|
||||
}
|
||||
}
|
||||
else {
|
||||
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${hydrated.assignee ? ' cc @' + hydrated.assignee : ''}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!hydrated.open) {
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is not open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.StaleCloser = StaleCloser;
|
||||
//# sourceMappingURL=StaleCloser.js.map
|
||||
@@ -3,9 +3,9 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { GitHub } from '../api/api'
|
||||
import { ActionBase } from '../common/ActionBase'
|
||||
import { daysAgoToHumanReadbleDate, daysAgoToTimestamp } from '../common/utils'
|
||||
import { GitHub } from '../api/api';
|
||||
import { ActionBase } from '../common/ActionBase';
|
||||
import { daysAgoToHumanReadbleDate, daysAgoToTimestamp, safeLog } from '../common/utils';
|
||||
|
||||
export class StaleCloser extends ActionBase {
|
||||
constructor(
|
||||
@@ -25,14 +25,15 @@ export class StaleCloser extends ActionBase {
|
||||
ignoreMilestoneNames?: string,
|
||||
ignoreMilestoneIds?: string,
|
||||
minimumVotes?: number,
|
||||
maximumVotes?: number
|
||||
maximumVotes?: number,
|
||||
involves?: string
|
||||
)
|
||||
{
|
||||
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
|
||||
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves);
|
||||
}
|
||||
|
||||
async run() {
|
||||
const updatedTimestamp = daysAgoToHumanReadbleDate(this.closeDays)
|
||||
const updatedTimestamp = daysAgoToHumanReadbleDate(this.closeDays);
|
||||
const pingTimestamp = this.pingDays ? daysAgoToTimestamp(this.pingDays) : undefined;
|
||||
|
||||
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
|
||||
@@ -42,12 +43,12 @@ export class StaleCloser extends ActionBase {
|
||||
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
for (const issue of page) {
|
||||
const hydrated = await issue.getIssue()
|
||||
const lastCommentIterator = await issue.getComments(true).next()
|
||||
const hydrated = await issue.getIssue();
|
||||
const lastCommentIterator = await issue.getComments(true).next();
|
||||
if (lastCommentIterator.done) {
|
||||
throw Error('Unexpected comment data')
|
||||
throw Error('Unexpected comment data');
|
||||
}
|
||||
const lastComment = lastCommentIterator.value[0]
|
||||
const lastComment = lastCommentIterator.value[0];
|
||||
|
||||
if (hydrated.open && this.validateIssue(hydrated)
|
||||
// TODO: Verify updated timestamp
|
||||
@@ -62,63 +63,63 @@ export class StaleCloser extends ActionBase {
|
||||
) {
|
||||
if (pingTimestamp != undefined) {
|
||||
if (lastComment) {
|
||||
console.log(
|
||||
safeLog(
|
||||
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`,
|
||||
)
|
||||
);
|
||||
} else {
|
||||
console.log(`No comments on issue ${hydrated.number}. Closing.`)
|
||||
safeLog(`No comments on issue ${hydrated.number}. Closing.`);
|
||||
}
|
||||
}
|
||||
if (this.closeComment) {
|
||||
console.log(`Posting comment on issue ${hydrated.number}`)
|
||||
await issue.postComment(this.closeComment)
|
||||
safeLog(`Posting comment on issue ${hydrated.number}`);
|
||||
await issue.postComment(this.closeComment);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`)
|
||||
await issue.removeLabel(removeLabel)
|
||||
safeLog(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`)
|
||||
await issue.addLabel(addLabel)
|
||||
safeLog(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
await issue.closeIssue()
|
||||
await issue.closeIssue("not_planned");
|
||||
if (this.setMilestoneId != undefined) {
|
||||
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
|
||||
await issue.setMilestone(+this.setMilestoneId)
|
||||
safeLog(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
console.log(`Closing issue ${hydrated.number}.`)
|
||||
safeLog(`Closing issue ${hydrated.number}.`);
|
||||
} else {
|
||||
// Ping
|
||||
// Ping
|
||||
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
|
||||
console.log(
|
||||
safeLog(
|
||||
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`,
|
||||
)
|
||||
);
|
||||
if (this.pingComment) {
|
||||
await issue.postComment(
|
||||
this.pingComment
|
||||
.replace('${assignee}', hydrated.assignee)
|
||||
.replace('${author}', hydrated.author.name),
|
||||
)
|
||||
);
|
||||
}
|
||||
} else {
|
||||
console.log(
|
||||
safeLog(
|
||||
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${
|
||||
hydrated.assignee ? ' cc @' + hydrated.assignee : ''
|
||||
}`,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is not open. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is not open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ inputs:
|
||||
descriptions: Only issues with at least this many votes will be considered.
|
||||
maximumVotes:
|
||||
descriptions: Only issues fewer or equal to this many votes will be considered.
|
||||
involves:
|
||||
descriptions: Qualifier to find issues that in some way involve a certain user either as an author, assignee, or mentions.
|
||||
readonly:
|
||||
description: If true, changes are not applied.
|
||||
runs:
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const utils_1 = require("../common/utils");
|
||||
const StaleCloser_1 = require("./StaleCloser");
|
||||
const Action_1 = require("../common/Action");
|
||||
class StaleCloserAction extends Action_1.Action {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.id = 'StaleCloser';
|
||||
}
|
||||
async onTriggered(github) {
|
||||
var _a;
|
||||
await new StaleCloser_1.StaleCloser(github, +utils_1.getRequiredInput('closeDays'), utils_1.getRequiredInput('labels'), utils_1.getInput('closeComment') || '', +(utils_1.getInput('pingDays') || 0), utils_1.getInput('pingComment') || '', ((_a = utils_1.getInput('additionalTeam')) !== null && _a !== void 0 ? _a : '').split(','), utils_1.getInput('addLabels') || undefined, utils_1.getInput('removeLabels') || undefined, utils_1.getInput('setMilestoneId') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
|
||||
}
|
||||
}
|
||||
new StaleCloserAction().run(); // eslint-disable-line
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const utils_1 = require("../common/utils");
|
||||
const StaleCloser_1 = require("./StaleCloser");
|
||||
const Action_1 = require("../common/Action");
|
||||
class StaleCloserAction extends Action_1.Action {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.id = 'StaleCloser';
|
||||
}
|
||||
async onTriggered(github) {
|
||||
var _a;
|
||||
await new StaleCloser_1.StaleCloser(github, +(0, utils_1.getRequiredInput)('closeDays'), (0, utils_1.getRequiredInput)('labels'), (0, utils_1.getInput)('closeComment') || '', +((0, utils_1.getInput)('pingDays') || 0), (0, utils_1.getInput)('pingComment') || '', ((_a = (0, utils_1.getInput)('additionalTeam')) !== null && _a !== void 0 ? _a : '').split(','), (0, utils_1.getInput)('addLabels') || undefined, (0, utils_1.getInput)('removeLabels') || undefined, (0, utils_1.getInput)('setMilestoneId') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999), (0, utils_1.getInput)('involves') || undefined).run();
|
||||
}
|
||||
}
|
||||
new StaleCloserAction().run(); // eslint-disable-line
|
||||
//# sourceMappingURL=index.js.map
|
||||
@@ -9,7 +9,7 @@ import { StaleCloser } from './StaleCloser'
|
||||
import { Action } from '../common/Action'
|
||||
|
||||
class StaleCloserAction extends Action {
|
||||
id = 'StaleCloser'
|
||||
id = 'StaleCloser';
|
||||
|
||||
async onTriggered(github: OctoKit) {
|
||||
await new StaleCloser(
|
||||
@@ -29,9 +29,10 @@ class StaleCloserAction extends Action {
|
||||
getInput('ignoreMilestoneNames') || undefined,
|
||||
getInput('ignoreMilestoneIds') || undefined,
|
||||
+(getInput('minimumVotes') || 0),
|
||||
+(getInput('maximumVotes') || 9999999)
|
||||
).run()
|
||||
+(getInput('maximumVotes') || 9999999),
|
||||
getInput('involves') || undefined
|
||||
).run();
|
||||
}
|
||||
}
|
||||
|
||||
new StaleCloserAction().run() // eslint-disable-line
|
||||
new StaleCloserAction().run(); // eslint-disable-line
|
||||
|
||||
+79
-56
@@ -4,43 +4,53 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
export interface GitHub {
|
||||
query(query: Query): AsyncIterableIterator<GitHubIssue[]>
|
||||
repoOwner: string;
|
||||
repoName: string;
|
||||
|
||||
hasWriteAccess(user: User): Promise<boolean>
|
||||
query(query: Query): AsyncIterableIterator<GitHubIssue[]>;
|
||||
|
||||
repoHasLabel(label: string): Promise<boolean>
|
||||
createLabel(label: string, color: string, description: string): Promise<void>
|
||||
deleteLabel(label: string): Promise<void>
|
||||
hasWriteAccess(user: User): Promise<boolean>;
|
||||
|
||||
readConfig(path: string): Promise<any>
|
||||
repoHasLabel(label: string): Promise<boolean>;
|
||||
createLabel(label: string, color: string, description: string): Promise<void>;
|
||||
deleteLabel(label: string): Promise<void>;
|
||||
|
||||
dispatch(title: string): Promise<void>
|
||||
readConfig(path: string): Promise<any>;
|
||||
|
||||
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>
|
||||
dispatch(title: string): Promise<void>;
|
||||
|
||||
releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'>
|
||||
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>;
|
||||
|
||||
releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'>;
|
||||
|
||||
/**
|
||||
* Returns what we think the current milestone for the repo is based on the due on date.
|
||||
* @returns The milestone id if one is found, else undefined
|
||||
*/
|
||||
getCurrentRepoMilestone(): Promise<number | undefined>;
|
||||
}
|
||||
|
||||
export interface GitHubIssue extends GitHub {
|
||||
getIssue(): Promise<Issue>
|
||||
getIssue(): Promise<Issue>;
|
||||
|
||||
postComment(body: string): Promise<void>
|
||||
deleteComment(id: number): Promise<void>
|
||||
getComments(last?: boolean): AsyncIterableIterator<Comment[]>
|
||||
postComment(body: string): Promise<void>;
|
||||
deleteComment(id: number): Promise<void>;
|
||||
getComments(last?: boolean): AsyncIterableIterator<Comment[]>;
|
||||
|
||||
closeIssue(): Promise<void>
|
||||
lockIssue(): Promise<void>
|
||||
reopenIssue(): Promise<void>
|
||||
closeIssue(reason: 'completed' | 'not_planned'): Promise<void>;
|
||||
lockIssue(): Promise<void>;
|
||||
unlockIssue(): Promise<void>;
|
||||
reopenIssue(): Promise<void>;
|
||||
|
||||
setMilestone(milestoneId: number): Promise<void>
|
||||
setMilestone(milestoneId: number): Promise<void>;
|
||||
|
||||
addLabel(label: string): Promise<void>
|
||||
removeLabel(label: string): Promise<void>
|
||||
addLabel(label: string): Promise<void>;
|
||||
removeLabel(label: string): Promise<void>;
|
||||
|
||||
addAssignee(assignee: string): Promise<void>
|
||||
removeAssignee(assignee: string): Promise<void>
|
||||
addAssignee(assignee: string): Promise<void>;
|
||||
removeAssignee(assignee: string): Promise<void>;
|
||||
|
||||
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>
|
||||
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>;
|
||||
}
|
||||
|
||||
type SortVar =
|
||||
@@ -54,47 +64,60 @@ type SortVar =
|
||||
| 'reactions-tada'
|
||||
| 'interactions'
|
||||
| 'created'
|
||||
| 'updated'
|
||||
type SortOrder = 'asc' | 'desc'
|
||||
| 'updated';
|
||||
type SortOrder = 'asc' | 'desc';
|
||||
export type Reactions = {
|
||||
'+1': number
|
||||
'-1': number
|
||||
laugh: number
|
||||
hooray: number
|
||||
confused: number
|
||||
heart: number
|
||||
rocket: number
|
||||
eyes: number
|
||||
}
|
||||
'+1': number;
|
||||
'-1': number;
|
||||
laugh: number;
|
||||
hooray: number;
|
||||
confused: number;
|
||||
heart: number;
|
||||
rocket: number;
|
||||
eyes: number;
|
||||
};
|
||||
|
||||
export interface User {
|
||||
name: string
|
||||
isGitHubApp?: boolean
|
||||
name: string;
|
||||
isGitHubApp?: boolean;
|
||||
}
|
||||
export interface Comment {
|
||||
author: User
|
||||
body: string
|
||||
id: number
|
||||
timestamp: number
|
||||
author: User;
|
||||
body: string;
|
||||
id: number;
|
||||
timestamp: number;
|
||||
}
|
||||
export interface Issue {
|
||||
author: User
|
||||
body: string
|
||||
title: string
|
||||
labels: string[]
|
||||
open: boolean
|
||||
locked: boolean
|
||||
number: number
|
||||
numComments: number
|
||||
reactions: Reactions
|
||||
milestoneId: number | null
|
||||
assignee?: string
|
||||
createdAt: number
|
||||
updatedAt: number
|
||||
closedAt?: number
|
||||
author: User;
|
||||
body: string;
|
||||
title: string;
|
||||
labels: string[];
|
||||
open: boolean;
|
||||
locked: boolean;
|
||||
number: number;
|
||||
isPr: boolean;
|
||||
numComments: number;
|
||||
reactions: Reactions;
|
||||
milestone: Milestone | null;
|
||||
assignee?: string;
|
||||
assignees: string[];
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
closedAt?: number;
|
||||
}
|
||||
export interface Milestone {
|
||||
milestoneId: number;
|
||||
title: string;
|
||||
description: string;
|
||||
numClosedIssues: number;
|
||||
numOpenIssues: number;
|
||||
dueOn: Date | null;
|
||||
createdAt: Date | null;
|
||||
closedAt: Date | null;
|
||||
state: 'open' | 'closed';
|
||||
}
|
||||
export interface Query {
|
||||
q: string
|
||||
sort?: SortVar
|
||||
order?: SortOrder
|
||||
q: string;
|
||||
sort?: SortVar;
|
||||
order?: SortOrder;
|
||||
}
|
||||
|
||||
+169
-90
@@ -5,11 +5,12 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.OctoKitIssue = exports.OctoKit = exports.getNumRequests = void 0;
|
||||
const core_1 = require("@actions/core");
|
||||
const github_1 = require("@actions/github");
|
||||
const child_process_1 = require("child_process");
|
||||
const utils_1 = require("../common/utils");
|
||||
let numRequests = 0;
|
||||
exports.getNumRequests = () => numRequests;
|
||||
const getNumRequests = () => numRequests;
|
||||
exports.getNumRequests = getNumRequests;
|
||||
class OctoKit {
|
||||
constructor(token, params, options = { readonly: false }) {
|
||||
this.token = token;
|
||||
@@ -18,73 +19,97 @@ class OctoKit {
|
||||
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
|
||||
this.mockLabels = new Set();
|
||||
this.writeAccessCache = {};
|
||||
this._octokit = new github_1.GitHub(token);
|
||||
this._octokit = (0, github_1.getOctokit)(token);
|
||||
this.repoName = params.repo;
|
||||
this.repoOwner = params.owner;
|
||||
}
|
||||
get octokit() {
|
||||
numRequests++;
|
||||
return this._octokit;
|
||||
}
|
||||
getIssueByNumber(number) {
|
||||
return new OctoKitIssue(this.token, this.params, { number: number });
|
||||
}
|
||||
// TODO: just iterate over the issues in a page here instead of making caller do it
|
||||
async *query(query) {
|
||||
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`;
|
||||
console.log(`Querying for ${q}:`);
|
||||
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
|
||||
const options = {
|
||||
...query,
|
||||
q,
|
||||
per_page: 100,
|
||||
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
|
||||
});
|
||||
};
|
||||
let pageNum = 0;
|
||||
const timeout = async () => {
|
||||
if (pageNum < 2) {
|
||||
/* pass */
|
||||
}
|
||||
else if (pageNum < 4) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
}
|
||||
else {
|
||||
await new Promise((resolve) => setTimeout(resolve, 30000));
|
||||
}
|
||||
};
|
||||
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
|
||||
for await (const pageResponse of this.octokit.paginate.iterator(this.octokit.rest.search.issuesAndPullRequests, options)) {
|
||||
await timeout();
|
||||
numRequests++;
|
||||
const page = pageResponse.data;
|
||||
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
|
||||
(0, utils_1.safeLog)(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
|
||||
yield page.map((issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options));
|
||||
}
|
||||
}
|
||||
async createIssue(owner, repo, title, body) {
|
||||
core_1.debug(`Creating issue \`${title}\` on ${owner}/${repo}`);
|
||||
(0, utils_1.safeLog)(`Creating issue \`${title}\` on ${owner}/${repo}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.create({ owner, repo, title, body });
|
||||
await this.octokit.rest.issues.create({ owner, repo, title, body });
|
||||
}
|
||||
octokitIssueToIssue(issue) {
|
||||
var _a, _b, _c, _d, _e, _f;
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
||||
return {
|
||||
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
|
||||
body: issue.body,
|
||||
author: { name: (_b = (_a = issue.user) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : 'unkown', isGitHubApp: ((_c = issue.user) === null || _c === void 0 ? void 0 : _c.type) === 'Bot' },
|
||||
body: (_d = issue.body) !== null && _d !== void 0 ? _d : '',
|
||||
number: issue.number,
|
||||
title: issue.title,
|
||||
labels: issue.labels.map((label) => label.name),
|
||||
isPr: !!((_e = issue.pull_request) === null || _e === void 0 ? void 0 : _e.html_url),
|
||||
labels: issue.labels.map((label) => { var _a; return (typeof label === 'string' ? label : (_a = label.name) !== null && _a !== void 0 ? _a : ''); }),
|
||||
open: issue.state === 'open',
|
||||
locked: issue.locked,
|
||||
numComments: issue.comments,
|
||||
reactions: issue.reactions,
|
||||
assignee: (_b = (_a = issue.assignee) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : (_d = (_c = issue.assignees) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.login,
|
||||
milestoneId: (_f = (_e = issue.milestone) === null || _e === void 0 ? void 0 : _e.number) !== null && _f !== void 0 ? _f : null,
|
||||
assignee: (_g = (_f = issue.assignee) === null || _f === void 0 ? void 0 : _f.login) !== null && _g !== void 0 ? _g : (_j = (_h = issue.assignees) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.login,
|
||||
assignees: (_l = (_k = issue.assignees) === null || _k === void 0 ? void 0 : _k.map((assignee) => assignee.login)) !== null && _l !== void 0 ? _l : [],
|
||||
milestone: issue.milestone ? this.octokitMilestoneToMilestone(issue.milestone) : null,
|
||||
createdAt: +new Date(issue.created_at),
|
||||
updatedAt: +new Date(issue.updated_at),
|
||||
closedAt: issue.closed_at ? +new Date(issue.closed_at) : undefined,
|
||||
};
|
||||
}
|
||||
octokitMilestoneToMilestone(milestone) {
|
||||
var _a;
|
||||
if ((milestone === null || milestone === void 0 ? void 0 : milestone.number) === undefined) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
title: milestone.title,
|
||||
milestoneId: milestone.number,
|
||||
// Remove the time portions of the dates as they're not important
|
||||
createdAt: milestone.created_at !== null ? new Date(milestone.created_at.split('T')[0]) : null,
|
||||
dueOn: milestone.due_on !== null ? new Date(milestone.due_on.split('T')[0]) : null,
|
||||
closedAt: milestone.closed_at !== null ? new Date(milestone.closed_at.split('T')[0]) : null,
|
||||
description: (_a = milestone.description) !== null && _a !== void 0 ? _a : '',
|
||||
numClosedIssues: milestone.closed_issues,
|
||||
numOpenIssues: milestone.open_issues,
|
||||
state: milestone.state === 'open' ? 'open' : 'closed',
|
||||
};
|
||||
}
|
||||
async hasWriteAccess(user) {
|
||||
if (user.name in this.writeAccessCache) {
|
||||
core_1.debug('Got permissions from cache for ' + user);
|
||||
(0, utils_1.safeLog)('Got permissions from cache for ' + user);
|
||||
return this.writeAccessCache[user.name];
|
||||
}
|
||||
core_1.debug('Fetching permissions for ' + user);
|
||||
const permissions = (await this.octokit.repos.getCollaboratorPermissionLevel({
|
||||
(0, utils_1.safeLog)('Fetching permissions for ' + user.name);
|
||||
const permissions = (await this.octokit.rest.repos.getCollaboratorPermissionLevel({
|
||||
...this.params,
|
||||
username: user.name,
|
||||
})).data.permission;
|
||||
@@ -92,42 +117,44 @@ class OctoKit {
|
||||
}
|
||||
async repoHasLabel(name) {
|
||||
try {
|
||||
await this.octokit.issues.getLabel({ ...this.params, name });
|
||||
await this.octokit.rest.issues.getLabel({ ...this.params, name });
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
if (err.status === 404) {
|
||||
const statusErorr = err;
|
||||
if (statusErorr.status === 404) {
|
||||
return this.options.readonly && this.mockLabels.has(name);
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
async createLabel(name, color, description) {
|
||||
core_1.debug('Creating label ' + name);
|
||||
(0, utils_1.safeLog)('Creating label ' + name);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.createLabel({ ...this.params, color, description, name });
|
||||
await this.octokit.rest.issues.createLabel({ ...this.params, color, description, name });
|
||||
else
|
||||
this.mockLabels.add(name);
|
||||
}
|
||||
async deleteLabel(name) {
|
||||
core_1.debug('Deleting label ' + name);
|
||||
(0, utils_1.safeLog)('Deleting label ' + name);
|
||||
try {
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.deleteLabel({ ...this.params, name });
|
||||
await this.octokit.rest.issues.deleteLabel({ ...this.params, name });
|
||||
}
|
||||
catch (err) {
|
||||
if (err.status === 404) {
|
||||
const statusErorr = err;
|
||||
if (statusErorr.status === 404) {
|
||||
return;
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
async readConfig(path) {
|
||||
core_1.debug('Reading config at ' + path);
|
||||
(0, utils_1.safeLog)('Reading config at ' + path);
|
||||
const repoPath = `.github/${path}.json`;
|
||||
try {
|
||||
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data;
|
||||
if ('type' in data && data.type === 'file') {
|
||||
const data = (await this.octokit.rest.repos.getContent({ ...this.params, path: repoPath })).data;
|
||||
if ('type' in data && data.type === 'file' && 'content' in data) {
|
||||
if (data.encoding === 'base64' && data.content) {
|
||||
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'));
|
||||
}
|
||||
@@ -140,7 +167,10 @@ class OctoKit {
|
||||
}
|
||||
}
|
||||
async releaseContainsCommit(release, commit) {
|
||||
return new Promise((resolve, reject) => child_process_1.exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
|
||||
const isHash = (s) => /^[a-fA-F0-9]*$/.test(s);
|
||||
if (!isHash(release) || !isHash(commit))
|
||||
return 'unknown';
|
||||
return new Promise((resolve, reject) => (0, child_process_1.exec)(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
|
||||
if (!err || err.code === 1) {
|
||||
resolve(!err ? 'yes' : 'no');
|
||||
}
|
||||
@@ -157,10 +187,31 @@ class OctoKit {
|
||||
}
|
||||
}));
|
||||
}
|
||||
async getCurrentRepoMilestone() {
|
||||
(0, utils_1.safeLog)(`Getting repo milestone for ${this.params.owner}/${this.params.repo}`);
|
||||
// Fetch all milestones open for this repo
|
||||
const allMilestones = (await this.octokit.rest.issues.listMilestones({
|
||||
owner: this.params.owner,
|
||||
repo: this.params.repo,
|
||||
state: 'open',
|
||||
sort: 'due_on',
|
||||
direction: 'asc',
|
||||
})).data;
|
||||
const currentDate = new Date();
|
||||
const possibleMilestones = allMilestones
|
||||
.filter((milestone) => new Date(milestone.due_on === null ? currentDate : milestone.due_on) > currentDate &&
|
||||
currentDate > new Date(milestone.created_at) &&
|
||||
!milestone.title.includes('Recovery'))
|
||||
.sort((a, b) => { var _a, _b; return +new Date((_a = a.due_on) !== null && _a !== void 0 ? _a : currentDate) - +new Date((_b = b.due_on) !== null && _b !== void 0 ? _b : currentDate); });
|
||||
if (possibleMilestones.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
return possibleMilestones[0].number;
|
||||
}
|
||||
async dispatch(title) {
|
||||
core_1.debug('Dispatching ' + title);
|
||||
(0, utils_1.safeLog)('Dispatching ' + title);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title });
|
||||
await this.octokit.rest.repos.createDispatchEvent({ ...this.params, event_type: title });
|
||||
}
|
||||
}
|
||||
exports.OctoKit = OctoKit;
|
||||
@@ -169,12 +220,12 @@ class OctoKitIssue extends OctoKit {
|
||||
super(token, params, options);
|
||||
this.params = params;
|
||||
this.issueData = issueData;
|
||||
console.log('running bot on issue', issueData.number);
|
||||
(0, utils_1.safeLog)('running bot on issue', issueData.number);
|
||||
}
|
||||
async addAssignee(assignee) {
|
||||
core_1.debug('Adding assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Adding assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
await this.octokit.issues.addAssignees({
|
||||
await this.octokit.rest.issues.addAssignees({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
assignees: [assignee],
|
||||
@@ -182,45 +233,64 @@ class OctoKitIssue extends OctoKit {
|
||||
}
|
||||
}
|
||||
async removeAssignee(assignee) {
|
||||
core_1.debug('Removing assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Removing assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
await this.octokit.issues.removeAssignees({
|
||||
await this.octokit.rest.issues.removeAssignees({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
assignees: [assignee],
|
||||
});
|
||||
}
|
||||
}
|
||||
async closeIssue() {
|
||||
core_1.debug('Closing issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
async closeIssue(reason) {
|
||||
(0, utils_1.safeLog)('Closing issue ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
const issue = await this.octokit.rest.issues.get({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
});
|
||||
// Don't close already closed issues even if it means changing the state
|
||||
if (issue.data.state === 'closed') {
|
||||
return;
|
||||
}
|
||||
await this.octokit.rest.issues
|
||||
.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'closed',
|
||||
state_reason: reason,
|
||||
})
|
||||
.catch((e) => {
|
||||
(0, utils_1.safeLog)('error closing issue:', e);
|
||||
});
|
||||
}
|
||||
}
|
||||
async reopenIssue() {
|
||||
core_1.debug('Reopening issue ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Reopening issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
await this.octokit.rest.issues.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'open',
|
||||
});
|
||||
}
|
||||
async lockIssue() {
|
||||
core_1.debug('Locking issue ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Locking issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number });
|
||||
await this.octokit.rest.issues.lock({ ...this.params, issue_number: this.issueData.number });
|
||||
}
|
||||
async unlockIssue() {
|
||||
(0, utils_1.safeLog)('Unlocking issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.rest.issues.unlock({ ...this.params, issue_number: this.issueData.number });
|
||||
}
|
||||
async getIssue() {
|
||||
if (isIssue(this.issueData)) {
|
||||
core_1.debug('Got issue data from query result ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Got issue data from query result ' + this.issueData.number);
|
||||
return this.issueData;
|
||||
}
|
||||
console.log('Fetching issue ' + this.issueData.number);
|
||||
const issue = (await this.octokit.issues.get({
|
||||
(0, utils_1.safeLog)('Fetching issue ' + this.issueData.number);
|
||||
const issue = (await this.octokit.rest.issues.get({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
mediaType: { previews: ['squirrel-girl'] },
|
||||
@@ -228,77 +298,83 @@ class OctoKitIssue extends OctoKit {
|
||||
return (this.issueData = this.octokitIssueToIssue(issue));
|
||||
}
|
||||
async postComment(body) {
|
||||
core_1.debug(`Posting comment ${body} on ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Posting comment on ${this.issueData.number}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.createComment({
|
||||
await this.octokit.rest.issues.createComment({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
body,
|
||||
});
|
||||
}
|
||||
async deleteComment(id) {
|
||||
core_1.debug(`Deleting comment ${id} on ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Deleting comment ${id} on ${this.issueData.number}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.deleteComment({
|
||||
await this.octokit.rest.issues.deleteComment({
|
||||
owner: this.params.owner,
|
||||
repo: this.params.repo,
|
||||
comment_id: id,
|
||||
});
|
||||
}
|
||||
async setMilestone(milestoneId) {
|
||||
core_1.debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
|
||||
(0, utils_1.safeLog)(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
await this.octokit.rest.issues.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
milestone: milestoneId,
|
||||
});
|
||||
}
|
||||
async *getComments(last) {
|
||||
core_1.debug('Fetching comments for ' + this.issueData.number);
|
||||
const response = this.octokit.paginate.iterator(this.octokit.issues.listComments.endpoint.merge({
|
||||
(0, utils_1.safeLog)('Fetching comments for ' + this.issueData.number);
|
||||
const response = this.octokit.paginate.iterator(this.octokit.rest.issues.listComments, {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
per_page: 100,
|
||||
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
|
||||
}));
|
||||
});
|
||||
for await (const page of response) {
|
||||
numRequests++;
|
||||
yield page.data.map((comment) => ({
|
||||
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
|
||||
body: comment.body,
|
||||
id: comment.id,
|
||||
timestamp: +new Date(comment.created_at),
|
||||
}));
|
||||
yield page.data.map((comment) => {
|
||||
var _a, _b, _c, _d;
|
||||
return ({
|
||||
author: { name: (_b = (_a = comment.user) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : '', isGitHubApp: ((_c = comment.user) === null || _c === void 0 ? void 0 : _c.type) === 'Bot' },
|
||||
body: (_d = comment.body) !== null && _d !== void 0 ? _d : '',
|
||||
id: comment.id,
|
||||
timestamp: +new Date(comment.created_at),
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
async addLabel(name) {
|
||||
core_1.debug(`Adding label ${name} to ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Adding label ${name} to ${this.issueData.number}`);
|
||||
if (!(await this.repoHasLabel(name))) {
|
||||
throw Error(`Action could not execute becuase label ${name} is not defined.`);
|
||||
}
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.addLabels({
|
||||
await this.octokit.rest.issues.addLabels({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
labels: [name],
|
||||
});
|
||||
}
|
||||
async getAssigner(assignee) {
|
||||
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
|
||||
var _a, _b;
|
||||
const options = {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
});
|
||||
};
|
||||
let assigner;
|
||||
for await (const event of this.octokit.paginate.iterator(options)) {
|
||||
for await (const event of this.octokit.paginate.iterator(this.octokit.rest.issues.listEventsForTimeline, options)) {
|
||||
numRequests++;
|
||||
const timelineEvents = event.data;
|
||||
for (const timelineEvent of timelineEvents) {
|
||||
if (timelineEvent.event === 'assigned' &&
|
||||
timelineEvent.assignee.login === assignee) {
|
||||
assigner = timelineEvent.actor.login;
|
||||
if (timelineEvent.event === 'assigned' && ((_a = timelineEvent.assignee) === null || _a === void 0 ? void 0 : _a.login) === assignee) {
|
||||
assigner = (_b = timelineEvent.actor) === null || _b === void 0 ? void 0 : _b.login;
|
||||
}
|
||||
}
|
||||
if (assigner) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!assigner) {
|
||||
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.');
|
||||
@@ -306,25 +382,26 @@ class OctoKitIssue extends OctoKit {
|
||||
return assigner;
|
||||
}
|
||||
async removeLabel(name) {
|
||||
core_1.debug(`Removing label ${name} from ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Removing label ${name} from ${this.issueData.number}`);
|
||||
try {
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.removeLabel({
|
||||
await this.octokit.rest.issues.removeLabel({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
name,
|
||||
});
|
||||
}
|
||||
catch (err) {
|
||||
if (err.status === 404) {
|
||||
console.log(`Label ${name} not found on issue`);
|
||||
const statusErorr = err;
|
||||
if (statusErorr.status === 404) {
|
||||
(0, utils_1.safeLog)(`Label ${name} not found on issue`);
|
||||
return;
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
async getClosingInfo(alreadyChecked = []) {
|
||||
var _a, _b, _c, _d, _e, _f, _g;
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h;
|
||||
if (alreadyChecked.includes(this.issueData.number)) {
|
||||
return undefined;
|
||||
}
|
||||
@@ -332,22 +409,21 @@ class OctoKitIssue extends OctoKit {
|
||||
if ((await this.getIssue()).open) {
|
||||
return;
|
||||
}
|
||||
const closingHashComment = /(?:\\|\/)closedWith (\S*)/;
|
||||
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
|
||||
const closingHashComment = /(?:\\|\/)closedWith (?:https:\/\/github\.com\/microsoft\/vscode\/commit\/)?([a-fA-F0-9]{7,40})/;
|
||||
const options = {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
});
|
||||
};
|
||||
let closingCommit;
|
||||
const crossReferencing = [];
|
||||
for await (const event of this.octokit.paginate.iterator(options)) {
|
||||
for await (const event of this.octokit.paginate.iterator(this.octokit.rest.issues.listEventsForTimeline, options)) {
|
||||
numRequests++;
|
||||
const timelineEvents = event.data;
|
||||
for (const timelineEvent of timelineEvents) {
|
||||
if ((timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
|
||||
timelineEvent.created_at &&
|
||||
timelineEvent.commit_id &&
|
||||
timelineEvent.commit_url
|
||||
.toLowerCase()
|
||||
.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase())) {
|
||||
((_a = timelineEvent.commit_url) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
|
||||
closingCommit = {
|
||||
hash: timelineEvent.commit_id,
|
||||
timestamp: +new Date(timelineEvent.created_at),
|
||||
@@ -356,15 +432,18 @@ class OctoKitIssue extends OctoKit {
|
||||
if (timelineEvent.event === 'reopened') {
|
||||
closingCommit = undefined;
|
||||
}
|
||||
if (timelineEvent.event === 'commented' &&
|
||||
!((_a = timelineEvent.body) === null || _a === void 0 ? void 0 : _a.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE')) &&
|
||||
if (timelineEvent.created_at &&
|
||||
timelineEvent.event === 'commented' &&
|
||||
!((_b = timelineEvent.body) === null || _b === void 0 ? void 0 : _b.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE')) &&
|
||||
closingHashComment.test(timelineEvent.body)) {
|
||||
closingCommit = {
|
||||
hash: closingHashComment.exec(timelineEvent.body)[1],
|
||||
timestamp: +new Date(timelineEvent.created_at),
|
||||
};
|
||||
}
|
||||
if (timelineEvent.event === 'cross-referenced' && ((_c = (_b = timelineEvent.source) === null || _b === void 0 ? void 0 : _b.issue) === null || _c === void 0 ? void 0 : _c.number) && ((_f = (_e = (_d = timelineEvent.source) === null || _d === void 0 ? void 0 : _d.issue) === null || _e === void 0 ? void 0 : _e.pull_request) === null || _f === void 0 ? void 0 : _f.url.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
|
||||
if (timelineEvent.event === 'cross-referenced' &&
|
||||
((_d = (_c = timelineEvent.source) === null || _c === void 0 ? void 0 : _c.issue) === null || _d === void 0 ? void 0 : _d.number) &&
|
||||
((_g = (_f = (_e = timelineEvent.source) === null || _e === void 0 ? void 0 : _e.issue) === null || _f === void 0 ? void 0 : _f.pull_request) === null || _g === void 0 ? void 0 : _g.url.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
|
||||
crossReferencing.push(timelineEvent.source.issue.number);
|
||||
}
|
||||
}
|
||||
@@ -375,16 +454,16 @@ class OctoKitIssue extends OctoKit {
|
||||
for (const id of crossReferencing.reverse()) {
|
||||
const closed = await new OctoKitIssue(this.token, this.params, {
|
||||
number: id,
|
||||
}, this.options).getClosingInfo(alreadyChecked);
|
||||
}).getClosingInfo(alreadyChecked);
|
||||
if (closed) {
|
||||
if (Math.abs(closed.timestamp - ((_g = (await this.getIssue()).closedAt) !== null && _g !== void 0 ? _g : 0)) < 5000) {
|
||||
if (Math.abs(closed.timestamp - ((_h = (await this.getIssue()).closedAt) !== null && _h !== void 0 ? _h : 0)) < 5000) {
|
||||
closingCommit = closed;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
|
||||
return closingCommit;
|
||||
}
|
||||
}
|
||||
|
||||
+260
-171
@@ -3,181 +3,242 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { debug } from '@actions/core'
|
||||
import { GitHub as GitHubAPI } from '@actions/github'
|
||||
import { Octokit } from '@octokit/rest'
|
||||
import { exec } from 'child_process'
|
||||
import { Comment, GitHub, GitHubIssue, Issue, Query, User } from './api'
|
||||
import { getOctokit } from '@actions/github';
|
||||
import type { RequestError } from '@octokit/request-error';
|
||||
import { exec } from 'child_process';
|
||||
import { IssueGetResponse, IssuesGetResponseMilestone } from '../common/OctokitTypings';
|
||||
import { safeLog } from '../common/utils';
|
||||
import { Comment, GitHub, GitHubIssue, Issue, Milestone, Query, User } from './api';
|
||||
|
||||
let numRequests = 0
|
||||
export const getNumRequests = () => numRequests
|
||||
let numRequests = 0;
|
||||
export const getNumRequests = () => numRequests;
|
||||
|
||||
export class OctoKit implements GitHub {
|
||||
private _octokit: GitHubAPI
|
||||
protected get octokit(): GitHubAPI {
|
||||
numRequests++
|
||||
return this._octokit
|
||||
private _octokit: ReturnType<typeof getOctokit>;
|
||||
protected get octokit(): ReturnType<typeof getOctokit> {
|
||||
numRequests++;
|
||||
return this._octokit;
|
||||
}
|
||||
|
||||
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
|
||||
protected mockLabels: Set<string> = new Set()
|
||||
protected mockLabels: Set<string> = new Set();
|
||||
|
||||
public readonly repoName: string;
|
||||
public readonly repoOwner: string;
|
||||
|
||||
constructor(
|
||||
protected token: string,
|
||||
protected params: { repo: string; owner: string },
|
||||
protected options: { readonly: boolean } = { readonly: false },
|
||||
) {
|
||||
this._octokit = new GitHubAPI(token)
|
||||
this._octokit = getOctokit(token);
|
||||
this.repoName = params.repo;
|
||||
this.repoOwner = params.owner;
|
||||
}
|
||||
|
||||
getIssueByNumber(number: number) {
|
||||
return new OctoKitIssue(this.token, this.params, { number: number });
|
||||
}
|
||||
|
||||
// TODO: just iterate over the issues in a page here instead of making caller do it
|
||||
async *query(query: Query): AsyncIterableIterator<GitHubIssue[]> {
|
||||
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`
|
||||
console.log(`Querying for ${q}:`)
|
||||
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`;
|
||||
|
||||
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
|
||||
const options = {
|
||||
...query,
|
||||
q,
|
||||
per_page: 100,
|
||||
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
|
||||
})
|
||||
};
|
||||
|
||||
let pageNum = 0
|
||||
let pageNum = 0;
|
||||
|
||||
const timeout = async () => {
|
||||
if (pageNum < 2) {
|
||||
/* pass */
|
||||
} else if (pageNum < 4) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 3000))
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
} else {
|
||||
await new Promise((resolve) => setTimeout(resolve, 30000))
|
||||
await new Promise((resolve) => setTimeout(resolve, 30000));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
|
||||
await timeout()
|
||||
numRequests++
|
||||
const page: Array<Octokit.SearchIssuesAndPullRequestsResponseItemsItem> = pageResponse.data
|
||||
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`)
|
||||
for await (const pageResponse of this.octokit.paginate.iterator(
|
||||
this.octokit.rest.search.issuesAndPullRequests,
|
||||
options,
|
||||
)) {
|
||||
await timeout();
|
||||
numRequests++;
|
||||
const page = pageResponse.data;
|
||||
safeLog(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
|
||||
yield page.map(
|
||||
(issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options),
|
||||
)
|
||||
(issue) =>
|
||||
new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async createIssue(owner: string, repo: string, title: string, body: string): Promise<void> {
|
||||
debug(`Creating issue \`${title}\` on ${owner}/${repo}`)
|
||||
if (!this.options.readonly) await this.octokit.issues.create({ owner, repo, title, body })
|
||||
safeLog(`Creating issue \`${title}\` on ${owner}/${repo}`);
|
||||
if (!this.options.readonly) await this.octokit.rest.issues.create({ owner, repo, title, body });
|
||||
}
|
||||
|
||||
protected octokitIssueToIssue(
|
||||
issue: Octokit.IssuesGetResponse | Octokit.SearchIssuesAndPullRequestsResponseItemsItem,
|
||||
): Issue {
|
||||
protected octokitIssueToIssue(issue: IssueGetResponse): Issue {
|
||||
return {
|
||||
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
|
||||
body: issue.body,
|
||||
author: { name: issue.user?.login ?? 'unkown', isGitHubApp: issue.user?.type === 'Bot' },
|
||||
body: issue.body ?? '',
|
||||
number: issue.number,
|
||||
title: issue.title,
|
||||
labels: (issue.labels as Octokit.IssuesGetLabelResponse[]).map((label) => label.name),
|
||||
isPr: !!issue.pull_request?.html_url,
|
||||
labels: issue.labels.map((label) => (typeof label === 'string' ? label : label.name ?? '')),
|
||||
open: issue.state === 'open',
|
||||
locked: (issue as any).locked,
|
||||
numComments: issue.comments,
|
||||
reactions: (issue as any).reactions,
|
||||
assignee: issue.assignee?.login ?? (issue as any).assignees?.[0]?.login,
|
||||
milestoneId: issue.milestone?.number ?? null,
|
||||
assignee: issue.assignee?.login ?? (issue as IssueGetResponse).assignees?.[0]?.login,
|
||||
assignees: (issue as IssueGetResponse).assignees?.map((assignee) => assignee.login) ?? [],
|
||||
milestone: issue.milestone ? this.octokitMilestoneToMilestone(issue.milestone) : null,
|
||||
createdAt: +new Date(issue.created_at),
|
||||
updatedAt: +new Date(issue.updated_at),
|
||||
closedAt: issue.closed_at ? +new Date((issue.closed_at as unknown) as string) : undefined,
|
||||
}
|
||||
closedAt: issue.closed_at ? +new Date(issue.closed_at as unknown as string) : undefined,
|
||||
};
|
||||
}
|
||||
|
||||
private writeAccessCache: Record<string, boolean> = {}
|
||||
protected octokitMilestoneToMilestone(milestone: IssuesGetResponseMilestone): Milestone | null {
|
||||
if (milestone?.number === undefined) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
title: milestone.title,
|
||||
milestoneId: milestone.number,
|
||||
// Remove the time portions of the dates as they're not important
|
||||
createdAt: milestone.created_at !== null ? new Date(milestone.created_at.split('T')[0]) : null,
|
||||
dueOn: milestone.due_on !== null ? new Date(milestone.due_on.split('T')[0]) : null,
|
||||
closedAt: milestone.closed_at !== null ? new Date(milestone.closed_at.split('T')[0]) : null,
|
||||
description: milestone.description ?? '',
|
||||
numClosedIssues: milestone.closed_issues,
|
||||
numOpenIssues: milestone.open_issues,
|
||||
state: milestone.state === 'open' ? 'open' : 'closed',
|
||||
};
|
||||
}
|
||||
|
||||
private writeAccessCache: Record<string, boolean> = {};
|
||||
async hasWriteAccess(user: User): Promise<boolean> {
|
||||
if (user.name in this.writeAccessCache) {
|
||||
debug('Got permissions from cache for ' + user)
|
||||
return this.writeAccessCache[user.name]
|
||||
safeLog('Got permissions from cache for ' + user);
|
||||
return this.writeAccessCache[user.name];
|
||||
}
|
||||
debug('Fetching permissions for ' + user)
|
||||
safeLog('Fetching permissions for ' + user.name);
|
||||
const permissions = (
|
||||
await this.octokit.repos.getCollaboratorPermissionLevel({
|
||||
await this.octokit.rest.repos.getCollaboratorPermissionLevel({
|
||||
...this.params,
|
||||
username: user.name,
|
||||
})
|
||||
).data.permission
|
||||
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write')
|
||||
).data.permission;
|
||||
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write');
|
||||
}
|
||||
|
||||
async repoHasLabel(name: string): Promise<boolean> {
|
||||
try {
|
||||
await this.octokit.issues.getLabel({ ...this.params, name })
|
||||
return true
|
||||
await this.octokit.rest.issues.getLabel({ ...this.params, name });
|
||||
return true;
|
||||
} catch (err) {
|
||||
if (err.status === 404) {
|
||||
return this.options.readonly && this.mockLabels.has(name)
|
||||
const statusErorr = err as RequestError;
|
||||
if (statusErorr.status === 404) {
|
||||
return this.options.readonly && this.mockLabels.has(name);
|
||||
}
|
||||
throw err
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
async createLabel(name: string, color: string, description: string): Promise<void> {
|
||||
debug('Creating label ' + name)
|
||||
safeLog('Creating label ' + name);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.createLabel({ ...this.params, color, description, name })
|
||||
else this.mockLabels.add(name)
|
||||
await this.octokit.rest.issues.createLabel({ ...this.params, color, description, name });
|
||||
else this.mockLabels.add(name);
|
||||
}
|
||||
|
||||
async deleteLabel(name: string): Promise<void> {
|
||||
debug('Deleting label ' + name)
|
||||
safeLog('Deleting label ' + name);
|
||||
try {
|
||||
if (!this.options.readonly) await this.octokit.issues.deleteLabel({ ...this.params, name })
|
||||
if (!this.options.readonly) await this.octokit.rest.issues.deleteLabel({ ...this.params, name });
|
||||
} catch (err) {
|
||||
if (err.status === 404) {
|
||||
return
|
||||
const statusErorr = err as RequestError;
|
||||
if (statusErorr.status === 404) {
|
||||
return;
|
||||
}
|
||||
throw err
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
async readConfig(path: string): Promise<any> {
|
||||
debug('Reading config at ' + path)
|
||||
const repoPath = `.github/${path}.json`
|
||||
safeLog('Reading config at ' + path);
|
||||
const repoPath = `.github/${path}.json`;
|
||||
try {
|
||||
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data
|
||||
|
||||
if ('type' in data && data.type === 'file') {
|
||||
const data = (await this.octokit.rest.repos.getContent({ ...this.params, path: repoPath })).data;
|
||||
if ('type' in data && data.type === 'file' && 'content' in data) {
|
||||
if (data.encoding === 'base64' && data.content) {
|
||||
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'))
|
||||
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'));
|
||||
}
|
||||
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`)
|
||||
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`);
|
||||
}
|
||||
throw Error('Found directory at config path when expecting file' + JSON.stringify(data))
|
||||
throw Error('Found directory at config path when expecting file' + JSON.stringify(data));
|
||||
} catch (e) {
|
||||
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e))
|
||||
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e));
|
||||
}
|
||||
}
|
||||
|
||||
async releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'> {
|
||||
const isHash = (s: string) => /^[a-fA-F0-9]*$/.test(s);
|
||||
if (!isHash(release) || !isHash(commit)) return 'unknown';
|
||||
return new Promise((resolve, reject) =>
|
||||
exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
|
||||
if (!err || err.code === 1) {
|
||||
resolve(!err ? 'yes' : 'no')
|
||||
resolve(!err ? 'yes' : 'no');
|
||||
} else if (err.message.includes(`Not a valid commit name ${release}`)) {
|
||||
// release branch is forked. Probably in endgame. Not released.
|
||||
resolve('no')
|
||||
resolve('no');
|
||||
} else if (err.message.includes(`Not a valid commit name ${commit}`)) {
|
||||
// commit is probably in a different repo.
|
||||
resolve('unknown')
|
||||
resolve('unknown');
|
||||
} else {
|
||||
reject(err)
|
||||
reject(err);
|
||||
}
|
||||
}),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
async getCurrentRepoMilestone(): Promise<number | undefined> {
|
||||
safeLog(`Getting repo milestone for ${this.params.owner}/${this.params.repo}`);
|
||||
// Fetch all milestones open for this repo
|
||||
const allMilestones = (
|
||||
await this.octokit.rest.issues.listMilestones({
|
||||
owner: this.params.owner,
|
||||
repo: this.params.repo,
|
||||
state: 'open',
|
||||
sort: 'due_on',
|
||||
direction: 'asc',
|
||||
})
|
||||
).data;
|
||||
const currentDate = new Date();
|
||||
const possibleMilestones = allMilestones
|
||||
.filter(
|
||||
(milestone) =>
|
||||
new Date(milestone.due_on === null ? currentDate : milestone.due_on) > currentDate &&
|
||||
currentDate > new Date(milestone.created_at) &&
|
||||
!milestone.title.includes('Recovery'),
|
||||
)
|
||||
.sort((a, b) => +new Date(a.due_on ?? currentDate) - +new Date(b.due_on ?? currentDate));
|
||||
if (possibleMilestones.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
return possibleMilestones[0].number;
|
||||
}
|
||||
|
||||
async dispatch(title: string): Promise<void> {
|
||||
debug('Dispatching ' + title)
|
||||
safeLog('Dispatching ' + title);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title })
|
||||
await this.octokit.rest.repos.createDispatchEvent({ ...this.params, event_type: title });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,184 +249,206 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
private issueData: { number: number } | Issue,
|
||||
options: { readonly: boolean } = { readonly: false },
|
||||
) {
|
||||
super(token, params, options)
|
||||
console.log('running bot on issue', issueData.number)
|
||||
super(token, params, options);
|
||||
safeLog('running bot on issue', issueData.number);
|
||||
}
|
||||
|
||||
async addAssignee(assignee: string): Promise<void> {
|
||||
debug('Adding assignee ' + assignee + ' to ' + this.issueData.number)
|
||||
safeLog('Adding assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
await this.octokit.issues.addAssignees({
|
||||
await this.octokit.rest.issues.addAssignees({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
assignees: [assignee],
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async removeAssignee(assignee: string): Promise<void> {
|
||||
debug('Removing assignee ' + assignee + ' to ' + this.issueData.number)
|
||||
safeLog('Removing assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
await this.octokit.issues.removeAssignees({
|
||||
await this.octokit.rest.issues.removeAssignees({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
assignees: [assignee],
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async closeIssue(): Promise<void> {
|
||||
debug('Closing issue ' + this.issueData.number)
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
async closeIssue(reason: 'completed' | 'not_planned'): Promise<void> {
|
||||
safeLog('Closing issue ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
const issue = await this.octokit.rest.issues.get({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'closed',
|
||||
})
|
||||
});
|
||||
// Don't close already closed issues even if it means changing the state
|
||||
if (issue.data.state === 'closed') {
|
||||
return;
|
||||
}
|
||||
await this.octokit.rest.issues
|
||||
.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'closed',
|
||||
state_reason: reason,
|
||||
})
|
||||
.catch((e) => {
|
||||
safeLog('error closing issue:', e);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async reopenIssue(): Promise<void> {
|
||||
debug('Reopening issue ' + this.issueData.number)
|
||||
safeLog('Reopening issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
await this.octokit.rest.issues.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'open',
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async lockIssue(): Promise<void> {
|
||||
debug('Locking issue ' + this.issueData.number)
|
||||
safeLog('Locking issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number })
|
||||
await this.octokit.rest.issues.lock({ ...this.params, issue_number: this.issueData.number });
|
||||
}
|
||||
|
||||
async unlockIssue(): Promise<void> {
|
||||
safeLog('Unlocking issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.rest.issues.unlock({ ...this.params, issue_number: this.issueData.number });
|
||||
}
|
||||
|
||||
async getIssue(): Promise<Issue> {
|
||||
if (isIssue(this.issueData)) {
|
||||
debug('Got issue data from query result ' + this.issueData.number)
|
||||
return this.issueData
|
||||
safeLog('Got issue data from query result ' + this.issueData.number);
|
||||
return this.issueData;
|
||||
}
|
||||
|
||||
console.log('Fetching issue ' + this.issueData.number)
|
||||
safeLog('Fetching issue ' + this.issueData.number);
|
||||
const issue = (
|
||||
await this.octokit.issues.get({
|
||||
await this.octokit.rest.issues.get({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
mediaType: { previews: ['squirrel-girl'] },
|
||||
})
|
||||
).data
|
||||
return (this.issueData = this.octokitIssueToIssue(issue))
|
||||
).data;
|
||||
return (this.issueData = this.octokitIssueToIssue(issue));
|
||||
}
|
||||
|
||||
async postComment(body: string): Promise<void> {
|
||||
debug(`Posting comment ${body} on ${this.issueData.number}`)
|
||||
safeLog(`Posting comment on ${this.issueData.number}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.createComment({
|
||||
await this.octokit.rest.issues.createComment({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
body,
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async deleteComment(id: number): Promise<void> {
|
||||
debug(`Deleting comment ${id} on ${this.issueData.number}`)
|
||||
safeLog(`Deleting comment ${id} on ${this.issueData.number}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.deleteComment({
|
||||
await this.octokit.rest.issues.deleteComment({
|
||||
owner: this.params.owner,
|
||||
repo: this.params.repo,
|
||||
comment_id: id,
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async setMilestone(milestoneId: number) {
|
||||
debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`)
|
||||
safeLog(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
await this.octokit.rest.issues.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
milestone: milestoneId,
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async *getComments(last?: boolean): AsyncIterableIterator<Comment[]> {
|
||||
debug('Fetching comments for ' + this.issueData.number)
|
||||
safeLog('Fetching comments for ' + this.issueData.number);
|
||||
|
||||
const response = this.octokit.paginate.iterator(
|
||||
this.octokit.issues.listComments.endpoint.merge({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
per_page: 100,
|
||||
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
|
||||
}),
|
||||
)
|
||||
const response = this.octokit.paginate.iterator(this.octokit.rest.issues.listComments, {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
per_page: 100,
|
||||
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
|
||||
});
|
||||
|
||||
for await (const page of response) {
|
||||
numRequests++
|
||||
yield (page.data as Octokit.IssuesListCommentsResponseItem[]).map((comment) => ({
|
||||
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
|
||||
body: comment.body,
|
||||
numRequests++;
|
||||
yield page.data.map((comment) => ({
|
||||
author: { name: comment.user?.login ?? '', isGitHubApp: comment.user?.type === 'Bot' },
|
||||
body: comment.body ?? '',
|
||||
id: comment.id,
|
||||
timestamp: +new Date(comment.created_at),
|
||||
}))
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
async addLabel(name: string): Promise<void> {
|
||||
debug(`Adding label ${name} to ${this.issueData.number}`)
|
||||
safeLog(`Adding label ${name} to ${this.issueData.number}`);
|
||||
if (!(await this.repoHasLabel(name))) {
|
||||
throw Error(`Action could not execute becuase label ${name} is not defined.`)
|
||||
throw Error(`Action could not execute becuase label ${name} is not defined.`);
|
||||
}
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.addLabels({
|
||||
await this.octokit.rest.issues.addLabels({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
labels: [name],
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async getAssigner(assignee: string): Promise<string> {
|
||||
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
|
||||
const options = {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
})
|
||||
};
|
||||
|
||||
let assigner: string | undefined
|
||||
let assigner: string | undefined;
|
||||
|
||||
for await (const event of this.octokit.paginate.iterator(options)) {
|
||||
numRequests++
|
||||
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
|
||||
for await (const event of this.octokit.paginate.iterator(
|
||||
this.octokit.rest.issues.listEventsForTimeline,
|
||||
options,
|
||||
)) {
|
||||
numRequests++;
|
||||
const timelineEvents = event.data;
|
||||
for (const timelineEvent of timelineEvents) {
|
||||
if (
|
||||
timelineEvent.event === 'assigned' &&
|
||||
(timelineEvent as any).assignee.login === assignee
|
||||
) {
|
||||
assigner = timelineEvent.actor.login
|
||||
if (timelineEvent.event === 'assigned' && timelineEvent.assignee?.login === assignee) {
|
||||
assigner = timelineEvent.actor?.login;
|
||||
}
|
||||
}
|
||||
if (assigner) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!assigner) {
|
||||
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.')
|
||||
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.');
|
||||
}
|
||||
|
||||
return assigner
|
||||
return assigner;
|
||||
}
|
||||
|
||||
async removeLabel(name: string): Promise<void> {
|
||||
debug(`Removing label ${name} from ${this.issueData.number}`)
|
||||
safeLog(`Removing label ${name} from ${this.issueData.number}`);
|
||||
try {
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.removeLabel({
|
||||
await this.octokit.rest.issues.removeLabel({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
name,
|
||||
})
|
||||
});
|
||||
} catch (err) {
|
||||
if (err.status === 404) {
|
||||
console.log(`Label ${name} not found on issue`)
|
||||
return
|
||||
const statusErorr = err as RequestError;
|
||||
if (statusErorr.status === 404) {
|
||||
safeLog(`Label ${name} not found on issue`);
|
||||
return;
|
||||
}
|
||||
throw err
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,43 +456,49 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
alreadyChecked: number[] = [],
|
||||
): Promise<{ hash: string | undefined; timestamp: number } | undefined> {
|
||||
if (alreadyChecked.includes(this.issueData.number)) {
|
||||
return undefined
|
||||
return undefined;
|
||||
}
|
||||
alreadyChecked.push(this.issueData.number)
|
||||
alreadyChecked.push(this.issueData.number);
|
||||
|
||||
if ((await this.getIssue()).open) {
|
||||
return
|
||||
return;
|
||||
}
|
||||
|
||||
const closingHashComment = /(?:\\|\/)closedWith (\S*)/
|
||||
const closingHashComment =
|
||||
/(?:\\|\/)closedWith (?:https:\/\/github\.com\/microsoft\/vscode\/commit\/)?([a-fA-F0-9]{7,40})/;
|
||||
|
||||
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
|
||||
const options = {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
})
|
||||
let closingCommit: { hash: string | undefined; timestamp: number } | undefined
|
||||
const crossReferencing: number[] = []
|
||||
for await (const event of this.octokit.paginate.iterator(options)) {
|
||||
numRequests++
|
||||
};
|
||||
let closingCommit: { hash: string | undefined; timestamp: number } | undefined;
|
||||
const crossReferencing: number[] = [];
|
||||
for await (const event of this.octokit.paginate.iterator(
|
||||
this.octokit.rest.issues.listEventsForTimeline,
|
||||
options,
|
||||
)) {
|
||||
numRequests++;
|
||||
|
||||
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
|
||||
const timelineEvents = event.data;
|
||||
for (const timelineEvent of timelineEvents) {
|
||||
if (
|
||||
(timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
|
||||
timelineEvent.created_at &&
|
||||
timelineEvent.commit_id &&
|
||||
timelineEvent.commit_url
|
||||
.toLowerCase()
|
||||
?.toLowerCase()
|
||||
.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase())
|
||||
) {
|
||||
closingCommit = {
|
||||
hash: timelineEvent.commit_id,
|
||||
timestamp: +new Date(timelineEvent.created_at),
|
||||
}
|
||||
};
|
||||
}
|
||||
if (timelineEvent.event === 'reopened') {
|
||||
closingCommit = undefined
|
||||
closingCommit = undefined;
|
||||
}
|
||||
if (
|
||||
timelineEvent.created_at &&
|
||||
timelineEvent.event === 'commented' &&
|
||||
!((timelineEvent as any).body as string)?.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE') &&
|
||||
closingHashComment.test((timelineEvent as any).body)
|
||||
@@ -417,7 +506,7 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
closingCommit = {
|
||||
hash: closingHashComment.exec((timelineEvent as any).body)![1],
|
||||
timestamp: +new Date(timelineEvent.created_at),
|
||||
}
|
||||
};
|
||||
}
|
||||
if (
|
||||
timelineEvent.event === 'cross-referenced' &&
|
||||
@@ -426,7 +515,7 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
`/${this.params.owner}/${this.params.repo}/`.toLowerCase(),
|
||||
)
|
||||
) {
|
||||
crossReferencing.push((timelineEvent as any).source.issue.number)
|
||||
crossReferencing.push((timelineEvent as any).source.issue.number);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -437,19 +526,19 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
for (const id of crossReferencing.reverse()) {
|
||||
const closed = await new OctoKitIssue(this.token, this.params, {
|
||||
number: id,
|
||||
}, this.options).getClosingInfo(alreadyChecked)
|
||||
}).getClosingInfo(alreadyChecked);
|
||||
|
||||
if (closed) {
|
||||
if (Math.abs(closed.timestamp - ((await this.getIssue()).closedAt ?? 0)) < 5000) {
|
||||
closingCommit = closed
|
||||
break
|
||||
closingCommit = closed;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`)
|
||||
return closingCommit
|
||||
safeLog(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
|
||||
return closingCommit;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -464,7 +553,7 @@ function isIssue(object: any): object is Issue {
|
||||
'number' in object &&
|
||||
'numComments' in object &&
|
||||
'reactions' in object &&
|
||||
'milestoneId' in object
|
||||
'milestoneId' in object;
|
||||
|
||||
return isIssue
|
||||
return isIssue;
|
||||
}
|
||||
|
||||
@@ -11,51 +11,50 @@ const utils_1 = require("./utils");
|
||||
const core_1 = require("@actions/core");
|
||||
class Action {
|
||||
constructor() {
|
||||
this.token = utils_1.getRequiredInput('token');
|
||||
this.username = new github_1.GitHub(this.token).users.getAuthenticated().then((v) => v.data.name);
|
||||
this.token = (0, utils_1.getRequiredInput)('token');
|
||||
this.username = (0, github_1.getOctokit)(this.token)
|
||||
.rest.users.getAuthenticated()
|
||||
.then((v) => { var _a; return (_a = v.data.name) !== null && _a !== void 0 ? _a : 'unknown'; }, () => 'unknown');
|
||||
}
|
||||
async run() {
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
||||
console.log('running ', this.id, 'with context', {
|
||||
...github_1.context,
|
||||
payload: {
|
||||
issue: (_b = (_a = github_1.context.payload) === null || _a === void 0 ? void 0 : _a.issue) === null || _b === void 0 ? void 0 : _b.number,
|
||||
label: (_d = (_c = github_1.context.payload) === null || _c === void 0 ? void 0 : _c.label) === null || _d === void 0 ? void 0 : _d.name,
|
||||
repository: (_f = (_e = github_1.context.payload) === null || _e === void 0 ? void 0 : _e.repository) === null || _f === void 0 ? void 0 : _f.html_url,
|
||||
sender: (_j = (_h = (_g = github_1.context.payload) === null || _g === void 0 ? void 0 : _g.sender) === null || _h === void 0 ? void 0 : _h.login) !== null && _j !== void 0 ? _j : (_l = (_k = github_1.context.payload) === null || _k === void 0 ? void 0 : _k.sender) === null || _l === void 0 ? void 0 : _l.type,
|
||||
},
|
||||
});
|
||||
var _a, _b, _c, _d, _e, _f;
|
||||
if (utils_1.errorLoggingIssue) {
|
||||
const { repo, issue, owner } = utils_1.errorLoggingIssue;
|
||||
if (github_1.context.repo.repo === repo &&
|
||||
github_1.context.repo.owner === owner &&
|
||||
((_m = github_1.context.payload.issue) === null || _m === void 0 ? void 0 : _m.number) === issue) {
|
||||
return console.log('refusing to run on error logging issue to prevent cascading errors');
|
||||
((_a = github_1.context.payload.issue) === null || _a === void 0 ? void 0 : _a.number) === issue) {
|
||||
return (0, utils_1.safeLog)('refusing to run on error logging issue to prevent cascading errors');
|
||||
}
|
||||
}
|
||||
try {
|
||||
const token = utils_1.getRequiredInput('token');
|
||||
const readonly = !!core_1.getInput('readonly');
|
||||
const issue = (_o = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.issue) === null || _o === void 0 ? void 0 : _o.number;
|
||||
const token = (0, utils_1.getRequiredInput)('token');
|
||||
const readonly = !!(0, core_1.getInput)('readonly');
|
||||
const issue = (_b = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.issue) === null || _b === void 0 ? void 0 : _b.number;
|
||||
if (issue) {
|
||||
const octokit = new octokit_1.OctoKitIssue(token, github_1.context.repo, { number: issue }, { readonly });
|
||||
if (github_1.context.eventName === 'issue_comment') {
|
||||
await this.onCommented(octokit, github_1.context.payload.comment.body, github_1.context.actor);
|
||||
await this.onCommented(octokit, (_c = github_1.context.payload.comment) === null || _c === void 0 ? void 0 : _c.body, github_1.context.actor);
|
||||
}
|
||||
else if (github_1.context.eventName === 'issues') {
|
||||
else if (github_1.context.eventName === 'issues' ||
|
||||
github_1.context.eventName === 'pull_request' ||
|
||||
github_1.context.eventName === 'pull_request_target') {
|
||||
switch (github_1.context.payload.action) {
|
||||
case 'opened':
|
||||
await this.onOpened(octokit);
|
||||
case 'ready_for_review':
|
||||
await this.onOpened(octokit, github_1.context.payload);
|
||||
break;
|
||||
case 'reopened':
|
||||
await this.onReopened(octokit);
|
||||
break;
|
||||
case 'closed':
|
||||
await this.onClosed(octokit);
|
||||
await this.onClosed(octokit, github_1.context.payload);
|
||||
break;
|
||||
case 'labeled':
|
||||
await this.onLabeled(octokit, github_1.context.payload.label.name);
|
||||
break;
|
||||
case 'assigned':
|
||||
await this.onAssigned(octokit, github_1.context.payload.assignee.login);
|
||||
break;
|
||||
case 'unassigned':
|
||||
await this.onUnassigned(octokit, github_1.context.payload.assignee.login);
|
||||
break;
|
||||
@@ -70,22 +69,32 @@ class Action {
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (github_1.context.eventName === 'create') {
|
||||
await this.onCreated(new octokit_1.OctoKit(token, github_1.context.repo, { readonly }), (_d = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.payload) === null || _d === void 0 ? void 0 : _d.ref, (_f = (_e = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.payload) === null || _e === void 0 ? void 0 : _e.sender) === null || _f === void 0 ? void 0 : _f.login);
|
||||
}
|
||||
else {
|
||||
await this.onTriggered(new octokit_1.OctoKit(token, github_1.context.repo, { readonly }));
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
await this.error(e);
|
||||
const err = e;
|
||||
try {
|
||||
await this.error(err);
|
||||
}
|
||||
catch {
|
||||
(0, utils_1.safeLog)((err === null || err === void 0 ? void 0 : err.stack) || (err === null || err === void 0 ? void 0 : err.message) || String(e));
|
||||
}
|
||||
}
|
||||
const usage = await utils_1.getRateLimit(this.token);
|
||||
const usage = await (0, utils_1.getRateLimit)(this.token);
|
||||
}
|
||||
async error(error) {
|
||||
var _a;
|
||||
const details = {
|
||||
message: `${error.message}\n${error.stack}`,
|
||||
id: this.id,
|
||||
user: await this.username,
|
||||
};
|
||||
if (github_1.context.issue.number)
|
||||
if ((_a = github_1.context.issue) === null || _a === void 0 ? void 0 : _a.number)
|
||||
details.issue = github_1.context.issue.number;
|
||||
const rendered = `
|
||||
Message: ${details.message}
|
||||
@@ -94,28 +103,34 @@ Actor: ${details.user}
|
||||
|
||||
ID: ${details.id}
|
||||
`;
|
||||
await utils_1.logErrorToIssue(rendered, true, this.token);
|
||||
core_1.setFailed(error.message);
|
||||
await (0, utils_1.logErrorToIssue)(rendered, true, this.token);
|
||||
(0, core_1.setFailed)(error.message);
|
||||
}
|
||||
async onTriggered(_octokit) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onCreated(_octokit, _ref, _creator) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onEdited(_issue) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onLabeled(_issue, _label) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onUnassigned(_issue, _label) {
|
||||
async onAssigned(_issue, _assignee) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onOpened(_issue) {
|
||||
async onUnassigned(_issue, _assignee) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onOpened(_issue, _payload) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onReopened(_issue) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onClosed(_issue) {
|
||||
async onClosed(_issue, _payload) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onMilestoned(_issue) {
|
||||
|
||||
@@ -3,87 +3,102 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { OctoKit, OctoKitIssue, getNumRequests } from '../api/octokit'
|
||||
import { context, GitHub } from '@actions/github'
|
||||
import { getRequiredInput, logErrorToIssue, getRateLimit, errorLoggingIssue } from './utils'
|
||||
import { getInput, setFailed } from '@actions/core'
|
||||
import { OctoKit, OctoKitIssue, getNumRequests } from '../api/octokit';
|
||||
import { context, getOctokit } from '@actions/github';
|
||||
import { getRequiredInput, logErrorToIssue, getRateLimit, errorLoggingIssue, safeLog } from './utils';
|
||||
import { getInput, setFailed } from '@actions/core';
|
||||
import { WebhookPayload } from '@actions/github/lib/interfaces';
|
||||
|
||||
export abstract class Action {
|
||||
abstract id: string
|
||||
abstract id: string;
|
||||
|
||||
private username: Promise<string>
|
||||
private token = getRequiredInput('token')
|
||||
private username: Promise<string>;
|
||||
private token = getRequiredInput('token');
|
||||
|
||||
constructor() {
|
||||
this.username = new GitHub(this.token).users.getAuthenticated().then((v) => v.data.name)
|
||||
this.username = getOctokit(this.token)
|
||||
.rest.users.getAuthenticated()
|
||||
.then(
|
||||
(v) => v.data.name ?? 'unknown',
|
||||
() => 'unknown',
|
||||
);
|
||||
}
|
||||
|
||||
public async run() {
|
||||
console.log('running ', this.id, 'with context', {
|
||||
...context,
|
||||
payload: {
|
||||
issue: context.payload?.issue?.number,
|
||||
label: context.payload?.label?.name,
|
||||
repository: context.payload?.repository?.html_url,
|
||||
sender: context.payload?.sender?.login ?? context.payload?.sender?.type,
|
||||
},
|
||||
})
|
||||
|
||||
if (errorLoggingIssue) {
|
||||
const { repo, issue, owner } = errorLoggingIssue
|
||||
const { repo, issue, owner } = errorLoggingIssue;
|
||||
if (
|
||||
context.repo.repo === repo &&
|
||||
context.repo.owner === owner &&
|
||||
context.payload.issue?.number === issue
|
||||
) {
|
||||
return console.log('refusing to run on error logging issue to prevent cascading errors')
|
||||
return safeLog('refusing to run on error logging issue to prevent cascading errors');
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const token = getRequiredInput('token')
|
||||
const readonly = !!getInput('readonly')
|
||||
const token = getRequiredInput('token');
|
||||
const readonly = !!getInput('readonly');
|
||||
|
||||
const issue = context?.issue?.number
|
||||
const issue = context?.issue?.number;
|
||||
if (issue) {
|
||||
const octokit = new OctoKitIssue(token, context.repo, { number: issue }, { readonly })
|
||||
const octokit = new OctoKitIssue(token, context.repo, { number: issue }, { readonly });
|
||||
if (context.eventName === 'issue_comment') {
|
||||
await this.onCommented(octokit, context.payload.comment.body, context.actor)
|
||||
} else if (context.eventName === 'issues') {
|
||||
await this.onCommented(octokit, context.payload.comment?.body, context.actor);
|
||||
} else if (
|
||||
context.eventName === 'issues' ||
|
||||
context.eventName === 'pull_request' ||
|
||||
context.eventName === 'pull_request_target'
|
||||
) {
|
||||
switch (context.payload.action) {
|
||||
case 'opened':
|
||||
await this.onOpened(octokit)
|
||||
break
|
||||
case 'ready_for_review':
|
||||
await this.onOpened(octokit, context.payload);
|
||||
break;
|
||||
case 'reopened':
|
||||
await this.onReopened(octokit)
|
||||
break
|
||||
await this.onReopened(octokit);
|
||||
break;
|
||||
case 'closed':
|
||||
await this.onClosed(octokit)
|
||||
break
|
||||
await this.onClosed(octokit, context.payload);
|
||||
break;
|
||||
case 'labeled':
|
||||
await this.onLabeled(octokit, context.payload.label.name)
|
||||
break
|
||||
await this.onLabeled(octokit, context.payload.label.name);
|
||||
break;
|
||||
case 'assigned':
|
||||
await this.onAssigned(octokit, context.payload.assignee.login);
|
||||
break;
|
||||
case 'unassigned':
|
||||
await this.onUnassigned(octokit, context.payload.assignee.login)
|
||||
break
|
||||
await this.onUnassigned(octokit, context.payload.assignee.login);
|
||||
break;
|
||||
case 'edited':
|
||||
await this.onEdited(octokit)
|
||||
break
|
||||
await this.onEdited(octokit);
|
||||
break;
|
||||
case 'milestoned':
|
||||
await this.onMilestoned(octokit)
|
||||
break
|
||||
await this.onMilestoned(octokit);
|
||||
break;
|
||||
default:
|
||||
throw Error('Unexpected action: ' + context.payload.action)
|
||||
throw Error('Unexpected action: ' + context.payload.action);
|
||||
}
|
||||
}
|
||||
} else if (context.eventName === 'create') {
|
||||
await this.onCreated(
|
||||
new OctoKit(token, context.repo, { readonly }),
|
||||
context?.payload?.ref,
|
||||
context?.payload?.sender?.login,
|
||||
);
|
||||
} else {
|
||||
await this.onTriggered(new OctoKit(token, context.repo, { readonly }))
|
||||
await this.onTriggered(new OctoKit(token, context.repo, { readonly }));
|
||||
}
|
||||
} catch (e) {
|
||||
await this.error(e)
|
||||
const err = e as Error;
|
||||
try {
|
||||
await this.error(err);
|
||||
} catch {
|
||||
safeLog(err?.stack || err?.message || String(e));
|
||||
}
|
||||
}
|
||||
|
||||
const usage = await getRateLimit(this.token)
|
||||
const usage = await getRateLimit(this.token);
|
||||
}
|
||||
|
||||
private async error(error: Error) {
|
||||
@@ -91,9 +106,9 @@ export abstract class Action {
|
||||
message: `${error.message}\n${error.stack}`,
|
||||
id: this.id,
|
||||
user: await this.username,
|
||||
}
|
||||
};
|
||||
|
||||
if (context.issue.number) details.issue = context.issue.number
|
||||
if (context.issue?.number) details.issue = context.issue.number;
|
||||
|
||||
const rendered = `
|
||||
Message: ${details.message}
|
||||
@@ -101,37 +116,43 @@ Message: ${details.message}
|
||||
Actor: ${details.user}
|
||||
|
||||
ID: ${details.id}
|
||||
`
|
||||
await logErrorToIssue(rendered, true, this.token)
|
||||
`;
|
||||
await logErrorToIssue(rendered, true, this.token);
|
||||
|
||||
setFailed(error.message)
|
||||
setFailed(error.message);
|
||||
}
|
||||
|
||||
protected async onTriggered(_octokit: OctoKit): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onCreated(_octokit: OctoKit, _ref: string, _creator: string): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onEdited(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onLabeled(_issue: OctoKitIssue, _label: string): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onUnassigned(_issue: OctoKitIssue, _label: string): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
protected async onAssigned(_issue: OctoKitIssue, _assignee: string): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onOpened(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
protected async onUnassigned(_issue: OctoKitIssue, _assignee: string): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onOpened(_issue: OctoKitIssue, _payload: WebhookPayload): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onReopened(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onClosed(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
protected async onClosed(_issue: OctoKitIssue, _payload: WebhookPayload): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onMilestoned(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onCommented(_issue: OctoKitIssue, _comment: string, _actor: string): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,165 +1,183 @@
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ActionBase = void 0;
|
||||
class ActionBase {
|
||||
constructor(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
|
||||
this.labels = labels;
|
||||
this.milestoneName = milestoneName;
|
||||
this.milestoneId = milestoneId;
|
||||
this.ignoreLabels = ignoreLabels;
|
||||
this.ignoreMilestoneNames = ignoreMilestoneNames;
|
||||
this.ignoreMilestoneIds = ignoreMilestoneIds;
|
||||
this.minimumVotes = minimumVotes;
|
||||
this.maximumVotes = maximumVotes;
|
||||
this.labelsSet = [];
|
||||
this.ignoreLabelsSet = [];
|
||||
this.ignoreMilestoneNamesSet = [];
|
||||
this.ignoreMilestoneIdsSet = [];
|
||||
this.ignoreAllWithLabels = false;
|
||||
this.ignoreAllWithMilestones = false;
|
||||
}
|
||||
buildQuery(baseQuery) {
|
||||
var _a, _b;
|
||||
let query = baseQuery;
|
||||
console.log(`labels: ${this.labels}`);
|
||||
console.log(`milestoneName: ${this.milestoneName}`);
|
||||
console.log(`milestoneId: ${this.milestoneId}`);
|
||||
console.log(`ignoreLabels: ${this.ignoreLabels}`);
|
||||
console.log(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
|
||||
console.log(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
|
||||
console.log(`minimumVotes: ${this.minimumVotes}`);
|
||||
console.log(`maximumVotes: ${this.maximumVotes}`);
|
||||
// Both milestone name and milestone Id must be provided and must match.
|
||||
// The name is used to construct the query, which does not accept ID.
|
||||
// The ID is used for comparisons with issue data, which does not include the name.
|
||||
// TODO: Figure out a way to convert either from milestone name to ID, or vice versa.
|
||||
// If label inclusion and exclusion are mixed, exclusion will take precedence.
|
||||
// For example, an issue with both labels A and B will not match if B is excluded, even if A is included.
|
||||
// If a milestoneName/milestoneId are set, ignoreMilenameName/ignoreMilestoneIds are ignored.
|
||||
// GitHub does not appear to support searching for all issues with milestones (not lacking a milestone). "-no:milestone" does not work.
|
||||
// GitHub does not appear to support searching for all issues with labels (not lacking a label). "-no:label" does not work.
|
||||
// All indicated labels must be present
|
||||
if (this.labels) {
|
||||
this.labelsSet = (_a = this.labels) === null || _a === void 0 ? void 0 : _a.split(',');
|
||||
for (const str of this.labelsSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` label:"${str}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.ignoreLabels) {
|
||||
if (this.ignoreLabels == "*" && !this.labels) { // only if unlabeled
|
||||
query = query.concat(` no:label`);
|
||||
this.ignoreAllWithLabels = true;
|
||||
}
|
||||
else {
|
||||
this.ignoreLabelsSet = (_b = this.ignoreLabels) === null || _b === void 0 ? void 0 : _b.split(',');
|
||||
for (const str of this.ignoreLabelsSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` -label:"${str}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.milestoneName) {
|
||||
query = query.concat(` milestone:"${this.milestoneName}"`);
|
||||
}
|
||||
else if (this.ignoreMilestoneNames) {
|
||||
if (this.ignoreMilestoneNames == "*") {
|
||||
query = query.concat(` no:milestone`);
|
||||
this.ignoreAllWithMilestones = true;
|
||||
}
|
||||
else if (this.ignoreMilestoneIds) {
|
||||
this.ignoreMilestoneNamesSet = this.ignoreMilestoneNames.split(',');
|
||||
this.ignoreMilestoneIdsSet = this.ignoreMilestoneIds.split(',');
|
||||
for (const str of this.ignoreMilestoneNamesSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` -milestone:"${str}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return query;
|
||||
}
|
||||
// This is necessary because GitHub sometimes returns incorrect results,
|
||||
// and because issues may get modified while we are processing them.
|
||||
validateIssue(issue) {
|
||||
if (this.ignoreAllWithLabels) {
|
||||
// Validate that the issue does not have labels
|
||||
if (issue.labels && issue.labels.length !== 0) {
|
||||
console.log(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Make sure all labels we wanted are present.
|
||||
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
|
||||
return false;
|
||||
}
|
||||
for (const str of this.labelsSet) {
|
||||
if (!issue.labels.includes(str)) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having a required label set.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Make sure no labels we wanted to ignore are present.
|
||||
if (issue.labels && issue.labels.length > 0) {
|
||||
for (const str of this.ignoreLabelsSet) {
|
||||
if (issue.labels.includes(str)) {
|
||||
console.log(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.ignoreAllWithMilestones) {
|
||||
// Validate that the issue does not have a milestone.
|
||||
if (issue.milestoneId != null) {
|
||||
console.log(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Make sure milestone is present, if required.
|
||||
if (this.milestoneId != undefined && issue.milestoneId != +this.milestoneId) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestoneId}`);
|
||||
return false;
|
||||
}
|
||||
// Make sure a milestones we wanted to ignore is not present.
|
||||
if (issue.milestoneId != null) {
|
||||
for (const str of this.ignoreMilestoneIdsSet) {
|
||||
if (issue.milestoneId == +str) {
|
||||
console.log(`Issue ${issue.number} skipped due to milestone ${issue.milestoneId} found in list of ignored milestone IDs.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Verify the issue has a sufficient number of upvotes
|
||||
let upvotes = 0;
|
||||
if (issue.reactions) {
|
||||
upvotes = issue.reactions['+1'];
|
||||
}
|
||||
if (this.minimumVotes != undefined) {
|
||||
if (upvotes < this.minimumVotes) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Verify the issue does not have too many upvotes
|
||||
if (this.maximumVotes != undefined) {
|
||||
if (upvotes > this.maximumVotes) {
|
||||
console.log(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
exports.ActionBase = ActionBase;
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ActionBase = void 0;
|
||||
const utils_1 = require("./utils");
|
||||
class ActionBase {
|
||||
constructor(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves) {
|
||||
this.labels = labels;
|
||||
this.milestoneName = milestoneName;
|
||||
this.milestoneId = milestoneId;
|
||||
this.ignoreLabels = ignoreLabels;
|
||||
this.ignoreMilestoneNames = ignoreMilestoneNames;
|
||||
this.ignoreMilestoneIds = ignoreMilestoneIds;
|
||||
this.minimumVotes = minimumVotes;
|
||||
this.maximumVotes = maximumVotes;
|
||||
this.involves = involves;
|
||||
this.labelsSet = [];
|
||||
this.ignoreLabelsSet = [];
|
||||
this.ignoreMilestoneNamesSet = [];
|
||||
this.ignoreMilestoneIdsSet = [];
|
||||
this.ignoreAllWithLabels = false;
|
||||
this.ignoreAllWithMilestones = false;
|
||||
this.involvesSet = [];
|
||||
}
|
||||
buildQuery(baseQuery) {
|
||||
var _a, _b, _c, _d, _e, _f;
|
||||
let query = baseQuery;
|
||||
(0, utils_1.safeLog)(`labels: ${this.labels}`);
|
||||
(0, utils_1.safeLog)(`milestoneName: ${this.milestoneName}`);
|
||||
(0, utils_1.safeLog)(`milestoneId: ${this.milestoneId}`);
|
||||
(0, utils_1.safeLog)(`ignoreLabels: ${this.ignoreLabels}`);
|
||||
(0, utils_1.safeLog)(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
|
||||
(0, utils_1.safeLog)(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
|
||||
(0, utils_1.safeLog)(`minimumVotes: ${this.minimumVotes}`);
|
||||
(0, utils_1.safeLog)(`maximumVotes: ${this.maximumVotes}`);
|
||||
(0, utils_1.safeLog)(`involves: ${this.involves}`);
|
||||
// Both milestone name and milestone Id must be provided and must match.
|
||||
// The name is used to construct the query, which does not accept ID.
|
||||
// The ID is used for comparisons with issue data, which does not include the name.
|
||||
// TODO: Figure out a way to convert either from milestone name to ID, or vice versa.
|
||||
// If label inclusion and exclusion are mixed, exclusion will take precedence.
|
||||
// For example, an issue with both labels A and B will not match if B is excluded, even if A is included.
|
||||
// If a milestoneName/milestoneId are set, ignoreMilenameName/ignoreMilestoneIds are ignored.
|
||||
// GitHub does not appear to support searching for all issues with milestones (not lacking a milestone). "-no:milestone" does not work.
|
||||
// GitHub does not appear to support searching for all issues with labels (not lacking a label). "-no:label" does not work.
|
||||
// All indicated labels must be present
|
||||
if (this.labels) {
|
||||
if (((_a = this.labels) === null || _a === void 0 ? void 0 : _a.length) > 2 && ((_b = this.labels) === null || _b === void 0 ? void 0 : _b.startsWith('"')) && ((_c = this.labels) === null || _c === void 0 ? void 0 : _c.endsWith('"'))) {
|
||||
this.labels = this.labels.substring(1, this.labels.length - 2);
|
||||
}
|
||||
this.labelsSet = (_d = this.labels) === null || _d === void 0 ? void 0 : _d.split(',');
|
||||
for (const str of this.labelsSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` label:"${str}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
// The "involves" qualifier to find issues that in some way involve a certain user.
|
||||
// It is a logical OR between the author, assignee, and mentions.
|
||||
if (this.involves) {
|
||||
this.involvesSet = (_e = this.involves) === null || _e === void 0 ? void 0 : _e.split(',');
|
||||
for (const str of this.involvesSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` involves:"${str}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.ignoreLabels) {
|
||||
if (this.ignoreLabels == "*" && !this.labels) { // only if unlabeled
|
||||
query = query.concat(` no:label`);
|
||||
this.ignoreAllWithLabels = true;
|
||||
}
|
||||
else {
|
||||
this.ignoreLabelsSet = (_f = this.ignoreLabels) === null || _f === void 0 ? void 0 : _f.split(',');
|
||||
for (const str of this.ignoreLabelsSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` -label:"${str}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.milestoneName) {
|
||||
query = query.concat(` milestone:"${this.milestoneName}"`);
|
||||
}
|
||||
else if (this.ignoreMilestoneNames) {
|
||||
if (this.ignoreMilestoneNames == "*") {
|
||||
query = query.concat(` no:milestone`);
|
||||
this.ignoreAllWithMilestones = true;
|
||||
}
|
||||
else if (this.ignoreMilestoneIds) {
|
||||
this.ignoreMilestoneNamesSet = this.ignoreMilestoneNames.split(',');
|
||||
this.ignoreMilestoneIdsSet = this.ignoreMilestoneIds.split(',');
|
||||
for (const str of this.ignoreMilestoneNamesSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` -milestone:"${str}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return query;
|
||||
}
|
||||
// This is necessary because GitHub sometimes returns incorrect results,
|
||||
// and because issues may get modified while we are processing them.
|
||||
validateIssue(issue) {
|
||||
var _a, _b;
|
||||
if (this.ignoreAllWithLabels) {
|
||||
// Validate that the issue does not have labels
|
||||
if (issue.labels && issue.labels.length !== 0) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Make sure all labels we wanted are present.
|
||||
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
|
||||
return false;
|
||||
}
|
||||
for (const str of this.labelsSet) {
|
||||
if (!issue.labels.includes(str)) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having a required label set.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Make sure no labels we wanted to ignore are present.
|
||||
if (issue.labels && issue.labels.length > 0) {
|
||||
for (const str of this.ignoreLabelsSet) {
|
||||
if (issue.labels.includes(str)) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.ignoreAllWithMilestones) {
|
||||
// Validate that the issue does not have a milestone.
|
||||
if (issue.milestone) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Make sure milestone is present, if required.
|
||||
if (this.milestoneId != null && ((_a = issue.milestone) === null || _a === void 0 ? void 0 : _a.milestoneId) != +this.milestoneId) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${(_b = issue.milestone) === null || _b === void 0 ? void 0 : _b.milestoneId}`);
|
||||
return false;
|
||||
}
|
||||
// Make sure a milestones we wanted to ignore is not present.
|
||||
if (issue.milestone && issue.milestone.milestoneId != null) {
|
||||
for (const str of this.ignoreMilestoneIdsSet) {
|
||||
if (issue.milestone.milestoneId == +str) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to milestone ${issue.milestone.milestoneId} found in list of ignored milestone IDs.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Verify the issue has a sufficient number of upvotes
|
||||
let upvotes = 0;
|
||||
if (issue.reactions) {
|
||||
upvotes = issue.reactions['+1'];
|
||||
}
|
||||
if (this.minimumVotes != undefined) {
|
||||
if (upvotes < this.minimumVotes) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Verify the issue does not have too many upvotes
|
||||
if (this.maximumVotes != undefined) {
|
||||
if (upvotes > this.maximumVotes) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
exports.ActionBase = ActionBase;
|
||||
//# sourceMappingURL=ActionBase.js.map
|
||||
@@ -4,6 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Issue } from '../api/api'
|
||||
import { safeLog } from './utils';
|
||||
|
||||
export class ActionBase {
|
||||
constructor(
|
||||
@@ -14,7 +15,8 @@ export class ActionBase {
|
||||
private ignoreMilestoneNames?: string,
|
||||
private ignoreMilestoneIds?: string,
|
||||
private minimumVotes?: number,
|
||||
private maximumVotes?: number
|
||||
private maximumVotes?: number,
|
||||
private involves?: string,
|
||||
) {}
|
||||
|
||||
private labelsSet: string[] = [];
|
||||
@@ -23,18 +25,20 @@ export class ActionBase {
|
||||
private ignoreMilestoneIdsSet: string[] = [];
|
||||
private ignoreAllWithLabels: boolean = false;
|
||||
private ignoreAllWithMilestones: boolean = false;
|
||||
private involvesSet: string[] = [];
|
||||
|
||||
buildQuery(baseQuery: string): string {
|
||||
let query = baseQuery;
|
||||
|
||||
console.log(`labels: ${this.labels}`);
|
||||
console.log(`milestoneName: ${this.milestoneName}`);
|
||||
console.log(`milestoneId: ${this.milestoneId}`);
|
||||
console.log(`ignoreLabels: ${this.ignoreLabels}`);
|
||||
console.log(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
|
||||
console.log(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
|
||||
console.log(`minimumVotes: ${this.minimumVotes}`);
|
||||
console.log(`maximumVotes: ${this.maximumVotes}`);
|
||||
safeLog(`labels: ${this.labels}`);
|
||||
safeLog(`milestoneName: ${this.milestoneName}`);
|
||||
safeLog(`milestoneId: ${this.milestoneId}`);
|
||||
safeLog(`ignoreLabels: ${this.ignoreLabels}`);
|
||||
safeLog(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
|
||||
safeLog(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
|
||||
safeLog(`minimumVotes: ${this.minimumVotes}`);
|
||||
safeLog(`maximumVotes: ${this.maximumVotes}`);
|
||||
safeLog(`involves: ${this.involves}`);
|
||||
|
||||
// Both milestone name and milestone Id must be provided and must match.
|
||||
// The name is used to construct the query, which does not accept ID.
|
||||
@@ -51,10 +55,24 @@ export class ActionBase {
|
||||
|
||||
// All indicated labels must be present
|
||||
if (this.labels) {
|
||||
if (this.labels?.length > 2 && this.labels?.startsWith('"') && this.labels?.endsWith('"')) {
|
||||
this.labels = this.labels.substring(1, this.labels.length - 2);
|
||||
}
|
||||
this.labelsSet = this.labels?.split(',');
|
||||
for (const str of this.labelsSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` label:"${str}"`)
|
||||
query = query.concat(` label:"${str}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The "involves" qualifier to find issues that in some way involve a certain user.
|
||||
// It is a logical OR between the author, assignee, and mentions.
|
||||
if (this.involves) {
|
||||
this.involvesSet = this.involves?.split(',');
|
||||
for (const str of this.involvesSet) {
|
||||
if (str != "") {
|
||||
query = query.concat(` involves:"${str}"`)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -100,18 +118,18 @@ export class ActionBase {
|
||||
if (this.ignoreAllWithLabels) {
|
||||
// Validate that the issue does not have labels
|
||||
if (issue.labels && issue.labels.length !== 0) {
|
||||
console.log(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
|
||||
safeLog(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// Make sure all labels we wanted are present.
|
||||
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
|
||||
safeLog(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
|
||||
return false;
|
||||
}
|
||||
for (const str of this.labelsSet) {
|
||||
if (!issue.labels.includes(str)) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having a required label set.`);
|
||||
safeLog(`Issue ${issue.number} skipped due to not having a required label set.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -119,7 +137,7 @@ export class ActionBase {
|
||||
if (issue.labels && issue.labels.length > 0) {
|
||||
for (const str of this.ignoreLabelsSet) {
|
||||
if (issue.labels.includes(str)) {
|
||||
console.log(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
|
||||
safeLog(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -127,21 +145,21 @@ export class ActionBase {
|
||||
}
|
||||
if (this.ignoreAllWithMilestones) {
|
||||
// Validate that the issue does not have a milestone.
|
||||
if (issue.milestoneId != null) {
|
||||
console.log(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
|
||||
if (issue.milestone) {
|
||||
safeLog(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// Make sure milestone is present, if required.
|
||||
if (this.milestoneId != undefined && issue.milestoneId != +this.milestoneId) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestoneId}`);
|
||||
if (this.milestoneId != null && issue.milestone?.milestoneId != +this.milestoneId) {
|
||||
safeLog(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestone?.milestoneId}`);
|
||||
return false;
|
||||
}
|
||||
// Make sure a milestones we wanted to ignore is not present.
|
||||
if (issue.milestoneId != null) {
|
||||
if (issue.milestone && issue.milestone.milestoneId != null) {
|
||||
for (const str of this.ignoreMilestoneIdsSet) {
|
||||
if (issue.milestoneId == +str) {
|
||||
console.log(`Issue ${issue.number} skipped due to milestone ${issue.milestoneId} found in list of ignored milestone IDs.`);
|
||||
if (issue.milestone.milestoneId == +str) {
|
||||
safeLog(`Issue ${issue.number} skipped due to milestone ${issue.milestone.milestoneId} found in list of ignored milestone IDs.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -154,14 +172,14 @@ export class ActionBase {
|
||||
}
|
||||
if (this.minimumVotes != undefined) {
|
||||
if (upvotes < this.minimumVotes) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
|
||||
safeLog(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Verify the issue does not have too many upvotes
|
||||
if (this.maximumVotes != undefined) {
|
||||
if (upvotes > this.maximumVotes) {
|
||||
console.log(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
|
||||
safeLog(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
//# sourceMappingURL=OctokitTypings.js.map
|
||||
@@ -0,0 +1,16 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import type { RestEndpointMethodTypes } from '@octokit/rest';
|
||||
|
||||
// This file is just to re-export some octokit types as nicer names
|
||||
|
||||
export type ActionsListWorkflowRunsResponseWorkflowRunsItem =
|
||||
RestEndpointMethodTypes['actions']['listWorkflowRuns']['response']['data']['workflow_runs'][0];
|
||||
|
||||
export type IssueGetResponse = RestEndpointMethodTypes['issues']['get']['response']['data'];
|
||||
|
||||
export type IssuesGetResponseMilestone =
|
||||
RestEndpointMethodTypes['issues']['get']['response']['data']['milestone'];
|
||||
@@ -4,14 +4,16 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.logErrorToIssue = exports.errorLoggingIssue = exports.getRateLimit = exports.daysAgoToHumanReadbleDate = exports.daysAgoToTimestamp = exports.loadLatestRelease = exports.normalizeIssue = exports.getRequiredInput = exports.getInput = void 0;
|
||||
exports.safeLog = exports.logErrorToIssue = exports.errorLoggingIssue = exports.getRateLimit = exports.daysAgoToHumanReadbleDate = exports.daysAgoToTimestamp = exports.loadLatestRelease = exports.normalizeIssue = exports.getRequiredInput = exports.getInput = void 0;
|
||||
const core = require("@actions/core");
|
||||
const github_1 = require("@actions/github");
|
||||
const axios_1 = require("axios");
|
||||
const octokit_1 = require("../api/octokit");
|
||||
exports.getInput = (name) => core.getInput(name) || undefined;
|
||||
exports.getRequiredInput = (name) => core.getInput(name, { required: true });
|
||||
exports.normalizeIssue = (issue) => {
|
||||
const getInput = (name) => core.getInput(name) || undefined;
|
||||
exports.getInput = getInput;
|
||||
const getRequiredInput = (name) => core.getInput(name, { required: true });
|
||||
exports.getRequiredInput = getRequiredInput;
|
||||
const normalizeIssue = (issue) => {
|
||||
let { body, title } = issue;
|
||||
body = body !== null && body !== void 0 ? body : '';
|
||||
title = title !== null && title !== void 0 ? title : '';
|
||||
@@ -43,25 +45,36 @@ exports.normalizeIssue = (issue) => {
|
||||
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
|
||||
};
|
||||
};
|
||||
exports.loadLatestRelease = async (quality) => (await axios_1.default.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data;
|
||||
exports.daysAgoToTimestamp = (days) => +new Date(Date.now() - days * 24 * 60 * 60 * 1000);
|
||||
exports.daysAgoToHumanReadbleDate = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
|
||||
exports.getRateLimit = async (token) => {
|
||||
const usageData = (await new github_1.GitHub(token).rateLimit.get()).data.resources;
|
||||
exports.normalizeIssue = normalizeIssue;
|
||||
const loadLatestRelease = async (quality) => (await axios_1.default.get(`https://update.code.visualstudio.com/api/update/darwin/${quality}/latest`)).data;
|
||||
exports.loadLatestRelease = loadLatestRelease;
|
||||
const daysAgoToTimestamp = (days) => +new Date(Date.now() - days * 24 * 60 * 60 * 1000);
|
||||
exports.daysAgoToTimestamp = daysAgoToTimestamp;
|
||||
const daysAgoToHumanReadbleDate = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
|
||||
exports.daysAgoToHumanReadbleDate = daysAgoToHumanReadbleDate;
|
||||
const getRateLimit = async (token) => {
|
||||
const usageData = (await (0, github_1.getOctokit)(token).rest.rateLimit.get()).data.resources;
|
||||
const usage = {};
|
||||
['core', 'graphql', 'search'].forEach(async (category) => {
|
||||
usage[category] = 1 - usageData[category].remaining / usageData[category].limit;
|
||||
var _a, _b, _c, _d;
|
||||
if (usageData[category]) {
|
||||
usage[category] = 1 - ((_b = (_a = usageData[category]) === null || _a === void 0 ? void 0 : _a.remaining) !== null && _b !== void 0 ? _b : 0) / ((_d = (_c = usageData[category]) === null || _c === void 0 ? void 0 : _c.limit) !== null && _d !== void 0 ? _d : 1);
|
||||
}
|
||||
});
|
||||
return usage;
|
||||
};
|
||||
exports.getRateLimit = getRateLimit;
|
||||
exports.errorLoggingIssue = (() => {
|
||||
try {
|
||||
const repo = github_1.context.repo.owner.toLowerCase() + '/' + github_1.context.repo.repo.toLowerCase();
|
||||
if (repo === 'microsoft/vscode-cpptools') {
|
||||
return { repo: 'vscode-cpptools', owner: 'Microsoft', issue: 6282 };
|
||||
if (repo === 'microsoft/vscode' || repo === 'microsoft/vscode-remote-release') {
|
||||
return { repo: 'vscode', owner: 'Microsoft', issue: 93814 };
|
||||
}
|
||||
else if (exports.getInput('errorLogIssueNumber')) {
|
||||
return { ...github_1.context.repo, issue: +exports.getRequiredInput('errorLogIssueNumber') };
|
||||
else if (/microsoft\//.test(repo)) {
|
||||
return { repo: 'vscode-internalbacklog', owner: 'Microsoft', issue: 974 };
|
||||
}
|
||||
else if ((0, exports.getInput)('errorLogIssueNumber')) {
|
||||
return { ...github_1.context.repo, issue: +(0, exports.getRequiredInput)('errorLogIssueNumber') };
|
||||
}
|
||||
else {
|
||||
return undefined;
|
||||
@@ -72,19 +85,20 @@ exports.errorLoggingIssue = (() => {
|
||||
return undefined;
|
||||
}
|
||||
})();
|
||||
exports.logErrorToIssue = async (message, ping, token) => {
|
||||
const logErrorToIssue = async (message, ping, token) => {
|
||||
var _a;
|
||||
// Attempt to wait out abuse detection timeout if present
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
const dest = exports.errorLoggingIssue;
|
||||
if (!dest)
|
||||
return console.log('no error logging repo defined. swallowing error:', message);
|
||||
return new octokit_1.OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!exports.getInput('readonly') })
|
||||
return console.log('no error logging repo defined. swallowing error.');
|
||||
return new octokit_1.OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue })
|
||||
.postComment(`
|
||||
Workflow: ${github_1.context.workflow}
|
||||
|
||||
Error: ${message}
|
||||
|
||||
Issue: ${ping ? `${github_1.context.repo.owner}/${github_1.context.repo.repo}#` : ''}${github_1.context.issue.number}
|
||||
Issue: ${ping ? `${github_1.context.repo.owner}/${github_1.context.repo.repo}#` : ''}${(_a = github_1.context.issue) === null || _a === void 0 ? void 0 : _a.number}
|
||||
|
||||
Repo: ${github_1.context.repo.owner}/${github_1.context.repo.repo}
|
||||
|
||||
@@ -96,4 +110,10 @@ ${JSON.stringify(github_1.context, null, 2)
|
||||
-->
|
||||
`);
|
||||
};
|
||||
exports.logErrorToIssue = logErrorToIssue;
|
||||
const safeLog = (message, ...args) => {
|
||||
const clean = (val) => ('' + val).replace(/:|#/g, '');
|
||||
console.log(clean(message), ...args.map(clean));
|
||||
};
|
||||
exports.safeLog = safeLog;
|
||||
//# sourceMappingURL=utils.js.map
|
||||
@@ -3,24 +3,24 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as core from '@actions/core'
|
||||
import { context, GitHub } from '@actions/github'
|
||||
import axios from 'axios'
|
||||
import { OctoKitIssue } from '../api/octokit'
|
||||
import * as core from '@actions/core';
|
||||
import { context, getOctokit } from '@actions/github';
|
||||
import axios from 'axios';
|
||||
import { OctoKitIssue } from '../api/octokit';
|
||||
|
||||
export const getInput = (name: string) => core.getInput(name) || undefined
|
||||
export const getRequiredInput = (name: string) => core.getInput(name, { required: true })
|
||||
export const getInput = (name: string) => core.getInput(name) || undefined;
|
||||
export const getRequiredInput = (name: string) => core.getInput(name, { required: true });
|
||||
|
||||
export const normalizeIssue = (issue: {
|
||||
body: string
|
||||
title: string
|
||||
body: string;
|
||||
title: string;
|
||||
}): { body: string; title: string; issueType: 'bug' | 'feature_request' | 'unknown' } => {
|
||||
let { body, title } = issue
|
||||
body = body ?? ''
|
||||
title = title ?? ''
|
||||
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body)
|
||||
let { body, title } = issue;
|
||||
body = body ?? '';
|
||||
title = title ?? '';
|
||||
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body);
|
||||
const isFeatureRequest =
|
||||
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body)
|
||||
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body);
|
||||
|
||||
const cleanse = (str: string) => {
|
||||
let out = str
|
||||
@@ -34,78 +34,83 @@ export const normalizeIssue = (issue: {
|
||||
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
|
||||
.replace(/!?\[[^\]]*\]\([^)]*\)/gu, '')
|
||||
.replace(/\s+/gu, ' ')
|
||||
.replace(/```[^`]*?```/gu, '')
|
||||
.replace(/```[^`]*?```/gu, '');
|
||||
|
||||
while (
|
||||
out.includes(`<details>`) &&
|
||||
out.includes('</details>') &&
|
||||
out.indexOf(`</details>`) > out.indexOf(`<details>`)
|
||||
) {
|
||||
out = out.slice(0, out.indexOf('<details>')) + out.slice(out.indexOf(`</details>`) + 10)
|
||||
out = out.slice(0, out.indexOf('<details>')) + out.slice(out.indexOf(`</details>`) + 10);
|
||||
}
|
||||
|
||||
return out
|
||||
}
|
||||
return out;
|
||||
};
|
||||
|
||||
return {
|
||||
body: cleanse(body),
|
||||
title: cleanse(title),
|
||||
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
export interface Release {
|
||||
productVersion: string
|
||||
timestamp: number
|
||||
version: string
|
||||
productVersion: string;
|
||||
timestamp: number;
|
||||
version: string;
|
||||
}
|
||||
|
||||
export const loadLatestRelease = async (quality: 'stable' | 'insider'): Promise<Release | undefined> =>
|
||||
(await axios.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data
|
||||
(await axios.get(`https://update.code.visualstudio.com/api/update/darwin/${quality}/latest`)).data;
|
||||
|
||||
export const daysAgoToTimestamp = (days: number): number => +new Date(Date.now() - days * 24 * 60 * 60 * 1000)
|
||||
export const daysAgoToTimestamp = (days: number): number =>
|
||||
+new Date(Date.now() - days * 24 * 60 * 60 * 1000);
|
||||
|
||||
export const daysAgoToHumanReadbleDate = (days: number) =>
|
||||
new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '')
|
||||
new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
|
||||
|
||||
export const getRateLimit = async (token: string) => {
|
||||
const usageData = (await new GitHub(token).rateLimit.get()).data.resources
|
||||
const usage = {} as { core: number; graphql: number; search: number }
|
||||
;(['core', 'graphql', 'search'] as const).forEach(async (category) => {
|
||||
usage[category] = 1 - usageData[category].remaining / usageData[category].limit
|
||||
})
|
||||
return usage
|
||||
}
|
||||
const usageData = (await getOctokit(token).rest.rateLimit.get()).data.resources;
|
||||
const usage = {} as { core: number; graphql: number; search: number };
|
||||
(['core', 'graphql', 'search'] as const).forEach(async (category) => {
|
||||
if (usageData[category]) {
|
||||
usage[category] = 1 - (usageData[category]?.remaining ?? 0) / (usageData[category]?.limit ?? 1);
|
||||
}
|
||||
});
|
||||
return usage;
|
||||
};
|
||||
|
||||
export const errorLoggingIssue = (() => {
|
||||
try {
|
||||
const repo = context.repo.owner.toLowerCase() + '/' + context.repo.repo.toLowerCase()
|
||||
if (repo === 'microsoft/vscode-cpptools') {
|
||||
return { repo: 'vscode-cpptools', owner: 'Microsoft', issue: 6282 }
|
||||
const repo = context.repo.owner.toLowerCase() + '/' + context.repo.repo.toLowerCase();
|
||||
if (repo === 'microsoft/vscode' || repo === 'microsoft/vscode-remote-release') {
|
||||
return { repo: 'vscode', owner: 'Microsoft', issue: 93814 };
|
||||
} else if (/microsoft\//.test(repo)) {
|
||||
return { repo: 'vscode-internalbacklog', owner: 'Microsoft', issue: 974 };
|
||||
} else if (getInput('errorLogIssueNumber')) {
|
||||
return { ...context.repo, issue: +getRequiredInput('errorLogIssueNumber') }
|
||||
return { ...context.repo, issue: +getRequiredInput('errorLogIssueNumber') };
|
||||
} else {
|
||||
return undefined
|
||||
return undefined;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
return undefined
|
||||
console.error(e);
|
||||
return undefined;
|
||||
}
|
||||
})()
|
||||
})();
|
||||
|
||||
export const logErrorToIssue = async (message: string, ping: boolean, token: string): Promise<void> => {
|
||||
// Attempt to wait out abuse detection timeout if present
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000))
|
||||
const dest = errorLoggingIssue
|
||||
if (!dest) return console.log('no error logging repo defined. swallowing error:', message)
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
const dest = errorLoggingIssue;
|
||||
if (!dest) return console.log('no error logging repo defined. swallowing error.');
|
||||
|
||||
return new OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!getInput('readonly') })
|
||||
return new OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue })
|
||||
.postComment(`
|
||||
Workflow: ${context.workflow}
|
||||
|
||||
Error: ${message}
|
||||
|
||||
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue.number}
|
||||
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue?.number}
|
||||
|
||||
Repo: ${context.repo.owner}/${context.repo.repo}
|
||||
|
||||
@@ -115,5 +120,10 @@ ${JSON.stringify(context, null, 2)
|
||||
.replace(/-->/gu, '--@>')
|
||||
.replace(/\/|\\/gu, 'slash-')}
|
||||
-->
|
||||
`)
|
||||
}
|
||||
`);
|
||||
};
|
||||
|
||||
export const safeLog = (message: string, ...args: (string | number | string[])[]): void => {
|
||||
const clean = (val: any) => ('' + val).replace(/:|#/g, '');
|
||||
console.log(clean(message), ...args.map(clean));
|
||||
};
|
||||
|
||||
Generated
+6370
-796
File diff suppressed because it is too large
Load Diff
@@ -10,12 +10,36 @@
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/github": "^2.1.1",
|
||||
"axios": "^0.19.2"
|
||||
"@actions/core": "^1.9.1",
|
||||
"@actions/github": "^5.0.3",
|
||||
"@octokit/rest": "^19.0.3",
|
||||
"@slack/web-api": "^6.7.2",
|
||||
"applicationinsights": "^2.5.1",
|
||||
"axios": "^0.27.2",
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^6.8.0",
|
||||
"typescript": "^3.8.3"
|
||||
"@azure/storage-blob": "^12.13.0",
|
||||
"@types/chai": "^4.3.3",
|
||||
"@types/mocha": "^9.1.1",
|
||||
"@types/uuid": "^8.3.4",
|
||||
"@types/yargs": "^17.0.11",
|
||||
"@typescript-eslint/eslint-plugin": "^5.33.0",
|
||||
"@typescript-eslint/parser": "^5.33.0",
|
||||
"chai": "^4.3.6",
|
||||
"eslint": "^8.21.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"husky": "^8.0.1",
|
||||
"mocha": "^10.0.0",
|
||||
"mongodb": "^4.8.1",
|
||||
"nock": "^13.2.9",
|
||||
"prettier": "2.7.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^4.7.4",
|
||||
"yargs": "^17.5.1"
|
||||
},
|
||||
"resolutions": {
|
||||
"minimatch": "^3.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"moduleResolution": "node",
|
||||
"removeComments": false,
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"sourceMap": true,
|
||||
"lib": [
|
||||
"es2020"
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
name: By Design closer - debugger
|
||||
on:
|
||||
schedule:
|
||||
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v3
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
uses: ./.github/actions/StaleCloser
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
labels: by design,debugger
|
||||
ignoreLabels: language service,internal
|
||||
closeDays: 0
|
||||
closeComment: "This issue has been closed because the described behavior was determined to be by design."
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -23,6 +23,6 @@ jobs:
|
||||
labels: by design
|
||||
ignoreLabels: debugger,Feature Request,more info needed,internal
|
||||
closeDays: 60
|
||||
closeComment: "This issue has been closed automatically because it's labeled as 'by design' and has not had recent activity."
|
||||
closeComment: "This issue has been closed because the described behavior was determined to be by design."
|
||||
pingDays: 80
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if it is no longer relevant."
|
||||
|
||||
@@ -2,38 +2,30 @@ name: CI (Linux)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Use Node.js 10.16.x
|
||||
uses: actions/setup-node@v1
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 10.16.x
|
||||
node-version: 16
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn install
|
||||
working-directory: Extension
|
||||
|
||||
- name: Generate hashes for runtime dependency packages
|
||||
run: yarn run generatePackageHashes
|
||||
working-directory: Extension
|
||||
|
||||
- name: Compile Sources
|
||||
run: yarn run compile
|
||||
working-directory: Extension
|
||||
|
||||
- name: Validate Extension/package.json
|
||||
run: yarn run pr-check
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run Linter
|
||||
run: yarn run lint
|
||||
working-directory: Extension
|
||||
@@ -43,13 +35,13 @@ jobs:
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run unit tests
|
||||
uses: GabrielBB/xvfb-action@v1.4
|
||||
uses: GabrielBB/xvfb-action@v1.6
|
||||
with:
|
||||
run: yarn run unitTests
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run languageServer integration tests
|
||||
uses: GabrielBB/xvfb-action@v1.4
|
||||
with:
|
||||
run: yarn run integrationTests
|
||||
working-directory: Extension
|
||||
# - name: Run languageServer integration tests
|
||||
# uses: GabrielBB/xvfb-action@v1.6
|
||||
# with:
|
||||
# run: yarn run integrationTests
|
||||
# working-directory: Extension
|
||||
|
||||
@@ -2,38 +2,30 @@ name: CI (Mac)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Use Node.js 10.16.x
|
||||
uses: actions/setup-node@v1
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 10.16.x
|
||||
node-version: 16
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn install
|
||||
working-directory: Extension
|
||||
|
||||
- name: Generate hashes for runtime dependency packages
|
||||
run: yarn run generatePackageHashes
|
||||
run: yarn install --network-timeout 100000
|
||||
working-directory: Extension
|
||||
|
||||
- name: Compile Sources
|
||||
run: yarn run compile
|
||||
working-directory: Extension
|
||||
|
||||
- name: Validate Extension/package.json
|
||||
run: yarn run pr-check
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run Linter
|
||||
run: yarn run lint
|
||||
working-directory: Extension
|
||||
@@ -43,13 +35,13 @@ jobs:
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run unit tests
|
||||
uses: GabrielBB/xvfb-action@v1.4
|
||||
uses: GabrielBB/xvfb-action@v1.6
|
||||
with:
|
||||
run: yarn run unitTests
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run languageServer integration tests
|
||||
uses: GabrielBB/xvfb-action@v1.4
|
||||
with:
|
||||
run: yarn run integrationTests
|
||||
working-directory: Extension
|
||||
# - name: Run languageServer integration tests
|
||||
# uses: GabrielBB/xvfb-action@v1.6
|
||||
# with:
|
||||
# run: yarn run integrationTests
|
||||
# working-directory: Extension
|
||||
|
||||
@@ -2,38 +2,30 @@ name: CI (Windows)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Use Node.js 10.16.x
|
||||
uses: actions/setup-node@v1
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 10.16.x
|
||||
node-version: 16
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn install
|
||||
working-directory: Extension
|
||||
|
||||
- name: Generate hashes for runtime dependency packages
|
||||
run: yarn run generatePackageHashes
|
||||
working-directory: Extension
|
||||
|
||||
- name: Compile Sources
|
||||
run: yarn run compile
|
||||
working-directory: Extension
|
||||
|
||||
- name: Validate Extension/package.json
|
||||
run: yarn run pr-check
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run Linter
|
||||
run: yarn run lint
|
||||
working-directory: Extension
|
||||
@@ -46,6 +38,6 @@ jobs:
|
||||
run: yarn run unitTests
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run languageServer integration tests
|
||||
run: yarn run integrationTests
|
||||
working-directory: Extension
|
||||
# - name: Run languageServer integration tests
|
||||
# run: yarn run integrationTests
|
||||
# working-directory: Extension
|
||||
|
||||
@@ -23,6 +23,6 @@ jobs:
|
||||
labels: duplicate
|
||||
ignoreLabels: debugger,Feature Request,more info needed,by design,internal
|
||||
closeDays: 60
|
||||
closeComment: "This issue has been closed automatically because it's labeled as a 'duplicate' and has not had recent activity."
|
||||
closeComment: "This issue has been closed because it is a duplicate of another issue we are tracking."
|
||||
pingDays: 80
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if it is no longer relevant."
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
name: Enhancement Closer (no milestone)
|
||||
on:
|
||||
schedule:
|
||||
- cron: 50 11 * * * # Run at 11:50 AM UTC (3:50 AM PST, 4:50 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
uses: ./.github/actions/StaleCloser
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
labels: enhancement
|
||||
ignoreLabels: debugger,internal,Feature Request
|
||||
addLabels: more votes needed
|
||||
closeDays: 60
|
||||
maximumVotes: 2
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. Please leave a 👍-upvote or 👎-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
setMilestoneId: 30
|
||||
ignoreMilestoneNames: "*"
|
||||
@@ -0,0 +1,30 @@
|
||||
name: Enhancement Closer (Triage)
|
||||
on:
|
||||
schedule:
|
||||
- cron: 40 11 * * * # Run at 11:40 AM UTC (3:40 AM PST, 4:40 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
uses: ./.github/actions/StaleCloser
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
labels: enhancement
|
||||
ignoreLabels: debugger,internal,Feature Request
|
||||
addLabels: more votes needed
|
||||
closeDays: 60
|
||||
maximumVotes: 2
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. Please leave a 👍-upvote or 👎-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
milestoneName: Triage
|
||||
milestoneId: 30
|
||||
@@ -0,0 +1,31 @@
|
||||
name: Enhancement Reopener
|
||||
on:
|
||||
schedule:
|
||||
- cron: 20 12 * * * # Run at 12:20 PM UTC (4:20 AM PST, 5:20 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Run Reopener
|
||||
uses: ./.github/actions/Reopener
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
alsoApplyToOpenIssues: true
|
||||
reopenComment: This feature request has received enough votes to be added to our backlog.
|
||||
labels: enhancement
|
||||
minimumVotes: 3
|
||||
ignoreLabels: debugger,internal,Feature Request
|
||||
milestoneId: 30
|
||||
milestoneName: Triage
|
||||
setMilestoneId: 28
|
||||
removeLabels: more votes needed
|
||||
@@ -0,0 +1,26 @@
|
||||
name: External closer - debugger
|
||||
on:
|
||||
schedule:
|
||||
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
uses: ./.github/actions/StaleCloser
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
labels: external,debugger
|
||||
ignoreLabels: language service,internal
|
||||
closeDays: 0
|
||||
closeComment: "This issue has been closed because it is external or not applicable to the extension."
|
||||
@@ -25,6 +25,6 @@ jobs:
|
||||
addLabels: more votes needed
|
||||
closeDays: 60
|
||||
maximumVotes: 2
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. Please leave a 👍-upvote or 👎-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
setMilestoneId: 30
|
||||
ignoreMilestoneNames: "*"
|
||||
|
||||
@@ -25,6 +25,6 @@ jobs:
|
||||
addLabels: more votes needed
|
||||
closeDays: 60
|
||||
maximumVotes: 2
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. Please leave a 👍-upvote or 👎-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
milestoneName: Triage
|
||||
milestoneId: 30
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
name: Investigate closer - debugger
|
||||
on:
|
||||
schedule:
|
||||
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
uses: ./.github/actions/StaleCloser
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
labels: investigate,debugger
|
||||
ignoreLabels: language service,internal
|
||||
closeDays: 180
|
||||
closeComment: "This issue has been closed as lower priority. We're sorry if this issue still impacts you but unfortunately we're not able to address this. We will accept a pull request from the community if it's applicable for this issue."
|
||||
@@ -0,0 +1,26 @@
|
||||
name: Investigate Costing closer - debugger
|
||||
on:
|
||||
schedule:
|
||||
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
uses: ./.github/actions/StaleCloser
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
labels: "investigate: costing,debugger"
|
||||
ignoreLabels: language service,internal
|
||||
closeDays: 180
|
||||
closeComment: "This issue has been closed as lower priority. We're sorry if this issue still impacts you but unfortunately we're not able to address this. We will accept a pull request from the community if it's applicable for this issue."
|
||||
@@ -0,0 +1,29 @@
|
||||
name: More Info Needed Closer - debugger
|
||||
on:
|
||||
schedule:
|
||||
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
uses: ./.github/actions/StaleCloser
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
labels: more info needed,debugger
|
||||
ignoreLabels: language service,internal
|
||||
involves: wardengnaw,pieandcakes,calgagi
|
||||
closeDays: 14
|
||||
closeComment: "This issue has been closed because it needs more information and has not had recent activity."
|
||||
pingDays: 7
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
|
||||
@@ -23,6 +23,6 @@ jobs:
|
||||
labels: more info needed
|
||||
ignoreLabels: debugger,internal
|
||||
closeDays: 60
|
||||
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity."
|
||||
closeComment: "This issue has been closed because it needs more information and has not had recent activity."
|
||||
pingDays: 80
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
name: Question Closer - debugger
|
||||
on:
|
||||
schedule:
|
||||
- cron: 20 11 * * * # Run at 11:20 AM UTC (3:20 AM PST, 4:20 AM PDT)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
readonly:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
uses: ./.github/actions/StaleCloser
|
||||
with:
|
||||
readonly: ${{ github.event.inputs.readonly }}
|
||||
labels: question,debugger
|
||||
ignoreLabels: language service,internal
|
||||
involves: wardengnaw,pieandcakes,calgagi
|
||||
closeDays: 14
|
||||
closeComment: "This issue has been closed because it is a question and has not had recent activity."
|
||||
pingDays: 7
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the question has been answered."
|
||||
@@ -23,6 +23,6 @@ jobs:
|
||||
labels: question
|
||||
ignoreLabels: debugger,internal
|
||||
closeDays: 60
|
||||
closeComment: "This issue has been closed automatically because it's labeled as a 'question' and has not had recent activity."
|
||||
closeComment: "This issue has been closed because it is a question and has not had recent activity."
|
||||
pingDays: 80
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the question has been answered."
|
||||
|
||||
+3
-1
@@ -6,8 +6,10 @@ browse*.db*
|
||||
*.exe
|
||||
*.ilk
|
||||
|
||||
# ignore exported localization xlf directory
|
||||
# ignore exported localization xlf and LCL directories
|
||||
Build/loc/LCL
|
||||
vscode-extensions-localization-export
|
||||
OneLocBuild
|
||||
|
||||
# ignore imported localization xlf directory
|
||||
vscode-translations-import
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
This folder contains the entitlements needed for the debugger to run on macOS.
|
||||
|
||||
We use the entitlements that the .net runtime uses. See https://github.com/dotnet/runtime/blob/57678512d214af368ff055f358c5106f1aa19ac4/eng/pipelines/common/entitlements.plist
|
||||
|
||||
Related Links:
|
||||
https://docs.microsoft.com/en-us/dotnet/core/install/macos-notarization-issues#default-entitlements
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.cs.allow-jit</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.debugger</key>
|
||||
<true/>
|
||||
<key>com.apple.security.get-task-allow</key>
|
||||
<true/>
|
||||
<key>com.apple.security.task_for_pid-allow</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
parameters:
|
||||
archs: ["x86_64", "arm64"]
|
||||
|
||||
jobs:
|
||||
- job:
|
||||
pool:
|
||||
name: VSEngSS-MicroBuild2022-1ES
|
||||
steps:
|
||||
- checkout: none
|
||||
|
||||
- ${{ each arch in parameters.archs }}:
|
||||
- task: DownloadPipelineArtifact@1
|
||||
displayName: 'Downloading unsigned_lldb-mi_${{ arch }}'
|
||||
inputs:
|
||||
targetPath: '$(Pipeline.Workspace)/Artifacts'
|
||||
artifactName: 'unsigned_lldb-mi_${{ arch }}'
|
||||
|
||||
- task: MicroBuildSignMacFiles@1
|
||||
displayName: 'ESRP Sign'
|
||||
inputs:
|
||||
SigningTarget: '$(Pipeline.Workspace)\Artifacts\lldb-mi_${{ arch }}.zip'
|
||||
SigningCert: 8023
|
||||
|
||||
- task: PublishPipelineArtifact@1
|
||||
displayName: 'Publish signed LLDB-MI'
|
||||
inputs:
|
||||
targetPath: '$(Pipeline.Workspace)\Artifacts\lldb-mi_${{ arch }}.zip'
|
||||
artifactName: 'lldb-mi_${{ arch }}_zip'
|
||||
...
|
||||
@@ -0,0 +1,160 @@
|
||||
parameters:
|
||||
# Note: Make sure llvm_repo is the same as the one in Extension/cgmanifest.json
|
||||
# 'RepositoryUrl' for llvm-project.
|
||||
llvm_repo: https://github.com/llvm/llvm-project.git
|
||||
|
||||
# Note: Make sure llvm_commit is the same as the one in Extension/cgmanifest.json
|
||||
# 'CommitHash' for llvm-project.
|
||||
llvm_commit: 0d44201451f03ba907cdb268ddddfc3fa38a0ebd
|
||||
|
||||
llvm_build_type: Release
|
||||
|
||||
llvm_arch: x86_64
|
||||
|
||||
llvm_additional_parameters: "-DLLDB_USE_SYSTEM_DEBUGSERVER=ON -DLLDB_RELOCATABLE_PYTHON=1 -DLLDB_INCLUDE_TESTS=OFF -DLLDB_BUILD_FRAMEWORK=1"
|
||||
|
||||
# Note: Make sure lldb_mi_repo is the same as the one in Extension/cgmanifest.json
|
||||
# 'CommitHash' for lldb-mi.
|
||||
lldb_mi_repo: https://github.com/lldb-tools/lldb-mi.git
|
||||
|
||||
# Note: Make sure lldb_mi_commit is the same as the one in Extension/cgmanifest.json
|
||||
# 'CommitHash' for lldb-mi.
|
||||
lldb_mi_commit: 2388bd74133bc21eac59b2e2bf97f2a30770a315
|
||||
|
||||
lldb_mi_additional_parameters: "-DUSE_LLDB_FRAMEWORK=1"
|
||||
|
||||
jobs:
|
||||
- job: LLDB_MI_${{ parameters.llvm_arch }}
|
||||
timeoutInMinutes: 360
|
||||
pool:
|
||||
${{if eq(parameters['llvm_arch'], 'arm64')}}:
|
||||
name: cpptoolsMacM1pool
|
||||
${{ else }}:
|
||||
vmImage: macOS-latest
|
||||
steps:
|
||||
- task: CmdLine@2
|
||||
displayName: 'Install Dependencies'
|
||||
inputs:
|
||||
script: brew install cmake ninja swig
|
||||
continueOnError: true
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Make sure buildspace does not exist'
|
||||
inputs:
|
||||
script: rm -rf $(Build.StagingDirectory)/buildspace
|
||||
condition: always()
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Build LLVM Project'
|
||||
inputs:
|
||||
script: |
|
||||
log_and_exec_cmd() {
|
||||
echo "##[command] $1"
|
||||
$1
|
||||
}
|
||||
|
||||
log_and_exec_cmd "sudo rm -rf /Library/Developer/CommandLineTools"
|
||||
log_and_exec_cmd "sudo xcode-select --switch /Applications/XCode.app"
|
||||
|
||||
log_and_exec_cmd "cd $(Build.StagingDirectory)"
|
||||
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace"
|
||||
|
||||
log_and_exec_cmd "git clone ${{ parameters.llvm_repo }} llvm-project"
|
||||
log_and_exec_cmd "cd llvm-project"
|
||||
log_and_exec_cmd "git checkout ${{ parameters.llvm_commit }}"
|
||||
|
||||
log_and_exec_cmd "./lldb/scripts/macos-setup-codesign.sh"
|
||||
|
||||
log_and_exec_cmd "cd .."
|
||||
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-inst"
|
||||
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-build"
|
||||
log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace/llvm-build"
|
||||
|
||||
log_and_exec_cmd "cmake -DLLVM_ENABLE_PROJECTS=clang;lldb -DCMAKE_BUILD_TYPE=${{ parameters.llvm_build_type }} -DCMAKE_INSTALL_PREFIX=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=${{ parameters.llvm_arch }} ${{ parameters.llvm_additional_parameters }} -GNinja $(Build.StagingDirectory)/llvm-project/llvm"
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "##[error] cmake llvm failed"
|
||||
cat $(Build.SourcesDirectory)/buildspace/llvm-build/CMakeFiles/CMakeError.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_and_exec_cmd ninja
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "##[error] ninja failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
### Workaround for https://github.com/llvm/llvm-project/issues/108
|
||||
log_and_exec_cmd "ninja install"
|
||||
|
||||
# Remove conflicting LLDB.framework file.
|
||||
log_and_exec_cmd "rm -rf $(Build.StagingDirectory)/buildspace/llvm-inst/Library/Frameworks/LLDB.framework"
|
||||
|
||||
# Build lldb/sources/API first
|
||||
log_and_exec_cmd "cmake -P $(Build.StagingDirectory)/buildspace/llvm-build/tools/lldb/source/API/cmake_install.cmake"
|
||||
### End of Workaround
|
||||
|
||||
log_and_exec_cmd "ninja install"
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "##[error] ninja install failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "##[section] Build LLDB-MI"
|
||||
# Download lldb-mi and build it against our custom installation.
|
||||
log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace"
|
||||
log_and_exec_cmd "git clone ${{ parameters.lldb_mi_repo }} lldb-mi"
|
||||
log_and_exec_cmd "cd lldb-mi"
|
||||
log_and_exec_cmd "git checkout ${{ parameters.lldb_mi_commit }}"
|
||||
|
||||
# Create a separate build directory for building lldb-mi.
|
||||
log_and_exec_cmd "mkdir build"
|
||||
log_and_exec_cmd "cd build"
|
||||
log_and_exec_cmd "cmake -DCMAKE_PREFIX_PATH=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=${{ parameters.llvm_arch }} ${{ parameters.lldb_mi_additional_parameters }} -GNinja .."
|
||||
log_and_exec_cmd "ninja"
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "##[error] ninja failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/publish"
|
||||
log_and_exec_cmd "cd $(Build.StagingDirectory)/publish"
|
||||
|
||||
log_and_exec_cmd "mkdir -p ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin"
|
||||
|
||||
log_and_exec_cmd "cp $(Build.StagingDirectory)/buildspace/lldb-mi/build/src/lldb-mi ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/."
|
||||
|
||||
# Set rpath for finding LLDB.Framework
|
||||
log_and_exec_cmd "install_name_tool -add_rpath @rpath/LLDB.framework/Versions/A/LLDB ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
|
||||
|
||||
# Set rpath for App Store XCode LLDB.Framework
|
||||
log_and_exec_cmd "install_name_tool -add_rpath /Applications/Xcode.app/Contents/SharedFrameworks/ ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
|
||||
|
||||
# Set rpath for XCode CLI LLDB.Framework
|
||||
log_and_exec_cmd "install_name_tool -add_rpath /Library/Developer/CommandLineTools/Library/PrivateFrameworks/ ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
|
||||
|
||||
# Set rpath next to the lldb-mi executable LLDB.Framework
|
||||
log_and_exec_cmd "install_name_tool -add_rpath @executable_path/. ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
|
||||
|
||||
# Add entitlements
|
||||
log_and_exec_cmd "codesign -s - -f --entitlements $(Build.SourcesDirectory)/Build/lldb-mi/debugger-entitlements.plist ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
|
||||
|
||||
# Grab NOTICE.TXT
|
||||
cp $(Build.SourcesDirectory)/Build/lldb-mi/NOTICE.TXT ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/.
|
||||
|
||||
zip -r $(Build.StagingDirectory)/lldb-mi_${{ parameters.llvm_arch }}.zip ./debugAdapters
|
||||
|
||||
- task: PublishPipelineArtifact@1
|
||||
displayName: 'Publish LLDB-MI'
|
||||
inputs:
|
||||
targetPath: '$(Build.StagingDirectory)/lldb-mi_${{ parameters.llvm_arch }}.zip'
|
||||
artifactName: 'unsigned_lldb-mi_${{ parameters.llvm_arch }}'
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Clean up'
|
||||
inputs:
|
||||
script: rm -rf $(Build.StagingDirectory)/buildspace
|
||||
condition: always()
|
||||
+21
-123
@@ -1,125 +1,23 @@
|
||||
variables:
|
||||
llvm_repo: https://github.com/llvm/llvm-project.git
|
||||
llvm_branch: release/10.x
|
||||
llvm_build_type: Release
|
||||
llvm_arch: x86_64
|
||||
llvm_additional_parameters: "-DLLDB_RELOCATABLE_PYTHON=1 -DLLDB_INCLUDE_TESTS=OFF -DLLDB_BUILD_FRAMEWORK=1"
|
||||
# TODO: fix lldb_mi_repo and lldb_mi_branch (https://github.com/lldb-tools/lldb-mi/pull/37 and https://github.com/lldb-tools/lldb-mi/pull/39)
|
||||
lldb_mi_repo: https://github.com/WardenGnaw/lldb-mi # TODO: Change to lldb-tools
|
||||
lldb_mi_branch: release/cpptools # TODO: Change to master
|
||||
lldb_mi_additional_parameters: "-DUSE_LLDB_FRAMEWORK=1"
|
||||
parameters:
|
||||
- name: Build_Type
|
||||
displayName: Build Type
|
||||
type: string
|
||||
default: Release
|
||||
|
||||
jobs:
|
||||
- job: LLDB_MI
|
||||
timeoutInMinutes: 360
|
||||
pool:
|
||||
vmImage: 'macOS-latest'
|
||||
steps:
|
||||
- task: CmdLine@2
|
||||
displayName: 'Install Dependencies'
|
||||
inputs:
|
||||
script: brew install cmake ninja swig
|
||||
continueOnError: true
|
||||
stages:
|
||||
- stage: Build
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: lldb-mi.template.yml
|
||||
parameters:
|
||||
llvm_build_type: ${{ parameters.Build_Type }}
|
||||
llvm_arch: x86_64
|
||||
- template: lldb-mi.template.yml
|
||||
parameters:
|
||||
llvm_build_type: ${{ parameters.Build_Type }}
|
||||
llvm_arch: arm64
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Build LLVM Project'
|
||||
inputs:
|
||||
script: |
|
||||
log_and_exec_cmd() {
|
||||
echo "##[command] $1"
|
||||
$1
|
||||
}
|
||||
|
||||
log_and_exec_cmd "cd $(Build.StagingDirectory)"
|
||||
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace"
|
||||
|
||||
log_and_exec_cmd "git clone $(llvm_repo) llvm-project"
|
||||
log_and_exec_cmd "cd llvm-project"
|
||||
log_and_exec_cmd "git checkout $(llvm_branch)"
|
||||
|
||||
log_and_exec_cmd "./lldb/scripts/macos-setup-codesign.sh"
|
||||
|
||||
log_and_exec_cmd "cd .."
|
||||
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-inst"
|
||||
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-build"
|
||||
log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace/llvm-build"
|
||||
|
||||
log_and_exec_cmd "cmake -DLLVM_ENABLE_PROJECTS=clang;lldb -DCMAKE_BUILD_TYPE=$(llvm_build_type) -DCMAKE_INSTALL_PREFIX=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=$(llvm_arch) $(llvm_additional_parameters) -GNinja $(Build.StagingDirectory)/llvm-project/llvm"
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "##[error] cmake llvm failed"
|
||||
cat $(Build.SourcesDirectory)/buildspace/llvm-build/CMakeFiles/CMakeError.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_and_exec_cmd ninja
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "##[error] ninja failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
### Workaround for https://github.com/llvm/llvm-project/issues/108
|
||||
log_and_exec_cmd "ninja install"
|
||||
|
||||
# Remove conflicting LLDB.framework file.
|
||||
log_and_exec_cmd "rm -rf $(Build.StagingDirectory)/buildspace/llvm-inst/Library/Frameworks/LLDB.framework"
|
||||
|
||||
# Build lldb/sources/API first
|
||||
log_and_exec_cmd "cmake -P $(Build.StagingDirectory)/buildspace/llvm-build/tools/lldb/source/API/cmake_install.cmake"
|
||||
### End of Workaround
|
||||
|
||||
log_and_exec_cmd "ninja install"
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "##[error] ninja install failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "##[section] Build LLDB-MI"
|
||||
# Download lldb-mi and build it against our custom installation.
|
||||
log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace"
|
||||
log_and_exec_cmd "git clone $(lldb_mi_repo) lldb-mi"
|
||||
log_and_exec_cmd "cd lldb-mi"
|
||||
log_and_exec_cmd "git checkout $(lldb_mi_branch)"
|
||||
|
||||
# Create a separate build directory for building lldb-mi.
|
||||
log_and_exec_cmd "mkdir build"
|
||||
log_and_exec_cmd "cd build"
|
||||
log_and_exec_cmd "cmake -DCMAKE_PREFIX_PATH=$(Build.StagingDirectory)/buildspace/llvm-inst/ $(lldb_mi_additional_parameters) -GNinja .."
|
||||
log_and_exec_cmd "ninja"
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "##[error] ninja failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/publish"
|
||||
log_and_exec_cmd "cd $(Build.StagingDirectory)/publish"
|
||||
|
||||
log_and_exec_cmd "mkdir -p ./debugAdapters/lldb-mi/bin"
|
||||
|
||||
log_and_exec_cmd "cp $(Build.StagingDirectory)/buildspace/lldb-mi/build/src/lldb-mi ./debugAdapters/lldb-mi/bin/."
|
||||
|
||||
# Set rpath for finding LLDB.Framework
|
||||
log_and_exec_cmd "install_name_tool -add_rpath @rpath/LLDB.framework/Versions/A/LLDB ./debugAdapters/lldb-mi/bin/lldb-mi"
|
||||
|
||||
# Set rpath for App Store XCode LLDB.Framework
|
||||
log_and_exec_cmd "install_name_tool -add_rpath /Applications/Xcode.app/Contents/SharedFrameworks/ ./debugAdapters/lldb-mi/bin/lldb-mi"
|
||||
|
||||
# Set rpath for XCode CLI LLDB.Framework
|
||||
log_and_exec_cmd "install_name_tool -add_rpath /Library/Developer/CommandLineTools/Library/PrivateFrameworks/ ./debugAdapters/lldb-mi/bin/lldb-mi"
|
||||
|
||||
# Set rpath next to the lldb-mi executable LLDB.Framework
|
||||
log_and_exec_cmd "install_name_tool -add_rpath @executable_path/. ./debugAdapters/lldb-mi/bin/lldb-mi"
|
||||
|
||||
# Grab NOTICE.TXT
|
||||
cp $(Build.SourcesDirectory)/Build/lldb-mi/NOTICE.TXT ./debugAdapters/lldb-mi/.
|
||||
|
||||
# Build can be found at https://dev.azure.com/ms/vscode-cpptools/_build?definitionId=313
|
||||
# Click on the build and select 'Artifacts'
|
||||
- task: PublishPipelineArtifact@1
|
||||
displayName: 'Publish LLDB-MI'
|
||||
inputs:
|
||||
targetPath: '$(Build.StagingDirectory)/publish'
|
||||
artifactName: 'lldb-mi'
|
||||
- stage: Signing
|
||||
dependsOn: ["Build"]
|
||||
jobs:
|
||||
- template: lldb-mi-sign.template.yml
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Projects": [
|
||||
{
|
||||
"LanguangeSet": "VS_Main_Languages",
|
||||
"LocItems": [
|
||||
{
|
||||
"SourceFile": "vscode-extensions-localization-export\\vscode-extensions\\vscode-cpptools.xlf",
|
||||
"Languages": "cs;de;es;fr;it;ja;ko;pl;pt-BR;ru;tr;zh-Hans;zh-Hant",
|
||||
"LclFile": "Build\\loc\\LCL\\{Lang}\\vscode-cpptools.xlf.lcl"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
# ==================================================================================
|
||||
# Pipeline for VsCodeExtension-Localization build definition
|
||||
# Runs OneLocBuild task to localize xlf file
|
||||
# ==================================================================================
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: self
|
||||
clean: true
|
||||
|
||||
trigger: none
|
||||
pr: none
|
||||
schedules:
|
||||
- cron: "0 7 * * *"
|
||||
displayName: Daily 7 AM
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
always: true
|
||||
|
||||
pool:
|
||||
name: 'AzurePipelines-EO'
|
||||
demands:
|
||||
- ImageOverride -equals AzurePipelinesWindows2022compliant
|
||||
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '16.x'
|
||||
displayName: 'Install Node.js'
|
||||
|
||||
- task: CmdLine@2
|
||||
inputs:
|
||||
script: 'cd Extension && yarn install'
|
||||
|
||||
- task: CmdLine@2
|
||||
inputs:
|
||||
script: 'cd ./Extension && yarn run translations-export && cd ..'
|
||||
|
||||
- task: OneLocBuild@2
|
||||
env:
|
||||
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
|
||||
inputs:
|
||||
locProj: 'Build/loc/LocProject.json'
|
||||
outDir: '$(Build.ArtifactStagingDirectory)'
|
||||
isCreatePrSelected: false
|
||||
prSourceBranchPrefix: 'locfiles'
|
||||
packageSourceAuth: 'patAuth'
|
||||
patVariable: '$(OneLocBuildPat)'
|
||||
LclSource: lclFilesfromPackage
|
||||
LclPackageId: 'LCL-JUNO-PROD-VCPP'
|
||||
lsBuildXLocPackageVersion: '7.0.30510'
|
||||
|
||||
- task: CmdLine@2
|
||||
inputs:
|
||||
script: 'cd Extension && node ./translations_auto_pr.js microsoft vscode-cpptools csigs $(csigsPat) csigs [email protected] "$(Build.ArtifactStagingDirectory)/loc" vscode-extensions-localization-export/vscode-extensions && cd ..'
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
||||
ArtifactName: 'drop'
|
||||
publishLocation: 'Container'
|
||||
+8
-2
@@ -1,3 +1,9 @@
|
||||
## Microsoft Open Source Code of Conduct
|
||||
# Microsoft Open Source Code of Conduct
|
||||
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact opencode@microsoft.com with any additional questions or comments.
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
|
||||
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
|
||||
- Contact [[email protected]](mailto:[email protected]) with questions or concerns
|
||||
+2
-2
@@ -6,14 +6,14 @@
|
||||
* File an [issue](https://github.com/Microsoft/vscode-cpptools/issues) and a [pull request](https://github.com/Microsoft/vscode-cpptools/pulls) with the change and we will review it.
|
||||
* If the change affects functionality, add a line describing the change to [**CHANGELOG.md**](Extension/CHANGELOG.md).
|
||||
* Try and add a test in [**test/extension.test.ts**](Extension/test/unitTests/extension.test.ts).
|
||||
* Run tests via opening the [**Extension**](https://github.com/Microsoft/vscode-cpptools/tree/master/Extension) folder in Visual Studio Code, selecting the "Launch Tests" configuration in the Debug pane, and choosing "Start Debugging".
|
||||
* Run tests via opening the [**Extension**](https://github.com/Microsoft/vscode-cpptools/tree/main/Extension) folder in Visual Studio Code, selecting the "Launch Tests" configuration in the Debug pane, and choosing "Start Debugging".
|
||||
|
||||
## About the Code
|
||||
|
||||
* Execution starts in the `activate` method in [**main.ts**](Extension/src/main.ts).
|
||||
* `processRuntimeDependencies` handles the downloading and installation of the OS-dependent files. Downloading code exists in [**packageManager.ts**](Extension/src/packageManager.ts).
|
||||
* `downloadCpptoolsJsonPkg` handles the **cpptools.json**, which can be used to enable changes to occur mid-update, such as turning the `intelliSenseEngine` to `"Default"` for a certain percentage of users.
|
||||
* The debugger code is in the [**Debugger**](https://github.com/Microsoft/vscode-cpptools/tree/master/Extension/src/Debugger) folder.
|
||||
* The debugger code is in the [**Debugger**](https://github.com/Microsoft/vscode-cpptools/tree/main/Extension/src/Debugger) folder.
|
||||
* [**LanguageServer/client.ts**](Extension/src/LanguageServer/client.ts) handles various language server functionality.
|
||||
* [**LanguageServer/configurations.ts**](Extension/src/LanguageServer/configurations.ts) handles functionality related to **c_cpp_properties.json**.
|
||||
* [**telemetry.ts**](Extension/src/telemetry.ts): Telemetry data gets sent to either `logLanguageServerEvent` or `logDebuggerEvent`.
|
||||
|
||||
@@ -21,4 +21,4 @@ This option will generate a tasks.json file for you, build your active source fi
|
||||
|
||||
### F5
|
||||
Another way to begin building and debugging your active file is to execute the command by pressing <kbd>F5</kbd>. This method will configure
|
||||
both a tasks.json and launch.json file for you, build your active source file, and then launch the debugger.
|
||||
both a tasks.json and launch.json file for you, build your active source file, and then launch the debugger.
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Fib
|
||||
|
||||
This code sample is to show debugging. Update `launch.json` and `tasks.json` in the `.vscode` folder to use your setup to build and debug.
|
||||
This code sample is to show debugging. Update `launch.json` and `tasks.json` in the `.vscode` folder to use your setup to build and debug.
|
||||
@@ -15,14 +15,14 @@ static int fib(int n){
|
||||
switch (n) {
|
||||
case 0: return 1;
|
||||
case 1: return 1;
|
||||
default: return (fib(n-2) + fib(n-1));
|
||||
}
|
||||
default: return (fib(n-2) + fib(n-1));
|
||||
}
|
||||
}
|
||||
|
||||
void * thread_proc(void* ctx)
|
||||
{
|
||||
int tid = g_tid++;
|
||||
|
||||
|
||||
char thread_name[16];
|
||||
sprintf(thread_name, "Thread %d", tid);
|
||||
#ifdef __APPLE__
|
||||
@@ -30,19 +30,19 @@ void * thread_proc(void* ctx)
|
||||
#else
|
||||
pthread_setname_np(pthread_self(), thread_name);
|
||||
#endif
|
||||
|
||||
|
||||
// Random delay, 0 - 0.5 sec
|
||||
timespec ts;
|
||||
ts.tv_sec = 0;
|
||||
ts.tv_nsec = 500000000 + ((float)rand() / (float)RAND_MAX) * 500000000;
|
||||
nanosleep(&ts, NULL);
|
||||
|
||||
|
||||
volatile int i = 0;
|
||||
while (i <= 30) {
|
||||
std::cout << "Thread " << tid << ": fib(" << i << ") = " << fib(i) << std::endl;
|
||||
i++;
|
||||
nanosleep(&ts, NULL);
|
||||
}
|
||||
|
||||
|
||||
std::cout << thread_name << " exited!" << std::endl;
|
||||
}
|
||||
@@ -10,6 +10,14 @@ Prerequisite steps:
|
||||
* From a command line, run the following commands from the **Extension** folder in the root of the repository:
|
||||
* `yarn install` will install the dependencies needed to build the extension.
|
||||
* **(optional)** `yarn global add vsce` will install `vsce` globally to create a VSIX package that you can install.
|
||||
* **(optional)** Set an environment variable `CPPTOOLS_DEV=1`.
|
||||
* This enables the local developer workflow when testing the debugger, copying dependencies from the **node_modules** folder. Testing the language server does not require this step.
|
||||
* Open the **Extension** folder in Visual Studio Code and press F5. This will launch a VS Code Extension Host window and activate the TypeScript debugger. You can set breakpoints on the extension source code and debug your scenario.
|
||||
* If, after pressing F5, you see the following error in the `[Extension Development Host]` window,
|
||||
> Unable to start the C/C++ language server. IntelliSense features will be disabled. Error: Missing binary at .../vscode-cpptools/Extension/bin/cpptools
|
||||
* Then, you can follow the instructions in this [comment in a discussion about building this extension locally](https://github.com/microsoft/vscode-cpptools/discussions/8745#discussioncomment-2091563).
|
||||
> get the <package.version.number> binaries from installing the extension and then copying the binaries
|
||||
1. To do this, install this extension from the Visual Studio Marketplace and find its location on your device. It might be in a directory like `\\wsl$\Ubuntu\home\hamir\.vscode-server\extensions\ms-vscode.cpptools-<package.version.number>`, for example.
|
||||
2. Next, go to the `bin/` directory of the aforementioned directory, and drag-and-drop, or copy-and-paste, `cpptools` and `cpptools-srv` from `...\extensions\ms-vscode.cpptools-<package.version.number>\bin\` to this repository's `Extension\bin\` directory on your local device, so that `.../vscode-cpptools/Extension/bin/cpptools` and `.../vscode-cpptools/Extension/bin/cpptools-srv` both exist in your workspace.
|
||||
3. The aforementioned warning should be gone, and Intellisense, which gives those squiggly red error lines, should now be present.
|
||||
4. The `insiders` branch has binaries compatible with the latest Pre-Release version of the extension, and the `release` branch has binaries compatible with the latest Release version, but the `main` branch may have TypeScript changes that are incompatible with the published binaries, in which case, you'll need to create a branch off the `insiders` or `release` branches.
|
||||
|
||||
* Feel free to use [the Discussions tab of this repository](https://github.com/microsoft/vscode-cpptools/discussions) if you have any further questions on building this extension locally.
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# Exception Settings
|
||||
|
||||
The Microsoft Windows C/C++ debugger (cppvsdbg) supports configuration options for if the debugger stops when exceptions are thrown. This is done with the 'All Exceptions' check box in the BREAKPOINTS section of the 'Run and Debug' view.
|
||||
|
||||
Note that the BREAKPOINTS section will be missing this entry until the first time that the folder has been debugged with the 'cppvsdbg' debugger.
|
||||
|
||||
Checking 'All Exceptions' will configure the debugger to stop when an exception is thrown.
|
||||
|
||||
##### Exception Conditions
|
||||
|
||||
The 'All Exceptions' checkbox support conditions to break on only selected exception types (C++ exceptions) or codes (Win32 exceptions). To edit the condition, click on the pencil icon or right click on the entry and invoke 'Edit Condition'. The condition is a comma-separated list of exception types and codes to break on, or if the list starts with '!', a list of exception types and codes to ignore.
|
||||
|
||||
Examples conditions:
|
||||
|
||||
| Example condition value | Result |
|
||||
|-------------------------|--------|
|
||||
| 0xC0000005, 0xC0000094 | Break on Win32 Access Violation exceptions and integer division by zero exceptions |
|
||||
| std::out_of_range, 0xC0000005 | This will break on out-of-range exceptions, and access violation exceptions |
|
||||
| !MyExceptionClass | This will break on all exceptions except C++ `MyExceptionClass` exceptions |
|
||||
| !MyExceptionClass, 0x6831C815 | This will break on all exceptions except C++ `MyExceptionClass` exceptions and Win32 exceptions with custom code 0x6831C815 |
|
||||
@@ -1,6 +1,6 @@
|
||||
# How To Debug MIEngine
|
||||
|
||||
MIEngine is one of the components used to enable the C/C++ debugging scenario with the Microsoft C/C++ extension with VS Code. This document is to help enable users who want to debug and contribute to MIEngine to fix issues or extend functionality. MIEngine is used to communicate with `gdb`/`lldb` using the MI protocol.
|
||||
MIEngine is one of the components used to enable the C/C++ debugging scenario with the Microsoft C/C++ extension with VS Code. This document is to help enable users who want to debug and contribute to MIEngine to fix issues or extend functionality. MIEngine is used to communicate with `gdb`/`lldb` using the MI protocol.
|
||||
|
||||
**Repository:** https://github.com/Microsoft/MIEngine
|
||||
|
||||
@@ -19,7 +19,7 @@ You can open the solution file **MIDebugEngine.sln** located under **src** and c
|
||||
|
||||
The symbol files are as follows:
|
||||
|
||||
**On Windows**
|
||||
**On Windows**
|
||||
* Microsoft.MICore.pdb
|
||||
* Microsoft.MIDebugEngine.pdb
|
||||
* vscode\OpenDebugAD7.pdb
|
||||
@@ -37,7 +37,7 @@ On Windows, the easiest way to debug is to use Visual Studio. Locate the **src\D
|
||||
|
||||
If you are not building the extension, Locate the **out\src\Debugger\extension.ts** file in the **.vscode\extensions\ms-vscode.cpptools** folder and open it in an editor.
|
||||
|
||||
Locate the following lines:
|
||||
Locate the following lines:
|
||||
```json
|
||||
return {
|
||||
command: command
|
||||
@@ -48,13 +48,13 @@ and add the following line to the object:
|
||||
args: ["--pauseForDebugger"]
|
||||
```
|
||||
|
||||
This will cause the debugger to look like it has hung once you start debugging, but in reality it is waiting for a debugger to attach. Set your breakpoints and attach your debugger to the `OpenDebugAD7.exe` process. Once the debugger is attached, VS Code should start debugging and you can reproduce your scenario.
|
||||
This will cause the debugger to look like it has hung once you start debugging, but in reality it is waiting for a debugger to attach. Set your breakpoints and attach your debugger to the `OpenDebugAD7.exe` process. Once the debugger is attached, VS Code should start debugging and you can reproduce your scenario.
|
||||
|
||||
### Debugging MIEngine running on Linux or Mac OS X
|
||||
### Debugging MIEngine running on Linux or macOS
|
||||
|
||||
#### With MonoDevelop
|
||||
|
||||
On Linux and Mac OS X, we use `mono` as our framework. You can download Xamarin Studio v5.10.1.6 and remotely attach to your Mac or Linux box to debug there.
|
||||
On Linux and macOS, we use `mono` as our framework. You can download Xamarin Studio v5.10.1.6 and remotely attach to your Mac or Linux box to debug there.
|
||||
|
||||
##### Install Prerequisites
|
||||
1. Install [GTK](http://www.mono-project.com/download/).
|
||||
@@ -78,12 +78,12 @@ MonoDevelop.exe
|
||||
|
||||
##### Configure the extension to enable remote debugging
|
||||
|
||||
Open the **~/.vscode/extensions/ms-vscode.cpptools-\<version\>/debugAdapters/OpenDebugAD7** file with a text editor and locate and uncomment the line at the bottom. When you start debugging, it will now hang until the remote debugger is attached from Xamarin Studio.
|
||||
Open the **~/.vscode/extensions/ms-vscode.cpptools-\<version\>/debugAdapters/OpenDebugAD7** file with a text editor and locate and uncomment the line at the bottom. When you start debugging, it will now hang until the remote debugger is attached from Xamarin Studio.
|
||||
|
||||
##### Attach the remote debugger
|
||||
|
||||
In MonoDevelop: Run -> Run With -> Custom Command Mono Soft Debugger.
|
||||
Fill in the IP and port of the Linux/Mac OS X machine and hit "Connect" to start debugging.
|
||||
Fill in the IP and port of the Linux/macOS machine and hit "Connect" to start debugging.
|
||||
|
||||
After you've done this once, you can hit the MonoDevelop "Play" button or <kbd>F5</kbd> to bring up the connect dialog again.
|
||||
|
||||
@@ -113,7 +113,7 @@ After you've done this once, you can hit the MonoDevelop "Play" button or <kbd>F
|
||||
|
||||
##### Configure the extension to enable remote debugging
|
||||
|
||||
Open the **~/.vscode/extensions/ms-vscode.cpptools-\<version\>/debugAdapters/OpenDebugAD7** file with a text editor and locate and uncomment the line at the bottom. When you start debugging, it will now hang until the remote debugger is attached from VS Code.
|
||||
Open the **~/.vscode/extensions/ms-vscode.cpptools-\<version\>/debugAdapters/OpenDebugAD7** file with a text editor and locate and uncomment the line at the bottom. When you start debugging, it will now hang until the remote debugger is attached from VS Code.
|
||||
|
||||
##### Attach the remote debugger
|
||||
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<!-- Attributes for elements that support filtering by view-->
|
||||
<xs:attributeGroup name="ViewConstraints">
|
||||
<xs:attribute name="IncludeView" type ="ViewIncludeType" use="optional" />
|
||||
@@ -335,9 +335,9 @@
|
||||
are evaluated in the context of the node.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:attribute>
|
||||
</xs:attributeGroup>
|
||||
|
||||
|
||||
<xs:complexType name="ListItemsNodeType">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Expression that points to value of the linked list node. It can be left empty or have 'this' to refer to the linked list node itself. This expression is evaluated under the context of the linked list node and not the parent linked list type.</xs:documentation>
|
||||
@@ -402,7 +402,7 @@
|
||||
<xs:documentation>
|
||||
Indicates that the item should use the icon associated with general data.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="Method">
|
||||
<xs:annotation>
|
||||
@@ -864,16 +864,16 @@
|
||||
<xs:complexType name="MostDerivedObjectType">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Specifies an expression which evaluates to the current object, casted to its most-derived type.
|
||||
|
||||
In most cases, the debugger is able to automatically determine an object's most-derived type, in which case use of the <MostDerivedType>
|
||||
Specifies an expression which evaluates to the current object, casted to its most-derived type.
|
||||
|
||||
In most cases, the debugger is able to automatically determine an object's most-derived type, in which case use of the <MostDerivedType>
|
||||
element is unecessary. Automatic determination of an object's most-derived type requires the object to be an instance of a C++ class, with a
|
||||
compiler-generated virtual function table. This is sufficient for most class-hierarchies; however, custom logic may occasionally be necessary
|
||||
when dealing with a class hierarchy that does not contain virtual functions, or when the virtual function table is manually constructed by the
|
||||
when dealing with a class hierarchy that does not contain virtual functions, or when the virtual function table is manually constructed by the
|
||||
application code.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="StringType">
|
||||
<xs:attributeGroup ref="CommonAttributes" />
|
||||
@@ -935,12 +935,12 @@
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Indicates that the given type is a smart pointer. The text inside this element specifies the expression to evaluate the underlying pointer.
|
||||
|
||||
|
||||
The <SmartPointer> element has the following effects:
|
||||
- If no alternative <DisplayString> element is provided (or all <DisplayString> elements have failed conditions), the underlying pointer will be the display string
|
||||
- If no alternative <StringView> element is provided (or all <StringView> elements have failed conditions), the underlying pointer will be the string view, if it has one.
|
||||
- If no alternative <Expand> element is provided, the expansion of the smart pointer will be the expansion of the underlying pointer.
|
||||
- The smart pointer class will also support overloaded operators as determined by the <Usage> attribute. You can opt out of this behavior by specifying
|
||||
- The smart pointer class will also support overloaded operators as determined by the <Usage> attribute. You can opt out of this behavior by specifying
|
||||
'DefaultExpansion="false"'
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
@@ -949,7 +949,7 @@
|
||||
<xs:attributeGroup ref="CommonAttributes_NoCondition" />
|
||||
<xs:attribute name="Usage" type="SmartPointerUsage" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Indicates which combinations of operators this smart pointer object supports.
|
||||
<xs:documentation>Indicates which combinations of operators this smart pointer object supports.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
@@ -1004,10 +1004,10 @@
|
||||
<xs:documentation>Specifies an optional priority to assign to this entry for type matching. Higher priority entries within a particular file or directory
|
||||
are checked first. <Type> entries that do not specify a priority receive default priority of "Medium" <AlternativeType> entries which do not specify a priority
|
||||
will inherit the priority of the enclosing <Type> element. The priority is only used to disambiguate type matching when all other means of disambiguation are unavailable.
|
||||
For example, entries with more specific template instantiations, module constraints, or view constraints will take priority regardless of any priority values specified.
|
||||
Similarly, regardless of priority, natvis files that are part of a loaded project will always take precedence over files in the user natvis directory,
|
||||
which will, in turn, take precedence over files in the system-wide natvis directory.
|
||||
|
||||
For example, entries with more specific template instantiations, module constraints, or view constraints will take priority regardless of any priority values specified.
|
||||
Similarly, regardless of priority, natvis files that are part of a loaded project will always take precedence over files in the user natvis directory,
|
||||
which will, in turn, take precedence over files in the system-wide natvis directory.
|
||||
|
||||
If two entries have the same priority and cannot otherwise be disambiguated, it is unspecified which one will get used.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
+12
-3
@@ -19,8 +19,15 @@ module.exports = {
|
||||
"rules": {
|
||||
"@typescript-eslint/adjacent-overload-signatures": "error",
|
||||
"@typescript-eslint/array-type": "error",
|
||||
"@typescript-eslint/class-name-casing": "error",
|
||||
"@typescript-eslint/indent": "error",
|
||||
"@typescript-eslint/await-thenable": "error",
|
||||
"camelcase": "off",
|
||||
"@typescript-eslint/naming-convention": [
|
||||
"error",
|
||||
{
|
||||
"selector": "typeLike",
|
||||
"format": ["PascalCase"]
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/member-delimiter-style": [
|
||||
"error",
|
||||
{
|
||||
@@ -34,7 +41,9 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/no-for-in-array": "error",
|
||||
"@typescript-eslint/no-misused-new": "error",
|
||||
"@typescript-eslint/no-misused-promises": "error",
|
||||
"@typescript-eslint/no-namespace": "error",
|
||||
"@typescript-eslint/no-non-null-assertion": "error",
|
||||
"@typescript-eslint/no-extra-non-null-assertion": "error",
|
||||
@@ -71,7 +80,7 @@ module.exports = {
|
||||
"no-fallthrough": "error",
|
||||
"no-invalid-this": "error",
|
||||
"no-irregular-whitespace": "error",
|
||||
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0}],
|
||||
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0 }],
|
||||
"no-new-wrappers": "error",
|
||||
"no-redeclare": "error",
|
||||
"no-return-await": "error",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ignore dependency packages
|
||||
node_modules
|
||||
|
||||
# ignore compliled typescript
|
||||
# ignore compiled typescript
|
||||
out
|
||||
dist
|
||||
|
||||
@@ -25,7 +25,6 @@ install.lock
|
||||
|
||||
# ignore generated localization file
|
||||
**/nls.*.json
|
||||
**/*.nls.json
|
||||
**/*.nls.*.json
|
||||
|
||||
# ignore generate native header
|
||||
@@ -34,3 +33,4 @@ localized_string_ids.h
|
||||
# ignore generate files. It will be generated when building
|
||||
src/nativeStrings.ts
|
||||
|
||||
vscode*.d.ts
|
||||
|
||||
Vendored
+2
-10
@@ -10,7 +10,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -25,7 +24,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -40,7 +38,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -54,7 +51,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -69,7 +65,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -85,7 +80,6 @@
|
||||
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||
"--extensionTestsPath=${workspaceFolder}/out/test/unitTests/index"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/out/test/**/*.js"
|
||||
@@ -98,11 +92,10 @@
|
||||
"request": "launch",
|
||||
"runtimeExecutable": "${execPath}",
|
||||
"args": [
|
||||
"${workspaceFolder}/test/integrationTests/testAssets/SimpleCppProject",
|
||||
"${workspaceFolder}/test/integrationTests/testAssets/SimpleCppProject/simpleCppProject.code-workspace",
|
||||
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||
"--extensionTestsPath=${workspaceFolder}/out/test/integrationTests/languageServer/index"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/out/test/**/*.js"
|
||||
@@ -115,11 +108,10 @@
|
||||
"request": "launch",
|
||||
"runtimeExecutable": "${execPath}",
|
||||
"args": [
|
||||
"C:/git/Vcls-vscode-test/SingleRootProject",
|
||||
"C:/git/Vcls-vscode-test/MultirootDeadlockTest/test.code-workspace",
|
||||
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||
"--extensionTestsPath=${workspaceFolder}/out/test/integrationTests/IntelliSenseFeatures/index"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/out/test/**/*.js"
|
||||
|
||||
Vendored
+6
-10
@@ -20,9 +20,7 @@
|
||||
"command": "yarn",
|
||||
"args": [
|
||||
"run",
|
||||
"compile",
|
||||
"--loglevel",
|
||||
"silent"
|
||||
"compile"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -95,9 +93,7 @@
|
||||
"command": "yarn",
|
||||
"args": [
|
||||
"run",
|
||||
"compile-watch",
|
||||
"--loglevel",
|
||||
"silent"
|
||||
"compile-watch"
|
||||
],
|
||||
"problemMatcher": [
|
||||
{
|
||||
@@ -121,10 +117,10 @@
|
||||
"background": {
|
||||
"activeOnStart": true,
|
||||
"beginsPattern": {
|
||||
"regexp": "Compilation (.*?)starting…"
|
||||
"regexp": "asset"
|
||||
},
|
||||
"endsPattern": {
|
||||
"regexp": "Compilation (.*?)finished"
|
||||
"regexp": "webpack (.*?) compiled (.*?) ms"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -162,10 +158,10 @@
|
||||
"background": {
|
||||
"activeOnStart": true,
|
||||
"beginsPattern": {
|
||||
"regexp": "Compilation (.*?)starting…"
|
||||
"regexp": "asset"
|
||||
},
|
||||
"endsPattern": {
|
||||
"regexp": "Compilation (.*?)finished"
|
||||
"regexp": "webpack (.*?) compiled (.*?) ms"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ ui/*.ts
|
||||
|
||||
# ignore Azure-Pipelines files
|
||||
jobs/**
|
||||
cgmanifest.json
|
||||
|
||||
# ignore development files
|
||||
tsconfig.json
|
||||
@@ -41,3 +42,6 @@ translations_auto_pr.js
|
||||
|
||||
# ignore i18n language files
|
||||
i18n/**
|
||||
|
||||
# ignore node_modules
|
||||
node_modules/
|
||||
|
||||
+872
-23
File diff suppressed because it is too large
Load Diff
+24
-18
@@ -1,13 +1,33 @@
|
||||
# C/C++ for Visual Studio Code
|
||||
|
||||
#### [Repository](https://github.com/microsoft/vscode-cpptools) | [Issues](https://github.com/microsoft/vscode-cpptools/issues) | [Documentation](https://code.visualstudio.com/docs/languages/cpp) | [Code Samples](https://github.com/microsoft/vscode-cpptools/tree/master/Code%20Samples) | [Offline Installers](https://github.com/microsoft/vscode-cpptools/releases)
|
||||
#### [Repository](https://github.com/microsoft/vscode-cpptools) | [Issues](https://github.com/microsoft/vscode-cpptools/issues) | [Documentation](https://code.visualstudio.com/docs/languages/cpp) | [Code Samples](https://github.com/microsoft/vscode-cpptools/tree/main/Code%20Samples)
|
||||
|
||||
[](https://aka.ms/vsls)
|
||||
|
||||
The C/C++ extension adds language support for C/C++ to Visual Studio Code, including features such as IntelliSense and debugging.
|
||||
The C/C++ extension adds language support for C/C++ to Visual Studio Code, including [editing (IntelliSense)](https://code.visualstudio.com/docs/cpp/cpp-ide) and [debugging](https://code.visualstudio.com/docs/cpp/cpp-debug) features.
|
||||
|
||||
## Pre-requisites
|
||||
C++ is a compiled language meaning your program's source code must be translated (compiled) before it can be run on your computer. VS Code is first and foremost an editor, and relies on command-line tools to do much of the development workflow. The C/C++ extension **does not include a C++ compiler or debugger**. You will need to install these tools or use those already installed on your computer.
|
||||
* C++ compiler pre-installed
|
||||
* C++ debugger pre-installed
|
||||
|
||||
<br/>
|
||||
|
||||
Here is a list of compilers and architectures per platform officially supported by the extension. These are reflected by the available [IntelliSense modes](https://code.visualstudio.com/docs/cpp/configure-intellisense-crosscompilation#_intellisense-mode) from the extension's IntelliSense configuration. Note that support for other compilers may be limited.
|
||||
|
||||
Platform | Compilers | Architectures
|
||||
:--- | :--- | :---
|
||||
Windows | MSVC, Clang, GCC | x64, x86, arm64, arm
|
||||
Linux | Clang, GCC | x64, x86, arm64, arm
|
||||
macOS | Clang, GCC | x64, x86, arm64
|
||||
|
||||
For more information about installing the required tools or setting up the extension, please follow the tutorials below.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
## Overview and tutorials
|
||||
* [C/C++ extension overview](https://code.visualstudio.com/docs/languages/cpp)
|
||||
* [Introductory Videos](https://code.visualstudio.com/docs/cpp/introvideos-cpp)
|
||||
|
||||
C/C++ extension tutorials per compiler and platform
|
||||
* [Microsoft C++ compiler (MSVC) on Windows](https://code.visualstudio.com/docs/cpp/config-msvc)
|
||||
@@ -17,7 +37,7 @@ C/C++ extension tutorials per compiler and platform
|
||||
* [Clang on macOS](https://code.visualstudio.com/docs/cpp/config-clang-mac)
|
||||
|
||||
## Quick links
|
||||
* [Editing features (IntelliSense)](https://code.visualstudio.com/docs/cpp/cpp-ide)
|
||||
* [Editing features (IntelliSense)](https://code.visualstudio.com/docs/cpp/cpp-ide)
|
||||
* [IntelliSense configuration](https://code.visualstudio.com/docs/cpp/customize-default-settings-cpp)
|
||||
* [Enhanced colorization](https://code.visualstudio.com/docs/cpp/colorization-cpp)
|
||||
* [Debugging](https://code.visualstudio.com/docs/cpp/cpp-debug)
|
||||
@@ -45,20 +65,6 @@ If someone has already filed an issue that encompasses your feedback, please lea
|
||||
<br>
|
||||
Let us know what you think of the extension by taking the quick survey.
|
||||
|
||||
## Offline installation
|
||||
|
||||
The extension has platform-specific binary dependencies, therefore installation via the Marketplace requires an Internet connection in order to download additional dependencies. If you are working on a computer that does not have access to the Internet or is behind a strict firewall, you may need to use our platform-specific packages and install them by running VS Code's `"Install from VSIX..."` command. These "offline' packages are available at: https://github.com/Microsoft/vscode-cpptools/releases.
|
||||
|
||||
Package | Platform
|
||||
:--- | :---
|
||||
`cpptools-linux.vsix` | Linux 64-bit
|
||||
`cpptools-linux-armhf.vsix` | Linux ARM 32-bit
|
||||
`cpptools-linux-aarch64.vsix` | Linux ARM 64-bit
|
||||
`cpptools-osx.vsix` | macOS
|
||||
`cpptools-win32.vsix` | Windows 64-bit & 32-bit
|
||||
`cpptools-win-arm64.vsix` | Windows ARM64
|
||||
`cpptools-linux32.vsix` | Linux 32-bit ([available up to version 0.27.0](https://github.com/microsoft/vscode-cpptools/issues/5346))
|
||||
|
||||
## Contribution
|
||||
|
||||
Contributions are always welcome. Please see our [contributing guide](CONTRIBUTING.md) for more details.
|
||||
@@ -69,4 +75,4 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope
|
||||
|
||||
## Data and telemetry
|
||||
|
||||
This extension collects usage data and sends it to Microsoft to help improve our products and services. Collection of telemetry is controlled via the same setting provided by Visual Studio Code: `"telemetry.enableTelemetry"`. Read our [privacy statement](https://privacy.microsoft.com/en-us/privacystatement) to learn more.
|
||||
This extension collects usage data and sends it to Microsoft to help improve our products and services. Collection of telemetry is controlled via the same setting provided by Visual Studio Code: `"telemetry.enableTelemetry"`. Read our [privacy statement](https://privacy.microsoft.com/en-us/privacystatement) to learn more.
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<h1 data-loc-id="incompatible.extension.heading">Incompatible or Mismatched C/C++ Extension Binaries</h1>
|
||||
|
||||
<p data-loc-id="incompat.extension.text1">The C/C++ extension includes native binaries.</p>
|
||||
|
||||
<p data-loc-id="incompat.extension.text2">When installed via the marketplace UI in VS Code, the correct native binaries should be included. If incompatible binaries were detected and the C/C++ extension had been installed via the marketplace UI in VS Code, <a href="https://github.com/microsoft/vscode/issues/new?assignees=&labels=&template=bug_report.md" data-loc-id="bug.report.link.title">please report the issue</a>.</p>
|
||||
|
||||
<h1 data-loc-id="reinstalling.extension.heading">Reinstalling the C/C++ Extension</h1>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text1">When reinstalling an equivalent version of an extension, VS Code may reuse the existing extension directory. To prevent this from occurring when reinstalling the C/C++ extension, it may be necessary to first delete the existing extension directory.</p>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text2">Installed extension directories can be found under one of the following paths under your user directory (`%USERPROFILE%` on Windows, or `$HOME` on Linux and macOS)</p>
|
||||
|
||||
<pre><code class="lang-bash">%USERPROFILE%\.vscode\extensions</code></pre>
|
||||
<pre><code class="lang-bash">%USERPROFILE%\.vscode-insiders\extensions</code></pre>
|
||||
<pre><code class="lang-bash">%USERPROFILE%\.vscode-exploration\extensions</code></pre>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text3">In a remote connection:</p>
|
||||
<pre><code class="lang-bash">$HOME/.vscode-server/extensions</code></pre>
|
||||
<pre><code class="lang-bash">$HOME/.vscode-server-insiders/extensions</code></pre>
|
||||
<pre><code class="lang-bash">$HOME/.vscode-server-exploration/extensions</code></pre>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text4">Example paths to installed C/C++ extension directories:</p>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text5">On Windows:</p>
|
||||
<pre><code class="lang-bash">%USERPROFILE%\.vscode\extensions\ms-vscode.cpptools-1.9.0</code></pre>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text6">On Linux:</p>
|
||||
<pre><code class="lang-bash">$HOME/.vscode/extensions/ms-vscode.cpptools-1.9.0</code></pre>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text7">Then reinstall via the marketplace UI in VS Code.</p>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text8">If the correct version of the extension fails to be deployed by VS Code, the correct VSIX for your system can be <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools" data-loc-id="download.vsix.link.title">downloaded from the VS Code marketplace web site</a> and installed using the 'Install from VSIX...' option under the '...' menu in the marketplace UI in VS Code.</p>
|
||||
+3685
-2777
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"defaults": [
|
||||
"cpfe",
|
||||
"--wchar_t_keyword",
|
||||
"--no_warnings",
|
||||
"--rtti",
|
||||
"--edge",
|
||||
"--exceptions",
|
||||
"--error_limit",
|
||||
"25000",
|
||||
"-D_EDG_COMPILER",
|
||||
"-D_USE_DECLSPECS_FOR_SAL=1"
|
||||
],
|
||||
"source_file_format": "-f %s",
|
||||
"expressions": [
|
||||
{
|
||||
"match": "^/I(.*)",
|
||||
"replace": "-I\n$1"
|
||||
},
|
||||
{
|
||||
"match": "^/D(.*)",
|
||||
"replace": "-D$1"
|
||||
},
|
||||
{
|
||||
"match": "^/AI(.*)",
|
||||
"replace": "--using_directory\n$1"
|
||||
},
|
||||
{
|
||||
"match": "^/dE--(.*)",
|
||||
"replace": "--$1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-Dunix=1",
|
||||
"-D__unix__=1",
|
||||
"-D__linux__=1",
|
||||
"-D__arm__=1",
|
||||
"-D__ARM_32BIT_STATE=1",
|
||||
"-D__PTRDIFF_TYPE__=int",
|
||||
"-D__SIZE_TYPE__=unsigned int",
|
||||
"-D__WCHAR_TYPE__=long int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-Dunix=1",
|
||||
"-D__unix__=1",
|
||||
"-D__linux__=1",
|
||||
"-D__aarch64__=1",
|
||||
"-D__ARM_64BIT_STATE=1",
|
||||
"-D__PTRDIFF_TYPE__=long int",
|
||||
"-D__SIZE_TYPE__=long unsigned int",
|
||||
"-D__WCHAR_TYPE__=int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-Dunix=1",
|
||||
"-D__unix__=1",
|
||||
"-D__linux__=1",
|
||||
"-D__x86_64=1",
|
||||
"-D__x86_64__=1",
|
||||
"-D__PTRDIFF_TYPE__=long int",
|
||||
"-D__SIZE_TYPE__=long unsigned int",
|
||||
"-D__WCHAR_TYPE__=int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-Dunix=1",
|
||||
"-D__unix__=1",
|
||||
"-D__linux__=1",
|
||||
"-D__i386=1",
|
||||
"-D__i386__=1",
|
||||
"-D__PTRDIFF_TYPE__=int",
|
||||
"-D__SIZE_TYPE__=unsigned int",
|
||||
"-D__WCHAR_TYPE__=long int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-Dunix=1",
|
||||
"-D__unix__=1",
|
||||
"-D__linux__=1",
|
||||
"-D__arm__=1",
|
||||
"-D__ARM_32BIT_STATE=1",
|
||||
"-D__PTRDIFF_TYPE__=int",
|
||||
"-D__SIZE_TYPE__=unsigned int",
|
||||
"-D__WCHAR_TYPE__=long int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-Dunix=1",
|
||||
"-D__unix__=1",
|
||||
"-D__linux__=1",
|
||||
"-D__aarch64__=1",
|
||||
"-D__ARM_64BIT_STATE=1",
|
||||
"-D__PTRDIFF_TYPE__=long int",
|
||||
"-D__SIZE_TYPE__=long unsigned int",
|
||||
"-D__WCHAR_TYPE__=int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-Dunix=1",
|
||||
"-D__unix__=1",
|
||||
"-D__linux__=1",
|
||||
"-D__x86_64=1",
|
||||
"-D__x86_64__=1",
|
||||
"-D__PTRDIFF_TYPE__=long int",
|
||||
"-D__SIZE_TYPE__=long unsigned int",
|
||||
"-D__WCHAR_TYPE__=int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-Dunix=1",
|
||||
"-D__unix__=1",
|
||||
"-D__linux__=1",
|
||||
"-D__i386=1",
|
||||
"-D__i386__=1",
|
||||
"-D__PTRDIFF_TYPE__=int",
|
||||
"-D__SIZE_TYPE__=unsigned int",
|
||||
"-D__WCHAR_TYPE__=long int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D__APPLE__=1",
|
||||
"-D__MACH__=1",
|
||||
"-D__arm__=1",
|
||||
"-D__ARM_32BIT_STATE=1",
|
||||
"-D__PTRDIFF_TYPE__=int",
|
||||
"-D__SIZE_TYPE__=unsigned int",
|
||||
"-D__WCHAR_TYPE__=long int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D__APPLE__=1",
|
||||
"-D__MACH__=1",
|
||||
"-D__aarch64__=1",
|
||||
"-D__ARM_64BIT_STATE=1",
|
||||
"-D__PTRDIFF_TYPE__=long int",
|
||||
"-D__SIZE_TYPE__=long unsigned int",
|
||||
"-D__WCHAR_TYPE__=int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D__APPLE__=1",
|
||||
"-D__MACH__=1",
|
||||
"-D__x86_64=1",
|
||||
"-D__x86_64__=1",
|
||||
"-D__PTRDIFF_TYPE__=long int",
|
||||
"-D__SIZE_TYPE__=long unsigned int",
|
||||
"-D__WCHAR_TYPE__=int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D__APPLE__=1",
|
||||
"-D__MACH__=1",
|
||||
"-D__i386=1",
|
||||
"-D__i386__=1",
|
||||
"-D__PTRDIFF_TYPE__=int",
|
||||
"-D__SIZE_TYPE__=unsigned int",
|
||||
"-D__WCHAR_TYPE__=long int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D__APPLE__=1",
|
||||
"-D__MACH__=1",
|
||||
"-D__arm__=1",
|
||||
"-D__ARM_32BIT_STATE=1",
|
||||
"-D__PTRDIFF_TYPE__=int",
|
||||
"-D__SIZE_TYPE__=unsigned int",
|
||||
"-D__WCHAR_TYPE__=long int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D__APPLE__=1",
|
||||
"-D__MACH__=1",
|
||||
"-D__aarch64__=1",
|
||||
"-D__ARM_64BIT_STATE=1",
|
||||
"-D__PTRDIFF_TYPE__=long int",
|
||||
"-D__SIZE_TYPE__=long unsigned int",
|
||||
"-D__WCHAR_TYPE__=int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D__APPLE__=1",
|
||||
"-D__MACH__=1",
|
||||
"-D__x86_64=1",
|
||||
"-D__x86_64__=1",
|
||||
"-D__PTRDIFF_TYPE__=long int",
|
||||
"-D__SIZE_TYPE__=long unsigned int",
|
||||
"-D__WCHAR_TYPE__=int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D__APPLE__=1",
|
||||
"-D__MACH__=1",
|
||||
"-D__i386=1",
|
||||
"-D__i386__=1",
|
||||
"-D__PTRDIFF_TYPE__=int",
|
||||
"-D__SIZE_TYPE__=unsigned int",
|
||||
"-D__WCHAR_TYPE__=long int"
|
||||
],
|
||||
"defaults_op" : "merge"
|
||||
}
|
||||
@@ -74,7 +74,7 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"operand * musí být ukazatel",
|
||||
"Operand pro * musí být ukazatel, má ale typ %t.",
|
||||
"argument v makru je prázdný",
|
||||
"tato deklarace nemá třídu úložiště specifikátoru typu",
|
||||
"deklarace parametru nesmí mít inicializátor",
|
||||
@@ -130,8 +130,8 @@
|
||||
"smyčka je nedosažitelná",
|
||||
"funkce rozsahu bloku může mít jenom externí třídu úložiště",
|
||||
"očekával se znak {",
|
||||
"Výraz musí být typu ukazatel na třídu.",
|
||||
"Výraz musí být typu ukazatel na strukturu nebo sjednocení.",
|
||||
"Výraz musí mít typ ukazatele na třídu, má ale typ %t.",
|
||||
"Výraz musí mít typ ukazatele na strukturu nebo sjednocení, má ale typ %t.",
|
||||
"očekával se název člena",
|
||||
"očekával se název pole",
|
||||
"%n nemá žádného člena %sq",
|
||||
@@ -141,7 +141,7 @@
|
||||
"Převzetí adresy bitového pole není povolené.",
|
||||
"příliš moc argumentů ve volání funkce",
|
||||
"nepojmenované parametry prototypů nejsou dovolené, když se používá text",
|
||||
"Výraz musí být typu ukazatel na objekt.",
|
||||
"Výraz musí mít typ ukazatele na objekt, má ale typ %t.",
|
||||
"program je moc velký nebo komplikovaný k sestavení",
|
||||
"Hodnota typu %t1 se nedá použít k inicializaci entity typu %t2.",
|
||||
"%n se nedá inicializovat",
|
||||
@@ -152,8 +152,8 @@
|
||||
"Název typu se nedá znova deklarovat jako parametr.",
|
||||
"Název typedef se nedá znova deklarovat jako parametr.",
|
||||
"konverze nenulového celého čísla na ukazatel",
|
||||
"výraz musí mít typ třídy",
|
||||
"výraz musí mít typ struktury nebo jednoty",
|
||||
"Výraz musí mít typ třídy, má ale typ %t.",
|
||||
"Výraz musí mít typ struktury nebo sjednocení, má ale typ %t.",
|
||||
"zastaralý operátor přiřazení",
|
||||
"Zastaralý inicializátor",
|
||||
"Výraz musí být výrazem integrální konstanty.",
|
||||
@@ -180,7 +180,7 @@
|
||||
"Použití '&' na pole nemá žádný účinek.",
|
||||
"Pravý operand %% je nula.",
|
||||
"Argument je nekompatibilní s formálním parametrem.",
|
||||
"Argument je nekompatibilní s odpovídající konverzí formátovacího řetězce.",
|
||||
"Argument není kompatibilní s odpovídajícím převodem formátovacího řetězce (očekával se typ %t1, ale argument má typ %t2).",
|
||||
"Nepodařilo se otevřít zdrojový soubor %sq (seznam vyhledávání neobsahuje žádné adresáře).",
|
||||
"Přetypování musí být integrálního typu.",
|
||||
"Přetypování musí být aritmetického typu nebo typu ukazatel.",
|
||||
@@ -392,7 +392,7 @@
|
||||
"Funkce main se zřejmě nevolala nebo nedošlo k převzetí její adresy.",
|
||||
"Nový inicializátor se nedá specifikovat pro pole.",
|
||||
"Členská funkce %no se nemůže deklarovat mimo svoji třídu.",
|
||||
"Ukazatel na nekompletní typ třídy není povolený.",
|
||||
"Ukazatel na nekompletní typ třídy %t není povolený.",
|
||||
"Odkaz na místní proměnnou vnější funkce není povolený.",
|
||||
"Funkce s jedním argumentem se použila pro příponu %sq (anachronizmus).",
|
||||
null,
|
||||
@@ -838,7 +838,7 @@
|
||||
"Vrací se odkaz na místní proměnnou.",
|
||||
"Vynechání explicitního typu je nestandardní (předpokládá se int).",
|
||||
"Víc než jedna částečná specializace odpovídá seznamu argumentů šablony %n.",
|
||||
"%no",
|
||||
"%nod",
|
||||
"Seznam argumentů šablony není v deklaraci primární šablony povolený.",
|
||||
"Částečné specializace nemůžou mít výchozí argumenty šablony.",
|
||||
"%n1 se nepoužívá nebo nejde odvodit ze seznamu argumentů šablony %n2.",
|
||||
@@ -952,7 +952,7 @@
|
||||
"Možnost nonstd_using_decl se dá použít jenom při kompilaci C++.",
|
||||
"Návratový typ funkce main musí být int.",
|
||||
"Netypový parametr šablony nemůže být typu třídy.",
|
||||
"Výchozí argument šablony se nemůže specifikovat u deklarace člena šablony třídy mimo jeho třídu.",
|
||||
"U definice člena šablony třídy mimo šablonu nelze zadat výchozí argument šablony.",
|
||||
"Příkaz return není povolený v obslužné rutině testovacího bloku funkce konstruktoru.",
|
||||
"Běžné nebo rozšířené specifikátory se nedají kombinovat v označení inicializátoru.",
|
||||
"Druhý dolní index nesmí být menší než první dolní index.",
|
||||
@@ -1389,14 +1389,14 @@
|
||||
"Dllexport a dllimport se u šablon třídy ignorují.",
|
||||
"Specifikace základní třídy dllexport/dllimport se liší od specifikace odvozené třídy.",
|
||||
"Změnou deklarace se nedá přidat dllexport/dllimport k %nod.",
|
||||
"Dllexport/dllimport je v konfliktu s %nod. Očekával se dllexport.",
|
||||
"dllexport/dllimport je v konfliktu s %nod; Očekával se dllexport.",
|
||||
"Entita dllimport se nedá definovat.",
|
||||
"Dllexport/dllimport vyžaduje externí propojení.",
|
||||
"Člen třídy deklarované pomocí dllexport/dllimport nemůže sám být deklarovaný pomocí takového specifikátoru.",
|
||||
"pole typu třídy bez rozhraní DLL použité v třídě s rozhraním DLL",
|
||||
"Deklarace člena v závorkách je nestandardní.",
|
||||
"Prázdné znaky mezi zpětným lomítkem a znakem nového řádku se ve spojení řádku ignorují.",
|
||||
"Dllexport/dllimport je v konfliktu s %nod. Došlo k vynechání dllimport/dllexport.",
|
||||
"dllexport/dllimport je v konfliktu s %nod; Došlo k vynechání dllimport/dllexport.",
|
||||
"Neplatný člen pro anonymní členskou třídu – třída %t nepovolila členskou funkci.",
|
||||
"Nestandardní reinterpret_cast",
|
||||
"Specifikátor pozice formátu nemůže být nula.",
|
||||
@@ -1464,24 +1464,24 @@
|
||||
"makro",
|
||||
"návěstí",
|
||||
"parametr šablony",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"typ",
|
||||
"spojení",
|
||||
"třída",
|
||||
"struktura",
|
||||
"parametr Template šablony",
|
||||
"šablona",
|
||||
"šablona třídy",
|
||||
null,
|
||||
"výčet",
|
||||
"parametr",
|
||||
"parametr obslužné rutiny",
|
||||
"proměnná",
|
||||
"není typ",
|
||||
null,
|
||||
"konstanta",
|
||||
"funkce",
|
||||
"funkce přetížení",
|
||||
"člen",
|
||||
"pole",
|
||||
null,
|
||||
"obor názvů",
|
||||
"pojmenovaný registr",
|
||||
"pojmenovaný adresní prostor",
|
||||
"šablona funkce",
|
||||
@@ -1635,7 +1635,7 @@
|
||||
"Rozšiřující konverze ukazatele z %t1 na %t2 rozšiřuje bit znaménka.",
|
||||
"__sptr a __uptr se nedají použít u typů ukazatel na člena.",
|
||||
"Deklarace operátoru přiřazení pro kopírování pro %t se potlačila, protože %n je konstanta.",
|
||||
null,
|
||||
"deklarace operátoru přiřazení pro kopírování objektu %t byla potlačena, protože %n je typu odkaz",
|
||||
"Deklarace operátoru přiřazení pro kopírování pro %t1 se potlačila, protože došlo k potlačení deklarace %t2.",
|
||||
"Deklarace operátoru přiřazení pro kopírování pro %t1 se potlačila, protože deklarace %t2 je dvojznačná.",
|
||||
"Deklarace operátoru přiřazení pro kopírování pro %t1 se potlačila, protože deklarace %t2 není přístupná.",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"Deklarace kopírovacího konstruktoru pro %t1 se potlačila, protože deklarace %t2 není přístupná.",
|
||||
"Destruktor pro %t1 se nebude volat, protože není přístupný a destruktor pro %t2 byl potlačený.",
|
||||
"Po definici na konci souboru nenásleduje středník nebo deklarátor.",
|
||||
"První argument musí být ukazatel na celočíselný nebo výčtový typ.",
|
||||
"Prvním argumentem musí být ukazatel na celočíselný typ nebo typ výčtu",
|
||||
"Synchronizované operace jsou platné jenom u objektů o velikosti 1, 2, 4 nebo 8.",
|
||||
"Argumenty navíc se ignorují.",
|
||||
"Předpokládalo se, že znak = následuje po názvu makra %sq v definici příkazového řádku.",
|
||||
@@ -1670,7 +1670,7 @@
|
||||
"Kvalifikátor typu není povolený u konstruktoru nebo destruktoru.",
|
||||
"Kvalifikátor typu není povolený u operátoru new a operátoru delete.",
|
||||
"Kvalifikátor typu není povolený u nečlenské funkce.",
|
||||
"Výraz __assume s vedlejšími účinky se zahodil.",
|
||||
"Argument pro %s má vedlejší účinky, ale nevyhodnotil se.",
|
||||
"nerozpoznaný druh zdroje Unicode (musí být jedním z UTF-8, UTF-16, UTF-16LE, UTF-16BE): %s",
|
||||
"Znak Unicode se šestnáctkovou hodnotou %s se nedá prezentovat v předzpracovávaném výstupu.",
|
||||
"Požadovaná priorita konstruktoru/destruktoru je rezervovaná pro interní použití.",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"Sada parametrů nemůže mít výchozí hodnotu.",
|
||||
"C++/CLI se dá povolit jenom v režimu Microsoft C++.",
|
||||
"Pro konstantu enumerátoru se nedá použít název value__. (V tomto kontextu je to vyhrazený název.)",
|
||||
"U typu výčtu s nadřízeným typem boolean je povinná explicitní hodnota výčtu.",
|
||||
"Explicitní hodnota enumerátoru je ve výčtovém typu s logickou základní hodnotou povinná",
|
||||
null,
|
||||
"Odkazovalo se na sadu parametrů %sq, která nebyla rozšířená.",
|
||||
"Rozšíření sady nepoužívá žádnou sadu argumentů.",
|
||||
"Sada %sq má jiný počet prvků než sada %sq2.",
|
||||
null,
|
||||
"Atribut vector_size se u typu výčtu nepovoluje.",
|
||||
"atribut vector_size není povolený s typem výčtu",
|
||||
"Vlastnost nemůže být současně statická i virtuální.",
|
||||
"Indexovaná vlastnost nemůže být triviální.",
|
||||
"Tato deklarace se nedá použít v definici vlastnosti.",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"Specifikátor viditelnosti na nejvyšší úrovni vyžaduje definici typu.",
|
||||
"Triviální vlastnost nemůže být odkazovaného typu.",
|
||||
"Triviální vlastnost nemůže být typu const nebo volatile.",
|
||||
"%nd se dřív deklaroval jako jiný druh typu výčtu.",
|
||||
"%nd se dříve deklaroval jako jiný typ výčtu",
|
||||
"Proměnná zachycená výrazem lambda nemůže být typu třídy %[managed].",
|
||||
"Přepisování virtuální funkce s kovariantním návratovým typem není u třídy %[managed] povolené.",
|
||||
"Pole popisovačů není povolené.",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"Pojmenovaný specifikátor přepisu je povolený jenom ve třídě %[managed].",
|
||||
"Typu tohoto členu neodpovídá žádný člen označený pojmenovaným specifikátorem přepisu.",
|
||||
"Deklarace statického konstruktoru nemůže zahrnovat pojmenovaný specifikátor přepisu.",
|
||||
"Typ vymezeného výčtu musí mít název.",
|
||||
"Typ výčtu s vymezeným oborem musí mít název.",
|
||||
"Přenos řízení na blok finally není povolený.",
|
||||
"Příkaz return se v bloku finally použít nedá.",
|
||||
"Blok try vyžaduje aspoň jeden obslužnou rutinu nebo klauzuli finally.",
|
||||
@@ -2207,7 +2207,7 @@
|
||||
"Pole initonly se dá modifikovat jenom konstruktorem instance třídy, která ho obsahuje.",
|
||||
"Statické pole initonly se dá modifikovat jenom statickým konstruktorem třídy, která ho obsahuje.",
|
||||
"Členská funkce se vyvolá u kopie pole initonly.",
|
||||
"Výraz musí být typu popisovač nebo typu ukazatel.",
|
||||
"Výraz musí mít typ ukazatele nebo popisovače, má ale typ %t.",
|
||||
"Přenosový konstruktor nebo přenosový operátor přiřazení se tady použije ke zkopírování l-hodnoty. To může zničit zdrojový objekt.",
|
||||
"Při výběru člena u obecné entity %[C++/CLI] se musí použít syntaxe \"->\", ne \".\".",
|
||||
"Typ referenční třídy nemůže odvozovat od %t.",
|
||||
@@ -2216,7 +2216,7 @@
|
||||
"U operátoru dynamic_cast se nemůže použít obecný typ, který by mohl být hodnotovým typem.",
|
||||
"Univerzální název znaku musí označovat platný bod kódu.",
|
||||
"Obecná omezení neodpovídají omezením %nd.",
|
||||
"Výraz __underlying_type se vztahuje jenom na typy výčtu.",
|
||||
"__underlying_type platí jenom pro výčtové typy",
|
||||
"U tohoto přetypování se očekával jenom jeden výraz operandu.",
|
||||
"Znak Unicode s šestnáctkovou hodnotou %s se nedá prezentovat ve výchozí systémové znakové stránce.",
|
||||
"Nestandardní převod svázaného ukazatele na člen na ukazatel funkce",
|
||||
@@ -2241,7 +2241,7 @@
|
||||
"Nezabezpečený operátor reinterpret_cast popisovače",
|
||||
"Argument šablony nemůže odkazovat na parametr obecného typu.",
|
||||
"Seznam výrazů není u této operace dolního indexu povolený. (Operátor čárek nejvyšší úrovně uzavřete do závorek.)",
|
||||
"Výraz musí být typu pointer-to-object nebo handle-to-%[C++/CLI]-array.",
|
||||
"Výraz musí být typ ukazatele na objekt nebo popisovače pole %[C++/CLI], má ale typ %t.",
|
||||
"Neznámý atribut",
|
||||
"Člen třídy %[managed] nemůže být typu třídy, která není %[managed].",
|
||||
"Člen třídy, která není %[managed], nemůže být typu referenční třídy nebo třídy rozhraní.",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd se dřív deklaroval s jiným základním typem.",
|
||||
"Tady se nedá použít enum class nebo enum struct. Použijte místo toho prostý výčet enum.",
|
||||
"U inicializátoru pro objekt typu %t je povolená jenom jedna úroveň závorek.",
|
||||
"%nd se nedá použít jako název výčtového typu.",
|
||||
"%nd nelze použít jako název typu výčtu",
|
||||
null,
|
||||
"U inicializátoru uzavřeného v závorkách nejde použít new auto.",
|
||||
"Definice std::initializer_list neobsahuje očekávaný konstruktor.",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"Inicializátor v závorkách pro entitu, která není třídou, musí být výraz, ne seznam uzavřený ve složených závorkách.",
|
||||
"Seznam uzavřený ve složených závorkách neposkytuje pro tuto funkci lambda návratový typ.",
|
||||
"Deklarovaná specifikace výjimky je nekompatibilní s generovanou specifikací.",
|
||||
"Typy vymezeného výčtu jsou funkcí C++11.",
|
||||
"Vymezené typy výčtu jsou funkcí C++11",
|
||||
"Typ funkce se nedá inicializovat pomocí hodnoty.",
|
||||
"Inicializace seznamu typu objektu %t není povolená, protože má neúplný typ.",
|
||||
"Seznam inicializátorů std::initializer_list obsahuje destruktor. Ten by ale obsahovat neměl: knihovna je chybně nakonfigurovaná.",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"Volání funkce musí mít v konstantním výrazu konstantní hodnotu.",
|
||||
"Funkce main se nedá deklarovat jako constexpr.",
|
||||
null,
|
||||
"Definice typu výčtu nebo třídy se nedá použít ve funkci constexpr nebo těle konstruktoru.",
|
||||
"Definice typu třídy nebo výčtu se nemůže vyskytovat ve funkci constexpr ani v těle konstruktoru",
|
||||
"Tady jsou povolené jenom atributy ve stylu GNU.",
|
||||
"Nestandardní použití auto současně k odvození typu od inicializátoru a ohlášení ukončovacího návratového typu.",
|
||||
"Deklarace seznamu parametrů typu void s kvalifikovaným typem void je nestandardní.",
|
||||
@@ -2546,7 +2546,7 @@
|
||||
"Typ decltype(auto) se nedá odvodit.",
|
||||
"Deklarace rozsahu bloku místního vlákna musí zahrnovat statickou nebo externí",
|
||||
"Odvozený návratový typ %t1 má konflikty s dříve odvozeným typem %t2.",
|
||||
"Návratový typ %nd se nedá odvodit, nebyl definovaný.",
|
||||
"Návratový typ %nd; se nedá odvodit, protože nebyl definován.",
|
||||
"Virtuální funkce nemůže mít odvozený návratový typ.",
|
||||
"%n se bude od tohoto bodu považovat za kontextové klíčové slovo.",
|
||||
"Globální obor názvů nemá žádný skutečný člen %sq.",
|
||||
@@ -2604,7 +2604,7 @@
|
||||
"Definice veřejného typu C++/CX není u globálního rozsahu povolená.",
|
||||
"Indexovaná vlastnost s veřejným přístupovým objektem get nebo set není povolená.",
|
||||
"Veřejný vnořený typ delegáta není povolený.",
|
||||
"Neplatný inicializátor delegáta -- očekávaná syntaxe je (<adresa-funkce nebo objekt-funktoru> [, Platform::CallbackContext]) nebo (<popisovač objektu>, <adresa-člena> [, Platform::CallbackContext [, bool]]).",
|
||||
"Neplatný inicializátor delegáta -- očekávaná syntaxe je (<adresa-funkce nebo objekt-funktoru> [, Platform::CallbackContext]) nebo (<úchyt objektu>, <adresa-člena> [, Platform::CallbackContext [, bool]]).",
|
||||
"Neplatný inicializátor delegáta -- objekt musí být popisovačem na třídu %[managed].",
|
||||
"C++/CX nepodporuje pole in nebo out. U veřejných rozhraní API použijte pro in: const Platform::Array<T>^ a pro out: Platform::WriteOnlyArray<T>^ nebo Platform::Array<T>^*.",
|
||||
"Chybí cílový atribut pro %nd.",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"Proměnná ve funkci constexpr není inicializovaná.",
|
||||
"Inicializace (uzavřená v závorkách) proměnné deklarované se zástupným typem, ale bez znaku =, vyžaduje právě jeden element uzavřený do závorek.",
|
||||
"neexistuje žádná konfigurace %s --target",
|
||||
"atribut není podporovaný v 64bitových konfiguracích x86",
|
||||
"Atribut je podporován pouze v 32bitových konfiguracích x86",
|
||||
"%s vyžaduje argument",
|
||||
"konstruktor nebo destruktor nemůže být korutina",
|
||||
"%n nemůže být korutina",
|
||||
@@ -2682,7 +2682,7 @@
|
||||
"výraz co_await není povolený uvnitř klauzule catch",
|
||||
"korutina nemůže mít parametr tři tečky",
|
||||
"Povolení funkce constexpr stylu C++14 vyžaduje podporu logických hodnot.",
|
||||
"funkce constexpr %nd není definovaná",
|
||||
"Výraz constexpr %nd není definovaný.",
|
||||
"toto volání nejde vyhodnotit, protože cílová funkce %nd není constexpr nebo ještě není úplně definovaná",
|
||||
"poznámka",
|
||||
"Poznámka",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"Neplatný typ %t pro this-pointer členské funkce %nfd s omezením AMP",
|
||||
"Neplatný návratový typ %t pro funkci %nfd s omezením AMP",
|
||||
"Neplatný typ parametru %t pro funkci %nfd s omezením AMP",
|
||||
null,
|
||||
"Neplatný konstruktor ve funkci %nfd s omezením AMP",
|
||||
"Neplatná třída úložiště %s ve funkci %nfd s omezením AMP",
|
||||
"%s není ve funkci %nfd s omezením AMP povolené.",
|
||||
"Neplatné přetypování ve funkci s omezením AMP",
|
||||
@@ -3116,8 +3116,8 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"očekávalo se >>>",
|
||||
"Nepovedlo se najít deklaraci __cudaPushCallConfiguration. Instalace sady nástrojů CUDA může být poškozená.",
|
||||
"Inicializátor ve stylu C++17 je v tomto režimu nestandardní.",
|
||||
"zachytávání *this je v tomto režimu nestandardní",
|
||||
"Předpona atributu using ve stylu C++17 je v tomto režimu nestandardní.",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"Nestálý typ %t brání vyhodnocování constexpr v __builtin_bit_cast.",
|
||||
"Typ sjednocení, ukazatele nebo ukazatele na člen %t brání vyhodnocování constexpr v __builtin_bit_cast.",
|
||||
"%npTd, zděděno pomocí decl %p",
|
||||
"Podobjekt %t pro dědící konstruktory se nedá vytvořit -- implicitní výchozí konstruktor se odstranil.",
|
||||
"Nelze provést vytvoření dílčího objektu %t pro dědící konstruktory – přidružený konstruktor je odstraněn",
|
||||
"%n musí vracet void.",
|
||||
"Neplatný začátek deklarace členu",
|
||||
"Očekává se klíčové slovo auto.",
|
||||
@@ -3300,7 +3300,7 @@
|
||||
"Neplatné použití konceptu",
|
||||
"Výchozí operátor porovnání členů nemůže být kvalifikovaný jako &&.",
|
||||
"Výchozí funkce pro porovnání constexpr volá funkci %nd, která constexpr není.",
|
||||
"Porovnání paměti constexpr se podporuje jen pro celé číslo nejvyšší úrovně nebo objekty polí celých čísel.",
|
||||
"Porovnání paměti constexpr se podporuje jen pro celé číslo nebo objekty polí celých čísel.",
|
||||
"Šablona konceptu nemůže mít přidružená omezení.",
|
||||
"export se nepovoluje.",
|
||||
"Export jednotlivých členů třídy se nepodporuje.",
|
||||
@@ -3343,13 +3343,159 @@
|
||||
"mapování souborů modulu pro %s bylo zadané více než jednou",
|
||||
"mapování jednotek záhlaví pro %s bylo zadané více než jednou",
|
||||
"není zadané žádné mapování pro %s",
|
||||
"mapování souborů modulu pro %s je neplatné",
|
||||
null,
|
||||
"nejde najít záhlaví %s, které se má importovat",
|
||||
"více než jeden soubor v seznamu souborů modulu odpovídá %s",
|
||||
"soubor modulu, který se našel pro %s, je pro jiný modul",
|
||||
"libovolný druh souboru modulu",
|
||||
"nejde přečíst soubor modulu",
|
||||
"předdefinovaná funkce není k dispozici, protože typ char8_t se nepodporuje s aktuálními možnostmi",
|
||||
"možnost příkazového řádku --ms_await nejde zadat, pokud jsou povolené korutiny C++20",
|
||||
"nestandardní použití explicitního konstruktoru %nod pro inicializaci výchozího agregačního elementu"
|
||||
null,
|
||||
"nestandardní použití explicitního konstruktoru %nod pro inicializaci výchozího agregačního elementu",
|
||||
"zdroj nebo cíl vnitřní funkce memcpy-like neukazuje na objekt",
|
||||
"vnitřní funkce memcpy-like se pokouší o kopírování reprezentačně odlišných typů %t1 a %t2",
|
||||
"vnitřní funkce memcpy-like se pokouší o kopírování netriviálně kopírovatelného typu %t",
|
||||
"vnitřní funkce memcpy-like se pokouší o kopírování částečného objektu",
|
||||
"vnitřní funkce memcpy-like se pokouší o kopírování hranice za polem",
|
||||
"vnitřní funkce memcpy-like se pokouší o kopírování překrývajících se bajtových rozsahů (místo toho se použije odpovídající operace memmove)",
|
||||
"Deklarace typu friend s klauzulí requires na konci musí být definice.",
|
||||
"Výraz musí mít aritmetický typ nebo typ ukazatele, má ale typ %t.",
|
||||
"Výraz musí mít aritmetický typ, typ výčtu nebo typ ukazatele, má ale typ %t.",
|
||||
"Výraz musí mít aritmetický typu, typ nevymezeného výčtu nebo typ ukazatele, má ale typ %t.",
|
||||
"Výraz musí mít typ ukazatele, má ale typ %t.",
|
||||
"Operátor -> nebo ->* se používá pro %t namísto typu ukazatele.",
|
||||
"Nekompletní typ třídy %t není povolený.",
|
||||
"Nepovedlo se interpretovat rozložení bitů pro tento cíl kompilace.",
|
||||
"Žádný odpovídající operátor pro operátor IFC %sq",
|
||||
"Žádná odpovídající konvence volání pro konvenci volání IFC %sq",
|
||||
"Modul %sq obsahuje nepodporované konstrukce.",
|
||||
"Nepodporovaná konstrukce IFC: %sq",
|
||||
"__is_signed už není klíčové slovo.",
|
||||
"Rozměr pole musí mít konstantní celočíselnou hodnotu bez znaménka.",
|
||||
"Soubor IFC %sq má nepodporovanou verzi %d1.%d2.",
|
||||
"Moduly se v tomto režimu nepovolily.",
|
||||
"Název modulu nesmí obsahovat slovo import.",
|
||||
"Název modulu nesmí obsahovat slovo module.",
|
||||
null,
|
||||
null,
|
||||
"%n není typ výčtu",
|
||||
"Enumerátor %no2 je v konfliktu s %n1.",
|
||||
"Enumerátor %no se už v tomto oboru %p deklaroval.",
|
||||
"specifikace throw() není součástí standardu C++20 a novějších",
|
||||
"více než jedna položka v mapě jednotky hlavičky odpovídá %s",
|
||||
"Diagnostika #pragma musí mít buď argument push nebo pop.",
|
||||
"Nenašel se žádný push diagnostiky #pragma, které by odpovídal tomuto popu diagnostiky.",
|
||||
"%sq nemůže být makro, pokud se použije ve směrnici pro import nebo modul.",
|
||||
"Tato direktiva se může vyskytovat jenom v rozsahu globálního oboru názvů.",
|
||||
"Deklarace typu export se může vyskytovat jenom na úrovni globálního rozsahu (global) nebo rozsahu oboru názvů (namespace).",
|
||||
"%sq se parsuje jako identifikátor, nikoli jako klíčové slovo, protože tokeny, které po něm následují, se neshodují s direktivou preprocesoru.",
|
||||
"Vypadá to, že se jedná o začátek direktivy preprocesoru, ale chybějící znak „;“, po kterém ihned následuje nový řádek, tomu brání.",
|
||||
"Vypadá to, že se jedná o direktivu předběžného zpracování modulů, ale tyto direktivy se nemůžou vyskytovat v rámci rozšíření makra.",
|
||||
"Direktiva typu module se nemůže vyskytovat v oboru podmíněného zahrnutí (např. #if, #else, #elseif apod.).",
|
||||
"Import %sq se přeskočil.",
|
||||
"typ příslibu %t musí deklarovat get_return_object_on_allocation_failure jako funkci statického člena, která nevyžaduje žádné argumenty",
|
||||
"šablona aliasu nemůže být explicitně specializovaná.",
|
||||
"aby se to shodovalo s tímto „{“",
|
||||
"v tomto volání makra",
|
||||
"volání vyžaduje nejednoznačný převod argumentu.",
|
||||
"deklarace vlastněná modulem %s je v konfliktu s %nd",
|
||||
"deklarace vlastněná globálním modulem je v konfliktu s %nd vlastněnou pojmenovaným modulem",
|
||||
"první argument atributu „malloc“ musí být funkce",
|
||||
"nejde zachytit %nod",
|
||||
"nejde zachytit „this“",
|
||||
"již v kontextu consteval",
|
||||
"Příkazy if consteval a if not consteval vyžadují příkazy uzavřené do složených závorek.",
|
||||
"Příkazy if consteval a if not consteval nemají ve funkci, která není constexpr, žádný význam.",
|
||||
"Převod řízení na příkaz if consteval nebo if not consteval se nepovoluje.",
|
||||
"Konstantní vyhodnocování nemůže projít deklarací proměnné se statickou dobou trvání nebo uloženou po dobu existence vlákna.",
|
||||
"Proměnlivý kvalifikátor se pro výraz lambda s explicitním parametrem this nepovoluje.",
|
||||
"Členská funkce deklarovaná jako static nemůže mít explicitní parametr this.",
|
||||
"Explicitní parametr this musí být první deklarovaný parametr.",
|
||||
"Proměnná this se tady nepodporuje.",
|
||||
"Porovnávací funkce s explicitním this nemůže být nastavena jako výchozí.",
|
||||
"Funkce s explicitním this vyžaduje druhý operand.",
|
||||
"Příkazy if consteval a if not consteval nejsou v tomto režimu standardní.",
|
||||
"Vynechání () v deklarátoru výrazu lambda je v tomto režimu nestandardní.",
|
||||
"Když se vynechá seznam parametrů výrazu lambda, nepodporuje se klauzule requires na konci.",
|
||||
"Požádalo se o neplatný oddíl modulu %sq.",
|
||||
"Požádalo se nedefinovaný oddíl modulu %sq1 (předpokládalo se, že je to %sq2).",
|
||||
"Pro oddíl %sq2 se požádalo o pozici v souboru %d1 (relativní pozice %d2) v modulu %sq1, pozice je ale prázdná.",
|
||||
"Pro oddíl %sq2 se požádalo o pozici v souboru %d1 (relativní pozice %d2) v modulu %sq1, pozice ale předchází začátek oddílu.",
|
||||
"Pro oddíl %sq2 se požádalo o pozici v souboru %d1 (relativní pozice %d2) v modulu %sq1, pozice ale přetéká konec svého oddílu.",
|
||||
"Pro oddíl %sq2 se požádalo o pozici v souboru %d1 (relativní pozice %d2) v modulu %sq1, pozice ale není zarovnaná s elementy oddílu.",
|
||||
"z dílčího pole %sq (relativní pozice k uzlu %d)",
|
||||
"Z oddílu %sq, elementu %d1 (pozice v souboru %d2, relativní pozice %d3)",
|
||||
"Atributy výrazu lambda tady nejsou standardní.",
|
||||
"Identifikátor %sq by bylo možné zaměnit za vizuálně podobné %p.",
|
||||
"Tento komentář obsahuje podezřelé řídicí znaky formátování Unicode.",
|
||||
"Tento řetězec obsahuje řídicí znaky formátování Unicode. To může způsobit neočekávané chování modulu runtime.",
|
||||
"Došlo k potlačení %d1 upozornění při zpracovávání modulu %sq1.",
|
||||
"Došlo k potlačení %d1 upozornění při zpracovávání modulu %sq1.",
|
||||
"Došlo k potlačení %d1 chyby při zpracovávání modulu %sq1.",
|
||||
"Došlo k potlačení %d1 chyb při zpracovávání modulu %sq1.",
|
||||
"včetně",
|
||||
"potlačeno",
|
||||
"Virtuální členská funkce nemůže mít explicitní parametr this.",
|
||||
"Převzetí adresy funkce s explicitním this vyžaduje kvalifikovaný název.",
|
||||
"Vytvoření adresy funkce s explicitním this vyžaduje operátor &.",
|
||||
"řetězcový literál nelze použít k inicializaci člena flexibilního pole.",
|
||||
"Reprezentace IFC definice funkce %sq je neplatná.",
|
||||
"byla provedena oprava vedoucí k zahození implicitní parametru this.",
|
||||
"graf UniLevel IFC se nepoužil k zadání parametrů.",
|
||||
"V grafu definice parametrů IFC byl zadán tento počet parametrů: %d1, zatímco deklarace IFC určovala tento počet parametrů: %d2.",
|
||||
"V grafu definice parametrů IFC byl zadán %d1 parametr, zatímco deklarace IFC určovala tento počet parametrů: %d2.",
|
||||
"V grafu definice parametrů IFC byl zadán tento počet parametrů: %d1, zatímco deklarace IFC určovala %d2 parametr.",
|
||||
"Chybí reprezentace IFC definice funkce %sq.",
|
||||
"modifikátor funkce se nevztahuje na deklaraci členské šablony.",
|
||||
"výběr člena zahrnuje příliš mnoho vnořených anonymních typů",
|
||||
"mezi operandy není žádný společný typ",
|
||||
"očekával se ukazatel na člen",
|
||||
"flexibilní člen pole nelze deklarovat v jinak prázdném typu",
|
||||
"Očekávalo se, že std::source_location::__impl bude definováno pro třídu pouze s datovými členy _M_function_name, _M_file_name, _M_column a _M_line.",
|
||||
"zadané číslo sloupce je pro implementaci std::source_location příliš velké",
|
||||
"zadané číslo řádku je pro implementaci std::source_location příliš velké",
|
||||
"znaková konstanta UTF-16 nemůže zabírat více než jednu jednotku kódu; hodnota byla zkrácena",
|
||||
"oba argumenty musí mít stejný typ",
|
||||
"typ %t není platný jako argument pro tento předdefinovan.",
|
||||
"voláno z %nd:",
|
||||
"kvalifikovaný typ je pro anonymní bitová pole nestandardní.",
|
||||
"typ elementu vektorové podmínky (%t1) musí mít stejnou velikost jako typ elementu výsledku (%t2).",
|
||||
"typ operandu vektoru s plovoucí desetinnou čárkou (%t) nemá žádný odpovídající celočíselný vektorový typ.",
|
||||
"mangling pro výrazy requires ještě není implementovaný.",
|
||||
"kvůli atributu „není k dispozici“",
|
||||
"duplicitní kvalifikátor asm",
|
||||
"bitové pole s nekompletním typem výčtu nebo neprůhledný výčet s neplatným základním typem",
|
||||
"došlo k pokusu o vytvoření elementu z oddílu IFC %sq pomocí indexu do oddílu IFC %sq2.",
|
||||
"oddíl %sq určil svou velikost položky jako %d1, když bylo očekáváno %d2.",
|
||||
"při zpracování modulu %sq1 byl zjištěn neočekávaný požadavek IFC.",
|
||||
"podmínka selhala na řádku %d v %s1: %sq2",
|
||||
"atomické omezení závisí na sobě",
|
||||
"Funkce noreturn má návratový typ, který není void.",
|
||||
"oprava byla provedena vyřazením parametru %sq (v relativním indexu %d).",
|
||||
"výchozí argument šablony nelze zadat pro definici členské šablony mimo její třídu.",
|
||||
"při rekonstrukci entity se zjistil neplatný název identifikátoru IFC %sq.",
|
||||
"neplatný identifikátor IFC s názvem %sq byl během obnovy entity přeskočen.",
|
||||
"neplatná hodnota řazení modulu %sq",
|
||||
"šablona funkce načtená z modulu IFC byla nesprávně parsována jako %nd.",
|
||||
"nepovedlo se načíst odkaz na entitu IFC v modulu %sq.",
|
||||
"Z oddílu %sq, elementu %d1 (pozice v souboru %d2, relativní pozice %d3)",
|
||||
"zřetězené specifikátory nejsou povolené pro typ třídy s netriviálním destruktorem.",
|
||||
"Explicitní deklarace specializace nemůže být deklarací typu friend.",
|
||||
"typ std::float128_t se nepodporuje. místo toho se použije std::float64_t",
|
||||
"typ std::bfloat16_t se nepodporuje. místo toho se použije std::float32_t",
|
||||
"vodítko pro dedukce se nedá deklarovat pro šablonu aliasu %no",
|
||||
"%n bylo deklarováno jako nedostupné.",
|
||||
"%n bylo deklarováno jako nedostupné (%sq).",
|
||||
"kvůli atributu deprecated",
|
||||
"explicitní parametry šablony lambda jsou funkcí C++20",
|
||||
"použití _Noreturn je od C23 zastaralé. Místo toho použijte [[noreturn]].",
|
||||
"použití _Alignof je od C23 zastaralé. Místo toho použijte alignof.",
|
||||
"použití _Alignas je od C23 zastaralé. Místo toho použijte alignas.",
|
||||
"použití _Bool je od C23 zastaralé. Místo toho použijte bool.",
|
||||
"použití _Static_assert je od C23 zastaralé. Místo toho použijte static_assert.",
|
||||
"použití _Thread_local je od C23 zastaralé. Místo toho použijte thread_local.",
|
||||
"Aby bylo možné používat soubor modulu %sq (modul Microsoft Visual Studio IFC), musí být povolený režim Microsoftu.",
|
||||
"soubor modulu %sq se nepovedlo otevřít",
|
||||
"nalezeno v mapě modulu %sq.",
|
||||
"nalezeno v mapě jednotek hlaviček pro %sq"
|
||||
]
|
||||
@@ -74,7 +74,7 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"Der Operand von \"*\" muss ein Zeiger sein.",
|
||||
"Der Operand \"*\" muss ein Zeiger sein, weist jedoch den Typ \"%t\" auf.",
|
||||
"Das Argument für das Makro ist leer.",
|
||||
"Diese Deklaration hat keine Speicherklasse oder keinen Typspezifizierer.",
|
||||
"Eine Parameterdeklaration darf keinen Initialisierer aufweisen.",
|
||||
@@ -130,8 +130,8 @@
|
||||
"Die Schleife ist nicht erreichbar.",
|
||||
"Eine Blockbereichsfunktion darf nur eine externe Speicherklasse aufweisen.",
|
||||
"Es wurde eine \"{\" erwartet.",
|
||||
"Der Ausdruck muss den Typ \"pointer-to-class\" aufweisen.",
|
||||
"Der Ausdruck muss den Typ \"pointer-to-struct-or-union\" aufweisen.",
|
||||
"Der Ausdruck muss vom Typ \"Zeiger auf Klasse\" sein, weist jedoch den Typ \"%t\" auf.",
|
||||
"Der Ausdruck muss vom Typ \"Zeiger auf Struktur oder Union\" sein, weist jedoch den Typ \"%t\" auf.",
|
||||
"Es wurde ein Membername erwartet.",
|
||||
"Es wurde ein Feldname erwartet.",
|
||||
"\"%n\" hat keinen Member \"%sq\".",
|
||||
@@ -141,7 +141,7 @@
|
||||
"Das Verwenden der Adresse eines Bitfelds ist nicht zulässig.",
|
||||
"Zu viele Argumente im Funktionsaufruf.",
|
||||
"Unbenannte Prototypparameter sind nicht zulässig, wenn Text vorhanden ist.",
|
||||
"Der Ausdruck muss den Typ \"pointer-to-object\" aufweisen.",
|
||||
"Der Ausdruck muss vom Typ \"Zeiger auf Objekt\" sein, weist jedoch den Typ \"%t\" auf.",
|
||||
"Das Programm ist zu groß oder zu kompliziert zum Kompilieren.",
|
||||
"Ein Wert vom Typ \"%t1\" kann nicht zum Initialisieren einer Entität vom Typ \"%t2\" verwendet werden.",
|
||||
"%n darf nicht initialisiert werden.",
|
||||
@@ -152,8 +152,8 @@
|
||||
"Ein Typname darf nicht erneut als Parameter deklariert werden.",
|
||||
"Ein typedef-Name darf nicht erneut als Parameter deklariert werden.",
|
||||
"Konvertierung einer ganzen Zahl, die nicht Null ist, in einen Zeiger",
|
||||
"Der Ausdruck muss einen Klassentyp aufweisen.",
|
||||
"Der Ausdruck muss den Typ \"union\" oder \"struct\" aufweisen.",
|
||||
"Der Ausdruck muss vom Typ \"Klasse\" sein, weist jedoch den Typ \"%t\" auf.",
|
||||
"Der Ausdruck muss vom Typ \"Struktur\" oder \"Union\" sein, weist jedoch den Typ \"%t\" auf.",
|
||||
"Veralteter Zuweisungsoperator.",
|
||||
"Veralteter Initialisierer.",
|
||||
"Der Ausdruck muss ein integraler Konstantenausdruck sein.",
|
||||
@@ -180,7 +180,7 @@
|
||||
"Das Anwenden von \"&\" auf ein Array hat keine Auswirkungen.",
|
||||
"Der rechte Operand von \"%%\" ist Null.",
|
||||
"Das Argument ist nicht mit dem formellen Parameter kompatibel.",
|
||||
"Das Argument ist mit der entsprechenden Formatzeichenfolgenkonvertierung inkompatibel.",
|
||||
"Argument ist nicht mit der entsprechenden Formatzeichenfolgenkonvertierung kompatibel (erwarteter Typ %t1, aber das Argument weist den Typ %t2 auf)",
|
||||
"Die Quelldatei \"%sq\" konnte nicht geöffnet werden (keine Verzeichnisse in der Suchliste).",
|
||||
"Der Typ der Umwandlung muss eine ganze Zahl sein.",
|
||||
"Der Typ der Umwandlung muss arithmetisch oder ein Zeiger sein.",
|
||||
@@ -392,7 +392,7 @@
|
||||
"Die Main-Funktion darf nicht aufgerufen werden, und ihre Adresse darf nicht verwendet werden.",
|
||||
"Für ein Array darf keine neue Initialisierung angegeben werden.",
|
||||
"Die Memberfunktion \"%no\" darf nicht außerhalb ihrer Klasse neu deklariert werden.",
|
||||
"Der Klassentyp \"pointer-to-incomplete\" ist nicht zulässig.",
|
||||
"Der Typ eines Zeigers auf eine unvollständige Klasse (%t) ist nicht zulässig.",
|
||||
"Ein Verweis auf eine lokale Variable der einschließenden Funktion ist nicht zulässig.",
|
||||
"Für Postfix \"%sq\" wird eine Funktion mit einem Argument verwendet (Anachronismus).",
|
||||
null,
|
||||
@@ -838,7 +838,7 @@
|
||||
"Ein Verweis auf die lokale Variable wird zurückgegeben.",
|
||||
"Die Auslassung des expliziten Typs entspricht nicht dem Standard (\"int\" wird angenommen).",
|
||||
"Mehr als eine teilweise Spezialisierung stimmt mit der Vorlagenargumentliste von \"%n\" überein.",
|
||||
"%no",
|
||||
"%nod",
|
||||
"In einer Deklaration einer primären Vorlage ist keine Vorlagenargumentliste zulässig.",
|
||||
"Teilweise Spezialisierungen dürfen keine Standardvorlagenargumente aufweisen.",
|
||||
"%n1 wird nicht in der Vorlagenargumentliste von \"%n2\" verwendet oder kann nicht daraus hergeleitet werden.",
|
||||
@@ -952,7 +952,7 @@
|
||||
"Die nonstad_using_decl-Option kann nur beim Kompilieren von C++ verwendet werden.",
|
||||
"Der Rückgabetyp der Main-Funktion muss \"int\" sein.",
|
||||
"Ein Nichttyp-Vorlagenparameter darf keinen Klassentyp aufweisen.",
|
||||
"Ein Standardvorlagenargument kann nicht in der Deklaration eines Members einer Klassenvorlage außerhalb seiner Klasse angegeben werden.",
|
||||
"ein Standardvorlagenargument kann nicht in der Definition eines Members einer Klassenvorlage außerhalb der Vorlage angegeben werden",
|
||||
"Eine return-Anweisung ist in einem Handler eines Funktions-Try-Blocks eines Konstruktors nicht zulässig.",
|
||||
"Normale und erweiterte Kennzeichner können nicht in einer Initialisiererkennzeichnung kombiniert werden.",
|
||||
"Der zweite Index darf nicht kleiner als der erste sein.",
|
||||
@@ -1389,14 +1389,14 @@
|
||||
"dllexport und dllimport werden in Klassenvorlagen ignoriert.",
|
||||
"Die dllexport/dllimport -Spezifikation der Basisklasse unterscheidet sich von der der abgeleiteten Klasse.",
|
||||
"Durch die Neudeklaration kann dllexport/dllimport nicht zu \"%nod\" hinzugefügt werden.",
|
||||
"dllexport/dllimport-Konflikt mit \"%nod\"; dllexport wird angenommen.",
|
||||
"dllexport/dllimport-Konflikt mit %nod; dllexport wird angenommen.",
|
||||
"Die dllimport-Entität kann nicht definiert werden.",
|
||||
"dllexport/dllimport erfordert eine externe Bindung.",
|
||||
"Ein Member einer Klasse, die mit dllexport/dllimport deklariert wurde, kann nicht selbst mit einem solchen Spezifizierer deklariert werden.",
|
||||
"Das Feld eines Klassentyps ohne DLL-Schnittstelle wurde in einer Klasse mit DLL-Schnittstelle verwendet.",
|
||||
"Eine in Klammern gesetzte Memberdeklaration entspricht nicht dem Standard.",
|
||||
"Leerstellen zwischen dem umgekehrten Schrägstrich und dem Zeilenvorschub in der Zeilenverknüpfung wird ignoriert.",
|
||||
"dllexport/dllimport-Konflikt mit \"%nod\"; dllimport/dllexport wurde gelöscht.",
|
||||
"dllexport/dllimport-Konflikt mit %nod; dllimport/dllexport wurde gelöscht.",
|
||||
"Ungültiger Member für anonyme Memberklasse; die Klasse \"%t\" weist eine unzulässige Memberfunktion auf.",
|
||||
"reinterpret_cast entspricht nicht dem Standard.",
|
||||
"Der Positionsformatspezifizierer kann nicht Null sein.",
|
||||
@@ -1464,24 +1464,24 @@
|
||||
"Makro",
|
||||
"Bezeichnung",
|
||||
"Vorlagenparameter",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"Typ",
|
||||
"Union",
|
||||
"Klasse",
|
||||
"Struktur",
|
||||
"template template-Parameter",
|
||||
"Vorlage",
|
||||
"Klassenvorlage",
|
||||
null,
|
||||
"Enumeration",
|
||||
"Parameter",
|
||||
"Handlerparameter",
|
||||
"Variable",
|
||||
"Nichttyp",
|
||||
null,
|
||||
"Konstante",
|
||||
"Funktion",
|
||||
"Überladene Funktion",
|
||||
"Member",
|
||||
"Feld",
|
||||
null,
|
||||
"Namespace",
|
||||
"Benannte Registrierung",
|
||||
"Benannter Adressbereich",
|
||||
"Funktionsvorlage",
|
||||
@@ -1635,7 +1635,7 @@
|
||||
"Das Erweitern der Zeigerkonvertierung von \"%t1\" in \"%t2\" erweitert das signierte Bit.",
|
||||
"__sptr und __uptr gelten nicht für Pointer-to-Member-Typen.",
|
||||
"Die Deklaration des Kopierzuweisungsoperators für \"%t\" wurde unterdrückt, da \"%n\" konstant ist.",
|
||||
null,
|
||||
"Die Deklaration des Kopierzuweisungsoperators für \"%t\" wurde unterdrückt, weil \"%n\" folgenden Verweistyp aufweist",
|
||||
"Die Deklaration des Kopierzuweisungsoperators für \"%t1\" wurde unterdrückt, da die Deklaration von \"%t2\" unterdrückt wurde.",
|
||||
"Die Deklaration des Kopierzuweisungsoperators für \"%t1\" wurde unterdrückt, da die Deklaration von \"%t2\" mehrdeutig ist.",
|
||||
"Die Deklaration des Kopierzuweisungsoperators für \"%t1\" wurde unterdrückt, da auf die Deklaration von \"%t2\" nicht zugegriffen werden kann.",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"Die Deklaration des Kopierkonstruktors für \"%t1\" wurde unterdrückt, da auf die Deklaration von \"%t2\" nicht zugegriffen werden kann.",
|
||||
"Der Destruktor für \"%t1\" wird nicht aufgerufen, da auf ihn nicht zugegriffen werden kann und der Destruktor für \"%t2\" unterdrückt wurde.",
|
||||
"Auf die Definition am Ende der Datei darf kein Semikolon oder ein Deklarator folgen.",
|
||||
"Das erste Argument muss ein Zeiger auf einen Ganzzahl- oder einen Enumerationstyp sein.",
|
||||
"das erste Argument muss ein Zeiger auf einen Integer- oder Enumerationstyp sein.",
|
||||
"Synchronisierte Operationen sind nur für Objekte der Größe 1, 2, 4 oder 8 gültig.",
|
||||
"Zusätzliche Argumente werden ignoriert.",
|
||||
"\"=\" nahm den folgenden Makronamen \"%sq\" in der Befehlszeilendefinition an.",
|
||||
@@ -1670,7 +1670,7 @@
|
||||
"Ein Typqualifizierer ist in einem Konstruktor oder Destruktor nicht zulässig.",
|
||||
"Im new- oder delete-Operator ist kein Typqualifizierer zulässig.",
|
||||
"Ein Typqualifizierer ist in einer statischen Nichtmemberfunktion nicht zulässig.",
|
||||
"Der __assume-Ausdruck mit Nebeneffekten wurde verworfen.",
|
||||
"Das Argument für \"%s\" weist Nebenwirkungen auf, wird jedoch nicht ausgewertet.",
|
||||
"Unbekannter Unicode-Quelltyp (muss UTF-8, UTF-16, UTF-16LE oder UTF-16BE sein): %s",
|
||||
"Das Unicode-Zeichen mit Hexadezimalwert %s kann in der Vorverarbeitungsausgabe nicht dargestellt werden.",
|
||||
"Die angeforderte Konstruktor-/Destruktorpriorität ist für die interne Verwendung reserviert.",
|
||||
@@ -1695,8 +1695,8 @@
|
||||
null,
|
||||
"Für die Vektoroperation sind identische Elementtypen erforderlich.",
|
||||
"Die Vektoroperation gilt nicht für Vektoren mit nicht integralem Typ.",
|
||||
"Die Datei \"%s\" kann nicht geöffnet werden: %sq2.",
|
||||
"Die -Datei \"%s\" kann nicht geöffnet werden: %sq2: %s3.",
|
||||
"Die Datei %s kann nicht geöffnet werden: %sq2.",
|
||||
"Die -Datei %s kann nicht geöffnet werden: %sq2: %s3.",
|
||||
"Vorkompilierte Headerdatei",
|
||||
"Vordefiniertes Makro",
|
||||
"Generierter C-Code",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"ein Sichtbarkeitsspezifizierer der obersten Ebene erfordert eine Typdefinition",
|
||||
"eine triviale Eigenschaft kann keinen Verweistyp aufweisen",
|
||||
"eine triviale Eigenschaft kann keinen const- oder volatile-Typ aufweisen",
|
||||
"%nd wurde zuvor als andere Art von Enumerationstyp deklariert",
|
||||
"%nd wurde zuvor als andere Variante des Enumerationstyps deklariert",
|
||||
"Eine von einer Lambdafunktion erfasste Variable kann keinen %[managed]-Klassentyp aufweisen.",
|
||||
"Überschreiben einer virtuellen Funktion mit einem covariant-Rückgabetyp ist in einer %[managed]-Klasse nicht zulässig",
|
||||
"ein Array von Handles ist nicht zulässig",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"ein benannter Überschreibungsspezifizierer ist nur in einer %[managed]-Klasse zulässig",
|
||||
"kein vom benannten Überschreibungsspezifizierer angegebener Member stimmt mit dem Typ dieses Members überein",
|
||||
"eine statische Destruktordeklaration kann keinen benannten Überschreibungsspezifizierer enthalten",
|
||||
"Eine Enumeration mit eigenem Gültigkeitsbereich muss einen Namen aufweisen.",
|
||||
"ein bereichsbezogenes Enumerationstyp muss einen Namen haben",
|
||||
"Übertragung des Steuerelements in einen Finally-Block ist nicht zulässig",
|
||||
"Eine return-Anweisung innerhalb eines Finally-Block ist unzulässig.",
|
||||
"Der Try-Block erfordert mindestens einen Handler oder eine Finally-Klausel.",
|
||||
@@ -2207,7 +2207,7 @@
|
||||
"ein initonly-Feld kann nur vom Instanzkonstruktor der enthaltenden Klasse geändert werden",
|
||||
"ein statisches initonly-Feld kann nur vom statischen Konstruktor der enthaltenden Klasse geändert werden",
|
||||
"die Memberfunktion wird für eine Kopie des initonly-Felds aufgerufen",
|
||||
"Der Ausdruck muss einen Zeiger- oder Handletyp aufweisen.",
|
||||
"Der Ausdruck muss einen Zeiger- oder Handletyp aufweisen, ist jedoch vom Typ \"%t\".",
|
||||
"ein Bewegungskonstruktor oder Bewegungszuweisungsoperator wird verwendet, um einen lvalue hierhin zu kopieren, der das Quellobjekt möglicherweise zerstört",
|
||||
"die Memberauswahl in einer generischen %[C++/CLI]-Entität muss die '->'-Syntax anstelle von '.' verwenden",
|
||||
"ein Verweisklassentyp kann nicht von %t abgeleitet werden",
|
||||
@@ -2241,7 +2241,7 @@
|
||||
"unsicheres reinterpret_cast des Handle",
|
||||
"ein Vorlagenargument darf nicht auf einen generischen Typparameter verweisen",
|
||||
"in diesem Abonnementvorgang ist keine Ausdrucksliste zulässig (Klammern um Kommaoperatoren der obersten Ebene setzen)",
|
||||
"der Ausdruck muss über einen \"pointer-to-object\"- oder \"handle-to-%[C++/CLI]-array\"-Typ verfügen",
|
||||
"Der Ausdruck muss vom Typ \"Zeiger auf Objekt\" oder \"Handle für %[C++/CLI]-Array\" sein, weist jedoch den Typ \"%t\" auf.",
|
||||
"unbekanntes Attribut",
|
||||
"ein Member einer %[managed]-Klasse kann kein nicht-%[managed]-Klassentyp sein",
|
||||
"ein Member einer nicht-%[managed]-Klasse kann keinen Verweis- oder Schnittstellenklassentyp aufweisen",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"\"%nd\" wurde zuvor mit einem unterschiedlichen Basistyp deklariert",
|
||||
"'enum class' und 'enum struct' können hier nicht verwendet werden (verwenden Sie stattdessen eine einfache 'enum')",
|
||||
"bei Initialisierern für Objekte des Typs \"%t\" ist nur eine Ebene geschweifter Klammern zulässig",
|
||||
"\"%nd\" kann nicht als Name für einen Enumerationstyp",
|
||||
"%nd kann nicht als Name für einen Enumerationstyp verwendet werden",
|
||||
null,
|
||||
"Ein Initialisierer in geschweiften Klammern darf nicht mit 'new auto' verwendet werden.",
|
||||
"Die Definition von \"std::initializer_list\" enthält nicht den erwarteten Konstruktor.",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"Ein in Klammern gesetzter Initialisierer für eine Nicht-Klassenentität muss ein Ausdruck sein, keine in geschweifte Klammern gesetzte Liste.",
|
||||
"Eine in geschweifte Klammern gesetzte Liste stellt keinen Rückgabetyp für diese Lambdafunktion bereit.",
|
||||
"Die deklarierte Ausnahmespezifikation ist mit der generierten inkompatibel.",
|
||||
"Enumerationstypen mit eigenem Gültigkeitsbereich sind eine Funktion von C++11.",
|
||||
"bereichsbezogene Enumerationstypen sind ein C++11-Feature.",
|
||||
"Ein Funktionstyp kann nicht wertinitialisiert sein.",
|
||||
"Die Listeninitialisierung eines Objekttyps \"%t\" ist nicht zulässig, da der Typ unvollständig ist.",
|
||||
"\"std::initializer_list\" enthält entgegen der Erwartung einen Destruktor -- Die Bibliothek ist falsch konfiguriert.",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"Ein Funktionsaufruf muss in einem Konstantenausdruck einen konstanten Wert enthalten.",
|
||||
"Die Main-Funktion darf nicht als constexpr deklariert werden.",
|
||||
null,
|
||||
"Die Definition einer Klasse oder eines Enumerationstyps darf nicht in einer constexpr-Funktion oder einem Konstruktortext stehen.",
|
||||
"die Definition einer Klasse oder eines Enumerationstyps darf nicht in einer constexpr-Funktion oder einem Konstruktortext stehen",
|
||||
"Hier sind nur Attribute im GNU-Stil zulässig.",
|
||||
"Nicht dem Standard entsprechende Verwendung von 'auto', um den Typ eines Initialisierers abzuleiten und einen nachstehenden Rückgabetyp anzukündigen",
|
||||
"Die Deklaration einer Void-Parameterliste mit einem qualifizierten Void-Typ entspricht nicht dem Standard.",
|
||||
@@ -2546,7 +2546,7 @@
|
||||
"Der Typ \"decltype(auto)\" kann nicht abgeleitet werden.",
|
||||
"Eine threadlokale Erklärung im Blockbereich muss \"static\" oder \"extern\" enthalten.",
|
||||
"abgeleiteter Rückgabetyp %t1 steht in Konflikt mit zuvor abgeleitetem Typ %t2",
|
||||
"Rückgabetyp %nd kann nicht abgeleitet werden; wurde nicht definiert",
|
||||
"Der Rückgabetyp \"%nd;\" kann nicht abgeleitet werden. Er wurde nicht definiert.",
|
||||
"Eine virtuelle Funktion darf keinen abgeleiteten Rückgabetyp aufweisen.",
|
||||
"%n wird als kontextsensibles Schlüsselwort von diesem Punkt betrachtet",
|
||||
"Der globale Namespace weist keinen tatsächlichen Member \"%sq\" auf.",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"Variable in constexpr-Funktion ist nicht initialisiert.",
|
||||
"Initialisierung in Klammern einer Variablen, die mit einem Platzhaltertyp, jedoch ohne \"=\" initialisiert wurde, erfordert genau ein Element innerhalb der Klammern",
|
||||
"Es ist keine --target-Konfiguration \"%s\" vorhanden.",
|
||||
"Das Attribut wird in 64-Bit-x86-Konfigurationen nicht unterstützt.",
|
||||
"das Attribut wird nur in einer 32-Bit-x86-Konfigurationen unterstützt",
|
||||
"\"%s\" erfordert ein Argument.",
|
||||
"Ein Konstruktor oder Destruktor kann keine Coroutine sein.",
|
||||
"\"%n\" kann keine Coroutine sein.",
|
||||
@@ -2682,7 +2682,7 @@
|
||||
"Ein co_await-Ausdruck ist in einer catch-Klausel unzulässig.",
|
||||
"Eine Coroutine darf keinen Parameter \"ellipsis\" aufweisen.",
|
||||
"Für das Aktivieren von \"constexpr\" im C++14-Stil ist Unterstützung für \"bool\" erforderlich.",
|
||||
"Die constexpr-Funktion \"%nd\" ist nicht definiert.",
|
||||
"Constexpr \"%nd\" ist nicht definiert.",
|
||||
"Dieser Aufruf kann nicht ausgewertet werden, weil die Zielfunktion \"%nd\" kein \"constexpr\" oder noch nicht vollständig definiert ist.",
|
||||
"Hinweis",
|
||||
"Hinweis",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"Unzulässiger Typ %t im this-Zeiger für die eingeschränkte amp-Memberfunktion %nfd",
|
||||
"Unzulässiger Rückgabetyp \"%t\" für die auf AMP begrenzte Funktion \"%nfd\".",
|
||||
"Unzulässiger Parametertyp \"%t\" für die auf AMP begrenzte Funktion \"%nfd\".",
|
||||
null,
|
||||
"Unzulässiges Konstrukt in auf AMP begrenzter Funktion %nfd",
|
||||
"Unzulässige Speicherklasse \"%s\" in der auf AMP begrenzten Funktion \"%nfd\".",
|
||||
"\"%s\" ist in der auf AMP begrenzten Funktion \"%nfd\" unzulässig.",
|
||||
"Unzulässige Umwandlung in auf AMP begrenzte Funktion.",
|
||||
@@ -3116,8 +3116,8 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"Es wurde \">>>\" erwartet.",
|
||||
"Die __cudaPushCallConfiguration-Deklaration wurde nicht gefunden. Die CUDA Toolkit-Installation ist möglicherweise beschädigt.",
|
||||
"Der Initialisierer im C++17-Stil ist in diesem Modus nicht standardisiert.",
|
||||
"Das Erfassen von *this ist in diesem Modus nicht standardisiert.",
|
||||
"Attributpräfix \"using\" im C++17-Stil ist in diesem Modus nicht standardisiert.",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"Ein flüchtiger %t-Typ verhindert die constexpr-Auswertung von \"__builtin_bit_cast\".",
|
||||
"Ein Union-, Zeiger- oder Pointer-to-Member-Typ \"%t\" verhindert die constexpr-Auswertung von \"__builtin_bit_cast\".",
|
||||
"%npTd, geerbt über die Verwendung von decl %p",
|
||||
"Die Teilobjekterstellung von \"%t\" für erbende Konstruktoren kann nicht durchgeführt werden – der implizite Standardkonstruktor wurde gelöscht.",
|
||||
"Die Teilobjekterstellung von %t für erbende Konstruktoren kann nicht durchgeführt werden – der zugehörige Konstruktor wurde gelöscht.",
|
||||
"\"%n\" muss \"void\" zurückgeben.",
|
||||
"Ungültiger Beginn der Memberdeklaration.",
|
||||
"Erwartet wurde \"auto\".",
|
||||
@@ -3300,7 +3300,7 @@
|
||||
"Ungültige Verwendung von \"concept\".",
|
||||
"Ein standardmäßiger Membervergleichsoperator kann nicht &&-qualifiziert sein.",
|
||||
"Die constexpr-Standardvergleichsfunktion ruft die Nicht-constexpr-Funktion \"%nd\" auf.",
|
||||
"Der constexpr-Speichervergleich wird nur für integer-Objekte oder array-of-integer-Objekte oberster Ebene unterstützt.",
|
||||
"Der constexpr-Speichervergleich wird nur für integer-Objekte oder array-of-integer-Objekte unterstützt.",
|
||||
"Einer Konzeptvorlage können keine Einschränkungen zugeordnet sein.",
|
||||
"\"export\" ist nicht zulässig.",
|
||||
"Das Exportieren einzelner Klassenmember ist nicht zulässig.",
|
||||
@@ -3343,13 +3343,159 @@
|
||||
"Die Moduldateizuordnung für \"%s\" wurde mehrmals angegeben.",
|
||||
"Die Zuordnung der Headereinheit für \"%s\" wurde mehrmals angegeben.",
|
||||
"Für \"%s\" wurde keine Zuordnung angegeben.",
|
||||
"Die Moduldateizuordnung für \"%s\" ist ungültig.",
|
||||
null,
|
||||
"Der zu importierende Header \"%s\" wurde nicht gefunden.",
|
||||
"Mehrere Dateien in der Moduldateiliste stimmen mit \"%s\" überein.",
|
||||
"Die für \"%s\" gefundene Moduldatei ist für ein anderes Modul bestimmt.",
|
||||
"Beliebige Art von Moduldatei",
|
||||
"Die Moduldatei kann nicht gelesen werden.",
|
||||
"Die integrierte Funktion ist nicht verfügbar, weil der char8_t-Typ mit den aktuellen Optionen nicht unterstützt wird.",
|
||||
"Die Befehlszeilenoption \"--ms_await\" kann nicht angegeben werden, wenn C++20-Coroutinen aktiviert sind.",
|
||||
"Nicht standardmäßige Verwendung des expliziten Konstruktors \"%nod\" für die standardmäßige Aggregatelementinitialisierung"
|
||||
null,
|
||||
"Nicht standardmäßige Verwendung des expliziten Konstruktors \"%nod\" für die standardmäßige Aggregatelementinitialisierung",
|
||||
"Die Quelle oder das Ziel des memcpy-ähnlichen systeminternen Objekts verweist nicht auf ein Objekt.",
|
||||
"Ein memcpy-ähnliches systeminternes Objekt versucht, die darstellerisch unterschiedlichen Typen %t1 und %t2 zu kopieren.",
|
||||
"Ein memcpy-ähnliches systeminternes Objekt versucht, den nicht trivial kopierbaren Typ %t zu kopieren.",
|
||||
"Ein memcpy-ähnliches systeminternes Objekt versucht, ein Teilobjekt zu kopieren.",
|
||||
"Ein memcpy-ähnliches systeminternes Objekt versucht, einen Kopiervorgang über die Arraygrenze hinaus durchzuführen.",
|
||||
"Ein memcpy-ähnliches systeminternes Objekt versucht, überlappende Bytebereiche (stattdessen mithilfe eines entsprechenden memmove-Vorgangs) zu kopieren.",
|
||||
"Eine Frienddeklaration mit einer nachstehenden requires-Klausel muss eine Definition sein.",
|
||||
"Der Ausdruck muss einen arithmetischen Typ oder einen Zeigertyp aufweisen, ist jedoch vom Typ \"%t\".",
|
||||
"Der Ausdruck muss einen arithmetischen Typ, einen Enumerationstyp oder einen Zeigertyp aufweisen, ist jedoch vom Typ \"%t\".",
|
||||
"Der Ausdruck muss einen arithmetischen Typ, einen Enumerationstyp ohne eigenen Gültigkeitsbereich oder einen Zeigertyp aufweisen, ist jedoch vom Typ \"%t\".",
|
||||
"Der Ausdruck muss vom Typ \"Zeiger\" sein, weist jedoch den Typ \"%t\" auf.",
|
||||
"Der Operator \"->\" oder \"->*\" wurde auf \"%t\" statt auf einen Zeigertyp angewendet.",
|
||||
"Der unvollständige Klassentyp \"%t\" ist nicht zulässig.",
|
||||
"Das Bitlayout für dieses Kompilierungsziel kann nicht interpretiert werden.",
|
||||
"Kein entsprechender Operator für IFC-Operator \"%sq\".",
|
||||
"Keine entsprechende Aufrufkonvention für IFC-Aufrufkonvention \"%sq\".",
|
||||
"Das Modul \"%sq\" enthält nicht unterstützte Konstrukte.",
|
||||
"Nicht unterstütztes IFC-Konstrukt: %sq",
|
||||
"\"__is_signed\" kann ab jetzt nicht mehr als Schlüsselwort verwendet werden.",
|
||||
"Eine Arraydimension muss einen konstanten ganzzahligen Wert ohne Vorzeichen aufweisen.",
|
||||
"Die IFC-Datei \"%sq\" weist eine nicht unterstützte Version %d1.%d2 auf.",
|
||||
"Module sind in diesem Modus nicht aktiviert.",
|
||||
"\"Import\" ist in einem Modulnamen unzulässig.",
|
||||
"\"Modul\" ist in einem Modulnamen unzulässig.",
|
||||
null,
|
||||
null,
|
||||
"%n ist kein Enumerationstyp",
|
||||
"Der Enumerator \"%no2\" steht in Konflikt mit \"%n1\".",
|
||||
"Der Enumerator \"%no\" wurde bereits in diesem Bereich (%p) deklariert.",
|
||||
"Die Spezifikation \"throw()\" ist nicht in C++ 20 und höher enthalten.",
|
||||
"Mehrere Einträge in der Headereinheitenzuordnung stimmen mit \"%s\" überein.",
|
||||
"#pragma-Diagnose muss entweder das Argument \"push\" oder \"pop\" aufweisen",
|
||||
"es wurde kein \"#pragma diagnostic push\" gefunden, um diesem \"diagnostic pop\" zu entsprechen",
|
||||
"%sq kann kein Makro sein, wenn es in einer \"import\"- oder \"module\"-Direktive verwendet wird",
|
||||
"diese Direktive darf nur im globalen Namespacebereich angezeigt werden",
|
||||
"eine \"export\"-Deklaration kann nur im globalen oder Namespace-Gültigkeitsbereich auftreten.",
|
||||
"%sq wird als Bezeichner und nicht als Schlüsselwort analysiert, da die nachfolgenden Token nicht mit denen einer Präprozessor-Direktive übereinstimmen",
|
||||
"dies scheint der Anfang einer Präprozessor-Direktive zu sein, aber der Mangel an \";\", gefolgt von einem Zeilenumbruch, verhindert, dass",
|
||||
"dies scheint eine Direktive für die Vorverarbeitung von Modulen zu sein, aber solche Direktiven dürfen nicht innerhalb einer Makroerweiterung auftreten",
|
||||
"eine \"module\"-Direktive darf nicht im Bereich der bedingten Inklusion enthalten sein (z. B. #if, #else, #elseif usw.)",
|
||||
"der Import von %sq wurde übersprungen",
|
||||
"Der Zusagetyp „%t“ muss „get_return_object_on_allocation_failure“ als statische Memberfunktion deklarieren, die keine Argumente erfordert.",
|
||||
"Eine Aliasvorlage kann nicht explizit spezialisiert werden.",
|
||||
"um diesem „{“ zu entsprechen",
|
||||
"in diesem Makroaufruf",
|
||||
"Der Aufruf erfordert eine mehrdeutige Argumentkonvertierung.",
|
||||
"Die Deklaration im Besitz des Moduls „%s“ steht in Konflikt mit %nd.",
|
||||
"Die Deklaration im Besitz des globalen Moduls steht in Konflikt mit %nd im Besitz eines benannten Moduls.",
|
||||
"Das erste Argument für ein malloc-Attribut muss eine Funktion sein.",
|
||||
"%nod kann nicht erfasst werden.",
|
||||
"„this“ kann nicht erfasst werden.",
|
||||
"bereits im consteval-Kontext",
|
||||
"„wenn consteval“ und „wennn nicht consteval“ erfordern abhängige Anweisungen mit geschweiften Klammern",
|
||||
"„wenn consteval“ und „wenn nicht consteval“ sind in einer Nicht-constexpr-Funktion bedeutungslos",
|
||||
"die Übertragung der Steuerung in eine „wenn consteval“- oder „wenn nicht consteval“-Anweisung ist nicht zulässig",
|
||||
"die Konstantenauswertung kann die Deklaration einer Variablen mit statischer oder Thread-Speicherdauer nicht durchlaufen",
|
||||
"der änderbare Qualifizierer ist für einen Lambda-Ausdruck mit einem expliziten „dies“-Parameter nicht zulässig",
|
||||
"eine mit „statisch“ deklarierte Memberfunktion darf keinen expliziten „dies“-Parameter aufweisen",
|
||||
"ein expliziter „dies“-Parameter muss der erste deklarierte Parameter sein",
|
||||
"„dies“ ist hier nicht zulässig",
|
||||
"eine Vergleichsfunktion mit explizitem „dies“ kann nicht als Standard verwendet werden",
|
||||
"eine explizite „dies-2-Funktion erfordert einen Selektoroperanden",
|
||||
"„wenn consteval“ und „wenn nicht consteval“ sind in diesem Modus nicht Standard",
|
||||
"das Weglassen von „()“ in einem Lambda-Deklarator ist in diesem Modus nicht der Standard",
|
||||
"eine „trailing-requires“-Klausel ist nicht zulässig, wenn die Lambda-Parameterliste ausgelassen wird",
|
||||
"Modul %sq ungültige Partition angefordert",
|
||||
"Modul %sq1 undefinierte Partition (könnte %sq2 sein) wurde angefordert",
|
||||
"Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für Partition %sq2 angefordert – die leer ist",
|
||||
"Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für Partition %sq2 angefordert – was dem Start der Partition vorausgeht",
|
||||
"Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für die Partition %sq2 angefordert – was das Ende ihrer Partition überschreitet",
|
||||
"Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für die Partition %sq2 angefordert – welche mit ihren Partitionselementen falsch ausgerichtet ist",
|
||||
"von Unterfeld %sq (relative Position zum Knoten %d)",
|
||||
"von Partition %sq Element %d1 (Dateiposition %d2, relative Position %d3)",
|
||||
"Lambda-Attribute entsprechen hier nicht dem Standard",
|
||||
"der Bezeichner %sq könnte mit einem visuell ähnlichen Bezeichner verwechselt werden, der %p angezeigt wird",
|
||||
"dieser Kommentar enthält verdächtige Unicode-Formatierungssteuerzeichen",
|
||||
"diese Zeichenfolge enthält Unicode-Formatierungssteuerzeichen, die zu unerwartetem Laufzeitverhalten führen könnten",
|
||||
"%d1 unterdrückte Warnung wurde bei der Verarbeitung des Moduls %sq1 festgestellt",
|
||||
"%d1 unterdrückte Warnungen wurden bei der Verarbeitung des Moduls %sq1 festgestellt",
|
||||
"%d1 unterdrückter Fehler wurde beim Verarbeiten des Moduls %sq1 festgestellt",
|
||||
"%d1 unterdrückte Fehler wurden beim Verarbeiten des Moduls %sq1 festgestellt",
|
||||
"einschließlich",
|
||||
"Unterdrückt",
|
||||
"eine virtuelle Memberfunktion darf keinen expliziten „dies“-Parameter aufweisen",
|
||||
"das Übernehmen der Adresse einer expliziten „dies“-Funktion erfordert einen qualifizierten Namen.",
|
||||
"das Formatieren der Adresse einer expliziten „dies“-Funktion erfordert den Operator „&“",
|
||||
"Ein Zeichenfolgenliteral kann nicht zum Initialisieren eines flexiblen Arraymembers verwendet werden.",
|
||||
"Die IFC-Darstellung der Definition der Funktion %sq ist ungültig.",
|
||||
"Es wurde eine Korrektur vorgenommen, um den impliziten „this“-Parameter zu löschen.",
|
||||
"Ein UniLevel-IFC-Chart wurde nicht zum Angeben von Parametern verwendet.",
|
||||
"%d1 Parameter wurden im IFC-Parameterdefinitionschart angegeben, während %d2 Parameter in der IFC-Deklaration angegeben wurden.",
|
||||
"%d1 Parameter wurde im IFC-Parameterdefinitionschart angegeben, während %d2 Parameter in der IFC-Deklaration angegeben wurden.",
|
||||
"%d1 Parameter wurden im IFC-Parameterdefinitionschart angegeben, während %d2 Parameter in der IFC-Deklaration angegeben wurde.",
|
||||
"Die IFC-Darstellung der Definition der Funktion %sq fehlt.",
|
||||
"Funktionsmodifizierer gilt nicht für eine statische Mitgliedervorlagendeklaration",
|
||||
"Die Mitgliederauswahl umfasst zu viele geschachtelte anonyme Typen",
|
||||
"Es gibt keinen gemeinsamen Typ zwischen den Operanden",
|
||||
"Es wurde ein Pointer-to-Member erwartet",
|
||||
"Ein flexibles Arrayelement kann nicht in einem ansonsten leeren Typ deklariert werden.",
|
||||
"Es wurde erwartet, dass \"std::source_location::__impl\" für eine Klasse definiert ist, die nur die Datenmember \"_M_function_name\", \"_M_file_name\", \"_M_column\", \"_M_line\" enthält.",
|
||||
"die angegebene Spaltennummer ist für die Implementierung von „std::source_location“ zu groß",
|
||||
"die angegebene Zeilennummer ist für die Implementierung von „std::source_location“ zu groß",
|
||||
"Eine UTF-16-Zeichenkonstante darf nicht mehrere Codeeinheiten belegen. Wert abgeschnitten.",
|
||||
"Beide Argumente müssen denselben Typ aufweisen.",
|
||||
"Der Typ \"%t\" ist als Argument für dieses integrierte Element ungültig.",
|
||||
"aufgerufen von %nd:",
|
||||
"ein qualifizierter Typ ist kein Standard für anonyme Bitfelder",
|
||||
"der Elementtyp der Vektorbedingung (%t1) muss dieselbe Größe haben wie der Elementtyp des Ergebnisses (%t2)",
|
||||
"der Gleitkomma-Vektoroperandentyp (%t) hat keinen übereinstimmenden ganzzahligen Vektortyp",
|
||||
"das Mangling für 'requires'-Ausdrücke ist noch nicht implementiert",
|
||||
"aufgrund eines „nicht verfügbaren“ Attributs",
|
||||
"Doppelter „ASM“-Qualifizierer",
|
||||
"entweder ein Bitfeld mit einem unvollständigen Enumerationstyp oder eine opake Enumeration mit einem ungültigen Basistyp",
|
||||
"Es wurde versucht, ein Element aus der IFC-Partition %sq mithilfe eines Indexes in der IFC-Partition %sq2 zu erstellen",
|
||||
"Die Partition %sq hat ihre Eintragsgröße mit %d1 angegeben, obwohl %d2 erwartet wurde",
|
||||
"Unerwartete IFC-Anforderung beim Verarbeiten des Moduls %sq1",
|
||||
"Bedingungsfehler in Zeile %d in %s1: %sq2",
|
||||
"Die atomische Einschränkung hängt von sich selbst ab",
|
||||
"Die Funktion \"noreturn\" weist den Rückgabetyp \"nicht void\" auf.",
|
||||
"Eine Korrektur wurde vorgenommen, indem der Parameter %sq (beim relativen Index %d) weggelassen wurde",
|
||||
"ein Standardvorlagenargument kann nicht für die Definition einer Membervorlage außerhalb seiner Klasse angegeben werden",
|
||||
"Ungültiger IFC-Bezeichnername %sq bei der Rekonstruktion der Entität gefunden",
|
||||
"Ungültiger IFC-Bezeichnername %sq bei der Rekonstruktion der Entität übersprungen",
|
||||
"Modul %sq ungültiger Sortierwert",
|
||||
"Eine aus einem IFC-Modul geladene Funktionsvorlage wurde fälschlicherweise als %nd analysiert",
|
||||
"Fehler beim Laden eines IFC-Entitätsverweises im Modul \"%sq\"",
|
||||
"von Partition %sq Element %d1 (Dateiposition %d2, relative Position %d3)",
|
||||
"verkettete Kennzeichner sind für einen Klassentyp mit einem nichttrivialen Destruktor nicht zulässig",
|
||||
"Eine explizite Spezialisierungsdeklaration darf keine Frienddeklaration sein",
|
||||
"der Typ „std::float128_t“ wird nicht unterstützt. Stattdessen wird „std::float64_t“ verwendet",
|
||||
"der Typ „std::bfloat16_t“ wird nicht unterstützt. Stattdessen wird „std::float32_t“ verwendet",
|
||||
"Für die Aliasvorlage %no darf keine Deduktionsanleitung deklariert werden.",
|
||||
"%n wurde als nicht verfügbar deklariert.",
|
||||
"%n wurde als nicht verfügbar deklariert (%sq).",
|
||||
"aufgrund eines „veralteten“ Attributs",
|
||||
"Explizite Lambdavorlagenparameter sind ein C++20-Feature.",
|
||||
"Die Verwendung von „_Noreturn“ in C23 ist veraltet. Verwenden Sie stattdessen „[[noreturn]]“.",
|
||||
"Die Verwendung von „_Alignof“ in C23 ist veraltet. Verwenden Sie stattdessen „alignof“.",
|
||||
"Die Verwendung von „_Alignas“ in C23 ist veraltet. Verwenden Sie stattdessen „alignas“.",
|
||||
"Die Verwendung von „_Bool“ in C23 ist veraltet. Verwenden Sie stattdessen „bool“.",
|
||||
"Die Verwendung von „_Static_assert“ in C23 ist veraltet. Verwenden Sie stattdessen „static_assert“.",
|
||||
"Die Verwendung von „_Thread_local“ in C23 ist veraltet. Verwenden Sie stattdessen „thread_local“.",
|
||||
"Der Microsoft-Modus muss aktiviert sein, um die Moduldatei %sq (ein Microsoft Visual Studio IFC-Modul) zu verwenden.",
|
||||
"Die Moduldatei \"%sq\" konnte nicht importiert werden.",
|
||||
"wurde in der Modulzuordnung für das Modul %sq gefunden",
|
||||
"wurde in der Headereinheitszuordnung für %sq gefunden"
|
||||
]
|
||||
@@ -74,7 +74,7 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"un operando de '*' debe ser un puntero",
|
||||
"el operando de \"*\" debe ser un puntero, pero tiene el tipo %t",
|
||||
"el argumento para la macro está vacío",
|
||||
"esta declaración no tiene ningún especificador de tipo o clase de almacenamiento",
|
||||
"una declaración de parámetros no puede tener un inicializador",
|
||||
@@ -130,8 +130,8 @@
|
||||
"no se puede tener acceso al bucle",
|
||||
"una función de ámbito de bloque solo puede tener una clase de almacenamiento extern",
|
||||
"se esperaba '{'",
|
||||
"la expresión debe tener un tipo de puntero a clase",
|
||||
"la expresión debe tener un tipo de puntero a struct o union",
|
||||
"la expresión debe tener un tipo de puntero a clase, pero tiene el tipo %t",
|
||||
"la expresión debe tener un tipo de puntero a struct o union, pero tiene el tipo %t",
|
||||
"se esperaba un nombre de miembro",
|
||||
"se esperaba un nombre de campo",
|
||||
"%n no tiene ningún miembro %sq",
|
||||
@@ -141,7 +141,7 @@
|
||||
"no se permite la aceptación de la dirección de un campo de bits",
|
||||
"hay demasiados argumentos en la llamada a función",
|
||||
"no se permiten parámetros de prototipos sin nombre si aparece un cuerpo",
|
||||
"la expresión debe tener un tipo de puntero a objeto",
|
||||
"la expresión debe tener un tipo de puntero a objeto, pero tiene el tipo %t",
|
||||
"el programa es demasiado grande o complicado para compilarlo",
|
||||
"no se puede usar un valor de tipo %t1 para inicializar una entidad de tipo %t2",
|
||||
"%n no se puede inicializar",
|
||||
@@ -152,8 +152,8 @@
|
||||
"un nombre de tipo no se puede declarar de nuevo como parámetro",
|
||||
"un nombre typedef no se puede declarar de nuevo como parámetro",
|
||||
"conversión de un entero distinto de cero en puntero",
|
||||
"la expresión debe tener un tipo de clase",
|
||||
"la expresión debe tener un tipo struct o union",
|
||||
"la expresión debe tener un tipo de clase, pero tiene el tipo %t",
|
||||
"la expresión debe tener un tipo struct o union, pero tiene el tipo %t",
|
||||
"operador de asignaciones anticuado",
|
||||
"inicializador anticuado",
|
||||
"la expresión debe ser de tipo constante integral",
|
||||
@@ -180,7 +180,7 @@
|
||||
"no tiene ningún efecto aplicar '&' a una matriz",
|
||||
"el operando derecho de '%%' es cero",
|
||||
"el argumento no es compatible con un parámetro formal",
|
||||
"el argumento no es compatible con la conversión de la cadena de formato correspondiente",
|
||||
"el argumento no es compatible con la conversión de cadena de formato correspondiente (se esperaba el tipo %t1 pero el argumento tiene el tipo %t2)",
|
||||
"no se pudo abrir el archivo de código fuente %sq (no hay directorios en la lista de búsqueda)",
|
||||
"la conversión debe ser de tipo integral",
|
||||
"la conversión debe ser de tipo aritmético o de puntero",
|
||||
@@ -392,7 +392,7 @@
|
||||
"no se puede llamar a la función 'main' ni tomar su dirección",
|
||||
"no se puede especificar un inicializador new para una matriz",
|
||||
"la función miembro %no no se puede declarar de nuevo fuera de su clase",
|
||||
"no se permite un puntero a un tipo de clase incompleta",
|
||||
"no se permite un puntero a un tipo %t de clase incompleta",
|
||||
"no se permite una referencia a una variable local de una función de inclusión",
|
||||
"se usó una función de un solo argumento para %sq postfijo (anacronismo)",
|
||||
null,
|
||||
@@ -838,7 +838,7 @@
|
||||
"devolviendo una referencia a una variable local",
|
||||
"la omisión de un tipo explícito no es estándar (se presupone 'int')",
|
||||
"más de una especialización parcial coincide con la lista de argumentos de plantilla de %n",
|
||||
"%no",
|
||||
"%nod",
|
||||
"no se permite una lista de argumentos de plantilla en una declaración de plantilla principal",
|
||||
"las especializaciones parciales no pueden tener argumentos de plantilla predeterminados",
|
||||
"%n1 no se usa en (o no se puede deducir de) la lista de argumentos de plantilla de %n2",
|
||||
@@ -952,7 +952,7 @@
|
||||
"la opción 'nonstd_using_decl' solo se puede usar al compilar C++",
|
||||
"el tipo de valor devuelto de la función 'main' debe ser 'int'",
|
||||
"un parámetro de plantilla sin tipo no puede tener un tipo de clase",
|
||||
"no se puede especificar un argumento de plantilla predeterminado en la declaración de un miembro de una plantilla de clase fuera de su clase",
|
||||
"no se puede especificar un argumento de plantilla predeterminado en la definición de un miembro de una plantilla de clase fuera de la plantilla",
|
||||
"No se permite una instrucción \"return\" en un controlador de un bloque try de función de un constructor",
|
||||
"los designadores comunes y extendidos no se pueden combinar en una designación de inicializador",
|
||||
"el segundo subíndice no debe ser más pequeño que el primero",
|
||||
@@ -1464,24 +1464,24 @@
|
||||
"macro",
|
||||
"etiqueta",
|
||||
"parámetro de plantilla",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"tipo",
|
||||
"unión",
|
||||
"clase",
|
||||
"estructura",
|
||||
"parámetro template de plantilla",
|
||||
"plantilla",
|
||||
"plantilla de clase",
|
||||
null,
|
||||
"enumeración",
|
||||
"parámetro",
|
||||
"parámetro de controlador",
|
||||
"variable",
|
||||
"sin tipo",
|
||||
null,
|
||||
"constante",
|
||||
"función",
|
||||
"función sobrecargada",
|
||||
"miembro",
|
||||
"campo",
|
||||
null,
|
||||
"espacio de nombres",
|
||||
"registro con nombre",
|
||||
"espacio de dirección con nombre",
|
||||
"plantilla de función",
|
||||
@@ -1635,7 +1635,7 @@
|
||||
"la conversión de puntero de ampliación de %t1 a %t2 extiende el bit de signo",
|
||||
"__sptr y __uptr no se aplican a los tipos de puntero a miembro",
|
||||
"la declaración del operador de asignación de copia para %t se ha suprimido porque %n es const",
|
||||
null,
|
||||
"la declaración del operador de asignación de copia para %t se ha suprimido porque %n tiene un tipo de referencia",
|
||||
"la declaración del operador de asignación de copia para %t1 se ha suprimido porque también se suprimió la de %t2",
|
||||
"la declaración del operador de asignación de copia para %t1 se ha suprimido porque la de %t2 es ambigua",
|
||||
"la declaración del operador de asignación de copia para %t1 se ha suprimido porque no se puede obtener acceso a la de %t2",
|
||||
@@ -1670,7 +1670,7 @@
|
||||
"no se permite un calificador de tipo en un constructor o destructor",
|
||||
"no se permite un calificador de tipo en operator new u operator delete",
|
||||
"no se permite un calificador de tipo en una función que no sea miembro",
|
||||
"expresión __assume con efectos secundarios descartada",
|
||||
"el argumento para %s tiene efectos secundarios, pero no se evalúa",
|
||||
"tipo de código fuente Unicode no reconocido (debe ser uno de los siguientes: UTF-8, UTF-16, UTF-16LE o UTF-16BE): %s",
|
||||
"el carácter Unicode con valor hexadecimal %s no se puede representar en la salida de preprocesamiento",
|
||||
"la prioridad de constructor o destructor solicitada está reservada para uso interno",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"un especificador de visibilidad de nivel superior requiere una definición de tipo",
|
||||
"una propiedad trivial no puede tener un tipo de referencia",
|
||||
"una propiedad trivial no puede tener un tipo const o volatile",
|
||||
"%nd se declaró previamente como un tipo de enumeración distinto",
|
||||
"%nd se declaró anteriormente como un tipo diferente de tipo de enumeración",
|
||||
"una variable capturada por una lambda no puede tener un tipo de clase %[managed]",
|
||||
"no se admite la invalidación de una función virtual con un tipo de valor devuelto covariante en una clase %[managed]",
|
||||
"no se permite una matriz de identificadores",
|
||||
@@ -2207,7 +2207,7 @@
|
||||
"un campo initonly solo se puede modificar mediante el constructor de instancias de su clase contenedora",
|
||||
"un campo initonly estático solo se puede modificar mediante el constructor estático de su clase contenedora",
|
||||
"la función miembro se invocará en una copia del campo initonly",
|
||||
"la expresión debe tener un tipo de puntero o identificador",
|
||||
"la expresión debe tener un tipo de identificador o puntero, pero tiene el tipo %t",
|
||||
"para copiar un valor L aquí, se usa un constructor de movimiento o de asignación de movimiento, lo cual puede destruir el objeto de origen",
|
||||
"la selección de miembros en una entidad genérica de %[C++/CLI] debe usar la sintaxis '->', no '.'",
|
||||
"un tipo de clase ref no se puede derivar de %t",
|
||||
@@ -2241,7 +2241,7 @@
|
||||
"reinterpret_cast de identificador no seguro",
|
||||
"un argumento de plantilla no puede hacer referencia a un parámetro de tipo genérico",
|
||||
"no se permite una lista de expresiones en esta operación de subíndice (use paréntesis para un operador de coma de nivel superior)",
|
||||
"la expresión debe tener un tipo 'puntero a objeto' o 'identificador a tipo de matriz %[C++/CLI]'",
|
||||
"la expresión debe tener un tipo de puntero a objeto o de identificador a tipo de matriz %[C++/CLI], pero tiene el tipo %t",
|
||||
"atributo no reconocido",
|
||||
"un miembro de una clase %[managed] no puede ser de un tipo de clase no %[managed]",
|
||||
"un miembro de una clase no %[managed] no puede tener un tipo de clase ref o interface",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"un inicializador entre paréntesis para una entidad que no es una clase debe ser una expresión, no una lista entre llaves",
|
||||
"una lista entre llaves no proporciona un tipo devuelto para este lambda",
|
||||
"la especificación de excepción declarada es incompatible con la que se ha generado",
|
||||
"los tipos de enumeración con ámbito son una funcionalidad de C++11",
|
||||
"los tipos de enumeración con ámbito son una característica de C++11",
|
||||
"un tipo de función no se puede inicializar con un valor",
|
||||
"no se permite la inicialización con lista de un tipo de objeto %t porque el tipo está incompleto",
|
||||
"std::initializer_list tiene un destructor y se supone que no debe tenerlo; la biblioteca no está bien configurada",
|
||||
@@ -2604,7 +2604,7 @@
|
||||
"la definición de un tipo C++/CX público no se permite en el ámbito global",
|
||||
"no se permite una propiedad indizada con un descriptor de acceso público 'get' o 'set'",
|
||||
"no se permite un tipo de delegado anidado público",
|
||||
"inicializador de delegado no válido: se esperaba '(<función-dirección o funtor-objeto> [, Platform::CallbackContext])' o '(<identificador de objeto>, <miembro-dirección> [, Platform::CallbackContext [, bool]])'",
|
||||
"inicializador de delegado no válido: se esperaba \"(<function-address or functor-object> [, Platform::CallbackContext])\" o \"(<object handle>, <member-address> [, Platform::CallbackContext [, bool]])\"",
|
||||
"inicializador de delegado no válido: el objeto debe ser un identificador de una clase %[managed]",
|
||||
"C++/CX no admite matrices 'in/out': use 'const Platform::Array<T>^' para 'in' y 'Platform::WriteOnlyArray<T>^' o 'Platform::Array<T>^*' para 'out' en API públicas",
|
||||
"falta el atributo \"target\" de %nd",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"la variable de la función constexpr está sin inicializar",
|
||||
"la inicialización entre llaves de una variable declarada con un tipo de marcador de posición pero sin \"=\" necesita exactamente un elemento dentro de las llaves",
|
||||
"no existe ninguna configuración \"%s\" --target",
|
||||
"el atributo no es compatible con configuraciones x86 de 64 bits",
|
||||
"el atributo solo se admite en configuraciones x86 de 32 bits",
|
||||
"\"%s\" requiere un argumento",
|
||||
"un constructor o destructor no puede ser una corrutina",
|
||||
"%n no puede ser una corrutina",
|
||||
@@ -2682,7 +2682,7 @@
|
||||
"no se permite una expresión co_await dentro de una cláusula catch",
|
||||
"una corrutina no puede tener un parámetro de puntos suspensivos",
|
||||
"para habilitar constexpr como en C++14, se requiere compatibilidad con \"bool\"",
|
||||
"la función constexpr %nd no está definida",
|
||||
"el valor constexpr %nd no está definido",
|
||||
"esta llamada no se puede evaluar porque la función %nd de destino no es constexpr o no está totalmente definida aún",
|
||||
"nota",
|
||||
"Nota",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"tipo %t no válido en puntero this para la función miembro %nfd con restricción amp",
|
||||
"Tipo de valor devuelto %t no válido para la función %nfd con restricción amp",
|
||||
"Tipo de parámetro %t no válido para la función %nfd con restricción amp",
|
||||
null,
|
||||
"construcción no válida en la función %nfd con restricción amp",
|
||||
"Clase de almacenamiento %s no válida en la función %nfd con restricción amp",
|
||||
"%s no se permite en la función %nfd con restricción amp",
|
||||
"conversión no válida en la función con restricción amp",
|
||||
@@ -2997,7 +2997,7 @@
|
||||
"<error de emisión de diagnóstico>",
|
||||
"Hay demasiados errores como para que el motor de IntelliSense funcione correctamente. Puede que algunos no se vean en el editor.",
|
||||
"la asignación al anacronismo \"this\" no es compatible con el modo C++11",
|
||||
"error desconocido. No se generó un archivo Intellisense PCH.",
|
||||
"error desconocido. No se generó un archivo IntelliSense PCH.",
|
||||
"No se pueden asignar una o varias rutas remotas a las rutas locales actuales. La experiencia con IntelliSense puede degradarse.",
|
||||
null,
|
||||
null,
|
||||
@@ -3116,8 +3116,8 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"se esperaba \">>>\"",
|
||||
"no se encuentra la declaración __cudaPushCallConfiguration. La instalación del kit de herramientas de CUDA puede estar dañada.",
|
||||
"El inicializador de estilo C++17 no es estándar en este modo",
|
||||
"la captura de *this no es estándar en este modo",
|
||||
"El prefijo del atributo \"using\" de estilo C++17 no es estándar en este modo",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"un tipo volatile %t impide la evaluación constexpr de __builtin_bit_cast",
|
||||
"un tipo de unión, puntero o puntero a miembro %t impide la evaluación constexpr de __builtin_bit_cast",
|
||||
"%npTd, heredado mediante el uso de la declaración %p",
|
||||
"no se puede realizar la construcción de subobjetos de %t para los constructores de herencia; se elimina el constructor predeterminado implícito",
|
||||
"no se puede realizar la construcción del subobjeto de %t para los constructores heredados; se elimina el constructor asociado",
|
||||
"%n debe devolver void",
|
||||
"inicio de declaración de miembro no válido",
|
||||
"se esperaba \"auto\"",
|
||||
@@ -3300,7 +3300,7 @@
|
||||
"uso no válido del concepto",
|
||||
"un operador de comparación de miembros con valores predeterminados no puede estar calificado con \"&&\"",
|
||||
"la función de comparación constexpr predeterminada llama a una función %nd que no es constexpr",
|
||||
"la comparación de memoria de constexpr solo se admite para objetos de matriz de enteros o enteros de nivel superior",
|
||||
"la comparación de memoria de constexpr solo se admite para objetos de matriz de enteros o enteros",
|
||||
"una plantilla de concepto no puede tener restricciones asociadas",
|
||||
"no se permite \"export\"",
|
||||
"no se permite la exportación de miembros de clases individuales",
|
||||
@@ -3343,13 +3343,159 @@
|
||||
"la asignación de archivos de módulo para \"%s\" se especificó más de una vez",
|
||||
"la asignación de unidades de encabezado para \"%s\" se especificó más de una vez",
|
||||
"no se especificó ninguna asignación para \"%s\"",
|
||||
"la asignación del archivo de módulo para \"%s\" no es válida",
|
||||
null,
|
||||
"no se encuentra el encabezado \"%s\" para importar",
|
||||
"hay más de un archivo de la lista de archivos de módulo que coincide con \"%s\"",
|
||||
"el archivo de módulo que se encontró para \"%s\" es para otro módulo",
|
||||
"cualquier tipo de archivo de módulo",
|
||||
"no se puede leer el archivo de módulo",
|
||||
"la función integrada no está disponible porque no se admite el tipo char8_t con las opciones actuales",
|
||||
"no se puede especificar la opción de línea de comandos --ms_await si están habilitadas las corrutinas de C++ 20",
|
||||
"uso no estándar de %nod de constructor explícito para la inicialización predeterminada del elemento de agregado"
|
||||
null,
|
||||
"uso no estándar de %nod de constructor explícito para la inicialización predeterminada del elemento de agregado",
|
||||
"el origen o el destino del intento intrínseco de tipo memcpy no apunta a un objeto",
|
||||
"intentos intrínsecos de tipo memcpy para copiar los tipos %t1 y %t2 diferentes de forma representativa",
|
||||
"intentos intrínsecos de tipo memcpy para copiar el tipo %t que no se puede copiar de forma trivial",
|
||||
"intentos intrínsecos de tipo memcpy para copiar el objeto parcial",
|
||||
"intentos intrínsecos de tipo memcpy para copiar más allá del límite de matriz",
|
||||
"intentos intrínsecos de tipo memcpy para copiar los intervalos de bytes solapados (con la operación memmove correspondiente en su lugar)",
|
||||
"una declaración \"friend\" con una cláusula requires final debe ser una definición",
|
||||
"la expresión debe tener un tipo aritmético o de puntero, pero tiene el tipo %t",
|
||||
"la expresión debe tener un tipo aritmético, de enumeración o de puntero, pero tiene el tipo %t",
|
||||
"la expresión debe tener un tipo aritmético, de enumeración sin ámbito o de puntero, pero tiene el tipo %t",
|
||||
"la expresión debe tener un tipo de puntero, pero tiene el tipo %t",
|
||||
"el operador -> o ->* se aplica a %t, en lugar de a un tipo de puntero",
|
||||
"no se permite un tipo %t de clase incompleta",
|
||||
"no se puede interpretar el diseño de bits de este destino de compilación",
|
||||
"no hay ningún operador correspondiente al operador IFC %sq",
|
||||
"no hay ninguna convención de llamada correspondiente a la convención de llamada IFC %sq",
|
||||
"el módulo %sq contiene construcciones no admitidas",
|
||||
"construcción IFC no admitida: %sq",
|
||||
"__is_signed ya no es una palabra clave a partir de este punto",
|
||||
"una dimensión de matriz debe tener un valor entero sin signo constante",
|
||||
"El archivo IFC %sq tiene la versión no compatible %d1.%d2",
|
||||
"los módulos no están habilitados en este modo",
|
||||
"No se permite \"import\" en un nombre de módulo",
|
||||
"No se permite usar \"módulo\" en un nombre de módulo",
|
||||
null,
|
||||
null,
|
||||
"%n no es un tipo de enumeración",
|
||||
"el enumerador %no2 entra en conflicto con %n1",
|
||||
"el enumerador %no ya se ha declarado en el ámbito %p",
|
||||
"la especificación \"throw()\" no forma parte de C++20 y versiones posteriores",
|
||||
"más que la entrada en el mapa de la unidad del encabezado coincide con \"%s\"",
|
||||
"el diagnóstico #pragma debe tener un argumento \"push\" o \"pop\"",
|
||||
"no se encontró ninguna \"diagnóstico 'push' de #pragma\" que coincidiera con este \"diagnóstico 'pop'\"",
|
||||
"%sq no puede ser una macro cuando se usa en una directiva \"import\" o \"module\"",
|
||||
"esta directiva solo puede aparecer en el ámbito de espacio de nombres global",
|
||||
"una declaración \"export\" solo puede aparecer en un ámbito global o de espacio de nombres",
|
||||
"%sq se analiza como identificador en lugar de como palabra clave porque los tokens posteriores no coinciden con los de una directiva de preprocesador",
|
||||
"parece ser el inicio de una directiva de preprocesador, pero la ausencia de un \";\" seguida inmediatamente por una nueva línea impide eso",
|
||||
"parece que se trata de una directiva de preprocesamiento de módulos, pero estas directivas no pueden aparecer dentro de una expansión de macro",
|
||||
"una directiva \"module\" no puede aparecer en el ámbito de la inclusión condicional (por ejemplo, #if, #else, #elseif, etc.)",
|
||||
"se ha omitido la importación de %sq",
|
||||
"el tipo de promesa %t debe declarar get_return_object_on_allocation_failure como una función miembro estática que no requiera argumentos",
|
||||
"una plantilla de alias no se puede especializar explícitamente",
|
||||
"para que coincida con este \"{\"",
|
||||
"en esta invocación de macro",
|
||||
"la llamada requiere una conversión de argumento ambigua",
|
||||
"la declaración propiedad del módulo %s está en conflicto con %nd",
|
||||
"la declaración propiedad del módulo global entra en conflicto con %nd propiedad de un módulo con nombre",
|
||||
"el primer argumento de un atributo \"malloc\" debe ser una función",
|
||||
"no se puede capturar %nod",
|
||||
"no se puede capturar \"this\"",
|
||||
"ya está en contexto de consteval",
|
||||
"'if consteval' y 'if not consteval' requieren instrucciones dependientes limitadas",
|
||||
"'if consteval' y 'if not consteval' no tienen sentido en una función que no es constexpr",
|
||||
"no se permite la transferencia del control a una instrucción 'if consteval' o 'if not consteval'",
|
||||
"constant-evaluation no puede pasar por la declaración de una variable con duración de almacenamiento estático o de subproceso",
|
||||
"no se permite el calificador mutable en una expresión lambda con un parámetro \"this\" explícito",
|
||||
"una función miembro declarada con 'static' no puede tener un parámetro 'this' explícito",
|
||||
"un parámetro 'this' explícito debe ser el primer parámetro declarado",
|
||||
"“this” no se permite aquí",
|
||||
"no se puede establecer de forma predeterminada una función de comparación con 'this' explícita",
|
||||
"una función explícita 'this' requiere un operando selector",
|
||||
"'if consteval' y 'if not consteval' no son estándar en este modo",
|
||||
"omitir '()' en un declarador lambda no es estándar en este modo",
|
||||
"no se permite una cláusula trailing-requires-clause cuando se omite la lista de parámetros lambda",
|
||||
"se solicitó una partición no válida del módulo %sq",
|
||||
"módulo %sq1 partición no definida (se considera que es %sq2) solicitada",
|
||||
"módulo %sq1, posición de archivo %d1 (posición relativa %d2) solicitada para la partición %sq2, que está vacía",
|
||||
"módulo %sq1, posición de archivo %d1 (posición relativa %d2) solicitada para la partición %sq2, que es anterior al inicio de la partición",
|
||||
"módulo %sq1, posición de archivo %d1 (posición relativa %d2) solicitada para la partición %sq2, que desborda el final de su partición",
|
||||
"módulo %sq1 posición de archivo %d1 (posición relativa %d2) solicitada para la partición %sq2, que está mal alineada con sus elementos de particiones",
|
||||
"desde el subcampo %sq (posición relativa al nodo %d)",
|
||||
"de la partición %sq elemento %d1 (posición de archivo %d2, posición relativa %d3)",
|
||||
"los atributos lambda no son estándar aquí",
|
||||
"el identificador %sq podría confundirse con uno visualmente similar que aparece %p",
|
||||
"este comentario contiene caracteres de control de formato Unicode sospechosos",
|
||||
"esta cadena contiene caracteres de control de formato Unicode que podrían dar lugar a un comportamiento inesperado en tiempo de ejecución",
|
||||
"Se encontró %d1 advertencia suprimida al procesar el módulo %sq1",
|
||||
"Se encontraron %d1 advertencias suprimidas al procesar el módulo %sq1",
|
||||
"Se encontró un error suprimido %d1 al procesar el módulo %sq1",
|
||||
"Se encontraron %d1 errores suprimidos al procesar el módulo %sq1",
|
||||
"Incluido",
|
||||
"Suprimido",
|
||||
"una función miembro virtual no puede tener un parámetro 'this' explícito",
|
||||
"tomar la dirección de una función explícita \"this\" requiere un nombre completo",
|
||||
"la formación de la dirección de una función explícita 'this' requiere el operador '&'",
|
||||
"no se puede usar un literal de cadena para inicializar un miembro de matriz flexible",
|
||||
"La representación IFC de la definición de la función %sq no es válida",
|
||||
"se realizó una corrección para quitar un parámetro \"this\" implícito",
|
||||
"no se usó un gráfico IFC UniLevel para especificar parámetros",
|
||||
"el gráfico de definición de parámetros IFC especificó %d1 parámetros, mientras que la declaración IFC especificó %d2 parámetros",
|
||||
"el gráfico de definición de parámetros IFC especificó %d1 parámetro, mientras que la declaración IFC especificó %d2 parámetros",
|
||||
"el gráfico de definición de parámetros IFC especificó %d1 parámetros, mientras que la declaración IFC especificó %d2 parámetro",
|
||||
"Falta la representación IFC de la definición de la función %sq",
|
||||
"el modificador de función no se aplica a la declaración de plantilla de miembro",
|
||||
"la selección de miembros implica demasiados tipos anónimos anidados",
|
||||
"no hay ningún tipo común entre los operandos",
|
||||
"se esperaba un puntero a miembro",
|
||||
"un miembro de matriz flexible no se puede declarar en un tipo que de otro modo estaría vacío",
|
||||
"se esperaba que 'std::source_location::__impl' se definiera a una clase con solo los miembros de datos '_M_function_name', '_M_file_name', '_M_column', '_M_line'",
|
||||
"el número de columna dado es demasiado grande para la implementación 'std::source_location'",
|
||||
"el número de línea especificado es demasiado grande para la implementación 'std::source_location'",
|
||||
"una constante de caracteres UTF-16 no puede ocupar más de una unidad de código; valor truncado",
|
||||
"ambos argumentos deben tener el mismo tipo",
|
||||
"el tipo %t no es válido como argumento para este elemento integrado",
|
||||
"llamado desde %nd:",
|
||||
"un tipo calificado no es estándar para campos de bits anónimos",
|
||||
"el tipo de elemento de la condición de vector (%t1) debe tener el mismo tamaño que el tipo de elemento del resultado (%t2)",
|
||||
"el tipo de operando de vector de punto flotante (%t) no tiene ningún tipo de vector entero coincidente",
|
||||
"aún no se ha implementado la limpieza de expresiones \"requires\"",
|
||||
"debido a un atributo “no disponible”",
|
||||
"calificador 'asm' duplicado",
|
||||
"un campo de bits con un tipo de enumeración incompleto o una enumeración opaca con un tipo base no válido",
|
||||
"intentó construir un elemento a partir de la partición IFC %sq mediante un índice en la partición IFC %sq2",
|
||||
"la partición %sq especificó su tamaño de entrada como %d1 cuando se esperaba %d2",
|
||||
"se encontró un requisito IFC inesperado al procesar el módulo %sq1",
|
||||
"error de condición en la línea %d en %s1: %sq2",
|
||||
"la restricción atómica depende de sí misma",
|
||||
"La función \"noreturn\" tiene un tipo de valor devuelto distinto de nulo",
|
||||
"se ha quitado el parámetro %sq (en el índice relativo %d) para realizar una corrección",
|
||||
"no se puede especificar un argumento de plantilla predeterminado en la definición de una plantilla de miembro fuera de su clase",
|
||||
"se encontró un nombre de identificador IFC no válido %sq durante la reconstrucción de entidades",
|
||||
"se omitió un nombre de identificador IFC no válido %sq durante la reconstrucción de entidades",
|
||||
"el módulo %sq es un valor de ordenación no válido",
|
||||
"una plantilla de función cargada desde un módulo IFC se analizó incorrectamente como %nd",
|
||||
"no se pudo cargar una referencia de entidad IFC en el módulo %sq",
|
||||
"de la partición %sq elemento %d1 (posición de archivo %d2, posición relativa %d3)",
|
||||
"no se permiten designadores encadenados para un tipo de clase con un destructor no trivial",
|
||||
"una declaración de especialización explícita no puede ser una declaración \"friend\"",
|
||||
"no se admite el tipo std::float128_t; se usará std::float64_t en su lugar",
|
||||
"no se admite el tipo std::bfloat16_t; se usará std::float32_t en su lugar",
|
||||
"no se puede declarar una guía de deducción para la plantilla de alias %no",
|
||||
"%n se declaró no disponible",
|
||||
"%n se declaró no disponible (%sq)",
|
||||
"debido a un atributo \"en desuso\"",
|
||||
"los parámetros de plantilla lambda explícitos son una característica de C++20",
|
||||
"el uso de \"_Noreturn\" ha quedado obsoleto en C23; usar '[[noreturn]]' en su lugar",
|
||||
"el uso de \"_Alignof\" ha quedado obsoleto en C23; usar \"alignof\" en su lugar",
|
||||
"el uso de \"_Alignas\" ha quedado obsoleto en C23; usar \"alignas\" en su lugar",
|
||||
"el uso de \"_Bool\" ha quedado obsoleto en C23; usar 'bool' en su lugar",
|
||||
"el uso de \"_Static_assert\" ha quedado obsoleto en C23; usar \"static_assert\" en su lugar",
|
||||
"el uso de \"_Thread_local\" ha quedado obsoleto en C23; usar \"thread_local\" en su lugar",
|
||||
"El modo Microsoft debe estar habilitado para usar el archivo de módulo %sq (un módulo IFC de Microsoft Visual Studio).",
|
||||
"no se pudo abrir el archivo de módulo %sq",
|
||||
"se encuentra en la asignación de módulo para el módulo %sq",
|
||||
"se encuentra en el mapa de unidad de encabezado para %sq"
|
||||
]
|
||||
@@ -74,7 +74,7 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"l'opérande de '*' doit être un pointeur",
|
||||
"l'opérande de '*' doit être un pointeur mais il a le type %t",
|
||||
"l'argument de la macro est vide",
|
||||
"cette déclaration n'a pas de classe de stockage ou de spécificateur de type",
|
||||
"une déclaration de paramètre ne peut pas avoir d'initialiseur",
|
||||
@@ -130,8 +130,8 @@
|
||||
"boucle inaccessible",
|
||||
"une fonction avec portée de bloc ne peut avoir qu'une classe de stockage externe",
|
||||
"'{' attendu",
|
||||
"l'expression doit avoir un type pointeur vers classe",
|
||||
"l'expression doit avoir un type pointeur vers struct ou union",
|
||||
"l'expression doit avoir un type pointeur vers classe mais elle a le type %t",
|
||||
"l'expression doit avoir un type pointeur vers struct ou union mais elle a le type %t",
|
||||
"nom de membre attendu",
|
||||
"nom de champ attendu",
|
||||
"%n n'a pas de membre %sq",
|
||||
@@ -141,7 +141,7 @@
|
||||
"prise d'adresse d'un champ de bits non autorisée",
|
||||
"trop d'arguments dans l'appel de fonction",
|
||||
"paramètres prototypés sans nom non autorisés lorsque le corps est présent",
|
||||
"l'expression doit avoir un type pointeur vers objet",
|
||||
"l'expression doit avoir un type pointeur vers objet mais elle a le type %t",
|
||||
"programme trop volumineux ou complexe pour être compilé",
|
||||
"impossible d'utiliser une valeur de type %t1 pour initialiser une entité de type %t2",
|
||||
"impossible d'initialiser %n",
|
||||
@@ -152,8 +152,8 @@
|
||||
"impossible de redéclarer un nom de type en tant que paramètre",
|
||||
"impossible de redéclarer un nom de typedef en tant que paramètre",
|
||||
"conversion d'entier non nul en pointeur",
|
||||
"l'expression doit avoir un type classe",
|
||||
"l'expression doit avoir un type struct ou union",
|
||||
"l'expression doit avoir un type classe mais elle a le type %t",
|
||||
"l'expression doit avoir un type struct ou union mais elle a le type %t",
|
||||
"ancien opérateur d'assignation",
|
||||
"ancien initialiseur",
|
||||
"l'expression doit avoir une expression constante intégrale",
|
||||
@@ -180,7 +180,7 @@
|
||||
"l'application de '&' à un tableau n'a aucun effet",
|
||||
"l'opérande droit de '%%' est égal à zéro",
|
||||
"argument incompatible avec le paramètre formel",
|
||||
"argument incompatible avec la conversion de chaîne de format correspondante",
|
||||
"l’argument est incompatible avec la conversion de chaîne de format correspondante (type attendu %t1 mais l’argument a le type %t2)",
|
||||
"impossible d'ouvrir le fichier source %sq (aucun répertoire dans la liste de recherche)",
|
||||
"le type de cast doit être intégral",
|
||||
"le type de cast doit être arithmétique ou pointeur",
|
||||
@@ -392,7 +392,7 @@
|
||||
"impossible d'appeler la fonction 'main' ou de prendre son adresse",
|
||||
"impossible de spécifier un new-initializer pour un tableau",
|
||||
"impossible de redéclarer la fonction membre %no en dehors de sa classe",
|
||||
"pointeur vers un type classe incomplète non autorisé",
|
||||
"le pointeur vers le type classe incomplet %t n'est pas autorisé",
|
||||
"référence à une variable locale de fonction englobante non autorisée",
|
||||
"fonction à argument unique utilisée pour %sq suffixé (anachronisme)",
|
||||
null,
|
||||
@@ -838,7 +838,7 @@
|
||||
"retourne la référence à une variable locale",
|
||||
"omission de type explicite non standard ('int' pris par défaut)",
|
||||
"plusieurs spécialisations partielles correspondent à la liste d'arguments template de %n",
|
||||
"%no",
|
||||
"%nod",
|
||||
"liste d'arguments template non autorisée dans une déclaration de modèle principal",
|
||||
"les spécialisations partielles ne peuvent pas avoir d'arguments template par défaut",
|
||||
"%n1 n'est pas utilisé dans la liste d'arguments template de %n2, ou ne peut pas en être déduit",
|
||||
@@ -952,7 +952,7 @@
|
||||
"l'option 'nonstd_using_decl' peut uniquement être utilisée lors de la compilation de C++",
|
||||
"le type de retour de la fonction 'main' doit être 'int'",
|
||||
"un paramètre de modèle sans type ne peut pas avoir le type classe",
|
||||
"impossible de spécifier un argument template par défaut sur la déclaration d'un membre de modèle de classe en dehors de sa classe",
|
||||
"impossible de spécifier un argument de modèle par défaut sur la définition d'un membre de modèle de classe en dehors du modèle",
|
||||
"instruction return non autorisée dans le gestionnaire d'un bloc try de fonction d'un constructeur",
|
||||
"impossible de combiner des désignateurs ordinaires et étendus dans la désignation d'un initialiseur",
|
||||
"le second indice doit être inférieur au premier",
|
||||
@@ -1389,14 +1389,14 @@
|
||||
"dllexport et dllimport ignorés sur les modèles de classe",
|
||||
"la spécification dllexport/dllimport de la classe de base est différente de celle de la classe dérivée",
|
||||
"la redéclaration ne peut pas ajouter dllexport/dllimport à %nod",
|
||||
"dllexport/dllimport en conflit avec %nod ; dllexport pris par défaut",
|
||||
"dllexport/dllimport en conflit avec %nod; dllexport pris par défaut",
|
||||
"impossible de définir l'entité dllimport",
|
||||
"dllexport/dllimport requiert une liaison externe",
|
||||
"un membre d'une classe déclarée avec dllexport/dllimport ne peut pas être lui-même déclaré avec ce spécificateur",
|
||||
"un champ de type de classe sans interface DLL a été utilisé dans une classe à interface DLL",
|
||||
"déclaration de membre entre parenthèses non standard",
|
||||
"espace blanc ignoré entre la barre oblique inverse et le saut de ligne dans la jointure de ligne",
|
||||
"dllexport/dllimport en conflit avec %nod ; dllimport/dllexport supprimé",
|
||||
"dllexport/dllimport en conflit avec %nod; dllimport/dllexport supprimé",
|
||||
"membre non valide pour une classe membre anonyme -- la classe %t a une fonction membre interdite",
|
||||
"reinterpret_cast non standard",
|
||||
"le spécificateur de format de position ne peut pas être nul",
|
||||
@@ -1464,24 +1464,24 @@
|
||||
"macro",
|
||||
"étiquette",
|
||||
"paramètre du modèle",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"type",
|
||||
"Union",
|
||||
"classe",
|
||||
"struct",
|
||||
"paramètre template de modèle",
|
||||
"modèle",
|
||||
"modèle de classe",
|
||||
null,
|
||||
"enum",
|
||||
"paramètre",
|
||||
"paramètre de gestionnaire",
|
||||
"variable",
|
||||
"sans type",
|
||||
null,
|
||||
"constante",
|
||||
"fonction",
|
||||
"fonction surchargée",
|
||||
"membre",
|
||||
"champ",
|
||||
null,
|
||||
"espace de noms",
|
||||
"registre nommé",
|
||||
"espace d'adressage nommé",
|
||||
"modèle de fonction",
|
||||
@@ -1635,7 +1635,7 @@
|
||||
"la conversion étendue de pointeur de %t1 en %t2 étend le bit de signe",
|
||||
"__sptr et __uptr ne s'appliquent pas aux types pointeur vers membre",
|
||||
"la déclaration de l'opérateur d'assignation de copie de %t a été supprimée car %n est const",
|
||||
null,
|
||||
"la déclaration de l'opérateur d'assignation de copie de %t a été supprimée, car %n a un type référence",
|
||||
"la déclaration de l'opérateur d'assignation de copie de %t1 a été supprimée car celle de %t2 a été supprimée",
|
||||
"la déclaration de l'opérateur d'assignation de copie de %t1 a été supprimée car celle de %t2 est ambiguë",
|
||||
"la déclaration de l'opérateur d'assignation de copie de %t1 a été supprimée car celle de %t2 est inaccessible",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"la déclaration du constructeur de copie de %t1 a été supprimée car celle de %t2 est inaccessible",
|
||||
"le destructeur de %t1 ne sera pas appelé car il est inaccessible et le destructeur de %t2 a été supprimé",
|
||||
"la définition à la fin du fichier n'est pas suivie d'un point-virgule ou d'un déclarateur",
|
||||
"le premier argument doit être un pointeur vers un type entier ou énumération",
|
||||
"le premier argument doit être un pointeur vers un type enum ou entier",
|
||||
"les opérations synchronisées sont valides sur les objets de taille 1, 2, 4 ou 8",
|
||||
"arguments supplémentaires ignorés",
|
||||
"'=' pris par défaut après le nom de macro %sq dans la définition de ligne de commande",
|
||||
@@ -1670,7 +1670,7 @@
|
||||
"qualificateur de type non autorisé sur un constructeur ou un destructeur",
|
||||
"qualificateur de type non autorisé sur un opérateur new ou un opérateur delete",
|
||||
"qualificateur de type non autorisé sur une fonction non membre",
|
||||
"expression __assume avec effets secondaires ignorée",
|
||||
"l'argument de %s a des effets secondaires mais il n'est pas évalué",
|
||||
"genre de source Unicode non reconnu (doit être UTF-8, UTF-16, UTF-16LE ou UTF-16BE) : %s",
|
||||
"le caractère Unicode avec valeur hexadécimale %s n'est pas représentable dans la sortie de prétraitement",
|
||||
"la priorité demandée pour le constructeur/destructeur est réservée pour usage interne",
|
||||
@@ -1896,7 +1896,7 @@
|
||||
"l'attribut 'hiding' spécifié sur une déclaration référencée par la déclaration using %p",
|
||||
"l'attribut 'hiding' est requis sur une déclaration (dans une classe 'base_check') qui masque %nd",
|
||||
"%n n'est pas défini dans cette unité de traduction, mais dépend d'un type local",
|
||||
"%n n'est pas défini dans cette unité de traduction, mais dépend d'u n type sans liaison",
|
||||
"%n n'est pas défini dans cette unité de traduction, mais dépend d'un type sans liaison",
|
||||
"l'attribut %sq est manquant dans une autre unité de traduction",
|
||||
"l'attribut %sq est en conflit avec une autre unité de traduction",
|
||||
"l'option 'nonstd_gnu_keywords' est uniquement valide dans les modes C GNU et C++ GNU",
|
||||
@@ -1904,7 +1904,7 @@
|
||||
"un initialiseur ne peut pas être spécifié pour un membre de tableau flexible à durée de stockage automatique",
|
||||
null,
|
||||
"un type de classe 'final' ne peut pas être utilisé comme une classe de base",
|
||||
"les modèles exportés ne sont pus en langage C++ standard",
|
||||
"les modèles exportés ne sont plus en langage C++ standard",
|
||||
"un désignateur dépendant du modèle n'est pas autorisé",
|
||||
"le second opérande de offsetof ne peut pas être un champ avec type référence",
|
||||
"les temporaires à durée de vie longue sont incompatibles avec les autres fonctionnalités de langage plus récentes demandées",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"un package de paramètres ne peut pas avoir de valeur par défaut",
|
||||
"C++/CLI peut uniquement être activé en mode Microsoft C++",
|
||||
"impossible d'utiliser 'value__' en tant que nom de constante d'énumérateur (il s'agit d'un nom réservé dans ce contexte)",
|
||||
"une valeur d'énumérateur explicite est requise dans un type d'énumération avec un type sous-jacent booléen",
|
||||
"une valeur d’énumération explicite est requise dans un type enum avec un type sous-jacent booléen",
|
||||
null,
|
||||
"package de paramètres %sq référencé mais non développé",
|
||||
"l'expansion de package n'utilise aucun package d'arguments",
|
||||
"le package %sq n'a pas le même nombre d'éléments que %sq2",
|
||||
null,
|
||||
"l'attribut vector_size n'est pas autorisé avec un type d'énumération",
|
||||
"l'attribut vector_size n'est pas autorisé avec un type enum",
|
||||
"une propriété ne peut pas être à la fois statique et virtuelle",
|
||||
"une propriété indexée ne peut pas être triviale",
|
||||
"cette déclaration ne peut pas figurer dans une définition de propriété",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"un spécificateur de visibilité de niveau supérieur requiert une définition de type",
|
||||
"une propriété triviale ne peut pas être de type référence",
|
||||
"une propriété triviale ne peut pas être de type const ou volatile",
|
||||
"%nd a précédemment été déclaré en tant qu'un autre genre d'énumération",
|
||||
"%nd a précédemment été déclaré en tant qu'un autre genre de type enum",
|
||||
"une variable capturée par une capture lambda ne peut pas avoir un type de classe %[managed]",
|
||||
"une fonction virtuelle effectuant une substitution avec un type de retour covariant n'est pas autorisée dans une classe %[managed]",
|
||||
"tableau de handles non autorisé",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"un spécificateur de substitution nommé est uniquement autorisé dans une classe %[managed]",
|
||||
"aucun membre désigné par le spécificateur de substitution nommé ne correspond au type de ce membre",
|
||||
"une déclaration de constructeur statique ne peut pas inclure un spécificateur de substitution nommé",
|
||||
"un type énumération délimitée doit avoir un nom",
|
||||
"un type enum délimité doit avoir un nom",
|
||||
"transfert de contrôle non autorisé dans un bloc finally",
|
||||
"instruction return non autorisée dans un bloc finally",
|
||||
"un bloc try requiert au moins un gestionnaire ou une clause finally",
|
||||
@@ -2207,7 +2207,7 @@
|
||||
"un champ initonly peut uniquement être modifié par le constructeur d'instance de sa classe conteneur",
|
||||
"un champ initonly statique peut uniquement être modifié par le constructeur statique de sa classe conteneur",
|
||||
"la fonction membre sera appelée sur une copie du champ initonly",
|
||||
"l'expression doit avoir le type pointeur ou handle",
|
||||
"l'expression doit avoir un type pointeur ou descripteur mais elle a le type %t",
|
||||
"un constructeur de déplacement ou un opérateur d'assignation de déplacement est utilisé pour copier une lvalue ici, ce qui peut détruire l'objet source",
|
||||
"la sélection de membre sur une entité générique %[C++/CLI] doit utiliser la syntaxe '->', et non pas '.'",
|
||||
"un type de classe ref ne peut pas dériver de %t",
|
||||
@@ -2216,7 +2216,7 @@
|
||||
"le type d'un dynamic_cast ne peut pas être un type générique susceptible d'être un type valeur",
|
||||
"un nom de caractère universel doit désigner un point de code valide",
|
||||
"les contraintes génériques ne correspondent pas à celles de %nd",
|
||||
"__underlying_type s'applique uniquement aux types d'énumération",
|
||||
"__underlying_type s'applique uniquement aux types enum",
|
||||
"une seule expression d'opérande attendue pour ce cast",
|
||||
"le caractère Unicode avec valeur hexadécimale %s n'est pas représentable dans la page de codes par défaut système",
|
||||
"conversion non standard de pointeur vers membre lié en pointeur fonction",
|
||||
@@ -2241,7 +2241,7 @@
|
||||
"reinterpret_cast de handle non sécurisé",
|
||||
"un argument template ne peut pas faire référence à un paramètre de type générique",
|
||||
"une liste d'expressions n'est pas autorisée dans cette opération d'indice (utilisez des parenthèses autour d'un opérateur virgule de niveau supérieur)",
|
||||
"l'expression doit avoir un type pointeur vers objet ou handle vers tableau %[C++/CLI]",
|
||||
"l'expression doit avoir un type pointeur vers objet ou descripteur vers tableau %[C++/CLI] mais elle a le type %t",
|
||||
"attribut non reconnu",
|
||||
"un membre d'une classe %[managed] ne peut pas être d'un type de classe non %[managed]",
|
||||
"un membre d'une classe non %[managed] ne peut pas avoir un type de classe ref ou un type de classe interface",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd a précédemment été déclaré avec un type de base différent",
|
||||
"'enum class' et 'enum struct' ne peuvent pas être utilisés ici (utilisez un 'enum' simple à la place)",
|
||||
"un seul niveau d'accolades autorisé sur un initialiseur pour un objet de type %t",
|
||||
"%nd ne peut pas être utilisé en tant que nom de type d'énumération",
|
||||
"%nd ne peut pas être utilisé en tant que nom de type enum",
|
||||
null,
|
||||
"un initialiseur entre accolades ne peut pas être utilisé avec 'new auto'",
|
||||
"la définition de std::initializer_list ne contient pas le constructeur attendu",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"un initialiseur entre parenthèses pour une entité autre qu'une classe doit être une expression et non une liste entre accolades",
|
||||
"une liste entre accolades ne fournit pas de type de retour pour cette expression lambda",
|
||||
"la spécification d'exception déclarée est incompatible avec celle qui a été générée",
|
||||
"les types d'énumération délimitée sont une fonctionnalité du C++11",
|
||||
"les types enum délimités sont une fonctionnalité du C++11",
|
||||
"un type de fonction ne peut pas être initialisé par une valeur",
|
||||
"l'initialisation de liste d'un type d'objet %t n'est pas autorisée car le type est incomplet",
|
||||
"std::initializer_list a un destructeur et n'est pas censé en avoir un -- la bibliothèque n'est pas configurée correctement",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"l'appel de fonction doit avoir une valeur constante dans une expression constante",
|
||||
"impossible de déclarer la fonction 'main' constexpr",
|
||||
null,
|
||||
"une définition de classe ou de type d'énumération ne peut pas apparaître dans une fonction constexpr ou dans le corps d'un constructeur",
|
||||
"une définition de classe ou de type enum ne peut pas apparaître dans une fonction constexpr ou dans le corps d'un constructeur",
|
||||
"seuls les attributs de style GNU sont autorisés ici",
|
||||
"utilisation non standard de 'auto' pour déduire le type d'un initialiseur et pour annoncer un type de retour de fin",
|
||||
"la déclaration d'une liste de paramètres void avec un type void qualifié est non standard",
|
||||
@@ -2604,7 +2604,7 @@
|
||||
"la définition d'un type C++/CX public n'est pas autorisée au niveau de la portée globale",
|
||||
"une propriété indexée avec un accesseur 'get' ou 'set' public n'est pas autorisée",
|
||||
"un type délégué imbriqué public n'est pas autorisé",
|
||||
"initialiseur de délégué non valide -- '(<adresse-fonction ou objet-foncteur> [, Platform::CallbackContext])' ou '(<handle-objet>, <adresse-membre> [, Platform::CallbackContext [, bool]])' attendu",
|
||||
"initialiseur de délégué non valide -- '(<function-address or functor-object> [, Platform::CallbackContext])' ou '(<object handle>, <member-address> [, Platform::CallbackContext [, bool]])' attendu",
|
||||
"initialiseur de délégué non valide -- l'objet doit être un handle de classe %[managed]",
|
||||
"C++/CX ne prend pas en charge les tableaux 'in/out' -- utilisez 'const Platform::Array<T>^' pour 'in' et 'Platform::WriteOnlyArray<T>^' ou 'Platform::Array<T>^*' pour 'out' sur les API publiques",
|
||||
"attribut 'target' manquant pour %nd",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"la variable dans la fonction constexpr n'est pas initialisée",
|
||||
"L'initialisation entre accolades d'une variable déclarée avec un type d'espace réservé mais sans `=` requiert exactement un élément à l'intérieur des accolades",
|
||||
"aucune configuration --target '%s' n'existe",
|
||||
"l'attribut n'est pas pris en charge dans les configurations x86 64 bits",
|
||||
"l'attribut est uniquement pris en charge dans les configurations 32 bits x86",
|
||||
"'%s' nécessite un argument",
|
||||
"un constructeur ou un destructeur ne peut pas être une coroutine",
|
||||
"%n ne peut pas être une coroutine",
|
||||
@@ -2682,7 +2682,7 @@
|
||||
"une expression co_await n'est pas autorisée dans une clause catch",
|
||||
"une coroutine ne peut pas comporter de paramètre ellipse",
|
||||
"l'activation de constexpr en C++14 nécessite la prise en charge de 'bool'",
|
||||
"la fonction constexpr %nd n'est pas définie",
|
||||
"constexpr %nd non défini",
|
||||
"impossible d'évaluer cet appel, car la fonction cible %nd n'est pas constexpr ou n'est pas encore complètement définie",
|
||||
"remarque",
|
||||
"Remarque",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"type interdit %t dans ce pointeur pour la fonction membre %nfd restreinte à amp",
|
||||
"type de retour interdit %t pour la fonction à restriction amp %nfd",
|
||||
"type de paramètre interdit %t pour la fonction à restriction amp %nfd",
|
||||
null,
|
||||
"construction non conforme dans la fonction à restriction amp %nfd",
|
||||
"classe de stockage interdite %s dans la fonction à restriction amp %nfd",
|
||||
"%s non autorisé dans la fonction à restriction amp %nfd",
|
||||
"cast non conforme dans la fonction à restriction amp",
|
||||
@@ -3116,8 +3116,8 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"'>>>' attendu",
|
||||
"la déclaration __cudaPushCallConfiguration est introuvable. L'installation du kit de ressources CUDA est peut-être endommagée.",
|
||||
"l'initialiseur de style C++17 n'est pas standard dans ce mode",
|
||||
"la capture de *this n'est pas standard dans ce mode",
|
||||
"Le préfixe d'attribut 'using' de style C++17 n'est pas standard dans ce mode",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"un type volatile %t empêche l'évaluation de constexpr de __builtin_bit_cast",
|
||||
"un type union, pointeur ou pointeur vers membre %t empêche l'évaluation de constexpr de __builtin_bit_cast",
|
||||
"%npTd, hérité via l'utilisation de decl %p",
|
||||
"la construction de sous-objet de %t pour l'héritage de constructeurs ne peut pas être effectuée -- le constructeur par défaut implicite est supprimé",
|
||||
"la construction de sous-objet de %t pour l'héritage de constructeurs ne peut pas être effectuée -- le constructeur associé est supprimé",
|
||||
"%n doit retourner void",
|
||||
"début de déclaration de membre non valide",
|
||||
"'auto' attendu",
|
||||
@@ -3300,7 +3300,7 @@
|
||||
"utilisation non valide du concept",
|
||||
"un opérateur de comparaison de membres par défaut ne peut pas être qualifié en tant que '&&'",
|
||||
"la fonction de comparaison constexpr par défaut appelle la fonction non constexpr %nd",
|
||||
"la comparaison de mémoire constexpr est prise en charge uniquement pour les objets d'entiers de niveau supérieur ou les objets de tableaux d'entiers",
|
||||
"la comparaison de mémoire constexpr est prise en charge uniquement pour les objets d'entiers ou les objets de tableaux d'entiers",
|
||||
"un modèle de concept ne peut pas avoir de contraintes associées",
|
||||
"'export' n'est pas autorisé",
|
||||
"l'exportation de membres de classe individuels n'est pas autorisée",
|
||||
@@ -3343,13 +3343,159 @@
|
||||
"mappage de fichier de module pour '%s' spécifié plusieurs fois",
|
||||
"mappage d'unité d'en-tête pour '%s' spécifié plusieurs fois",
|
||||
"aucun mappage spécifié pour '%s'",
|
||||
"le mappage de fichier de module pour '%s' est non valide",
|
||||
null,
|
||||
"l'en-tête '%s' à importer est introuvable",
|
||||
"plusieurs fichiers dans la liste de fichiers de module correspondent à '%s'",
|
||||
"le fichier de module trouvé pour '%s' est destiné à un autre module",
|
||||
"n'importe quel genre de fichier de module",
|
||||
"impossible de lire le fichier de module",
|
||||
"la fonction intégrée n'est pas disponible, car le type char8_t n'est pas pris en charge avec les options actuelles",
|
||||
"l'option de ligne de commande --ms_await ne peut pas être spécifiée si les coroutines C++20 sont activées",
|
||||
"utilisation non standard du constructeur explicite %nod pour l'initialisation de l'élément d'agrégation par défaut"
|
||||
null,
|
||||
"utilisation non standard du constructeur explicite %nod pour l'initialisation de l'élément d'agrégation par défaut",
|
||||
"la source ou la destination de l'intrinsèque de type memcpy ne pointe pas vers un objet",
|
||||
"l'intrinsèque de type memcpy tente de copier les types représentatifs distincts %t1 et %t2",
|
||||
"l'intrinsèque de type memcpy tente de copier le type non trivialement copiable %t",
|
||||
"l'intrinsèque de type memcpy tente de copier un objet partiel",
|
||||
"l'intrinsèque de type memcpy tente de copier au-delà de la limite du tableau",
|
||||
"l'intrinsèque de type memcpy tente de copier des plages d'octets qui se chevauchent (en utilisant plutôt l'opération memmove correspondante)",
|
||||
"une déclaration friend avec une clause requires de fin doit être une définition",
|
||||
"l'expression doit avoir un type arithmétique ou pointeur mais elle a le type %t",
|
||||
"l'expression doit avoir un type arithmétique, enum ou pointeur mais elle a le type %t",
|
||||
"l'expression doit avoir un type arithmétique, enum non délimité ou pointeur mais elle a le type %t",
|
||||
"l'expression doit avoir un type pointeur mais elle a le type %t",
|
||||
"opérateur -> ou ->* appliqué à %t au lieu de l'être à un type pointeur",
|
||||
"le type classe incomplet %t n'est pas autorisé",
|
||||
"impossible d'interpréter la disposition des bits pour cette cible de compilation",
|
||||
"aucun opérateur correspondant pour l'opérateur IFC %sq",
|
||||
"aucune convention d'appel correspondante pour la convention d'appel IFC %sq",
|
||||
"le module %sq contient des constructions non prises en charge",
|
||||
"construction IFC non prise en charge : %sq",
|
||||
"__is_signed n'est plus un mot clé à partir de ce point",
|
||||
"une dimension de tableau doit avoir une valeur d'entier non signé constante",
|
||||
"le fichier IFC %sq a une version non prise en charge : %d1.%d2",
|
||||
"les modules ne sont pas activés dans ce mode",
|
||||
"'import' n'est pas autorisé dans un nom de module",
|
||||
"'module' n'est pas autorisé dans un nom de module",
|
||||
null,
|
||||
null,
|
||||
"%n n'est pas un type enum",
|
||||
"l'énumérateur %no2 est en conflit avec %n1",
|
||||
"l'énumérateur %no a déjà été déclaré dans cette étendue %p",
|
||||
"la spécification 'throw()' ne fait pas partie de C++20 ni des versions ultérieures",
|
||||
"plusieurs entrées dans le mappage d'unité d'en-tête correspondent à '%s'",
|
||||
"#Le diagnostic pragma doit avoir un argument « push » ou « pop »",
|
||||
"Aucun « #pragma diagnostic push » n’a été trouvé en correspondance à ce « diagnostic pop »",
|
||||
"%sq ne peut pas être une macro quand il est utilisé dans une directive d’importation ou de module",
|
||||
"cette directive ne peut apparaître que dans l’étendue de l’espace de noms global",
|
||||
"une déclaration « export » peut apparaître uniquement dans l’étendue globale ou de l’espace de noms",
|
||||
"Le %sq est ensuite analysé en tant qu’identificateur plutôt qu’en tant que mot clé, car les jetons qui suivent ne correspondent pas à ceux d’une directive de préprocesseur",
|
||||
"cette directive semble être le début d’une directive de préprocesseur, mais l’absence de « ; » suivie immédiatement d’une nouvelle ligne empêche",
|
||||
"il s’agit d’une directive de prétraitement de modules, mais une telle directive ne peut pas apparaître dans une extension de macro",
|
||||
"une directive « module » ne peut pas apparaître dans le cadre de l’inclusion conditionnelle (par exemple, #if, #else, #elseif, etc.)",
|
||||
"l’importation de %sq a été ignorée",
|
||||
"le type de promesse %t doit déclarer get_return_object_on_allocation_failure en tant que fonction membre statique ne nécessitant aucun argument",
|
||||
"un modèle d'alias ne peut pas être explicitement spécialisé",
|
||||
"pour correspondre à ce '{'",
|
||||
"dans cette invocation de macro",
|
||||
"l'appel nécessite une conversion d'argument ambiguë",
|
||||
"la déclaration appartenant au module %s est en conflit avec %nd",
|
||||
"la déclaration appartenant au module global est en conflit avec %nd appartenant à un module nommé",
|
||||
"le premier argument d'un attribut 'malloc' doit être une fonction",
|
||||
"impossible de capturer %nod",
|
||||
"impossible de capturer 'this'",
|
||||
"déjà dans un contexte consteval",
|
||||
"« if consteval » et « if not consteval » nécessitent des instructions dépendantes resserrés",
|
||||
"« if consteval » et « if not consteval » ne sont pas valides dans une fonction non constexpr",
|
||||
"le transfert de contrôle dans une instruction « if consteval » ou « if not consteval » n’est pas autorisé",
|
||||
"l’évaluation constante ne peut pas passer par la déclaration d’une variable avec une durée de stockage statique ou de thread",
|
||||
"le qualificateur mutable n’est pas autorisé sur une expression lambda avec un paramètre « this » explicite",
|
||||
"une fonction membre déclarée avec « static » ne peut pas avoir de paramètre « this » explicite",
|
||||
"un paramètre « this » explicite doit être le premier paramètre déclaré",
|
||||
"« this » n’est pas autorisé ici",
|
||||
"une fonction de comparaison avec « this » explicite ne peut pas être par défaut",
|
||||
"une fonction « this » explicite nécessite un opérande de sélecteur",
|
||||
"« if consteval » et « if not consteval » ne sont pas standard dans ce mode",
|
||||
"l’omission de « () » dans un déclarateur lambda n’est pas standard dans ce mode",
|
||||
"une clause requires de fin n’est pas autorisée lorsque la liste de paramètres lambda est omise",
|
||||
"module %sq partition non valide demandée",
|
||||
"module %sq1 partition non définie (on pense qu’il s’agirait de %sq2) demandée",
|
||||
"module %sq1 position de fichier %d1 (position relative %d2) demandée pour la partition %sq2, qui est vide",
|
||||
"module %sq1 position de fichier %d1 (position relative %d2) demandée pour la partition %sq2, qui précède le début de la partition",
|
||||
"module %sq1 position de fichier %d1 (position relative %d2) demandée pour la partition %sq2, qui dépasse la fin de sa partition",
|
||||
"module %sq1 position de fichier %d1 (position relative %d2) demandée pour la partition %sq2, qui est mal alignée avec ses éléments de partitions",
|
||||
"à partir du sous-champ %sq (position relative par rapport au nœud %d)",
|
||||
"à partir de la partition %sq, élément %d1 (position de fichier %d2, position relative %d3)",
|
||||
"les attributs lambda ne sont pas standard ici",
|
||||
"l’identificateur %sq peut être confondu avec un identificateur visuellement similaire qui apparaît %p",
|
||||
"ce commentaire contient des caractères de contrôle de mise en forme Unicode suspects",
|
||||
"cette chaîne contient des caractères de contrôle de mise en forme Unicode qui peuvent entraîner un comportement d’exécution inattendu",
|
||||
"%d1 avertissement supprimé rencontré lors du traitement du module %sq1",
|
||||
"%d1 avertissements supprimés rencontrés lors du traitement du module %sq1",
|
||||
"%d1 erreur supprimé rencontré lors du traitement du module %sq1",
|
||||
"%d1 erreurs supprimées rencontrées lors du traitement du module %sq1",
|
||||
"Y compris",
|
||||
"Supprimé",
|
||||
"une fonction membre virtuelle ne peut pas avoir un paramètre « this » explicite",
|
||||
"la prise de l’adresse d’une fonction « this » explicite nécessite un nom qualifié",
|
||||
"la création de l’adresse d’une fonction « this » explicite nécessite l’opérateur '&'",
|
||||
"impossible d’utiliser un littéral de chaîne pour initialiser un membre de tableau flexible",
|
||||
"La représentation IFC de la définition de la fonction %sq n’est pas valide.",
|
||||
"une correction a été apportée pour supprimer « ce » paramètre implicite.",
|
||||
"un graphique IFC UniLevel n’a pas été utilisé pour spécifier des paramètres.",
|
||||
"%d1 paramètre a été spécifié par le graphique de définition de paramètres IFC alors que %d2 paramètres ont été spécifiés par la déclaration IFC.",
|
||||
"%d1 paramètre a été spécifié par le graphique de définition de paramètres IFC alors que %d2 paramètres ont été spécifiés par la déclaration IFC.",
|
||||
"%d1 paramètre a été spécifié par le graphique de définition de paramètres IFC alors que %d2 paramètres ont été spécifiés par la déclaration IFC.",
|
||||
"La représentation IFC de la définition de la fonction %sq est manquante.",
|
||||
"Le modificateur de fonction ne s'applique pas à la déclaration du modèle de membre.",
|
||||
"la sélection de membre implique un trop grand nombre de types anonymes imbriqués",
|
||||
"il n’existe aucun type commun entre les opérandes",
|
||||
"pointeur vers membre attendu",
|
||||
"un membre de tableau flexible ne peut pas être déclaré dans un type autrement vide.",
|
||||
"expected 'std::source_location::__impl' to be defined to a class with only the data members '_M_function_name', '_M_file_name', '_M_column', '_M_line'",
|
||||
"numéro de colonne donné trop grand pour l’implémentation de 'std::source_location'",
|
||||
"numéro de ligne donné trop grand pour l’implémentation de 'std::source_location'",
|
||||
"une constante de caractères UTF-16 ne peut pas occuper plusieurs unités de code ; valeur tronquée",
|
||||
"les deux arguments doivent avoir le même type",
|
||||
"le type %t n’est pas valide en tant qu’argument pour ce builtin",
|
||||
"appelé à partir de %nd :",
|
||||
"un type qualifié n’est pas standard pour les champs de bits anonymes.",
|
||||
"le type d’élément de la condition vectorielle (%t1) doit avoir la même taille que le type d’élément du résultat (%t2).",
|
||||
"le type d’opérande vectoriel à virgule flottante (%t) n’a pas de type de vecteur entier correspondant.",
|
||||
"La gestion des expressions \"requires\" n'est pas encore implémentée.",
|
||||
"en raison d’un attribut 'unavailable'",
|
||||
"qualificateur 'asm' dupliqué",
|
||||
"soit un champ de bits avec un type enum incomplet, soit une énumération opaque avec un type de base non valide",
|
||||
"a tenté de construire un élément à partir d’une partition IFC %sq à l’aide d’un index dans la partition IFC %sq2.",
|
||||
"le %sq de partition a spécifié sa taille d’entrée %d1 alors que %d2 était attendu.",
|
||||
"une exigence IFC inattendue s’est produite lors du traitement du module %sq1.",
|
||||
"échec de la condition à la ligne %d dans %s1 : %sq2",
|
||||
"la contrainte atomique dépend d’elle-même.",
|
||||
"La fonction 'noreturn' a un type de retour non vide",
|
||||
"une correction a été effectuée en supprimant le paramètre %sq (au %d d’index relatif)",
|
||||
"impossible de spécifier un argument template par défaut sur la définition d'un membre de modèle en dehors de sa classe",
|
||||
"nom d’identificateur IFC non valide %sq rencontré lors de la reconstruction de l’entité",
|
||||
"identificateur IFC non valide nommé %sq ignoré lors de la reconstruction de l’entité",
|
||||
"le module %sq valeur de tri non valide",
|
||||
"un modèle de fonction chargé à partir d’un module IFC a été analysé de manière incorrecte en tant que %nd",
|
||||
"échec du chargement d’une référence d’entité IFC dans le module %sq",
|
||||
"à partir de la partition %sq, élément %d1 (position de fichier %d2, position relative %d3)",
|
||||
"les désignateurs chaînés ne sont pas autorisés pour un type classe avec un destructeur non trivial",
|
||||
"une déclaration de spécialisation explicite ne peut pas être une déclaration friend",
|
||||
"le type std::float128_t n’est pas pris en charge ; std::float64_t sera utilisé à la place",
|
||||
"le type std::bfloat16_t n’est pas pris en charge ; std::float32_t sera utilisé à la place",
|
||||
"un guide de déduction ne peut pas être déclaré pour le modèle d’alias %no",
|
||||
"%n a été déclaré non disponible",
|
||||
"%n a été déclaré indisponible (%sq)",
|
||||
"en raison d’un attribut 'deprecated'",
|
||||
"les paramètres de modèle lambda explicites sont une fonctionnalité C++20",
|
||||
"l’utilisation de '_Noreturn' a été obsolète en C23; utiliser '[[noreturn]]' à la place",
|
||||
"l’utilisation de '_Alignof' a été obsolète en C23; utiliser 'alignof' à la place",
|
||||
"l’utilisation de '_Alignas' a été obsolète en C23; utiliser 'alignas' à la place",
|
||||
"l’utilisation de '_Bool' a été obsolète en C23; utiliser 'bool' à la place",
|
||||
"l’utilisation de '_Static_assert' a été obsolète en C23; utiliser 'static_assert' à la place",
|
||||
"l’utilisation de '_Thread_local' a été obsolète en C23; utiliser 'thread_local' à la place",
|
||||
"Le mode Microsoft doit être activé pour utiliser le fichier de module %sq (module IFC Microsoft Visual Studio)",
|
||||
"impossible d’ouvrir le fichier de module %sq",
|
||||
"trouvé dans le mappage de module pour le module %sq",
|
||||
"trouvé dans le mappage d’unité d’en-tête pour %sq"
|
||||
]
|
||||
@@ -74,7 +74,7 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"l'operando di '*' deve essere un puntatore",
|
||||
"l'operando di '*' deve essere un puntatore ma il tipo è %t",
|
||||
"l'argomento della macro è vuoto",
|
||||
"questa dichiarazione non include classe di archiviazione o identificatore di tipo",
|
||||
"una dichiarazione di parametro non può includere un inizializzatore",
|
||||
@@ -130,8 +130,8 @@
|
||||
"ciclo non raggiungibile",
|
||||
"una funzione con ambito blocco può includere solo la classe di archiviazione extern",
|
||||
"previsto '{'",
|
||||
"l'espressione deve avere il tipo puntatore a classe",
|
||||
"l'espressione deve avere il tipo puntatore a struttura o unione",
|
||||
"l'espressione deve essere di tipo puntatore a classe ma il tipo è %t",
|
||||
"l'espressione deve essere di tipo puntatore a struct o unione ma il tipo è %t",
|
||||
"previsto un nome di membro",
|
||||
"previsto un nome di campo",
|
||||
"%n non include alcun membro %sq",
|
||||
@@ -141,7 +141,7 @@
|
||||
"impossibile accettare l'indirizzo di un campo di bit",
|
||||
"troppi argomenti nella chiamata di funzione",
|
||||
"impossibile utilizzare parametri con prototipo senza nome quando è presente il corpo",
|
||||
"l'espressione deve avere il tipo puntatore a oggetto",
|
||||
"l'espressione deve essere di tipo puntatore a oggetto ma il tipo è %t",
|
||||
"programma troppo grande o complesso per essere compilato",
|
||||
"impossibile utilizzare un valore di tipo %t1 per inizializzare un'entità di tipo %t2",
|
||||
"impossibile inizializzare %n",
|
||||
@@ -152,8 +152,8 @@
|
||||
"impossibile dichiarare nuovamente un nome di tipo come parametro",
|
||||
"impossibile dichiarare nuovamente un nome di typedef come parametro",
|
||||
"conversione di un numero intero diverso da zero in un puntatore",
|
||||
"l'espressione deve avere il tipo classe",
|
||||
"l'espressione deve avere il tipo struttura o unione",
|
||||
"l'espressione deve essere di tipo classe ma il tipo è %t",
|
||||
"l'espressione deve essere di tipo struct o unione ma il tipo è %t",
|
||||
"operatore di assegnazione obsoleto",
|
||||
"inizializzatore obsoleto",
|
||||
"l'espressione deve essere un'espressione di costante integrale",
|
||||
@@ -180,7 +180,7 @@
|
||||
"l'applicazione di '&' a una matrice non ha alcun effetto",
|
||||
"l'operando destro di '%%' è zero",
|
||||
"argomento incompatibile con il parametro formale",
|
||||
"argomento incompatibile con la conversione della stringa di formato corrispondente",
|
||||
"argomento non compatibile con la conversione della stringa di formato corrispondente (tipo previsto %t1 ma argomento di tipo %t2)",
|
||||
"non è stato possibile aprire il file di origine %sq. Non è presente alcuna directory nell'elenco di ricerca",
|
||||
"il cast deve essere di tipo integrale",
|
||||
"il cast deve essere di tipo aritmetico o puntatore",
|
||||
@@ -392,7 +392,7 @@
|
||||
"non è possibile chiamare la funzione 'main' o accettarne l'indirizzo",
|
||||
"impossibile specificare l'inizializzatore new per una matrice",
|
||||
"impossibile dichiarare nuovamente una funzione membro %no all'esterno della relativa classe",
|
||||
"puntatore a tipo classe incompleto non consentito",
|
||||
"il puntatore al tipo classe incompleto %t non è consentito",
|
||||
"riferimento a variabile locale della funzione contenitore non consentito",
|
||||
"utilizzata una funzione ad argomento singolo per aggiungere la forma suffissa a %sq (anacronismo)",
|
||||
null,
|
||||
@@ -682,9 +682,9 @@
|
||||
"directory PCH non valida: %s",
|
||||
"previsto __except o __finally",
|
||||
"un'istruzione __leave può essere utilizzata solo in un blocco __try",
|
||||
"rilevato durante la creazione di un'istanza del contesto %p1 del modello %nt1",
|
||||
"rilevato durante la creazione di un'istanza del contesto %p del modello %nt",
|
||||
"rilevato durante la generazione implicita del contesto %p1 del modello %nt1",
|
||||
"rilevato durante la creazione di un'istanza del contesto %p1 della classe %na2",
|
||||
"rilevato durante la creazione di un'istanza del contesto %p della classe %na",
|
||||
"rilevato durante l'elaborazione dell'elenco degli argomenti di modello per %na %p",
|
||||
"rilevato durante la definizione implicita del contesto %p1 del modello %nt1",
|
||||
"%sq non trovato nello stack di allineamento compressione",
|
||||
@@ -838,7 +838,7 @@
|
||||
"verrà restituito il riferimento alla variabile locale",
|
||||
"omissione del tipo esplicito non conforme allo standard. Verrà utilizzato 'int'",
|
||||
"più specializzazioni parziali corrispondenti all'elenco degli argomenti di modello di %n",
|
||||
"%no",
|
||||
"%nod",
|
||||
"elenco degli argomenti di modello non consentito in una dichiarazione di un modello principale",
|
||||
"le specializzazioni parziali non possono includere argomenti di modello predefiniti",
|
||||
"%n1 non viene usato o non può essere dedotto dall'elenco degli argomenti di modello di %n2",
|
||||
@@ -952,7 +952,7 @@
|
||||
"è possibile utilizzare l'opzione 'nonstd_using_decl' solo quando si esegue la compilazione nel linguaggio C++",
|
||||
"il tipo restituito della funzione 'main' deve essere 'int'",
|
||||
"il tipo di un parametro di modello non di tipo non può essere di classe",
|
||||
"impossibile specificare un argomento di modello predefinito nella dichiarazione di un membro di un modello di classe esterno alla relativa classe",
|
||||
"impossibile specificare un argomento di modello predefinito nella definizione di un membro di un modello di classe all'esterno del modello",
|
||||
"istruzione return non consentita in un gestore di un blocco try di funzione di un costruttore",
|
||||
"non è possibile combinare indicatori ordinari ed estesi in una designazione di inizializzatori",
|
||||
"il secondo indice deve essere minore del primo",
|
||||
@@ -1389,14 +1389,14 @@
|
||||
"dllexport e dllimport ignorati nei modelli di classe",
|
||||
"la specifica di dllexport/dllimport della classe base è diversa da quella della classe derivata",
|
||||
"impossibile aggiungere dllexport/dllimport a %nod nella ridichiarazione",
|
||||
"conflitto tra dllexport/dllimport e %nod. Verrà utilizzato dllexport",
|
||||
"conflitto tra dllexport/dllimport e %nod;. Verrà utilizzato dllexport",
|
||||
"impossibile definire l'entità di dllimport",
|
||||
"con dllexport/dllimport è richiesto il collegamento esterno",
|
||||
"impossibile dichiarare da solo con un tale identificatore un membro di una classe dichiarata con dllexport/dllimport",
|
||||
"campo del tipo classe senza interfaccia DLL utilizzato in una classe con interfaccia DLL",
|
||||
"dichiarazione di membro tra parentesi non conforme allo standard",
|
||||
"spazio vuoto tra barra rovesciata e carattere di nuova riga ignorato nella giunzione di riga",
|
||||
"conflitto tra dllexport/dllimport e %nod. dllimport/dllexport verrà eliminato",
|
||||
"conflitto tra dllexport/dllimport e %nod; dllimport/dllexport verrà eliminato",
|
||||
"membro non valido per la classe di membro anonima. La classe %t include una funzione membro non consentita",
|
||||
"reinterpret_cast non conforme allo standard",
|
||||
"l'identificatore di formato posizionale non può essere zero",
|
||||
@@ -1464,24 +1464,24 @@
|
||||
"macro",
|
||||
"etichetta",
|
||||
"parametro di modello",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"tipo",
|
||||
"unione",
|
||||
"classe",
|
||||
"struct",
|
||||
"parametro di modello template",
|
||||
"modello",
|
||||
"modello di classe",
|
||||
null,
|
||||
"enumerazione",
|
||||
"parametro",
|
||||
"parametro del gestore",
|
||||
"variabile",
|
||||
"non di tipo",
|
||||
null,
|
||||
"costante",
|
||||
"funzione",
|
||||
"funzione in overload",
|
||||
"membro",
|
||||
"campo",
|
||||
null,
|
||||
"spazio dei nomi",
|
||||
"registro denominato",
|
||||
"spazio degli indirizzi denominato",
|
||||
"modello di funzione",
|
||||
@@ -1635,7 +1635,7 @@
|
||||
"la conversione widening del puntatore da %t1 a %t2 implica l'estensione del bit di segno",
|
||||
"__sptr e __uptr non sono validi per i tipi di puntatore a membro",
|
||||
"la dichiarazione dell'operatore di assegnazione di copia per %t è stata eliminata perché %n è costante",
|
||||
null,
|
||||
"la dichiarazione dell'operatore di assegnazione di copia per %t è stata eliminata perché %n include il tipo riferimento",
|
||||
"la dichiarazione dell'operatore di assegnazione di copia per %t1 è stata eliminata perché quella di %t2 è stata eliminata",
|
||||
"la dichiarazione dell'operatore di assegnazione di copia per %t1 è stata eliminata perché quella di %t2 è ambigua",
|
||||
"la dichiarazione dell'operatore di assegnazione di copia per %t1 è stata eliminata perché quella di %t2 è inaccessibile",
|
||||
@@ -1670,7 +1670,7 @@
|
||||
"qualificatore di tipo non consentito in un costruttore o distruttore",
|
||||
"qualificatore di tipo non consentito in operator new o operator delete",
|
||||
"qualificatore di tipo non consentito in una funzione non membro",
|
||||
"espressione __assume con effetti collaterali eliminata",
|
||||
"l'argomento di %s ha effetti collaterali ma non è valutato",
|
||||
"tipo di origine Unicode non riconosciuto. Deve essere uno tra UTF-8, UTF-16, UTF-16LE, UTF-16BE: %s",
|
||||
"carattere Unicode con valore esadecimale %s non rappresentabile nell'output di pre-elaborazione",
|
||||
"la priorità del costruttore/distruttore richiesta è riservata per uso interno",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"un pacchetto parametri non può avere un valore predefinito",
|
||||
"C++/CLI può essere abilitato solo in modalità Microsoft C++",
|
||||
"non è possibile usare 'value__' come nome di una costante di enumerazione (è un nome riservato in questo contesto)",
|
||||
"è richiesto un valore di enumerazione esplicito in un tipo di enumerazione con tipo sottostante booleano",
|
||||
"è richiesto un valore di enumerazione esplicito in un tipo enumerazione con tipo sottostante booleano",
|
||||
null,
|
||||
"è stato fatto riferimento al pacchetto parametri %sq che però non è espanso",
|
||||
"l'espansione del pacchetto non usa pacchetti di argomenti",
|
||||
"il pacchetto %sq non ha lo stesso numero di elementi di %sq2",
|
||||
null,
|
||||
"l'attributo vector_size non è consentito con un tipo di enumeratore",
|
||||
"l'attributo vector_size non è consentito con un tipo enumerazione",
|
||||
"una proprietà non può essere contemporaneamente statica e virtuale",
|
||||
"una proprietà indicizzata non può essere semplice",
|
||||
"questa dichiarazione non può apparire in una definizione di proprietà",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"un identificatore di visibilità di primo livello richiede una definizione di tipo",
|
||||
"una proprietà trivial non può disporre di un tipo di riferimento",
|
||||
"una proprietà trivial non può disporre di un tipo const o volatile",
|
||||
"%nd è stato dichiarato in precedenza come un tipo diverso di tipo di enumeratore",
|
||||
"%nd è stato dichiarato in precedenza come tipo di enumerazione diverso",
|
||||
"in una variabile acquisita da un lambda non può essere presente un tipo classe %[managed]",
|
||||
"l'override della funzione virtuale con un tipo restituito con variante non è consentito in una classe %[managed]",
|
||||
"matrice di handle non consentita",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"un indicatore di override denominato è consentito solo in una classe %[managed]",
|
||||
"nessun membro designato dall'indicatore di override denominato corrisponde al tipo di membro",
|
||||
"una dichiarazione di costruttore statico non può includere un indicatore di override denominato",
|
||||
"il tipo di enumerazione con ambito deve avere un nome",
|
||||
"il tipo enumerazione con ambito deve avere un nome",
|
||||
"trasferimento del controllo in un blocco finally non consentito",
|
||||
"istruzione return all'interno di un blocco finally non consentita",
|
||||
"con il blocco try è richiesto almeno un gestore o una clausola finally",
|
||||
@@ -2207,7 +2207,7 @@
|
||||
"un campo initonly può essere modificato solo dal costruttore istanza della relativa classe che lo contiene",
|
||||
"un campo initonly statico può essere modificato solo dal costruttore statico della relativa classe che lo contiene",
|
||||
"la funzione membro verrà richiamata in una copia del campo initonly",
|
||||
"l'espressione deve avere il tipo puntatore o handle",
|
||||
"l'espressione deve essere di tipo puntatore o handle ma il tipo è %t",
|
||||
"un costruttore di spostamento o un operatore di assegnazione spostamento è utilizzato per copiare un lvalue in questo punto; l'operazione potrebbe eliminare in modo permanente l'oggetto di origine",
|
||||
"la selezione del membro in un'entità generica %[C++/CLI] deve utilizzare la sintassi '->' e non '.'",
|
||||
"un tipo classe di riferimento non può derivare da %t",
|
||||
@@ -2241,7 +2241,7 @@
|
||||
"reinterpret_cast di handle non sicuro",
|
||||
"un argomento del modello non può fare riferimento a un parametro di tipo generico",
|
||||
"un elenco di espressioni non è consentito in questa operazione di pedice (racchiudere tra parentesi l'operatore virgola di primo livello)",
|
||||
"l'espressione deve avere il tipo puntatore a oggetto o handle a matrice %[C++/CLI]",
|
||||
"l'espressione deve essere di tipo puntatore a oggetto o handle a matrice %[C++/CLI] ma il tipo è %t",
|
||||
"attributo non riconosciuto",
|
||||
"il membro di una classe %[managed] non può essere di un tipo di classe non-%[managed]",
|
||||
"il membro di una classe non-%[managed] non può avere un tipo di classe di riferimento o un tipo di classe di interfaccia",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd dichiarato in precedenza con un tipo base diverso",
|
||||
"in questo punto non è possibile usare 'enum class' ed 'enum struct' (usare semplicemente 'enum')",
|
||||
"è consentito un solo livello di parentesi in un inizializzatore per un oggetto di tipo %t",
|
||||
"non è possibile usare %nd come nome del tipo di enumerazione",
|
||||
"non è possibile usare %nd come nome del tipo enumerazione",
|
||||
null,
|
||||
"impossibile utilizzare un inizializzatore tra parentesi con 'new auto'",
|
||||
"la definizione di std::initializer_list non contiene il costruttore previsto",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"un inizializzatore tra parentesi per un'entità non classe deve essere un'espressione, non un elenco tra parentesi graffe",
|
||||
"un elenco tra parentesi graffe non fornisce un tipo restituito per questa espressione lambda",
|
||||
"la specifica dell'eccezione dichiarata non è compatibile con quella generata",
|
||||
"i tipi di enumerazione con ambito sono una funzionalità C++11",
|
||||
"i tipi enumerazione con ambito sono una funzionalità C++11",
|
||||
"un tipo di funzione non può essere inizializzato dal valore",
|
||||
"l'inizializzazione di elenco di un tipo di oggetto %t non è consentita perché il tipo non è completo",
|
||||
"std::initializer_list contiene un distruttore non previsto. La libreria non è configurata correttamente",
|
||||
@@ -2546,7 +2546,7 @@
|
||||
"non è possibile dedurre il tipo 'decltype(auto)'",
|
||||
"una dichiarazione thread-local con ambito blocco deve includere static o extern",
|
||||
"il tipo restituito dedotto %t1 è in conflitto con il tipo dedotto in precedenza %t2",
|
||||
"non è possibile dedurre il tipo restituito di %nd perché non è stato definito",
|
||||
"non è possibile dedurre il tipo restituito di %nd; perché non è stato definito",
|
||||
"il tipo restituito da una funzione virtuale non può essere dedotto",
|
||||
"a partire da questo punto %n verrà considerato come una parola chiave sensibile al contesto",
|
||||
"lo spazio dei nomi globale non include membri effettivi %sq",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"la variabile nella funzione constexpr non è inizializzata",
|
||||
"per l'inizializzazione tra parentesi graffe di una variabile dichiarata con un tipo di segnaposto, ma senza `=`, è necessario specificare un solo elemento all'interno delle parentesi",
|
||||
"non esistono configurazioni '%s' --target",
|
||||
"l'attributo non è supportato in configurazioni x86 a 64 bit",
|
||||
"l'attributo è supportato soltanto in configurazioni x86 a 32 bit",
|
||||
"con '%s' è richiesto un argomento",
|
||||
"un costruttore o un distruttore non può essere una coroutine",
|
||||
"%n non può essere una coroutine",
|
||||
@@ -2682,7 +2682,7 @@
|
||||
"un'espressione co_await non è consentita in una clausola catch",
|
||||
"una coroutine non può contenere un parametro con puntini di sospensione",
|
||||
"per abilitare constexpr di tipo C++ 14, è richiesto il supporto per 'bool'",
|
||||
"la funzione constexpr %nd non è definita",
|
||||
"la constexpr %nd non è definita",
|
||||
"non è possibile valutare questa chiamata perché la funzione di destinazione %nd non è constexpr oppure non è stata ancora completamente definita",
|
||||
"nota",
|
||||
"Nota",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"il tipo %t nel puntatore this per la funzione membro con limitazioni amp %nfd non è valido",
|
||||
"il tipo restituito %t per la funzione con restrizioni AMP %nfd non è valido",
|
||||
"il tipo di parametro %t per la funzione con restrizioni AMP %nfd non è valido",
|
||||
null,
|
||||
"il costrutto nella funzione con restrizioni AMP %nfd non è valido",
|
||||
"la classe di archiviazione %s nella funzione con restrizioni AMP %nfd non è valida",
|
||||
"%s non è consentito nella funzione con restrizioni AMP %nfd",
|
||||
"il cast nella funzione con restrizioni AMP non è valido",
|
||||
@@ -3116,8 +3116,8 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"è previsto '>>>'",
|
||||
"non è possibile trovare la dichiarazione di __cudaPushCallConfiguration. L'installazione del toolkit CUDA potrebbe essere danneggiata.",
|
||||
"l'inizializzatore di tipo C++17 non è standard in questa modalità",
|
||||
"l'acquisizione di *this non è standard in questa modalità",
|
||||
"il prefisso dell'attributo di 'using' di tipo C++17 non è standard in questa modalità",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"un tipo volatile %t impedisce la valutazione constexpr di __builtin_bit_cast",
|
||||
"un tipo unione, puntatore o puntatore a membro %t impedisce la valutazione constexpr di __builtin_bit_cast",
|
||||
"%npTd, ereditato tramite l'uso della dichiarazione %p",
|
||||
"non è possibile costruire oggetti secondari di %t per ereditare costruttori. Il costruttore predefinito implicito è stato eliminato",
|
||||
"non è possibile costruire oggetti secondari di %t per ereditare costruttori. Il costruttore associato è stato eliminato",
|
||||
"%n deve restituire void",
|
||||
"l'inizio della dichiarazione di membro non è valido",
|
||||
"è previsto 'auto'",
|
||||
@@ -3300,7 +3300,7 @@
|
||||
"uso del concetto non valido",
|
||||
"un operatore di confronto membri impostato come predefinito non può essere qualificato con '&&'",
|
||||
"la funzione di confronto constexpr predefinita chiama la funzione non constexpr %nd",
|
||||
"il confronto di memoria constexpr è supportato solo per gli oggetti intero o matrice di intero di primo livello",
|
||||
"il confronto di memoria constexpr è supportato solo per gli oggetti intero o matrice di interi",
|
||||
"un modello di concetto non può avere vincoli associati",
|
||||
"'export' non è consentito",
|
||||
"l'esportazione di singoli membri di classe non è consentita",
|
||||
@@ -3343,13 +3343,159 @@
|
||||
"il mapping del file del modulo per '%s' è stato specificato più di una volta",
|
||||
"il mapping dell'unità intestazione per '%s' è stato specificato più di una volta",
|
||||
"non è stato specificato alcun mapping per '%s'",
|
||||
"Il mapping del file del modulo per '%s' non è valido",
|
||||
null,
|
||||
"non è possibile trovare l'intestazione '%s' da importare",
|
||||
"più di un file nell'elenco file di modulo corrisponde a '%s'",
|
||||
"il file di modulo trovato per '%s' è riferito a un modulo diverso",
|
||||
"qualsiasi tipo di modulo",
|
||||
"non è possibile leggere il file del modulo",
|
||||
"la funzione predefinita non è disponibile perché il tipo char8_t non è supportato con le opzioni correnti",
|
||||
"non è possibile specificare l'opzione della riga di comando --ms_await se le coroutine di C++20 sono abilitate",
|
||||
"uso non standard del costruttore esplicito %nod per l'inizializzazione dell'elemento di aggregazione predefinito"
|
||||
null,
|
||||
"uso non standard del costruttore esplicito %nod per l'inizializzazione dell'elemento di aggregazione predefinito",
|
||||
"l'origine o la destinazione dell'intrinseco simile a memcpy non punta a un oggetto",
|
||||
"l'intrinseco simile a memcpy prova a copiare i tipi distinti dal punto di vista della rappresentazione %t1 e %t2",
|
||||
"l'intrinseco simile a memcpy prova a copiare il tipo non facilmente copiabile %t",
|
||||
"l'intrinseco simile a memcpy prova a copiare l'oggetto parziale",
|
||||
"l'intrinseco simile a memcpy prova a copiare oltre il limite della matrice",
|
||||
"l'intrinseco simile a memcpy prova a copiare intervalli di byte sovrapposti (usando invece l'operazione memmove corrispondente)",
|
||||
"una dichiarazione friend con una clausola requires finale deve essere una definizione",
|
||||
"l'espressione deve essere di tipo puntatore o aritmetico ma il tipo è %t",
|
||||
"l'espressione deve essere di tipo aritmetico, enumerazione o puntatore ma il tipo è %t",
|
||||
"l'espressione deve essere di tipo aritmetico, enumerazione senza ambito o puntatore ma il tipo è %t",
|
||||
"l'espressione deve essere di tipo puntatore ma il tipo è %t",
|
||||
"a %t è stato applicato l'operatore -> o ->* invece di un tipo puntatore",
|
||||
"il tipo classe incompleto %t non è consentito",
|
||||
"non è possibile interpretare il layout di bit per questa destinazione di compilazione",
|
||||
"non esiste alcun operatore corrispondente per l'operatore IFC %sq",
|
||||
"non esiste alcuna convenzione di chiamata corrispondente per la convenzione di chiamata IFC %sq",
|
||||
"il modulo %sq contiene costrutti non supportati",
|
||||
"costrutto IFC non supportato: %sq",
|
||||
"__is_signed non è più una parola chiave a partire da questo punto",
|
||||
"una dimensione di matrice deve avere un valore intero senza segno costante",
|
||||
"il file IFC %sq ha una versione %d1.%d2 non supportata",
|
||||
"i moduli non sono abilitati in questa modalità",
|
||||
"Il nome di un modulo non può contenere 'import'",
|
||||
"Il nome di un modulo non può contenere 'module'",
|
||||
null,
|
||||
null,
|
||||
"%n non è un tipo enumerazione.",
|
||||
"l'enumeratore %no2 è in conflitto con %n1",
|
||||
"l'enumeratore %no è già stato dichiarato in questo ambito %p",
|
||||
"la specifica 'throw()' non fa parte di C++20 e versioni successive",
|
||||
"più di una voce nel mapping dell'unità intestazione corrisponde a '%s'",
|
||||
"la diagnostica #pragma deve avere l'argomento 'push' o 'pop'",
|
||||
"nessun '#pragma diagnostic push' trovato che corrisponda a questo 'diagnostic pop'",
|
||||
"%sq non può essere una macro se usata in una direttiva import o modulo",
|
||||
"questa direttiva può essere visualizzata solo nell'ambito dello spazio dei nomi globale",
|
||||
"una dichiarazione 'export' può essere visualizzata solo nell'ambito globale o dello spazio dei nomi",
|
||||
"%sq viene analizzato come identificatore anziché come parola chiave perché i token che seguono non corrispondono a quelli di una direttiva preprocessore",
|
||||
"sembra essere l'inizio di una direttiva preprocessore, ma la mancanza di ';' seguita immediatamente da una nuova riga lo impedisce",
|
||||
"sembra essere una direttiva pre-elaborazione dei moduli, ma tali direttive non possono essere visualizzate all'interno di un'espansione delle macro",
|
||||
"una direttiva 'module' non può comparire nell'ambito dell'inclusione condizionale (ad esempio, #if, #else, #elseif e così via)",
|
||||
"l'importazione di %sq è stata ignorata",
|
||||
"il tipo di promessa %t deve dichiarare get_return_object_on_allocation_failure come funzione membro statica che non richiede argomenti",
|
||||
"un modello di alias non può essere specializzato in modo esplicito",
|
||||
"per corrispondere a questo '{'",
|
||||
"in questa chiamata macro",
|
||||
"la chiamata richiede una conversione di argomento ambigua",
|
||||
"la dichiarazione di proprietà del modulo %s è in conflitto con %nd",
|
||||
"la dichiarazione di proprietà di un modulo globale è in conflitto con %nd di proprietà di un modulo denominato",
|
||||
"il primo argomento di un attributo 'malloc' deve essere una funzione",
|
||||
"non è possibile acquisire %nod",
|
||||
"non è possibile acquisire 'this'",
|
||||
"già nel contesto consteval",
|
||||
"'if consteval' e 'if not consteval' richiedono istruzioni dipendenti con parentesi graffe",
|
||||
"'if consteval' e 'if not consteval' non sono significativi in una funzione non constexpr",
|
||||
"il trasferimento del controllo in un'istruzione 'if consteval' o 'if not consteval' non è consentito",
|
||||
"la valutazione costante non può passare attraverso la dichiarazione di una variabile con durata di archiviazione statica o thread",
|
||||
"qualificatore modificabile non consentito in un'espressione lambda con un parametro 'this' esplicito",
|
||||
"una funzione membro dichiarata con 'static' non può avere un parametro 'this' esplicito",
|
||||
"un parametro 'this' esplicito deve essere il primo parametro dichiarato",
|
||||
"'this' non è consentito qui",
|
||||
"una funzione di confronto con 'this' esplicito non può essere predefinita",
|
||||
"una funzione 'this' esplicita richiede un operando selettore",
|
||||
"'if consteval' e 'if not consteval' non sono standard in questa modalità",
|
||||
"l'omissione di '()' in un dichiaratore lambda non è standard in questa modalità",
|
||||
"una clausola requires finale non è consentita quando l'elenco di parametri lambda viene omesso",
|
||||
"modulo %sq partizione non valida richiesta",
|
||||
"richiesta partizione non definita del modulo %sq1 (che si ritiene sia %sq2)",
|
||||
"modulo %sq1 posizione file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che è vuota",
|
||||
"modulo %sq1 posizione del file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che precede l'inizio della partizione",
|
||||
"modulo %sq1 posizione del file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che causa l'overflow della fine della partizione",
|
||||
"modulo %sq1 posizione file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che non è allineata con i relativi elementi di partizioni",
|
||||
"dal sottocampo %sq (posizione relativa al nodo %d)",
|
||||
"dalla partizione %sq elemento %d1 (posizione file %d2, posizione relativa %d3)",
|
||||
"attributi lambda non conformi allo standard",
|
||||
"l'identificatore %sq potrebbe essere confuso con un identificatore visivamente simile visualizzato %p",
|
||||
"questo commento contiene caratteri di controllo di formattazione Unicode sospetti",
|
||||
"questa stringa contiene caratteri di controllo di formattazione Unicode che potrebbero causare un comportamento di runtime imprevisto",
|
||||
"%d1 avviso eliminato durante l'elaborazione del modulo %sq1",
|
||||
"%d1 avvisi eliminati rilevati durante l'elaborazione del modulo %sq1",
|
||||
"Errore %d1 eliminato durante l'elaborazione del modulo %sq1",
|
||||
"%d1 errori eliminati rilevati durante l'elaborazione del modulo %sq1",
|
||||
"compreso",
|
||||
"eliminato",
|
||||
"una funzione membro virtuale non può avere un parametro 'this' esplicito",
|
||||
"l'acquisizione dell'indirizzo di una funzione esplicita 'this' richiede un nome qualificato",
|
||||
"per formare l'indirizzo di una funzione esplicita 'this' è necessario l'operatore '&'",
|
||||
"impossibile utilizzare un valore letterale stringa per inizializzare un membro di matrice flessibile",
|
||||
"La rappresentazione IFC della definizione della funzione %sq non è valida",
|
||||
"è stata apportata una correzione per eliminare un parametro 'this' implicito",
|
||||
"un grafico IFC UniLevel non è stato usato per specificare i parametri",
|
||||
"%d1 parametri specificati dal grafico di definizione dei parametri IFC mentre %d2 parametri sono stati specificati dalla dichiarazione IFC",
|
||||
"%d1 parametro è stato specificato dal grafico di definizione del parametro IFC mentre %d2 parametri sono stati specificati dalla dichiarazione IFC",
|
||||
"%d1 parametri sono stati specificati dal grafico di definizione del parametro IFC mentre %d2 parametro è stato specificato dalla dichiarazione IFC",
|
||||
"Manca la rappresentazione IFC della definizione della funzione %sq",
|
||||
"il modificatore di funzione non si applica alla dichiarazione del modello di membro",
|
||||
"la selezione dei membri implica troppi tipi anonimi annidati",
|
||||
"non esiste alcun tipo comune tra gli operandi",
|
||||
"è previsto un puntatore a membro",
|
||||
"un membro di matrice flessibile non può essere dichiarato in un tipo altrimenti vuoto",
|
||||
"previsto 'std::source_location::__impl' da definire in una classe con solo i membri dati '_M_function_name', '_M_file_name', '_M_column', '_M_line'",
|
||||
"il numero di colonna specificato è troppo grande per l'implementazione di 'std::source_location'",
|
||||
"il numero di riga specificato è troppo grande per l'implementazione di 'std::source_location'",
|
||||
"una costante di caratteri UTF-16 non può occupare più di un'unità di codice; valore troncato",
|
||||
"entrambi gli argomenti devono avere lo stesso tipo",
|
||||
"il tipo %t non è valido come argomento per questa compilazione",
|
||||
"chiamato da %nd:",
|
||||
"un tipo qualificato non è conforme allo standard per i campi di bit anonimi",
|
||||
"il tipo di elemento della condizione vettoriale (%t1) deve avere le stesse dimensioni del tipo di elemento del risultato (%t2)",
|
||||
"il tipo di operando di vettore a virgola mobile (%t) non ha un tipo di vettore intero corrispondente",
|
||||
"il mangling per le espressioni 'requires' non è ancora implementato",
|
||||
"a causa di un attributo 'non disponibile'",
|
||||
"qualificatore 'asm' duplicato",
|
||||
"o un campo di bit con un tipo di enumerazione incompleto o un'enumerazione opaca con un tipo di base non valido",
|
||||
"ha tentato di costruire un elemento dalla partizione IFC %sq utilizzando un indice nella partizione IFC %sq2",
|
||||
"la partizione %sq ha specificato la dimensione della voce come %d1 mentre era previsto %d2",
|
||||
"Durante l'elaborazione del modulo %sq1 è stato riscontrato un requisito IFC imprevisto.",
|
||||
"condizione fallita alla riga %d in %s1: %sq2",
|
||||
"il vincolo atomico dipende da se stesso",
|
||||
"La funzione 'noreturn' ha un tipo restituito non void",
|
||||
"è stata apportata una correzione eliminando il parametro %sq (in corrispondenza dell'indice relativo %d)",
|
||||
"non è possibile specificare un argomento di modello predefinito nella definizione di un modello di membro all'esterno della relativa classe",
|
||||
"nome identificatore IFC %sq non valido rilevato durante la ricostruzione dell'entità",
|
||||
"nome identificatore IFC %sq non valido ignorato durante la ricostruzione dell'entità",
|
||||
"il modulo %sq valore di ordinamento non valido",
|
||||
"un modello di funzione caricato da un modulo IFC è stato analizzato erroneamente come %nd",
|
||||
"non è stato possibile caricare un riferimento all'entità IFC nel modulo %sq",
|
||||
"dalla partizione %sq elemento %d1 (posizione file %d2, posizione relativa %d3)",
|
||||
"gli indicatori concatenati non sono consentiti per un tipo di classe con un distruttore non banale",
|
||||
"una dichiarazione di specializzazione esplicita non può essere una dichiarazione Friend",
|
||||
"il tipo std::float128_t non è supportato; verrà invece usato std::float64_t",
|
||||
"il tipo std::bfloat16_t non è supportato; verrà utilizzato std::float32_t",
|
||||
"non è possibile dichiarare una guida alla deduzione per il modello di alias %no",
|
||||
"%n dichiarato non disponibile",
|
||||
"%n dichiarato non disponibile (%sq)",
|
||||
"a causa di un attributo 'deprecato'",
|
||||
"i parametri espliciti del modello lambda sono una funzionalità di C++20",
|
||||
"l'uso di '_Noreturn' è obsoleto in C23; usare '[[noreturn]]'",
|
||||
"l'uso di '_Alignof' è obsoleto in C23; usare 'alignof'",
|
||||
"l'uso di '_Alignas' è obsoleto in C23; usare 'alignas'",
|
||||
"l'uso di '_Bool' è obsoleto in C23; usare 'bool'",
|
||||
"l'uso di '_Static_assert' è obsoleto in C23; usare 'static_assert'",
|
||||
"l'uso di '_Thread_local' è obsoleto in C23; usare 'thread_local'",
|
||||
"È necessario abilitare la modalità Microsoft per usare il file del modulo %sq (un modulo IFC Microsoft Visual Studio)",
|
||||
"non è stato possibile aprire il file del modulo %sq",
|
||||
"trovato nella mappa dei moduli per il modulo %sq",
|
||||
"trovato nella mappa delle unità intestazione per %sq"
|
||||
]
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user