Skip to content

Commit 2bca6f0

Browse files
committed
- enhancement: update C++ keywords
1 parent fc3e852 commit 2bca6f0

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

RedPandaIDE/parser/parserutils.cpp

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void initParser()
9191
CppKeywords.insert("reinterpret_cast",KeywordType::SkipItself);
9292
CppKeywords.insert("static_cast",KeywordType::SkipItself);
9393
CppKeywords.insert("template",KeywordType::SkipItself);
94-
//CppKeywords.insert("this",SkipType::skItself);
94+
CppKeywords.insert("this",KeywordType::SkipItself); // Uncommented
9595
CppKeywords.insert("thread_local",KeywordType::SkipItself);
9696
CppKeywords.insert("true",KeywordType::SkipItself);
9797
CppKeywords.insert("typename",KeywordType::SkipItself);
@@ -179,6 +179,13 @@ void initParser()
179179
CppKeywords.insert("[[unlikely]]",KeywordType::None);
180180
CppKeywords.insert("[[no_unique_address]]",KeywordType::None);
181181

182+
// C++20 modules
183+
CppKeywords.insert("import", KeywordType::None); // Added
184+
CppKeywords.insert("module", KeywordType::None); // Added
185+
186+
// C++11 context keywords
187+
CppKeywords.insert("override", KeywordType::None); // Added
188+
CppKeywords.insert("final", KeywordType::None); // Added
182189

183190
#ifdef ENABLE_SDCC
184191
SDCCKeywords.insert("__sfr",KeywordType::None);
@@ -222,8 +229,8 @@ void initParser()
222229
CppTypeKeywords.insert("int");
223230
CppTypeKeywords.insert("long");
224231
CppTypeKeywords.insert("short");
225-
//CppTypeKeywords.insert("signed");
226-
//CppTypeKeywords.insert("unsigned");
232+
CppTypeKeywords.insert("signed"); // Uncommented
233+
CppTypeKeywords.insert("unsigned"); // Uncommented
227234
CppTypeKeywords.insert("void");
228235
CppTypeKeywords.insert("wchar_t");
229236
CppTypeKeywords.insert("signed");
@@ -307,6 +314,9 @@ void initParser()
307314
STLContainers.insert("std::deque");
308315
STLContainers.insert("std::forward_list");
309316
STLContainers.insert("std::list");
317+
STLContainers.insert("std::flat_map"); // C++23
318+
STLContainers.insert("std::flat_set"); // C++23
319+
STLContainers.insert("std::mdspan"); // C++23
310320

311321
STLContainers.insert("std::set");
312322
// STLContainers.insert("std::map");
@@ -323,6 +333,9 @@ void initParser()
323333
STLContainers.insert("std::priority_queue");
324334

325335
STLContainers.insert("std::span");
336+
STLContainers.insert("std::expected"); // C++23
337+
STLContainers.insert("std::optional"); // C++23
338+
STLContainers.insert("std::generator"); // C++23 coroutines
326339

327340
STLMaps.insert("std::map");
328341
STLMaps.insert("std::multilist");
@@ -335,6 +348,7 @@ void initParser()
335348
STLElementMethods.insert("back");
336349
STLElementMethods.insert("front");
337350
STLElementMethods.insert("top");
351+
STLElementMethods.insert("operator[]"); // Added
338352

339353
//STL iterator
340354
STLIterators.insert("iterator");
@@ -343,6 +357,7 @@ void initParser()
343357
STLIterators.insert("local_iterator");
344358
STLIterators.insert("reverse_iterator");
345359
STLIterators.insert("const_reverse_iterator");
360+
STLIterators.insert("sentinel"); // C++20
346361

347362
//STL pointers
348363
STLPointers.insert("std::unique_ptr");
@@ -360,6 +375,7 @@ void initParser()
360375
AutoTypes.insert("auto &&");
361376
AutoTypes.insert("const auto");
362377
AutoTypes.insert("const auto &");
378+
AutoTypes.insert("decltype(auto)"); // C++14
363379

364380
//C/CPP preprocessor directives
365381
CppDirectives.append("#include");
@@ -374,6 +390,8 @@ void initParser()
374390
CppDirectives.append("#pragma");
375391
CppDirectives.append("#line");
376392
CppDirectives.append("#undef");
393+
CppDirectives.append("#__has_include"); // C++17
394+
CppDirectives.append("#warning"); // C++23
377395

378396
// javadoc tags
379397
JavadocTags.append("@author");
@@ -401,6 +419,7 @@ void initParser()
401419
MemberOperators.insert("->");
402420
MemberOperators.insert("->*");
403421
MemberOperators.insert(".*");
422+
MemberOperators.insert("<=>"); // C++20 three-way comparison
404423

405424
IOManipulators.insert("std::boolalpha");
406425
IOManipulators.insert("std::noboolalpha");

0 commit comments

Comments
 (0)