@@ -1121,13 +1121,6 @@ enum class FeatureState : uint8_t
11211121 enabled = 2u ,
11221122};
11231123
1124- enum LintFlags : uint32_t
1125- {
1126- LintFlags_none = 0 ,
1127- LintFlags_constSpecial = 1 << 0 ,
1128- LintFlags_all = ~(uint32_t )0
1129- };
1130-
11311124struct Previews final
11321125{
11331126private:
@@ -6980,6 +6973,13 @@ struct ModuleDeclaration final
69806973 }
69816974};
69826975
6976+ enum class LintFlags : uint32_t
6977+ {
6978+ none = 0u ,
6979+ constSpecial = 1u ,
6980+ all = 4294967295u ,
6981+ };
6982+
69836983struct Scope final
69846984{
69856985 Scope* enclosing;
@@ -7054,7 +7054,7 @@ struct Scope final
70547054 bool explicitVisibility () const ;
70557055 bool explicitVisibility (bool v);
70567056 Previews previews;
7057- uint32_t lintFlags;
7057+ LintFlags lintFlags;
70587058 UserAttributeDeclaration* userAttribDecl;
70597059 void * lastdc;
70607060 void * anchorCounts;
@@ -7093,15 +7093,14 @@ struct Scope final
70937093 bitFields(0u ),
70947094 bitFields2(),
70957095 previews(),
7096- lintFlags(0 ),
70977096 userAttribDecl(),
70987097 lastdc(),
70997098 prevAnchor(),
71007099 aliasAsg(),
71017100 argStruct()
71027101 {
71037102 }
7104- Scope(Scope* enclosing, Module* _module = nullptr, ScopeDsymbol* scopesym = nullptr, FuncDeclaration* func = nullptr, VarDeclaration* varDecl = nullptr, Dsymbol* parent = nullptr, LabelStatement* slabel = nullptr, SwitchStatement* switchStatement = nullptr, Statement* tryBody = nullptr, TryFinallyStatement* tryFinally = nullptr, ScopeGuardStatement* scopeGuard = nullptr, Statement* sbreak = nullptr, Statement* scontinue = nullptr, ForeachStatement* fes = nullptr, Scope* callsc = nullptr, Dsymbol* inunion = nullptr, VarDeclaration* lastVar = nullptr, ErrorSink* eSink = nullptr, Module* minst = nullptr, TemplateInstance* tinst = nullptr, CtorFlow ctorflow = CtorFlow(), AlignDeclaration* aligndecl = nullptr, CPPNamespaceDeclaration* namespace_ = nullptr, LINK linkage = (LINK)1u, CPPMANGLE cppmangle = (CPPMANGLE)0u, PragmaDeclaration* inlining = nullptr, Visibility visibility = Visibility((Visibility::Kind)5u, nullptr), STC stc = (STC)0LLU, DeprecatedDeclaration* depdecl = nullptr, uint16_t bitFields = 0u, uint16_t bitFields2 = 0u, Previews previews = Previews(), UserAttributeDeclaration* userAttribDecl = nullptr, void* lastdc = nullptr, void* anchorCounts = nullptr, Identifier* prevAnchor = nullptr, AliasDeclaration* aliasAsg = nullptr, StructDeclaration* argStruct = nullptr) :
7103+ Scope(Scope* enclosing, Module* _module = nullptr, ScopeDsymbol* scopesym = nullptr, FuncDeclaration* func = nullptr, VarDeclaration* varDecl = nullptr, Dsymbol* parent = nullptr, LabelStatement* slabel = nullptr, SwitchStatement* switchStatement = nullptr, Statement* tryBody = nullptr, TryFinallyStatement* tryFinally = nullptr, ScopeGuardStatement* scopeGuard = nullptr, Statement* sbreak = nullptr, Statement* scontinue = nullptr, ForeachStatement* fes = nullptr, Scope* callsc = nullptr, Dsymbol* inunion = nullptr, VarDeclaration* lastVar = nullptr, ErrorSink* eSink = nullptr, Module* minst = nullptr, TemplateInstance* tinst = nullptr, CtorFlow ctorflow = CtorFlow(), AlignDeclaration* aligndecl = nullptr, CPPNamespaceDeclaration* namespace_ = nullptr, LINK linkage = (LINK)1u, CPPMANGLE cppmangle = (CPPMANGLE)0u, PragmaDeclaration* inlining = nullptr, Visibility visibility = Visibility((Visibility::Kind)5u, nullptr), STC stc = (STC)0LLU, DeprecatedDeclaration* depdecl = nullptr, uint16_t bitFields = 0u, uint16_t bitFields2 = 0u, Previews previews = Previews(), LintFlags lintFlags = (LintFlags)0u, UserAttributeDeclaration* userAttribDecl = nullptr, void* lastdc = nullptr, void* anchorCounts = nullptr, Identifier* prevAnchor = nullptr, AliasDeclaration* aliasAsg = nullptr, StructDeclaration* argStruct = nullptr) :
71057104 enclosing (enclosing),
71067105 _module (_module),
71077106 scopesym (scopesym),
@@ -7989,12 +7988,24 @@ extern bool c_isxdigit(const int32_t c);
79897988
79907989extern bool c_isalnum (const int32_t c);
79917990
7991+ enum class ErrorKind
7992+ {
7993+ warning = 0 ,
7994+ deprecation = 1 ,
7995+ error = 2 ,
7996+ tip = 3 ,
7997+ message = 4 ,
7998+ lint = 5 ,
7999+ };
8000+
79928001extern void error (Loc loc, const char * format, ...);
79938002
79948003extern void error (const char * filename, uint32_t linnum, uint32_t charnum, const char * format, ...);
79958004
79968005extern void errorBackend (const char * filename, uint32_t linnum, uint32_t charnum, const char * format, ...);
79978006
8007+ extern void lint (Loc loc, const char * format, ...);
8008+
79988009extern void errorSupplemental (Loc loc, const char * format, ...);
79998010
80008011extern void warning (Loc loc, const char * format, ...);
@@ -8723,6 +8734,10 @@ struct Id final
87238734 static Identifier* Pinline;
87248735 static Identifier* lib;
87258736 static Identifier* linkerDirective;
8737+ static Identifier* lint;
8738+ static Identifier* constSpecial;
8739+ static Identifier* none;
8740+ static Identifier* all;
87268741 static Identifier* mangle;
87278742 static Identifier* msg;
87288743 static Identifier* startaddress;
0 commit comments