From 39b787670baa729eacad5471ec12f4361d9ea81d Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sat, 2 Sep 2017 20:59:03 -0400 Subject: [PATCH] Update keywords for C++11 etc, msg2325 --- src/V3EmitCSyms.cpp | 1 - src/V3LanguageWords.h | 147 ++++++++++++++++++++++--------- test_regress/t/t_var_rsvd_bad.pl | 4 +- 3 files changed, 106 insertions(+), 46 deletions(-) diff --git a/src/V3EmitCSyms.cpp b/src/V3EmitCSyms.cpp index 05a459f11..ba77d9d84 100644 --- a/src/V3EmitCSyms.cpp +++ b/src/V3EmitCSyms.cpp @@ -238,7 +238,6 @@ class EmitCSyms : EmitCBaseVisitor { virtual void visit(AstConst*) {} // Default virtual void visit(AstNode* nodep) { - nameCheck(nodep); nodep->iterateChildren(*this); } //--------------------------------------- diff --git a/src/V3LanguageWords.h b/src/V3LanguageWords.h index 4ccbaea1b..0e27edf0d 100644 --- a/src/V3LanguageWords.h +++ b/src/V3LanguageWords.h @@ -45,70 +45,132 @@ class V3LanguageWords { public: V3LanguageWords() { // C++ keywords - addKwd("asm", "C++ reserved word"); - addKwd("auto", "C++ reserved word"); - addKwd("catch", "C++ reserved word"); - addKwd("cdecl", "C++ reserved word"); - addKwd("char", "C++ reserved word"); - addKwd("const_cast", "C++ reserved word"); - addKwd("delete", "C++ reserved word"); - addKwd("double", "C++ reserved word"); - addKwd("dynamic_cast", "C++ reserved word"); - addKwd("explicit", "C++ reserved word"); - addKwd("far", "C++ reserved word"); - addKwd("float", "C++ reserved word"); - addKwd("friend", "C++ reserved word"); - addKwd("goto", "C++ reserved word"); - addKwd("huge", "C++ reserved word"); - addKwd("inline", "C++ reserved word"); - addKwd("interrupt", "C++ reserved word"); - addKwd("long", "C++ reserved word"); - addKwd("mutable", "C++ reserved word"); - addKwd("near", "C++ reserved word"); - addKwd("operator", "C++ reserved word"); - addKwd("pascal", "C++ reserved word"); - addKwd("private", "C++ reserved word"); - addKwd("public", "C++ reserved word"); - addKwd("register", "C++ reserved word"); - addKwd("reinterpret_cast ", "C++ reserved word"); - addKwd("restrict", "C++ reserved word"); - addKwd("short", "C++ reserved word"); - addKwd("sizeof", "C++ reserved word"); - addKwd("static_cast", "C++ reserved word"); - addKwd("switch", "C++ reserved word"); - addKwd("template", "C++ reserved word"); - addKwd("throw", "C++ reserved word"); - addKwd("try", "C++ reserved word"); - addKwd("typeid", "C++ reserved word"); - addKwd("typename", "C++ reserved word"); - addKwd("unsigned", "C++ reserved word"); - addKwd("using", "C++ reserved word"); - addKwd("volatile", "C++ reserved word"); // C++ addKwd("NULL", "C++ common word"); addKwd("abort", "C++ common word"); + addKwd("alignas", "C++11 keyword"); + addKwd("alignof", "C++11 keyword"); + addKwd("and", "C++11 keyword"); + addKwd("and_eq", "C++11 keyword"); + addKwd("asm", "C++ common word"); + addKwd("atomic_cancel", "C++ TM TS keyword"); + addKwd("atomic_commit", "C++ TM TS keyword"); + addKwd("atomic_noexcept", "C++ TM TS keyword"); + addKwd("auto", "C++ keyword"); addKwd("bit_vector", "C++ common word"); - addKwd("bool", "C++ common word"); + addKwd("bitand", "C++ keyword"); + addKwd("bitor", "C++ keyword"); + addKwd("bool", "C++ keyword"); + addKwd("break", "C++ keyword"); + addKwd("case", "C++ keyword"); + addKwd("catch", "C++ keyword"); + addKwd("cdecl", "C++ common word"); + addKwd("char", "C++ keyword"); + addKwd("char16_t", "C++11 keyword"); + addKwd("char32_t", "C++11 keyword"); + addKwd("class", "C++11 keyword"); + addKwd("compl", "C++11 keyword"); addKwd("complex", "C++ common word"); + addKwd("concept", "C++20 keyword"); + addKwd("const", "C++ keyword"); + addKwd("const_cast", "C++ common word"); addKwd("const_iterator", "C++ common word"); addKwd("const_reference ", "C++ common word"); + addKwd("constexpr", "C++11 keyword"); + addKwd("continue", "C++ keyword"); + addKwd("decltype", "C++11 keyword"); + addKwd("default", "C++ keyword"); + addKwd("delete", "C++ keyword"); addKwd("deque", "C++ common word"); - addKwd("false", "C++ common word"); + addKwd("do", "C++ keyword"); + addKwd("double", "C++ keyword"); + addKwd("dynamic_cast", "C++ keyword"); + addKwd("else", "C++ keyword"); + addKwd("enum", "C++ keyword"); + addKwd("explicit", "C++ keyword"); + addKwd("export", "C++ keyword"); + addKwd("extern", "C++ keyword"); + addKwd("false", "C++ keyword"); + addKwd("far", "C++ common word"); + addKwd("float", "C++ keyword"); + addKwd("for", "C++ keyword"); + addKwd("friend", "C++ keyword"); + addKwd("goto", "C++ keyword"); + addKwd("huge", "C++ keyword"); + addKwd("if", "C++ keyword"); + addKwd("import", "C++ modules TS keyword"); + addKwd("inline", "C++ keyword"); + addKwd("int", "C++ keyword"); + addKwd("interrupt", "C++ common word"); addKwd("iterator", "C++ common word"); addKwd("list", "C++ common word"); + addKwd("long", "C++ keyword"); addKwd("map", "C++ common word"); + addKwd("module", "C++ modules TS keyword"); addKwd("multimap", "C++ common word"); addKwd("multiset", "C++ common word"); + addKwd("mutable", "C++ keyword"); + addKwd("namespace", "C++ keyword"); + addKwd("near", "C++ common word"); + addKwd("new", "C++ keyword"); + addKwd("noexcept", "C++11 keyword"); + addKwd("not", "C++ keyword"); + addKwd("not_eq", "C++ keyword"); + addKwd("nullptr", "C++11 keyword"); + addKwd("operator", "C++ keyword"); + addKwd("or", "C++ keyword"); + addKwd("or_eq", "C++ keyword"); + addKwd("override", "C++ common word"); + addKwd("pascal", "C++ keyword"); + addKwd("private", "C++ keyword"); + addKwd("protected", "C++ keyword"); + addKwd("public", "C++ keyword"); addKwd("queue", "C++ common word"); addKwd("reference", "C++ common word"); + addKwd("register", "C++ keyword"); + addKwd("reinterpret_cast ", "C++ keyword"); + addKwd("requires", "C++20 keyword"); + addKwd("restrict", "C++ keyword"); + addKwd("return", "C++ keyword"); addKwd("set", "C++ common word"); + addKwd("short", "C++ keyword"); + addKwd("signed", "C++ keyword"); + addKwd("sizeof", "C++ keyword"); addKwd("stack", "C++ common word"); - addKwd("true", "C++ common word"); + addKwd("static", "C++ keyword"); + addKwd("static_assert", "C++11 keyword"); + addKwd("static_cast", "C++ keyword"); + addKwd("struct", "C++ keyword"); + addKwd("switch", "C++ keyword"); + addKwd("synchronized", "C++ TM TS keyword"); + addKwd("template", "C++ keyword"); + addKwd("this", "C++ keyword"); + addKwd("thread_local", "C++11 keyword"); + addKwd("throw", "C++ keyword"); + addKwd("transaction_safe", "C++ common word"); + addKwd("transaction_safe_dynamic", "C++ common word"); + addKwd("true", "C++ keyword"); + addKwd("try", "C++ keyword"); addKwd("type_info", "C++ common word"); + addKwd("typedef", "C++ keyword"); + addKwd("typeid", "C++ keyword"); + addKwd("typename", "C++ keyword"); addKwd("uint16_t", "C++ common word"); addKwd("uint32_t", "C++ common word"); addKwd("uint8_t", "C++ common word"); + addKwd("union", "C++ keyword"); + addKwd("unsigned", "C++ keyword"); + addKwd("using", "C++ keyword"); addKwd("vector", "C++ common word"); + addKwd("virtual", "C++ keyword"); + addKwd("void", "C++ keyword"); + addKwd("volatile", "C++ keyword"); + addKwd("wchar_t", "C++ keyword"); + addKwd("while", "C++ keyword"); + addKwd("xor", "C++ keyword"); + addKwd("xor_eq", "C++ keyword"); + // This conflicts with header functions, so is ignored + //dKwd("final", "C++11 keyword"); // Member function or class head, otherwise not reserved // SystemC addKwd("sc_clock", "SystemC common word"); addKwd("sc_in", "SystemC common word"); @@ -123,4 +185,3 @@ class V3LanguageWords { #endif // Guard - diff --git a/test_regress/t/t_var_rsvd_bad.pl b/test_regress/t/t_var_rsvd_bad.pl index 0b3d587c6..4f318565c 100755 --- a/test_regress/t/t_var_rsvd_bad.pl +++ b/test_regress/t/t_var_rsvd_bad.pl @@ -12,9 +12,9 @@ top_filename("t/t_var_rsvd_port.v"); compile ( fails=>$Self->{v3}, expect=> -q{%Warning-SYMRSVDWORD: t/t_var_rsvd_port.v:\d+: Symbol matches C\+\+ common word: 'bool' +q{%Warning-SYMRSVDWORD: t/t_var_rsvd_port.v:\d+: Symbol matches C\+\+ keyword: 'bool' .* -%Warning-SYMRSVDWORD: t/t_var_rsvd_port.v:\d+: Symbol matches C\+\+ reserved word: 'switch' +%Warning-SYMRSVDWORD: t/t_var_rsvd_port.v:\d+: Symbol matches C\+\+ keyword: 'switch' %Error: Exiting due to.*}, );