• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 -funknown-anytype -fsyntax-only -verify %s
2 
3 namespace test0 {
4   extern __unknown_anytype test0;
5   extern __unknown_anytype test1();
6   extern __unknown_anytype test2(int);
7 }
8 
9 namespace test1 {
10   extern __unknown_anytype foo;
test()11   int test() {
12     // TODO: it would be great if the 'cannot initialize' errors
13     // turned into something more interesting.  It's just a matter of
14     // making sure that these locations check for placeholder types
15     // properly.
16 
17     int x = foo; // expected-error {{cannot initialize}}
18     int y = 0 + foo; // expected-error {{'foo' has unknown type}}
19     return foo; // expected-error {{cannot initialize}}
20   }
21 }
22 
23 namespace test2 {
24   extern __unknown_anytype foo();
test()25   void test() {
26     foo(); // expected-error {{'foo' has unknown return type}}
27   }
28 }
29 
30 namespace test3 {
31   extern __unknown_anytype foo;
test()32   void test() {
33     foo(); // expected-error {{call to unsupported expression with unknown type}}
34     ((void(void)) foo)(); // expected-error {{variable 'foo' with unknown type cannot be given a function type}}
35   }
36 }
37