Accept and pass arguments to __unknown_anytype in argument
authorJohn McCall <rjmccall@apple.com>
Wed, 14 Nov 2012 00:49:39 +0000 (00:49 +0000)
committerJohn McCall <rjmccall@apple.com>
Wed, 14 Nov 2012 00:49:39 +0000 (00:49 +0000)
commitea0a39e7ad3ca90a13ed22826e1f5e9edbd40659
treeb71f1e2121054359d5f985903b5157ac8544416a
parentdffc54be70540c81db0fed20489de30e914e05ce
Accept and pass arguments to __unknown_anytype in argument
positions of Objective-C methods.

It is possible to recover a lot of type information about
Objective-C methods from the reflective metadata for their
implementations.  This information is not rich when it
comes to struct types, however, and it is not possible to
produce a type in the debugger's round-tripped AST which
will really do anything useful during type-checking.
Therefore we allow __unknown_anytype in these positions,
which essentially disables type-checking for that argument.
We infer the parameter type to be the unqualified type of
the argument expression unless that expression is an
explicit cast, in which case it becomes the type-as-written
of that cast.

rdar://problem/12565338

llvm-svn: 167896
clang/include/clang/Sema/Sema.h
clang/lib/Parse/ParseDecl.cpp
clang/lib/Parse/ParseTentative.cpp
clang/lib/Sema/SemaExpr.cpp
clang/lib/Sema/SemaExprObjC.cpp
clang/test/SemaObjCXX/unknown-anytype.mm