diff --git a/ccmeta-tree.txt b/ccmeta-tree.txt index e2ea7ee..ed385f6 100644 --- a/ccmeta-tree.txt +++ b/ccmeta-tree.txt @@ -1,36 +1,10 @@ -typedef signed t; -typedef int plain; -struct tag { - unsigned t:4; // t is the name of the field - const t:5; // t is the name of the type of the unnamed 5-bit field - plain r:5; -}; - -struct tag2 { - int xx:8; - int :8; // a field with no name - int :8; // a field with no name - int yy:8; -}; - -typedef int a, (*b)(a intarg); -// ^ ^----------------------------------------|-------| -// (1) where does it say in the std that this name becomes a type name -// even before the end of the typedef declarator list that is a part of? - -// (2) where in the std does is say how the scope of typedef names is -// handled (global, function-level, block-level, etc.)? - -// (3) what are the exact rules about typedef scopes, and the different -// contexts in which a typedef can occur that causes it to have non-local -// or non-global scope? - -// (4) printTree to show the real AST in addition to outputNode which prints -// source code. - -int c(int x) { return x; } - -b e = c; - -unsigned x; -unsigned long int y; +void fun() { + typedef int i; + { + typedef float f; + i j1; + f g1; + } + i j2; + f g2; // <---- ERROR +} \ No newline at end of file