8sa1-gcc/gcc/testsuite/obj-c++.dg
Iain Sandoe 0cc218d42c Objective-C++ : Fix handling of unnamed message parms [PR49070].
When we are parsing an Objective-C++ message, a colon is a valid
terminator for a assignment-expression.  That is:

[receiver methxx];

Is a valid, if somewhat unreadable, construction; corresponding
to a method declaration like:

- (id) meth:(id)arg0 :(id)arg1 :(id)arg2 :(id)arg3;

Where three of the message params have no selector name.

If fact, although it might be unintentional, Objective-C/C++ can
accept message selectors with all the parms unnamed (this applies
to the clang implementation too, which is taken as the reference
for the language).

For regular C++, the pattern x:x is not valid in that position an
an error is emitted with a fixit for the expected scope token.

If we simply made that error conditional on !c_dialect_objc()
that would regress Objective-C++ diagnostics for cases outside a
message selector, so we add a state flag for this.

gcc/cp/ChangeLog:

	PR objc++/49070
	* parser.c (cp_debug_parser): Add Objective-C++ message
	state flag.
	(cp_parser_nested_name_specifier_opt): Allow colon to
	terminate an assignment-expression when parsing Objective-
	C++ messages.
	(cp_parser_objc_message_expression): Set and clear message
	parsing state on entry and exit.
	* parser.h (struct cp_parser): Add a context flag for
	Objective-C++ message state.

gcc/testsuite/ChangeLog:

	PR objc++/49070
	* obj-c++.dg/pr49070.mm: New test.
	* objc.dg/unnamed-parms.m: New test.
2021-03-18 11:47:27 +00:00
..
attributes Update copyright years. 2021-01-04 10:26:59 +01:00
lto Update copyright years. 2021-01-04 10:26:59 +01:00
plugin Update copyright years. 2021-01-04 10:26:59 +01:00
property Update copyright years. 2021-01-04 10:26:59 +01:00
strings Update copyright years. 2021-01-04 10:26:59 +01:00
tls
torture Update copyright years. 2021-01-04 10:26:59 +01:00
at-class-1.mm
bad-forward-decl.mm
bad-receiver-type.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
basic.mm
bitfield-1.mm
bitfield-2.mm
bitfield-3.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
bitfield-4.mm
bitfield-5.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
class-extension-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
class-extension-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
class-extension-3.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
class-extension-4.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
class-protocol-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-3.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-4.mm
comp-types-5.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-6.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-7.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-8.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-9.mm
comp-types-10.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
comp-types-11.mm
comp-types-12.mm
comp-types-13.mm
cxx-class-1.mm
cxx-ivars-1.mm
cxx-ivars-2.mm
cxx-ivars-3.mm
cxx-scope-1.mm
cxx-scope-2.mm
defs.mm
demangle-1.mm
demangle-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
demangle-3.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
dg.exp Update copyright years. 2021-01-04 10:26:59 +01:00
duplicate-class-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
dwarf-2.mm
empty-private-1.mm
encode-1-next.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
encode-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
encode-2.mm
encode-3.mm
encode-4.mm
encode-5.mm
encode-6.mm
encode-7.mm
encode-8.mm
encode-9.mm
encode-10.mm
enhanced-proto-1.mm
enhanced-proto-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
except-1.mm
exceptions-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
exceptions-2.mm
exceptions-3.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
exceptions-4.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
exceptions-5.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
exceptions-6.mm
exceptions-7.mm
extern-c-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
extra-semi.mm
fix-and-continue-2.mm
fobjc-exceptions-1.mm
fobjc-exceptions-2.mm
fobjc-exceptions-3.mm
fobjc-std-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
fsf-nsstring-format-1.mm
fsf-package-0.m
gnu-api-2-class-meta.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-class.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-ivar.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-method.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-objc_msg_lookup.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-objc.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-object.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-property.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-protocol.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-resolve-method.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-api-2-sel.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
gnu-runtime-1.mm
gnu-runtime-2.mm
gnu-runtime-3.mm
invalid-method-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
invalid-type-1.mm
isa-field-1.mm
ivar-invalid-type-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
ivar-list-semi.mm
ivar-problem-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
keywords-1.mm
keywords-2.mm
lambda-0.mm
lambda-1.mm
layout-1.mm
local-decl-1.mm
lookup-1.mm
lookup-2.mm
method-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-2.mm
method-3.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-4.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-5.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-6.mm
method-7.mm
method-8.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-9.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-10.mm
method-11.mm
method-12.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-13.mm
method-14.mm
method-15.mm
method-16.mm
method-17.mm
method-18.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-19.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-20.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-21.mm
method-22.mm
method-23.mm
method-conflict-1.mm
method-conflict-2.mm
method-conflict-3.mm
method-conflict-4.mm
method-lookup-1.mm
method-namespace-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
method-namespace-2.mm
msg-in-protocol.mm
naming-1.mm
naming-2.mm
naming-3.mm
naming-4.mm
no-extra-load.mm
objc-gc-3.mm
overload-1.mm
pr23709.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
pr24393.mm
pr28049.mm
pr45735.mm
pr48187.mm
pr49070.mm Objective-C++ : Fix handling of unnamed message parms [PR49070]. 2021-03-18 11:47:27 +00:00
pragma-1.mm
pragma-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
private-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
private-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
proto-error-1.mm
proto-init-mimatch-1.mm
proto-lossage-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
proto-lossage-2.mm
proto-lossage-3.mm
proto-lossage-4.mm
proto-lossage-5.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
proto-lossage-6.mm
proto-lossage-7.mm
proto-qual-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
protocol-forward-1.mm
protocol-forward-2.mm
protocol-inheritance-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
protocol-inheritance-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
protocol-optional-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
protocol-qualifier-1.mm
protocol-qualifier-2.mm
qual-types-1.mm
root-class-00.mm C-family, Objective-C [1/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:39:48 +00:00
SEL-typedef.mm
selector-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
selector-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
selector-3.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
selector-4.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
selector-5.mm
selector-6.mm
selector-warn-1.mm
set-not-used-1.mm
standard-headers.mm
stubify-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
stubify-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
super-class-1.mm
super-class-2.mm
super-dealloc-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
super-dealloc-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
sync-2.mm
sync-3.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
syntax-error-1.mm
syntax-error-2.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
syntax-error-3.mm
syntax-error-4.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
syntax-error-5.mm
syntax-error-6.mm
syntax-error-7.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
syntax-error-8.mm Objective-C++ : Fix up testcase EOF diagnostics. 2020-12-26 19:51:15 +00:00
syntax-error-9.mm Objective-C++ : Fix up testcase EOF diagnostics. 2020-12-26 19:51:15 +00:00
syntax-error-10.mm Objective-C++ : Fix up testcase EOF diagnostics. 2020-12-26 19:51:15 +00:00
template-1.mm
template-2.mm
template-3.mm
template-4.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
template-5.mm
template-6.mm
template-7.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
template-8.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
threedotthree-abi-1.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
too-many-args.mm
try-catch-1.mm
try-catch-2.mm
try-catch-3.mm
try-catch-4.mm
try-catch-5.mm
try-catch-6.mm
try-catch-7.mm
try-catch-8.mm
try-catch-9.mm
try-catch-10.mm
try-catch-11.mm
try-catch-12.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
try-catch-13.mm Objective-C [3/3] : Implement Wobjc-root-class [PR77404]. 2020-11-13 10:40:54 +00:00
try-catch-14.mm
try-catch-15.mm
try-catch-16.mm
try-catch-17.mm
typedef-alias-1.mm
va-meth-1.mm
warn5.mm
warn6.mm
warn7.mm
Wimplicit-fallthrough-1.mm