llvm-project/clang/test/Parser
Richard Trieu 2efd30571b Consume unexpected "template" keywords after "using"
The parser was dealing with unexpected "template" keywords after "using"
keywords too late and putting the parser into the wrong state, which could
lead to a crash down the line.  This change allows the parser to consume the
bad "template" keywords earlier, and continue parsing as if "template" was
never there to begin with for better error recovery.

llvm-svn: 359740
2019-05-01 23:33:49 +00:00
..
CompoundStmtScope.c
DelayedTemplateParsing.cpp [MS] Push outermost class DeclContexts only in -fdelayed-template-parsing 2018-11-27 21:20:42 +00:00
MicrosoftExtensions.c [Parse] Let declarations follow labels in -fms-extensions mode 2016-08-01 16:39:29 +00:00
MicrosoftExtensions.cpp [Sema][MSVC] Fix bogus microsoft-pure-definition warning on member function of class template 2019-04-21 13:12:10 +00:00
MicrosoftExtensionsInlineAsm.c
PR11000.cpp
PR21872.cpp Parse: Don't parse after the eof has been consumed 2014-12-18 09:57:31 +00:00
access-spec-attrs.cpp Sema: attribute((annotate)) must have at least one argument 2014-12-14 01:05:01 +00:00
altivec-csk-bool.c Remove the -faltivec alias option and replace it with -maltivec everywhere. 2017-03-21 22:06:18 +00:00
altivec.c Remove the -faltivec alias option and replace it with -maltivec everywhere. 2017-03-21 22:06:18 +00:00
annotation-token-in-lexed-body.cpp Parse: Don't assume tokens have a length 2015-03-19 00:10:23 +00:00
argument_qualified.c
argument_redef.c
argument_scope.c
arm-windows-calling-convention-handling.c [AArch64] Ignore stdcall and similar on aarch64/windows 2017-08-07 20:52:04 +00:00
asm-constraints-pr7869.c
asm.c
asm.cpp Parse: Concatenated string literals should be verified in inline asm 2014-12-11 01:00:48 +00:00
atomic.c [parser] Push _Atomic locs through DeclaratorChunk. 2015-03-29 16:42:06 +00:00
attr-availability.c
attr-external-source-symbol-cxx11.cpp Introduce an 'external_source_symbol' attribute that describes the origin 2017-03-01 18:06:25 +00:00
attr-external-source-symbol.m Introduce an 'external_source_symbol' attribute that describes the origin 2017-03-01 18:06:25 +00:00
attributes.c
attributes.mm Add support for attributes on @implementations in Objective-C 2019-04-11 17:55:30 +00:00
backtrack-crash.cpp
backtrack-off-by-one.cpp PR0091R3: Implement parsing support for using templates as types. 2017-01-26 20:40:47 +00:00
bad-control.c
block-block-storageclass.c
block-pointer-decl.c
bracket-crash.cpp
brackets.c Fix typos in clang 2018-04-06 15:14:32 +00:00
brackets.cpp Fix typos in clang 2018-04-06 15:14:32 +00:00
builtin_classify_type.c
builtin_types_compatible.c Make __builtin_types_compatible_p more like GCC's 2017-10-16 22:58:37 +00:00
c-namespace.c
c1x-alignas.c
c1x-generic-selection.c
c2x-attributes.c Add a fixit for attributes incorrectly placed prior to 'struct/class/enum' keyword. 2017-12-25 22:23:20 +00:00
c2x-attributes.m Add -f[no-]double-square-bracket-attributes as new driver options to control use of [[]] attributes in all language modes. This is the initial implementation of WG14 N2165, which is a proposal to add [[]] attributes to C2x, but also allows you to enable these attributes in C++98, or disable them in C++11 or later. 2017-10-15 15:01:42 +00:00
c11-noreturn.c Improve diagnostics if _Noreturn is placed after a function declarator. (This sometimes happens when a macro is used that expands to either the GNU noreturn attribute or _Noreturn.) 2014-11-10 21:10:32 +00:00
captured-statements.c
char-literal-printing.c
check-objc2-syntax-1.m
check-syntax-1.m
check_cast.c
colon-colon-parentheses.cpp Remove special error recovery for ::(id) 2016-12-09 21:10:43 +00:00
completely-empty-header-file.h
compound_literal.c
control-scope.c
crash-report.c Fix REQUIRES lines on tests from r228735. Thanks Kristof for pointing out the missing commas 2015-02-11 19:45:13 +00:00
cuda-force-host-device-templates.cu [CUDA] Rework tests now that we emit deferred diagnostics during sema. Test-only change. 2016-10-19 00:06:49 +00:00
cuda-force-host-device.cu [CUDA] Add #pragma clang force_cuda_host_device_{begin,end} pragmas. 2016-10-08 22:15:58 +00:00
cuda-kernel-call-c++11.cu [CUDA] Fixed parsing of optional template-argument-list. 2018-09-21 17:46:28 +00:00
cuda-kernel-call.cu [CUDA] Fixed parsing of optional template-argument-list. 2018-09-21 17:46:28 +00:00
cxx-altivec.cpp Remove the -faltivec alias option and replace it with -maltivec everywhere. 2017-03-21 22:06:18 +00:00
cxx-ambig-decl-expr-xfail.cpp
cxx-ambig-decl-expr.cpp Add missing direct-init / parameter-declaration-clause disambiguation when 2018-02-02 22:24:54 +00:00
cxx-ambig-init-templ.cpp __declspec is not a core Clang language extension. Instead, require -fms-extensions or -fborland to enable the language extension. 2015-05-26 19:44:52 +00:00
cxx-ambig-paren-expr-asan.cpp PR23057: fix use-after-free due to local token buffer in ParseCXXAmbiguousParenExpression, by Dmitry Polukhin 2016-02-04 04:22:09 +00:00
cxx-ambig-paren-expr.cpp Fix regression from r259622: the operand of an increment that is the operand of 2016-02-03 18:48:43 +00:00
cxx-attributes.cpp Parse: __attribute__((keyword)) shouldn't error 2015-01-03 19:41:00 +00:00
cxx-bool.cpp Properly parse a postfix expression following a Boolean literal. Fixes PR34273. 2017-09-28 21:29:18 +00:00
cxx-casting.cpp Warn when a reference is bound to an empty l-value (dereferenced null pointer). 2016-05-14 17:44:14 +00:00
cxx-class-template-specialization.cpp
cxx-class.cpp PR41192: fix cases where "missing ';' after class" error would 2019-04-16 00:47:45 +00:00
cxx-concept-declaration.cpp Revert rC330794 and some dependent tiny bug fixes 2018-04-26 00:42:40 +00:00
cxx-concepts-ambig-constraint-expr.cpp [Concepts] Parsing of requires-clause in template-declaration 2015-06-25 00:23:39 +00:00
cxx-concepts-requires-clause.cpp [Concepts] Parsing of requires-clause in template-declaration 2015-06-25 00:23:39 +00:00
cxx-condition.cpp
cxx-decl.cpp Parse A::template B as an identifier rather than as a template-id with no 2018-04-27 02:00:13 +00:00
cxx-default-args.cpp Parse: Don't crash when default argument in typedef consists of sole '=' 2015-01-13 07:42:33 +00:00
cxx-default-delete.cpp When we see something that looks like a constructor with a return type, only issue one error, not two. 2015-07-06 01:04:39 +00:00
cxx-ext-delete-default.cpp
cxx-extern-c-array.cpp
cxx-extra-semi.cpp [Parser] (C++) Make -Wextra-semi slightly more useful 2018-03-14 19:31:34 +00:00
cxx-friend.cpp Lit C++11 Compatibility Patch #8 2016-04-14 23:47:07 +00:00
cxx-in-c.c
cxx-invalid-for-range.cpp PR23057: Fix assertion `Val && "isa<> used on a null pointer"' on invalid for-range expression. 2016-02-02 17:33:09 +00:00
cxx-invalid-function-decl.cpp Fix infinite loop when ::new or ::delete are found in member initializer list, by Denis Zobnin 2016-01-20 05:25:51 +00:00
cxx-member-crash.cpp
cxx-member-init-missing-paren-crash.cpp
cxx-member-initializers.cpp Parse: use the EOF token method to lex inline method bodies 2015-01-13 05:06:20 +00:00
cxx-modules-interface.cppm [modules ts] Diagnose 'export' declarations outside of a module interface. 2017-04-24 23:12:30 +00:00
cxx-namespace-alias.cpp
cxx-reference.cpp [Lit Test] Updated 20 Lit tests to be C++11 compatible. 2015-12-10 01:07:17 +00:00
cxx-stmt.cpp
cxx-template-argument.cpp When a type-id is unexpectedly given a name, assume that the name is unrelated 2017-05-19 01:54:59 +00:00
cxx-template-decl.cpp Diagnose attempts to explicitly instantiate a template at class scope. Previously Clang would simply ignore the 'template' keyword in this case. 2017-02-09 22:14:25 +00:00
cxx-throw.cpp
cxx-typeid.cpp
cxx-typeof.cpp [Lit Test] Updated 20 Lit tests to be C++11 compatible. 2015-12-10 01:07:17 +00:00
cxx-undeclared-identifier.cpp
cxx-using-declaration.cpp
cxx-using-directive.cpp
cxx-variadic-func.cpp Revert "Improve declaration / expression disambiguation around ptr-operators, and use" 2015-02-23 22:36:28 +00:00
cxx0x-ambig.cpp Fix valid-for-expr ellipses eaten as invalid decl 2017-05-20 00:21:55 +00:00
cxx0x-attributes.cpp Introduce the _Clang scoped attribute token. 2018-11-09 17:19:45 +00:00
cxx0x-condition.cpp Add a "vexing parse" warning for ambiguity between a variable declaration and a 2017-09-29 23:57:25 +00:00
cxx0x-decl.cpp PR37189 Fix incorrect end source location and spelling for a split '>>' token. 2018-04-30 05:25:48 +00:00
cxx0x-for-range.cpp
cxx0x-in-cxx98.cpp PR21367: Don't accept rvalue references as an extension in C++98 mode if we're in a new-type-id or conversion-type-id, since those things can legitimately be followed by a binary && operator. 2014-10-28 16:55:02 +00:00
cxx0x-lambda-expressions.cpp N3922: direct-list-initialization of an auto-typed variable no longer deduces a 2015-11-11 01:36:17 +00:00
cxx0x-literal-operators.cpp
cxx0x-member-initializers.cpp
cxx0x-override-control-keywords.cpp Remove obsolete FIXME. override on definitions is fine. 2015-03-03 03:31:15 +00:00
cxx0x-rvalue-reference.cpp
cxx1z-attributes.cpp Fix several accidental DOS line endings in source files 2016-01-03 15:55:40 +00:00
cxx1z-class-template-argument-deduction.cpp [C++17] Fix class template argument deduction for default constructors without an initializer 2018-03-24 04:32:11 +00:00
cxx1z-constexpr-lambdas.cpp Replace remaining user-visible mentions of C++1z with C++17. 2017-08-13 22:26:53 +00:00
cxx1z-coroutines.cpp [coroutines] Rename driver flag -fcoroutines to -fcoroutines-ts 2016-10-02 03:31:58 +00:00
cxx1z-decomposition.cpp PR31978: Don't crash if CodeGen sees a top-level BindingDecl. 2018-10-26 03:21:20 +00:00
cxx1z-fold-expressions.cpp Parse a possible trailing postfix expression suffix after a fold expression 2018-07-27 21:55:12 +00:00
cxx1z-init-statement.cpp Refactor the way we handle diagnosing unused expression results. 2019-01-04 16:58:14 +00:00
cxx1z-nested-namespace-definition.cpp Switch to gnu++14 as the default dialect. 2017-12-09 12:09:54 +00:00
cxx1z-using-declaration.cpp [c++1z] P0195R2: Support pack-expansion of using-declarations. 2016-12-20 21:35:28 +00:00
cxx2a-bitfield-init.cpp [c++2a] P0683R1: Permit default member initializers for bit-fields. 2017-08-28 00:28:14 +00:00
cxx2a-init-statement.cpp [cxx2a] P0614R1: Support init-statements in range-based for loops. 2018-09-28 18:44:09 +00:00
cxx2a-inline-nested-namespace-definition.cpp [NFC] Fix formatting in inline nested namespace definition. 2018-11-12 19:29:26 +00:00
cxx2a-spaceship.cpp [c++20] P0515R3: Parsing support and basic AST construction for operator <=>. 2017-12-14 15:16:18 +00:00
cxx11-base-spec-attributes.cpp
cxx11-brace-initializers.cpp Improve diagonstic for braced-init-list as operand to ?: expression. 2018-05-24 22:02:52 +00:00
cxx11-stmt-attributes.cpp Add #pragma clang fp 2017-04-04 21:18:36 +00:00
cxx11-templates.cpp
cxx11-type-specifier.cpp
cxx11-user-defined-literals.cpp When pretty-printing a C++11 literal operator, don't insert whitespace between 2015-10-08 00:17:59 +00:00
debugger-import-module.m Added a testcase to make sure the parser allows 2014-12-10 18:57:09 +00:00
declarators.c
declspec-recovery.c Improve diagnostic reporting when using __declspec without enabling __declspec as a keyword. 2017-02-14 22:47:20 +00:00
declspec-supported.c Improve diagnostic reporting when using __declspec without enabling __declspec as a keyword. 2017-02-14 22:47:20 +00:00
decomposed-condition.cpp Fix codegen for structured binding binding in conditions 2018-03-17 21:01:27 +00:00
designator.c
diag-crash.c
editor-placeholder-recovery.cpp A '<' with a trigraph '#' is not a valid editor placeholder 2017-10-11 00:41:20 +00:00
empty-translation-unit.c
encode.m
enhanced-proto-1.m
eof.cpp Diagnose attempts to explicitly instantiate a template at class scope. Previously Clang would simply ignore the 'template' keyword in this case. 2017-02-09 22:14:25 +00:00
eof2.cpp
expressions.c
expressions.m
extension.c
extra-semi-resulting-in-nullstmt-in-init-statement.cpp [clang][Parse] Diagnose useless null statements / empty init-statements 2018-11-20 18:59:05 +00:00
extra-semi-resulting-in-nullstmt.cpp [clang][Parse] Diagnose useless null statements / empty init-statements 2018-11-20 18:59:05 +00:00
extra-semi.cpp P0305R1: Parsing support for init-statements in 'if' and 'switch' statements. 2016-06-29 21:17:59 +00:00
for.cpp
function-decls.c
gcc-__final-compatibility.cpp [GCC] Support for __final specifier 2016-07-29 10:42:48 +00:00
gcc-for-loop-init-compatibility.c [Parse] Make -Wgcc-compat complain about for loop inits in C89 2018-06-28 21:36:00 +00:00
goto.c
if-scope-c90.c
if-scope-c99.c
implicit-casts.c
knr_parameter_attributes.c
lambda-attr.cu [CUDA] Emit deferred diagnostics during Sema rather than during codegen. 2016-10-13 20:52:12 +00:00
message-expr-alt-op.mm [Parser] Support alternative operator token keyword args in Objective-C++ 2018-08-21 16:47:04 +00:00
method-def-in-class.m
method-prototype-1.m
missing-closing-rbrace.m
missing-end-2.m
missing-end-3.m
missing-end-4.m
missing-end.m
missing-selector-name.mm
ms-anachronism.c clang-cl: support __cdecl-on-struct anachronism 2016-03-21 16:08:49 +00:00
ms-if-exists.c Fix crash when using __if_exists in C mode 2014-11-24 17:29:35 +00:00
ms-if-exists.cpp
ms-inline-asm-nested-braces.c
ms-inline-asm.c (clang part) Implement MASM-flavor intel syntax behavior for inline MS asm block. 2016-09-02 23:16:06 +00:00
ms-seh.c Don't crash on missing '{' after __except or __finally, PR22687. 2015-02-25 02:22:06 +00:00
ms-square-bracket-attributes.mm Determine the attribute subject for diagnostics based on declarative information in DeclNodes.td. This greatly reduces the number of enumerated values used for more complex diagnostics; these are now only required when the "attribute only applies to" diagnostic needs to be generated manually as part of semantic processing. 2017-11-26 20:01:12 +00:00
namelookup-bug-1.c
namelookup-bug-2.c
namespace-alias-attr.cpp Parse: __attribute__((keyword)) shouldn't error 2015-01-03 19:41:00 +00:00
namespaces.cpp Parse: Don't crash when namespace is in GNU statement expr 2015-01-09 09:38:14 +00:00
no-gnu-inline-asm.c Allow empty assembly string literal with -fno-gnu-inline-asm 2015-05-12 00:16:37 +00:00
nullability.c Accept nullability qualifiers on array parameters. 2016-11-10 23:28:17 +00:00
objc-alias-printing.m
objc-at-directive-fixit.m [ObjC] Avoid a @try/@finally/@autoreleasepool fixit when parsing an expression 2016-12-01 12:14:38 +00:00
objc-at-implementation-eof-crash.m Add a missing '[' to the tests from r305719 2017-06-20 16:16:11 +00:00
objc-at-interface-eof-crash.m Add a missing '[' to the tests from r305719 2017-06-20 16:16:11 +00:00
objc-attr.m Allow the NS, CF, and ObjC attributes to be used with -fdouble-square-bracket-attributes. The syntactic locations for such attributes on ObjC constructs have been specifically chosen to follow the GNU attribute syntactic locations. 2018-02-12 13:38:25 +00:00
objc-available.m Warn about uses of `@available` that can't suppress the 2017-05-24 15:15:29 +00:00
objc-boxing.m
objc-category-neg-1.m
objc-class-property.m ObjC class properties: add diagnostics for unimplemented class properties. 2016-04-12 23:01:55 +00:00
objc-cxx-keyword-identifiers.mm [ObjC] Error out when using forward-declared protocol in a @protocol 2018-08-17 22:18:08 +00:00
objc-diag-width.mm
objc-error-qualified-implementation.m Parsing, semantic analysis, and AST for Objective-C type parameters. 2015-07-07 03:57:15 +00:00
objc-forcollection-1.m
objc-forcollection-neg-2.m
objc-forcollection-neg.m
objc-foreach-syntax.m
objc-implementation-attrs.m Add support for attributes on @implementations in Objective-C 2019-04-11 17:55:30 +00:00
objc-init.m [Lit Test] Updated 20 Lit tests to be C++11 compatible. 2015-12-10 01:07:17 +00:00
objc-interfaces.m
objc-messaging-1.m
objc-messaging-neg-1.m
objc-missing-impl.m
objc-property-syntax.m Fix the spelling of 'bitfield' in diagnostics to be consistently 'bit-field'. 2016-12-20 02:43:58 +00:00
objc-quirks.m
objc-recover.mm
objc-static-assert.m Objective-C++11: Support static_assert() in @interface/@implementation ivar lists and method declarations 2019-03-14 14:18:56 +00:00
objc-static-assert.mm Fix test after r356148 2019-03-14 14:40:48 +00:00
objc-synthesized-recover.m
objc-try-catch-1.m Reapply "[Parse] Use CapturedStmt for @finally on MSVC" 2018-06-08 00:30:00 +00:00
objc-type-printing.m
objcbridge-related-attribute.m
objcxx-at.mm
objcxx-lambda-expressions-neg.mm [Lit Test] Updated 20 Lit tests to be C++11 compatible. 2015-12-10 01:07:17 +00:00
objcxx0x-lambda-expressions.mm N3922: direct-list-initialization of an auto-typed variable no longer deduces a 2015-11-11 01:36:17 +00:00
objcxx11-attributes.mm
objcxx11-initialized-temps.mm
objcxx11-invalid-lambda.cpp [Parser] Fix TryParseLambdaIntroducer() error handling 2017-11-06 17:42:17 +00:00
objcxx11-messaging-and-lambda.mm [Parser] Fix look ahead after EOF while parsing objc message and lambdas 2016-05-31 18:46:31 +00:00
objcxx11-protocol-in-template.mm [Parser] Update CachedTokens while parsing ObjectiveC template argument list 2016-01-31 00:47:51 +00:00
objcxx11-user-defined-literal.mm
objcxx14-protocol-in-template.mm [Parser] Perform CachedTokens update dependent on token consumption 2016-02-05 19:36:39 +00:00
offsetof.c
opencl-astype.cl [OpenCL] Add supported OpenCL extensions to target info. 2016-05-16 17:06:34 +00:00
opencl-atomics-cl20.cl [OpenCL] Extended diagnostics for atomic initialization 2017-04-05 12:47:10 +00:00
opencl-cl20.cl [OpenCL] Restrict various keywords in OpenCL C++ mode 2018-05-09 13:16:17 +00:00
opencl-cxx-keywords.cl [OpenCL] Allow addr space spelling without __ prefix in C++. 2019-03-25 11:54:02 +00:00
opencl-cxx-virtual.cl [OpenCL] Reject virtual functions for OpenCL C++ 2018-04-23 11:23:47 +00:00
opencl-image-access.cl [OpenCL] Refine OpenCLImageAccessAttr to OpenCLAccessAttr 2016-02-26 03:13:03 +00:00
opencl-kernel.cl
opencl-keywords.cl
opencl-pragma.cl Recommit r289979 [OpenCL] Allow disabling types and declarations associated with extensions 2016-12-18 05:18:55 +00:00
opencl-storage-class.cl [OpenCL] Restrict various keywords in OpenCL C++ mode 2018-05-09 13:16:17 +00:00
opencl-unroll-hint.cl [OpenCL] Generate metadata for opencl_unroll_hint attribute 2016-02-19 18:30:11 +00:00
parenthesis-balance.cpp
parmvardecl_conversion.c
parser_overflow.c
placeholder-recovery.m Add support for attributes on @implementations in Objective-C 2019-04-11 17:55:30 +00:00
pointer-arithmetic.c
pointer_promotion.c Factor out comparison handling for arithmetic types. 2018-01-08 21:12:04 +00:00
pragma-attribute-context.cpp Add a __has_extension check for '#pragma clang attribute' as an external-declaration 2019-03-20 19:26:37 +00:00
pragma-attribute-declspec.cpp Add #pragma clang attribute 2017-04-18 14:33:39 +00:00
pragma-attribute.cpp Add support for namespaces on #pragma clang attribute 2018-12-20 22:32:04 +00:00
pragma-fp-contract.c
pragma-fp.cpp Add #pragma clang fp 2017-04-04 21:18:36 +00:00
pragma-loop-safety.cpp Append new attributes to the end of an AttributeList. 2018-08-03 01:21:16 +00:00
pragma-loop.cpp Add two new pragmas for controlling software pipelining optimizations. 2019-01-04 17:20:00 +00:00
pragma-optimize-diagnostics.cpp
pragma-options.c Recommit r308327 3rd time: Add a warning for missing 2017-07-28 14:41:21 +00:00
pragma-options.cpp Recommit r308327 3rd time: Add a warning for missing 2017-07-28 14:41:21 +00:00
pragma-pack.c Recommit r308327 3rd time: Add a warning for missing 2017-07-28 14:41:21 +00:00
pragma-pipeline.cpp Add two new pragmas for controlling software pipelining optimizations. 2019-01-04 17:20:00 +00:00
pragma-unroll-and-jam.cpp Add two new pragmas for controlling software pipelining optimizations. 2019-01-04 17:20:00 +00:00
pragma-unroll.cpp Append new attributes to the end of an AttributeList. 2018-08-03 01:21:16 +00:00
pragma-visibility.c
pragma-visibility2.c
pragma-weak.c
promote_types_in_proto.c
recovery.c
recovery.cpp Revert "Improve declaration / expression disambiguation around ptr-operators, and use" 2015-02-23 22:36:28 +00:00
recovery.m
recursion-limits.cpp
selector-1.m
skip-function-bodies.h [libclang] Allow skipping function bodies in preamble only 2018-05-17 09:24:37 +00:00
skip-function-bodies.mm [libclang] Allow skipping function bodies in preamble only 2018-05-17 09:24:37 +00:00
statements.c
struct-recursion.c
switch-recovery.cpp Refactor the way we handle diagnosing unused expression results. 2019-01-04 16:58:14 +00:00
top-level-semi-cxx0x.cpp
traditional_arg_scope.c
typeof.c
types.c
using-template.cpp Consume unexpected "template" keywords after "using" 2019-05-01 23:33:49 +00:00
vector-cast-define.cl Reapplied r298976 [OpenCL] Added parsing for OpenCL vector types. 2017-03-29 12:09:39 +00:00
vsx.c Remove the -faltivec alias option and replace it with -maltivec everywhere. 2017-03-21 22:06:18 +00:00
warn-cuda-compat.cu
warn-dangling-else.cpp
warn-semicolon-before-method-body.m
x64-windows-calling-convention-handling.c Windows ARM: ignore calling conventions as described on MSDN 2015-08-14 18:00:09 +00:00