llvm-project/clang/test/AST
Haojian Wu 8222107aa9 [AST] Preserve the type in RecoveryExprs for broken function calls.
RecoveryExprs are modeled as dependent type to prevent bogus diagnostics
and crashes in clang.

This patch allows to preseve the type for broken calls when the
RecoveryEprs have a known type, e.g. a broken non-overloaded call, a
overloaded call when the all candidates have the same return type, so
that more features (code completion still work on "take2args(x).^") still
work.

However, adding the type is risky, which may result in more clang code being
affected leading to new crashes and hurt diagnostic, and it requires large
effort to minimize the affect (update all sites in clang to handle errorDepend
case), so we add a new flag (off by default) to allow us to develop/test
them incrementally.

This patch also has some trivial fixes to suppress diagnostics (to prevent regressions).

Tested:

all existing tests are passed (when both "-frecovery-ast", "-frecovery-ast-type" flags are flipped on);

Reviewed By: sammccall

Subscribers: rsmith, arphaman, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D79160
2020-05-11 08:46:18 +02:00
..
Inputs Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
Interp [ConstExprPreter] Removed the flag forcing the use of the interpreter 2019-11-27 20:07:19 +00:00
address_space_attribute.cpp [Sema] Fix Modified Type in address_space AttributedType 2019-01-24 00:11:35 +00:00
ast-dump-aarch64-sve-types.c Add SVE opaque built-in types 2019-08-09 08:52:54 +00:00
ast-dump-arm-attr.c [ARM][CMSE] Implement CMSE attributes 2020-03-24 10:21:26 +00:00
ast-dump-array.cpp Extend test for DependentSizedArrayType 2018-12-04 09:53:36 +00:00
ast-dump-attr.cpp Add lifetime categories attributes 2019-07-25 17:50:51 +00:00
ast-dump-attr.m
ast-dump-c-attr.c
ast-dump-color.cpp Revert r372325 - Reverting r372323 because it broke color tests on Linux. 2019-09-19 15:10:51 +00:00
ast-dump-comment-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-comment.cpp [Wdocumentation] Implement \anchor 2019-12-21 14:52:21 +01:00
ast-dump-decl-context-json.cpp Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-decl-json.c Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-decl-json.m Add a missing triple in ast-dump-decl-json.m 2019-11-15 20:15:00 +00:00
ast-dump-decl-stmts.cpp
ast-dump-decl.c Added test cases for dumping variadic-like functions; NFC. 2019-01-16 16:12:30 +00:00
ast-dump-decl.cpp [clang] Make handling of unnamed template params similar to function params 2019-10-01 14:08:51 +00:00
ast-dump-decl.m [ASTDump] Mark variadic declarations with a tag instead of child node 2019-01-18 21:38:30 +00:00
ast-dump-decl.mm [ASTDump] Mark BlockDecls which capture this with a tag 2019-01-18 21:55:24 +00:00
ast-dump-enum-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-expr-errors.cpp [AST] Preserve the invalid initializer for auto VarDecl. 2020-04-27 10:25:36 +02:00
ast-dump-expr-json.c Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-expr-json.cpp Refactor CompareReferenceRelationship and its callers in preparation for 2019-12-18 14:05:57 -08:00
ast-dump-expr-json.m Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-expr.c Add an explicit triple to this test to fix failing test bots. 2018-12-10 19:18:11 +00:00
ast-dump-expr.cpp Factor out commonality between variable capture initialization and 2019-06-02 04:00:43 +00:00
ast-dump-file-line-json.c Correcting the offsets within the test to fix the bots. 2019-12-03 13:21:35 -05:00
ast-dump-funcs-json.cpp Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-funcs.cpp Added test cases for dumping variadic-like functions; NFC. 2019-01-16 16:12:30 +00:00
ast-dump-if-json.cpp Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-invalid-initialized.cpp [AST] dont invaliate VarDecl when the initializer contains errors. 2020-04-21 10:53:35 +02:00
ast-dump-invalid.cpp
ast-dump-lookups.cpp
ast-dump-macro-json.c Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-msp430-attr.c
ast-dump-namespace-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-objc-arc-json.m [CodeGen] Emit destructor calls to destruct compound literals 2020-03-10 14:08:28 -07:00
ast-dump-openmp-atomic.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-barrier.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-begin-declare-variant_1.c [OpenMP] `omp begin/end declare variant` - part 2, sema ("+CG") 2020-03-27 02:30:58 -05:00
ast-dump-openmp-begin-declare-variant_2.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_3.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_4.c [OpenMP] `omp begin/end declare variant` - part 2, sema ("+CG") 2020-03-27 02:30:58 -05:00
ast-dump-openmp-begin-declare-variant_5.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_6.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_7.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_8.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_9.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_10.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_11.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_12.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_addr_1.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_decl_1.c [OpenMP] `omp begin/end declare variant` - part 2, sema ("+CG") 2020-03-27 02:30:58 -05:00
ast-dump-openmp-begin-declare-variant_namespace_1.cpp [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_template_1.cpp [OpenMP] Specialize OpenMP calls after template instantiation 2020-04-07 23:33:24 -05:00
ast-dump-openmp-cancel.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-cancellation-point.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-critical.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-declare-variant-extensions-messages.c [OpenMP] Add match_{all,any,none} declare variant selector extensions. 2020-04-07 23:33:24 -05:00
ast-dump-openmp-declare-variant-extensions.c [OpenMP] Add match_{all,any,none} declare variant selector extensions. 2020-04-07 23:33:24 -05:00
ast-dump-openmp-distribute-parallel-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-distribute-parallel-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-distribute-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-distribute.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-flush.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-master.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-ordered.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel-master-XFAIL.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel-sections.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-section.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-sections.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-single.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-data.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-enter-data.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-target-exit-data.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-target-parallel-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-parallel-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-parallel.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-teams-distribute-parallel-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-teams-distribute-parallel-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-teams-distribute-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-teams-distribute.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-teams.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-update.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-target.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-task.c [OPENMP50]Mark expression in detach clause as firstprivate. 2020-03-17 14:05:13 -04:00
ast-dump-openmp-taskgroup.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-taskloop-simd.c [OPENMP]Fix PR45047: Do not copy firstprivates in tasks twice. 2020-03-13 18:04:16 -04:00
ast-dump-openmp-taskloop.c [OPENMP]Fix PR45047: Do not copy firstprivates in tasks twice. 2020-03-13 18:04:16 -04:00
ast-dump-openmp-taskwait.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-taskyield.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-teams-distribute-parallel-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-teams-distribute-parallel-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-teams-distribute-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-teams-distribute.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-teams.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-pipe.cl
ast-dump-record-definition-data-json.cpp [Concepts] Placeholder constraints and abbreviated templates 2020-01-23 19:39:43 +02:00
ast-dump-record-definition-data.cpp Adding tests for -ast-dump; NFC. 2018-12-04 21:50:08 +00:00
ast-dump-records-json.cpp Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-records.c
ast-dump-records.cpp [ASTDump] Add is_anonymous to VisitCXXRecordDecl 2019-08-12 17:07:49 +00:00
ast-dump-recovery.cpp [AST] Preserve the type in RecoveryExprs for broken function calls. 2020-05-11 08:46:18 +02:00
ast-dump-special-member-functions.cpp Adding tests for -ast-dump; NFC. 2018-12-04 21:50:08 +00:00
ast-dump-stmt-json.c Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-stmt-json.cpp [clang] Annotating C++'s `operator new` with more attributes 2020-02-26 01:37:17 +03:00
ast-dump-stmt-json.m Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-stmt.c Ignore trailing NullStmts in StmtExprs for GCC compatibility. 2019-07-09 15:02:07 +00:00
ast-dump-stmt.cpp [ASTDump] Add utility for dumping a label with child nodes 2019-01-11 19:11:17 +00:00
ast-dump-stmt.m [CodeGen] Emit destructor calls to destruct compound literals 2020-03-10 14:08:28 -07:00
ast-dump-template-decls-json.cpp Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-template-decls.cpp [clang] Make handling of unnamed template params similar to function params 2019-10-01 14:08:51 +00:00
ast-dump-templates.cpp
ast-dump-temporaries-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-types-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-undeserialized.cpp Move decl context dumping to TextNodeDumper 2019-01-19 09:05:55 +00:00
ast-dump-wchar.cpp [Sema] Make string literal init an rvalue. 2019-02-08 21:18:46 +00:00
ast-print-attr.c Disallow an empty string literal in an asm label 2020-01-08 08:38:02 -05:00
ast-print-bool.c
ast-print-char-literal.cpp
ast-print-enum-decl.c [AST] Print fixed enum type regardless of language mode 2020-05-05 15:30:39 -04:00
ast-print-no-sanitize.cpp Do not use the incorrect attribute spelling list index when translating a no_sanitize_foo attribute into a no_sanitize("foo") attribute. 2019-05-21 17:24:49 +00:00
ast-print-objc-property.m Clean up ObjCPropertyDecl printing 2019-04-08 19:52:45 +00:00
ast-print-objectivec.m
ast-print-out-of-line-func.cpp
ast-print-pragmas.cpp [Clang] New loop pragma vectorize_predicate 2019-07-25 07:33:13 +00:00
ast-print-record-decl.c
ast-printer-lambda.cpp [clang] fixing -ast-print for variadic parameter pack in lambda capture 2019-05-05 12:35:12 +00:00
atomic-expr.cpp [Sema] Fix the atomic expr rebuilding order. 2019-09-23 18:48:06 +00:00
attr-print-emit.cpp
attr-target-ast.c
auto-pragma.cpp
bool-type.m
builtins-arm-strex-rettype.c
c-casts.c
category-attribute.m
coroutine-source-location-crash.cpp [clang] Do not read from 'test/SemaCXX/Inputs' inside 'test/AST' 2018-12-03 11:26:35 +00:00
dump.cpp [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
finally-msvc.m
fixed_point.c
fixed_point_to_string.c
float16.cpp [ASTDump] Add a flag indicating whether a CXXThisExpr is implicit 2019-02-03 18:20:27 +00:00
foreachtemplatized.mm
function-alias.cpp Look through typedefs in getFunctionTypeWithExceptionSpec 2019-02-13 09:39:17 +00:00
gen_ast_dump_json_test.py Switch to opening the temp file in binary mode 2019-12-03 15:31:46 -05:00
implicit-cast-dump.c
language_address_space_attribute.cpp [OpenCL] Pretty print __private addr space 2019-12-27 13:42:07 +00:00
multistep-explicit-cast-json.c Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
multistep-explicit-cast-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
multistep-explicit-cast.c
multistep-explicit-cast.cpp
objc-default-ctor-init.mm
pr43983.cpp Apply the alignment specifier attribute to anonymous unions and structs. 2019-12-20 14:42:37 -05:00
pragma-attribute-cxx-subject-match-rules.cpp
pragma-attribute-objc-subject-match-rules.m
property-atomic-bool.m
rdr6094103-unordered-compare-promote.c
sourceranges.cpp Include leading attributes in DeclStmt's SourceRange 2019-10-17 11:20:21 +00:00
spurious-regparm.c Fix the check for regparm in FunctionType::ExtInfo 2020-04-27 16:01:07 +01:00
template-implicit-vars.cpp
variadic-promotion.c