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