diff options
Diffstat (limited to 'clang/test/CXX/class/class.local/p3.cpp')
| -rw-r--r-- | clang/test/CXX/class/class.local/p3.cpp | 30 | 
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/test/CXX/class/class.local/p3.cpp b/clang/test/CXX/class/class.local/p3.cpp new file mode 100644 index 0000000..3753790 --- /dev/null +++ b/clang/test/CXX/class/class.local/p3.cpp @@ -0,0 +1,30 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s  + +void f1() { +  struct X { +    struct Y; +  }; +   +  struct X::Y { +    void f() {} +  }; +} + +void f2() { +  struct X { +    struct Y; +     +    struct Y { +      void f() {} +    }; +  }; +} + +// A class nested within a local class is a local class. +void f3(int a) { // expected-note{{'a' declared here}} +  struct X { +    struct Y { +      int f() { return a; } // expected-error{{reference to local variable 'a' declared in enclosing function 'f3'}} +    }; +  }; +}  | 
