comparison trunk/src/Parser.d @ 270:764eccdf619d

- Fix in parseAttributeStatement(): added checks for T.LParen after const/invariant.
author aziz
date Sat, 04 Aug 2007 19:27:00 +0000
parents a416e09c08ea
children 68987c1c59b6
comparison
equal deleted inserted replaced
269:a416e09c08ea 270:764eccdf619d
1820 } 1820 }
1821 require(T.RParen); 1821 require(T.RParen);
1822 } 1822 }
1823 s = new ExternStatement(linkage, parse()); 1823 s = new ExternStatement(linkage, parse());
1824 break; 1824 break;
1825 //case T.Invariant: // D 2.0
1826 case T.Static: 1825 case T.Static:
1827 tmp = StorageClass.Static; 1826 tmp = StorageClass.Static;
1828 goto Lcommon; 1827 goto Lcommon;
1829 case T.Final: 1828 case T.Final:
1830 tmp = StorageClass.Final; 1829 tmp = StorageClass.Final;
1831 goto Lcommon; 1830 goto Lcommon;
1832 case T.Const: 1831 case T.Const:
1832 version(D2)
1833 {
1834 if (peekNext() == T.LParen)
1835 goto case_Declaration;
1836 }
1833 tmp = StorageClass.Const; 1837 tmp = StorageClass.Const;
1834 goto Lcommon; 1838 goto Lcommon;
1839 version(D2)
1840 {
1841 case T.Invariant: // D 2.0
1842 if (peekNext() == T.LParen)
1843 goto case_Declaration;
1844 tmp = StorageClass.Invariant;
1845 goto Lcommon;
1846 }
1835 case T.Auto: 1847 case T.Auto:
1836 tmp = StorageClass.Auto; 1848 tmp = StorageClass.Auto;
1837 goto Lcommon; 1849 goto Lcommon;
1838 case T.Scope: 1850 case T.Scope:
1839 tmp = StorageClass.Scope; 1851 tmp = StorageClass.Scope;
1845 s = new AttributeStatement(tok, parse()); 1857 s = new AttributeStatement(tok, parse());
1846 break; 1858 break;
1847 // TODO: allow "scope class", "abstract scope class" in function bodies? 1859 // TODO: allow "scope class", "abstract scope class" in function bodies?
1848 //case T.Class: 1860 //case T.Class:
1849 default: 1861 default:
1862 case_Declaration:
1850 s = new DeclarationStatement(parseDeclaration(stc)); 1863 s = new DeclarationStatement(parseDeclaration(stc));
1851 } 1864 }
1852 set(s, begin); 1865 set(s, begin);
1853 return s; 1866 return s;
1854 } 1867 }