14b1c875351958a765339850cfb98e332435f847bSebastian Redl//===--- Diagnostic.td - C Language Family Diagnostic Handling ------------===//
24b1c875351958a765339850cfb98e332435f847bSebastian Redl//
34b1c875351958a765339850cfb98e332435f847bSebastian Redl//                     The LLVM Compiler Infrastructure
44b1c875351958a765339850cfb98e332435f847bSebastian Redl//
54b1c875351958a765339850cfb98e332435f847bSebastian Redl// This file is distributed under the University of Illinois Open Source
64b1c875351958a765339850cfb98e332435f847bSebastian Redl// License. See LICENSE.TXT for details.
74b1c875351958a765339850cfb98e332435f847bSebastian Redl//
84b1c875351958a765339850cfb98e332435f847bSebastian Redl//===----------------------------------------------------------------------===//
94b1c875351958a765339850cfb98e332435f847bSebastian Redl//
104b1c875351958a765339850cfb98e332435f847bSebastian Redl//  This file defines the TableGen core definitions for the diagnostics
114b1c875351958a765339850cfb98e332435f847bSebastian Redl//  and diagnostic control.
124b1c875351958a765339850cfb98e332435f847bSebastian Redl//
134b1c875351958a765339850cfb98e332435f847bSebastian Redl//===----------------------------------------------------------------------===//
144b1c875351958a765339850cfb98e332435f847bSebastian Redl
15839324d564c7263402fb49e73c307817a0e5992cChris Lattner// Define the diagnostic mappings.
16839324d564c7263402fb49e73c307817a0e5992cChris Lattnerclass DiagMapping;
17839324d564c7263402fb49e73c307817a0e5992cChris Lattnerdef MAP_IGNORE  : DiagMapping;
18839324d564c7263402fb49e73c307817a0e5992cChris Lattnerdef MAP_WARNING : DiagMapping;
19839324d564c7263402fb49e73c307817a0e5992cChris Lattnerdef MAP_ERROR   : DiagMapping;
20839324d564c7263402fb49e73c307817a0e5992cChris Lattnerdef MAP_FATAL   : DiagMapping;
21839324d564c7263402fb49e73c307817a0e5992cChris Lattner
228a941e0c71d318430648e24eeca91a464a46eba9Chris Lattner// Define the diagnostic classes.
238a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerclass DiagClass;
248a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerdef CLASS_NOTE      : DiagClass;
258a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerdef CLASS_WARNING   : DiagClass;
268a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerdef CLASS_EXTENSION : DiagClass;
278a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerdef CLASS_ERROR     : DiagClass;
288a941e0c71d318430648e24eeca91a464a46eba9Chris Lattner
2927b0f510d1d4f9ed5668eec1195f04b4a74a4426Chris Lattner// Diagnostic Categories.  These can be applied to groups or individual
3027b0f510d1d4f9ed5668eec1195f04b4a74a4426Chris Lattner// diagnostics to specify a category.
3127b0f510d1d4f9ed5668eec1195f04b4a74a4426Chris Lattnerclass DiagCategory<string Name> {
3227b0f510d1d4f9ed5668eec1195f04b4a74a4426Chris Lattner  string CategoryName = Name;
3327b0f510d1d4f9ed5668eec1195f04b4a74a4426Chris Lattner}
3427b0f510d1d4f9ed5668eec1195f04b4a74a4426Chris Lattner
35494571789e4154a0eba645e4d611913ab395adb2Chris Lattner// Diagnostic Groups.
36bc583a0e02c39cc84c1392fa89cca8b62b79c3deChris Lattnerclass DiagGroup<string Name, list<DiagGroup> subgroups = []> {
37bc583a0e02c39cc84c1392fa89cca8b62b79c3deChris Lattner  string GroupName = Name;
38bc583a0e02c39cc84c1392fa89cca8b62b79c3deChris Lattner  list<DiagGroup> SubGroups = subgroups;
3927b0f510d1d4f9ed5668eec1195f04b4a74a4426Chris Lattner  string CategoryName = "";
40bc583a0e02c39cc84c1392fa89cca8b62b79c3deChris Lattner}
41cb75e3c27350dca6dafcf16051b033baa1a4c2a1Chris Lattnerclass InGroup<DiagGroup G> { DiagGroup Group = G; }
427171825a5f55ce7439d4dfaaa32a7c0d51a7cba7Chris Lattner//class IsGroup<string Name> { DiagGroup Group = DiagGroup<Name>; }
43494571789e4154a0eba645e4d611913ab395adb2Chris Lattner
448a941e0c71d318430648e24eeca91a464a46eba9Chris Lattner
453f14538ec2651b5a2e02fd5e80d0b8886f52eb46Chris Lattner// This defines all of the named diagnostic categories.
463f14538ec2651b5a2e02fd5e80d0b8886f52eb46Chris Lattnerinclude "DiagnosticCategories.td"
473f14538ec2651b5a2e02fd5e80d0b8886f52eb46Chris Lattner
483f14538ec2651b5a2e02fd5e80d0b8886f52eb46Chris Lattner// This defines all of the named diagnostic groups.
4956dc97a8f27016775f3b2279af42bea1dd492617Chris Lattnerinclude "DiagnosticGroups.td"
50bc583a0e02c39cc84c1392fa89cca8b62b79c3deChris Lattner
514b1c875351958a765339850cfb98e332435f847bSebastian Redl
52839324d564c7263402fb49e73c307817a0e5992cChris Lattner// All diagnostics emitted by the compiler are an indirect subclass of this.
538a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerclass Diagnostic<string text, DiagClass DC, DiagMapping defaultmapping> {
54839324d564c7263402fb49e73c307817a0e5992cChris Lattner  /// Component is specified by the file with a big let directive.
55494571789e4154a0eba645e4d611913ab395adb2Chris Lattner  string      Component = ?;
56494571789e4154a0eba645e4d611913ab395adb2Chris Lattner  string      Text = text;
57494571789e4154a0eba645e4d611913ab395adb2Chris Lattner  DiagClass   Class = DC;
585e9f35c7cb61aea46f56d46c77cbcf47c0cf28baDouglas Gregor  bit         SFINAE = 1;
59418df343bb50802586d20aae3b83e2eb44c6c828Douglas Gregor  bit         AccessControl = 0;
604213df3b5da21ce25a4541ca5c447eeb28b515a3Daniel Dunbar  bit         WarningNoWerror = 0;
614213df3b5da21ce25a4541ca5c447eeb28b515a3Daniel Dunbar  bit         WarningShowInSystemHeader = 0;
62839324d564c7263402fb49e73c307817a0e5992cChris Lattner  DiagMapping DefaultMapping = defaultmapping;
63494571789e4154a0eba645e4d611913ab395adb2Chris Lattner  DiagGroup   Group;
6427b0f510d1d4f9ed5668eec1195f04b4a74a4426Chris Lattner  string      CategoryName = "";
654b1c875351958a765339850cfb98e332435f847bSebastian Redl}
664b1c875351958a765339850cfb98e332435f847bSebastian Redl
678a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerclass Error<string str>     : Diagnostic<str, CLASS_ERROR, MAP_ERROR>;
688a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerclass Warning<string str>   : Diagnostic<str, CLASS_WARNING, MAP_WARNING>;
698a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerclass Extension<string str> : Diagnostic<str, CLASS_EXTENSION, MAP_IGNORE>;
708a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerclass ExtWarn<string str>   : Diagnostic<str, CLASS_EXTENSION, MAP_WARNING>;
718a941e0c71d318430648e24eeca91a464a46eba9Chris Lattnerclass Note<string str>      : Diagnostic<str, CLASS_NOTE, MAP_FATAL/*ignored*/>;
720527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenek
73af008839f3ad499b1e6f752b6a324b7bd1de6ceaChris Lattner
74af008839f3ad499b1e6f752b6a324b7bd1de6ceaChris Lattnerclass DefaultIgnore { DiagMapping DefaultMapping = MAP_IGNORE; }
75af008839f3ad499b1e6f752b6a324b7bd1de6ceaChris Lattnerclass DefaultWarn   { DiagMapping DefaultMapping = MAP_WARNING; }
76af008839f3ad499b1e6f752b6a324b7bd1de6ceaChris Lattnerclass DefaultError  { DiagMapping DefaultMapping = MAP_ERROR; }
77af008839f3ad499b1e6f752b6a324b7bd1de6ceaChris Lattnerclass DefaultFatal  { DiagMapping DefaultMapping = MAP_FATAL; }
784213df3b5da21ce25a4541ca5c447eeb28b515a3Daniel Dunbarclass DefaultWarnNoWerror {
794213df3b5da21ce25a4541ca5c447eeb28b515a3Daniel Dunbar  bit WarningNoWerror = 1;
804213df3b5da21ce25a4541ca5c447eeb28b515a3Daniel Dunbar}
81144bc08f5fe6046bd8e07de5e41a4237dd2c6275Argyrios Kyrtzidisclass DefaultWarnShowInSystemHeader {
824213df3b5da21ce25a4541ca5c447eeb28b515a3Daniel Dunbar  bit WarningShowInSystemHeader = 1;
83144bc08f5fe6046bd8e07de5e41a4237dd2c6275Argyrios Kyrtzidis}
84af008839f3ad499b1e6f752b6a324b7bd1de6ceaChris Lattner
855e9f35c7cb61aea46f56d46c77cbcf47c0cf28baDouglas Gregorclass NoSFINAE { bit SFINAE = 0; }
86418df343bb50802586d20aae3b83e2eb44c6c828Douglas Gregorclass AccessControl { bit AccessControl = 1; }
875e9f35c7cb61aea46f56d46c77cbcf47c0cf28baDouglas Gregor
88c1ce194ea5e2a3e6ab2f27edad93fd680c381246Ted Kremenek// Definitions for Diagnostics.
890527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenekinclude "DiagnosticASTKinds.td"
900527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenekinclude "DiagnosticAnalysisKinds.td"
91a5ef44ff5d93a3be6ca67782828157a71894cf0cDmitri Gribenkoinclude "DiagnosticCommentKinds.td"
920527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenekinclude "DiagnosticCommonKinds.td"
930527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenekinclude "DiagnosticDriverKinds.td"
940527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenekinclude "DiagnosticFrontendKinds.td"
950527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenekinclude "DiagnosticLexKinds.td"
960527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenekinclude "DiagnosticParseKinds.td"
970527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenekinclude "DiagnosticSemaKinds.td"
98a2398d7da920b896001f385587e7f7d3366e5b17Chandler Carruthinclude "DiagnosticSerializationKinds.td"
990527bcc36d67c4475d95669944d667c6f19f4ea4Ted Kremenek
100